2014-02-13 71 views
1

我需要在Cassandra列族(寬行/動態列)中存儲用戶名列表。 列名/比較器類型將爲整數,以便根據分數對用戶進行排序。 得分範圍從0到100.問題是,如果兩個或兩個以上的用戶有相同的分數,我如何將它們存儲在不同的列?,因爲cassandra不會允許... 有什麼辦法可以將整數到timeuuids?或者任何其他解決這個問題的方法?如何避免cassandra中的列名衝突

回答

3

這是我經常見到的問題(不是分數,但是防止列名衝突)。一般來說,解決方案是將UUID連接到列名的一種或另一種形式(因爲這些都是永不衝突的)。

如果你想繼續按分數排序,那麼我建議你使用CompositeType列名。 更具體地說:

CompositeType(score: Integer | time: TimeUUID)

在卡桑德拉的比較,然後將第一排序分數,然後按時間(把最近的過去,我相信)。 TimeUUID還應該處理「同時」分數發佈,即使認爲使用Long timestamp的概率可能會很低。