2

多くのエンティティ Product を持つエンティティ Client があるとします。これらの情報を 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 つのテーブルのように) に分けることをお勧めします。

1 つはクライアントエンティティで、エンティティを json にシリアル化し、クライアント ID をキーとして (接頭辞 "client_" を付けて) 格納します。"client_1"、"client_2" のように、リレーション製品はクライアント エンティティに格納されません。サンプルデータ:client_1 => {clientId: 1, clientName: "name"}

2 番目はProductエンティティです。クライアント プロパティを clientId に変更します。クライアントと同じようにシリアル化して保存します。サンプルデータ:product_1 => {productId: 1, productName: "book"}

3 つ目はRelationで、「client_product_1」、「client_product_2」などのように、クライアント Id をキーとして (プレフィックス「client_product_」を使用して) 使用します。その製品のすべてのクライアント Id を文字列に分解します。サンプルデータ:client_product_1 => 1,2,3,4,5

ただし、「関係」(リスト、セット、ハッシュマップ) を格納するように設計されたデータベースを使用する場合は、SSDB ( https://github.com/ideawu/ssdb ) を試してください。SSDB は LevelDB のネットワーク ラッパーです。コレクションデータの保存に適しています。

于 2013-10-09T05:32:33.670 に答える