2012-10-09 39 views
0

我是cassandra的新手& nosql建模,我有一個用例,我希望對訂單管理解決方案進行建模,這是一個非常常見的用於Cassandra的RDBM用例。在我們的用例中,我們的應用程序在不同的時間段接收多個訂單項目。每一個需要存儲的審計puropse,需要進行分組,以細節的順序彙總等業務細節。此外,我們希望將訂單商品屬性保持爲可搜索狀態,以便查找。在cassandra中建模的訂單管理

我想到了兩種方法:基於複合鍵模式

1):在這裏,我要救順序的項目,如與所有訂購商品屬性,作爲列和一個列族「訂單項目」與鍵爲(orderid +時間戳)。

  • OID1:01012012 - > OID:OID1,事件:新類型:請求,...
  • OID1:01012012 - > OID:OID1,事件:OK,類型:響應,...
  • OID1:02012012 - > OID:OID1,事件:修改類型:請求,...

2)脂肪排設計:這裏飼養的OrderID作爲行鍵和所有的訂單項目被持久化爲json字符串。這將用於審計目的。另一列家庭應使用保持結構(Rowkey - > colA1:A1,colB1:B1,colA2:A2,colB2:B2,...)與1,2- ..指標,​​我們將能夠跟蹤所有訂購物品。

我的一個朋友曾建議#1將不會在性能很不錯。由於具有相同orderid的不同行可以駐留在cassandra環的不同節點上。 雖然我發現#2是一個笨拙的設計,我需要保持相同數據的多個副本。也想不到如何在#2設計之上實現搜索。

關於這可怎麼設計更好的任何想法?

回答

1

你想要一個寬行(分區)與項目的複合列。但是,與手動編譯CQL3相比,CQL3爲您提供了一種更簡單的方法:http://www.datastax.com/dev/blog/schema-in-cassandra-1-1

+0

謝謝@jbellis。現在我可以爲此考慮正確的設計。一旦完成,我會更新它。 – ajjain

+0

BTW我怎樣才能查詢從這樣的結構數據。支持CQL3的不同客戶端庫有哪些?我聽說過Pelops,Hector和Kundera。他們呢? – ajjain

相關問題