2

假设我有一个实体客户,它有许多实体产品。我正在寻找将这些信息存储在 LevelDB 中的最佳方式。

class Client {

     String clientId;
     String clientName;
     List<Product> products;
}

class Product {

     String productId;
     Client client;
     String productName;
}

我曾考虑将这些数据编组到 xml/json 并保存到 LevelDB,但这需要付出努力,而且可能不是一个好方法。你能建议我其他解决方案吗?

4

1 回答 1

4

我建议您将此业务模型分成 3 种类型的数据(例如 RMDB 中的 3 个表)。

一种是客户端实体,将实体序列化为json,使用客户端ID作为key(前缀为“client_”)存储,如“client_1”,“client_2”,关系产品不存储在客户端实体中。样本数据:client_1 => {clientId: 1, clientName: "name"}

其次是产品实体,将客户端属性更改为clientId。序列化和存储就像您对客户端所做的那样。样本数据:product_1 => {productId: 1, productName: "book"}

第三个是Relation,使用客户端 ID 作为键(前缀为“client_product_”),如“client_product_1”、“client_product_2”等。将其产品的所有客户端 Id 插入字符串。样本数据:client_product_1 => 1,2,3,4,5

但是,您可能想要使用一些旨在存储“关系”(列表、集合、哈希图)的数据库,尝试 SSDB(https://github.com/ideawu/ssdb),SSDB 是 LevelDB 的网络包装器,并且适合存储collection数据。

于 2013-10-09T05:32:33.670 回答