系列化VS 2個查找我們:超級列VS在卡桑德拉
用戶,各自有活動,各自有幾個屬性(時間,類型等)。我們的基本用例是在給定的時間範圍內獲取給定用戶的所有事件。
我們在Cassandra中爲事件列系列考慮了以下替代方案。所有替代份額:鍵= USER_ID(UUID),列名=事件屬性的EVENT_TIME
COLUMN_VALUE =序列化的對象。需要每次讀/寫所有屬性(不是問題),但也可能難以調試(不能使用Cassandra命令行客戶端很容易)
列實際上是一個超級列,列是獨立的屬性。意味着每次讀取所有事件(?)(可能,儘管次優)。還有其他什麼壞處
column_value是另一個CF的行鍵,存儲事件屬性。維護兩個表的手段 - >使調用+讀取/寫入變得更加複雜(?)。
我們錯過了什麼?這裏有什麼標準的最佳做法?
爲了包裝起來:我們最終選擇了#1 - 序列化對象(我們使用JSON)。兩種CF解決方案比較慢,超級柱解決方案似乎違背了似乎是社區的一般動議 - 從超級柱移開。我們也考慮過使用次級索引,但是這在目前的Cassandra狀態下似乎過於嚴格(1.0) –