Java 如何在LevelDB中存储关联实体列表

Java 如何在LevelDB中存储关联实体列表,java,database,nosql,leveldb,Java,Database,Nosql,Leveldb,假设我有一个实体客户机,它有许多实体产品。我正在找出在LevelDB中存储这些信息的最佳方法 class Client { String clientId; String clientName; List<Product> products; } class Product { String productId; Client client; String productName; } 类客户端{ 字符串client

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

class Client {

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

class Product {

     String productId;
     Client client;
     String productName;
}
类客户端{
字符串clientId;
字符串clientName;
列出产品清单;
}
类产品{
字符串productId;
客户;
字符串名称;
}

我曾考虑将这些数据封送到xml/json并持久化到LevelDB,但这需要付出努力,可能不是一个好方法。您能为我推荐其他解决方案吗?

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

一个是客户端实体,将实体序列化为json,使用客户端ID作为键(前缀为“Client_”)存储,如“Client_1”、“Client_2”,关系产品不存储在客户端实体中。示例数据:
client_1=>{clientId:1,clientName:“name”}

第二个是产品实体,将客户端属性更改为clientId。序列化和存储,就像对客户端所做的那样。示例数据:
product_1=>{productId:1,productName:“book”}

第三个是关系,使用客户机Id作为键(前缀为“客户机产品”),如“客户机产品1”、“客户机产品2”等。将其产品的所有客户机Id内爆为一个字符串。样本数据:
client\u product\u 1=>1,2,3,4,5


但是,您可能希望使用一些旨在存储“关系”(列表、集合、哈希映射)的数据库,请尝试SSDB(),SSDB是LevelDB的网络包装器,适合存储收集数据。

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

一个是客户端实体,将实体序列化为json,使用客户端ID作为键(前缀为“Client_”)存储,如“Client_1”、“Client_2”,关系产品不存储在客户端实体中。示例数据:
client_1=>{clientId:1,clientName:“name”}

第二个是产品实体,将客户端属性更改为clientId。序列化和存储,就像对客户端所做的那样。示例数据:
product_1=>{productId:1,productName:“book”}

第三个是关系,使用客户机Id作为键(前缀为“客户机产品”),如“客户机产品1”、“客户机产品2”等。将其产品的所有客户机Id内爆为一个字符串。样本数据:
client\u product\u 1=>1,2,3,4,5

但是,您可能希望使用一些设计用于存储“关系”(列表、集合、哈希映射)的数据库,请尝试SSDB(),SSDB是LevelDB的网络包装器,适合存储收集数据