假设我有一个实体客户端,它有许多实体产品。我正在找出将这些信息存储在LevelDB中的最佳方法。
class Client {
String clientId;
String clientName;
List<Product> products;
}
class Product {
String productId;
Client client;
String productName;
}
我已经考虑过将这些数据封送到xml / json并持久化到LevelDB,但它需要付出努力,可能不是一个好方法。你能建议我其他解决方案吗?
答案 0 :(得分:4)
我建议您将此业务模型分为3种类型的数据(如RMDB中的3个表)。
一个是客户端实体,将实体序列化为json,使用客户端ID作为密钥存储它(带有前缀“client_”),如“client_1”,“client_2”,关系产品不是存储在客户实体中。示例数据:client_1 => {clientId: 1, clientName: "name"}
其次是产品实体,将客户端属性更改为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
但是,您可能希望使用一些用于存储“关系”(列表,集合,散列图)的数据库,尝试SSDB(https://github.com/ideawu/ssdb),SSDB是LevelDB的网络包装器,适用于存储收集数据。