2015-06-02 106 views
1

如何更新整個表併爲每個條目設置TTL?Cassandra將TTL添加到現有條目

當前情況下(卡桑德拉2.0.11):

表:

CREATE TABLE external_users (
    external_id text, 
    type int, 
    user_id text, 
    PRIMARY KEY (external_id, type) 
) 

目前有〜在此表中40mio條目,我想補充一個TTL爲讓說86400秒(1天)。 使用TTL(86400)或更新當前條目的新條目沒有問題,但是我如何爲每個已存在的條目應用ttl?

我的想法是選擇所有數據並用一個小腳本更新每一行。我只是想知道如果有一個更簡單的方式來實現這一點(因爲即使是批量更新,這是會需要一段時間,是一個很大的努力)提前

感謝

回答

1

有沒有辦法改變的TTL C *中的現有數據。 TTL只是一個內部列屬性,與所有其他列數據一起寫入不可變的SSTable。來自the docs的報價:

如果要更改到期數據的TTL,則必須重新插入帶有新TTL的數據。在Cassandra中,插入數據實際上是插入或更新操作,具體取決於數據的先前版本是否存在。

+0

有沒有辦法刪除TTL = null的所有條目? @shutty –

+0

有沒有簡單的方法:只需遍歷所有行,並刪除與ttl = 0。 – shutty

+0

有沒有辦法在cqlsh中做到這一點? –