4

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

所以,我想知道,是否可以在 cassandra 中配置对这些数据的清除。

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

谢谢!

4

2 回答 2

4

还没用过,但是 Cassandra 0.7 有列的 TTL。也许这会对你有所帮助,它基本上会在一段时间后删除列:

关于它的datastax博客文章

于 2012-02-14T13:47:13.557 回答
0

我知道这是一个老问题,但是对于任何想要获得 2.x+ 版本答案的 Google 员工来说,这里是关于确定生存时间(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 驱动程序中使用准备好的语句设置 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) );
于 2014-08-12T00:03:07.553 回答