2012-02-14 34 views
4

我有一個用於存儲日常信息的cassandra內部的列家族。通過每天,我認爲它應該每天被刪除。Cassandra每日數據清除?

所以,我想知道,如果有可能在cassandra中配置清除這些數據。

我來到這裏,因爲我沒有在cassandra的頁面中找到關於數據清除的更深層次的信息。

謝謝!

回答

4

還沒有使用它,但卡桑德拉0.7有一個列的TTL。也許這會幫助你,它會基本上刪除列的一段時間過去之後:

datastax blog post about it

0

我知道這是一個老問題,但對於誰一起去想爲2個版本的答案任何的Google .x +,這裏是Determining Time To Live(TTL)上的DataStax文檔。使用CQL與excelsior密鑰空間和clicks列家人,在你創建表像往常一樣:

CREATE TABLE excelsior.clicks (
    userid uuid, 
    url text, 
    name text, 
    PRIMARY KEY (userid, url) 
); 

當您插入數據時,您所指定的USING TTL條款,其次是數據應該持續秒數:

INSERT INTO excelsior.clicks (
    userid, url, name) 
    VALUES (
    3715e600-2eb0-11e2-81c1-0800200c9a66, 
    'http://apache.org', 
    'Mary') 
    USING TTL 86400; 

請注意,86400是一天中的秒數。您還可以在Java CQL驅動程序中使用prepared statement來設置TTL,只需將其像其他任何綁定參數一樣對待:

String strCQL = "INSERT INTO excelsior.clicks (userid, url, name) " 
    + "VALUES (?,?,?) USING TTL ? "; 
boundStatement = new BoundStatement(statement); 
mySession.execute(boundStatement.bind(
    UUID.fromString("3715e600-2eb0-11e2-81c1-0800200c9a66"), 
    "http://apache.org", 
    "Mary", 
    86400));