2013-10-08 49 views
2

假設我有一個具有多個實體產品的實體客戶端。我正在計算將這些信息存儲在LevelDB中的最佳方式。如何在關聯數據庫中存儲關聯實體列表

class Client { 

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

class Product { 

    String productId; 
    Client client; 
    String productName; 
} 

我曾想過這些數據編組到XML/JSON和持續到性LevelDB,但它需要努力和可能不是一個好辦法。你能建議我其他解決方案嗎?

回答

4

我建議你將這種商業模式分爲3種類型的數據(如RMDB中的3個表格)。

一個是客戶實體,序列化實體JSON,存儲它使用客戶ID作爲密鑰(用前綴「client_」),如「的Client_1」,「client_2的」,該關係的產品沒有被存儲在客戶端實體。示例數據:client_1 => {clientId: 1, clientName: "name"}

其次是產品實體,將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的網絡包裝,適合用於存儲收集數據。