2016-01-28 159 views
1

我正在將日期的時間序列數據存儲在cassandra中。我們希望每天存檔/清除超過2天的數據。我們使用Hector API來存儲數據。有人建議我在日常數據超過2天的情況下刪除cassandra數據嗎?對於cassandra行使用TTL方法是不可行的,因爲刪除數據的天數是可配置的。此時表格中沒有時間戳列。我們計劃添加時間戳列。但問題是,時間戳本身不能用在where子句中,因爲這個新列不是主鍵的一部分。 請提供您的建議。cassandra基於時間戳列的時間序列數據清除

+0

是你的模型改編/設計爲別的?因爲這看起來不像Cassandra中的時間序列數據:像列這樣的時間戳應該是集羣密鑰的一部分。 –

回答

2

TTL是正確的答案,有一個內部時間戳附加到每個突變使用,所以你不需要添加一個。手動清洗幾乎從來不是一個好主意。您可能需要稍微處理您的數據模型,check the datastax academy examples for time series

此外,節儉已凍結兩年,現已正式棄用(4.0版中的刪除)。 Hector和其他節儉客戶不再真正維護(see here)。使用CQL和java驅動程序將提供更好的結果,並提供更多可用於學習的資源。

0

我沒有看到什麼阻止你使用TTL方法。

不僅可以在定義模式時使用TTL,也可以在使用datastax cassandra驅動程序將數據保存到表中時使用TTL。

所以,實際上你可以爲每一行分配不同的TTL,由你的java代碼進行配置。

另外,正如克里斯已經提到的,TTL爲此使用了內部時間戳。

+0

我認爲他的意思是說「TTL的價值」將在創作後決定。瘋狂的部分是時間戳不是一個集羣鍵... –

0

嚴格基於你所描述的,我認爲唯一的解決方案是添加timestamp列並添加一個二級索引。

但是,這是一個巨大的指示您的數據模型是遠遠不適應的情況。

強調我的初步意見:

爲型號適應/設計到別的東西?因爲這看起來不像Cassandra中的時間序列數據:像列這樣的時間戳應該是集羣密鑰的一部分。