【问题标题】:How to design data that exploits the workings of TWCS?如何设计利用 TWCS 工作原理的数据?
【发布时间】:2019-01-30 18:55:31
【问题描述】:

我的问题是,在使用 TWCS 时,Cassandra 是使用自己的时间戳(例如,输入行时的时间戳)还是可以使用数据中的时间戳(例如,timeuuid 或时间戳字段行)何时使用时间窗?

例如,如果我有这样的 Cassandra 数据库:

  • 我有 TTL 为 30 秒的数据
  • 我有 1 秒长的时间窗口
  • 我每秒写入大约 100 行 1MB 行
  • 我的集群中有 3 个节点
  • 我有一个由 (id, second_of_a_minute) 组成的分区键

我的理解是我应该有大约 29 个 SSTable,加上最近时间窗口中的 SSTable,加上任何尚未被垃圾收集的 SSTable,加上 30 秒后任何时间在 memtable 中的任何数据。

现在,如果我查询保存在(现在 - 20 秒)和(现在 - 10 秒)之间的数据,我的数据将存储在大约 10 个 SSTable 中。 Cassandra 是从每个时间窗口检查 SSTables 以检查它是否在我的时间范围内存储数据,还是只在适合我的时间查询的时间窗口内查询 SSTables?

【问题讨论】:

    标签: database database-design cassandra time-series


    【解决方案1】:

    不,Cassandra 使用 TWCS 的内部写入时间戳:

    TWCS 旨在仅处理时间序列数据。它基于 服务器时间,与存储在 数据本身。

    https://blog.pythian.com/proposal-for-a-new-cassandra-cluster-key-compaction-strategy/(参见“现有策略的限制”部分)。

    文档提到它与时间序列数据一起使用的原因是,写入的每一行都必须有一个唯一的主键 - 这样行就不会被重写。通常,此键包含一个时间戳以使其唯一,但它也可以与 UUID 或其他一些唯一值一起使用。

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多