卡桑德拉每日数据清除?

时间:2012-02-14 13:12:57

标签: java database cassandra hector

我在cassandra中有一个列系列,用于存储日常信息。通过每天,我认为它应该每天删除。

所以,我想知道,如果有可能在cassandra中配置清除这些数据。

我来到这里,因为我没有在cassandra页面中找到有关数据清除的更深入信息。

谢谢!

2 个答案:

答案 0 :(得分:4)

尚未使用它,但Cassandra 0.7有一个TTL用于列。也许这会对你有帮助,它会在一段时间过后基本上删除列:

datastax blog post about it

答案 1 :(得分:0)

我知道这是一个古老的问题,但对于任何希望得到2.x +版本答案的Google员工来说,这是Determining Time To Live(TTL)上的DataStax文档。使用带有excelsior键空间和clicks列族的CQL,可以照常创建表:

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) );