2014-07-07 34 views
1

假設我有一個名爲'version'的單元格,該單元格包含行的當前版本。如何建模未與Cassandra

該版本號對於很多行都是相同的。

在某些時候,我想查找所有行的版本不等於某個給定的版本,例如:給我所有行的版本!= 1.0,並且返回版本爲0.9,0.8,0.8.1的所有行,0.7.1.2等等(在我的使用案例中,我只會搜索'舊'版本)。

我很想得到一些關於如何建模的信息。

BR,斯萬

回答

0

你可以有你的版本列作爲主鍵(id,版本)的第二部分,然後你可以選擇查詢它*從其中id = x和<版本「1.0」 ;

+0

這不會解決他的問題。他需要查找具有與特定值不同的版本的所有行。使用你的模型你不能得到所有的行,你需要知道分區密鑰 –

+0

是的。它不是一個確切的解決方案但是根據我的知識,它是在cassandra中可以實現的最接近的解決方案。關鍵是:爲了在列上進行不相等的操作,該列應該是聚類列!基於表定義,您必須重新定義才能實現它。 – Rock

+0

問題是我不知道分區鍵是什麼...... – Svante

0

你不能在卡桑德拉做到這一點。 根據情況,您可以在應用程序中創建解決方法並/或使用「IN」子句。我會做的是創建一個表,其中包含每個版本的一組「以前的版本」。

create table version_history (version float PRIMARY KEY , previous set<float>); 

任何時候你需要得到「所有的行與以前到X版本」,我想查詢version_history檢索集,然後進行查詢像

select * from rowcontainer where version in (previous[1], previous[2] ... previous[n])); 

這只是一個想法,您需要始終執行2個查詢,但這肯定比掃描整個表格要好。

HTH, 卡羅