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

标签 java database nosql leveldb

假设我有一个实体客户端,其中有许多实体产品。我正在寻找在 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/

相关文章:

nosql - 重新生成 CouchDB View

java - 正则表达式格式的想法

java - 如何在hibernate中不添加引用@Entity的情况下触发外键关系?

php - 如何在通过php存储在文件夹中时更改图像名称

ios - iOS 6 中的 JSON 实现

database - 简单、快速和可靠的数据库 (NoSQL)

database - 如何删除 MongoDB 中的所有数据库?

java - 如何正确读取军用时差?

java - 即使选择了 JTextField,箭头键 KeyBindings 仍然有效

php - 检查是否是第一次查看页面