【问题标题】:Cassandra daily data purge?Cassandra 每日数据清除?
【发布时间】:2012-03-05 20:31:09
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: java database cassandra hector


    【解决方案1】:

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

    datastax blog post about it

    【讨论】:

      【解决方案2】:

      我知道这是一个老问题,但是对于任何想要获得 2.x+ 版本答案的 Google 员工来说,这里是 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) );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2015-11-05
        相关资源
        最近更新 更多