假设我有一个实体客户端,其中有许多实体产品。我正在寻找在 LevelDB 中存储这些信息的最佳方法。
class Client {
String clientId;
String clientName;
List<Product> products;
}
class Product {
String productId;
Client client;
String productName;
}
我曾考虑过将这些数据编码(marshal)到 xml/json 并持久化到 LevelDB,但这需要付出努力,而且可能不是一个好方法。您能给我建议其他解决方案吗?
最佳答案
我建议您将此业务模型分为 3 种类型的数据(例如 RMDB 中的 3 个表)。
一种是Client实体,将实体序列化为json,使用客户端ID作为键存储(带有前缀“client_”),如“client_1”,“client_2”,关系产品不是存储在客户端实体中。示例数据:client_1 => {clientId: 1, clientName: "name"}
第二个是Product实体,将client属性更改为clientId。序列化和存储就像您对客户端所做的那样。示例数据:product_1 => {productId: 1, ProductName: "book"}
第三个是关系,使用客户端Id作为键(前缀为“client_product_”),例如“client_product_1”,“client_product_2”等。将其产品的所有客户端Id内嵌为字符串。示例数据:client_product_1 => 1,2,3,4,5
但是,您可能想使用一些旨在存储“关系”(列表、集合、 HashMap )的数据库,请尝试 SSDB( https://github.com/ideawu/ssdb ),SSDB 是 LevelDB 的网络包装,适合存储集合数据。
关于java - 如何在LevelDB中存储关联实体列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238457/