【问题标题】:Create Cassandra table using cql3 with default TTL使用带有默认 TTL 的 cql3 创建 Cassandra 表
【发布时间】:2014-07-12 16:01:54
【问题描述】:

是否可以为插入其中的所有行创建一个具有默认 TTL 的表,或者您是否必须始终记住在执行插入/更新时设置 TTL?

在文档中看不到任何内容:

http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html

【问题讨论】:

  • Ziklag,有关此的信息实际上在另一个页面中,“表属性”页面为 default_time_to_live(请参阅下面的答案中的链接)。干杯。

标签: cassandra cql3 ttl


【解决方案1】:

是的,可以为整个列族设置 TTL。

CREATE TABLE test_table (
    # your table definition #
) WITH default_time_to_live = 10;

Inserted rows then disappear after 10 seconds.

我相信这里的工作已经完成:

https://issues.apache.org/jira/browse/CASSANDRA-3974

这是由 DataStax (@PatrickMcFadin) 的 Patrick McFadin 发送的文档参考:

http://docs.datastax.com/en/cql/3.1/cql/cql_reference/tabProp.html

干杯,

【讨论】:

  • Datastax 链接为 404。
  • 关于这个答案的问题:在文档中,它说:您可以通过将 default_time_to_live 设置为零来有效地删除表中的任何列 TTL。这是否意味着它正在删除一列而不是一行?
【解决方案2】:

来自 Cassandra 文档:

您可以通过设置表的 default_time_to_live 属性。如果您尝试为特定的 比表 TTL 定义的时间长的列,Apache Cassandra™ 返回错误。

见:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_t.html

这里是关于 TTL 的一般用途:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html

【讨论】:

    【解决方案3】:

    您可以在表上或在 INSERT/UPDATE 期间设置 TTL。当您将创建一个表时,您可以定义或设置 default_time_to_live 或者您可以稍后在使用默认 TTL 值创建表后更新。如果要设置行级 TTL,可以在插入行或更新任何行时设置。以下是您对此提出的建议:- https://www.geeksforgeeks.org/time-to-live-ttl-for-a-column-in-cassandra/https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/cqlCreateTable.html#tabProp__cqlTableDefaultTTL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 2019-07-09
      • 2013-11-24
      • 1970-01-01
      • 2018-01-06
      • 2012-06-07
      相关资源
      最近更新 更多