2010-03-19 65 views
10

我希望有人能夠幫助我建議使用nosql數據庫Apache Cassandra實現的合適數據模型。比我更需要它在高負載和大量數據下工作。爲現有模式建議Cassandra數據模型

簡體我有3種類型的對象:

  • 產品
  • 標籤
  • ProductTag

產品:

key - string key 
name - string 
.... - some other fields 

標籤:

key - string key 
name - unique tag words 

ProductTag:

product_key - foreign key referring to product 
tag_key - foreign key referring to tag 
rating - this is rating of tag for this product 

每個產品可具有0或許多標籤。標籤可以分配給1個或許多產品。就關係型數據庫而言,意味着產品和標籤之間的關係是多對多的。

「評分」的值經常更新爲「非常」。

我需要運行以下查詢

  • 通過按鍵選擇對象
  • 產品選擇標籤通過等級等級product_key下令
  • 通過標記順序選擇產品
  • 更新評級, tag_key

最重要的是讓這些查詢在大量數據上真快,考慮到評級不斷更新。

回答

2

事情是這樣的:

Products : { // Column Family 
    productA : { //Row key 
     name: 'The name of the product' // column 
     price: 33.55 // column 
     tags : 'fun, toy' // column 
    } 
} 

ProductTag : { // Column Family 
    fun : { //Row key 
     timeuuid_1 : productA // column 
     timeuuid_2 : productB // column 
    }, 
    toy : { //Row key 
     timeuuid_3 : productA // column 
    } 
} 

UPDATE
入住這Model to store biggest score

+0

有關列出的等級有序的產品標籤是什麼?或按產品評級排列標籤列出產品? 這樣的查詢需要同時使用2個索引才能生效 – 2010-03-19 21:07:41

+0

這很有道理。感謝您的鏈接!我正在考慮的另一個想法是使用外部工具,如獅身人面像搜索或可能lucandra選擇按評級排序的對象。 Sphinx全文搜索適用於此類任務,但不支持索引的「實時」更新。 – 2010-03-21 13:59:09