3
我正在開發應該使用Apache Cassandra來存儲數據的網絡應用程序。 我需要爲每個商品存儲評分,然後獲取最高評分的商品列表。在Cassandra中存儲訂購商品
因此,任務 - 以排序順序存儲一些項目的附加信息,以擺脫客戶端排序或使用ORDER BY排序。
其中一個可能的選擇是創建索引柱族:
userId {
100_ItemId1 : null,
90__ItemId2 : null,
80__ItemId3 : null,
80__ItemId4 : null
}
注:用戶id是該行的關鍵,100,90,80 - 是額定值
但在這裏是一個刪除問題,我們應該知道先前的評級值來刪除索引,它可以要求在Column Family中存儲反向信息:
reversed_userId{
ItemId1 : 100_ItemId1,
ItemId2 : 100_ItemId2,
...
}
您能否說有一些模式可以有效地存儲訂購商品?
P.S:我不打算使用OrderPreservingPartitioner,因爲它可以應用於整個KeySpace,並且可能會損害負載平衡和性能。
有多少項目?插入,刪除和查詢的相對頻率是多少? –
請參閱[這個答案](http://stackoverflow.com/questions/11014014/get-column-position/11019631#11019631),因爲它足夠相似,給你正確的想法。 –
@ChrisGerken **項目**的數量:**每個用戶** 50個項目,所以每行有〜50列。 **插入數量**:每天〜10個。 **查詢**的數量:每天最多〜2000-5000個。 **刪除**的數量:每天〜5-10個。 此外,**用戶**的數量是〜10 000 - 20 000。 – lifeObserver