【问题标题】:fetch all partition keys in cassandra获取 cassandra 中的所有分区键
【发布时间】:2017-08-18 20:54:35
【问题描述】:

我的数据负载很高(每分钟约 5000 万),这就是我的表格的样子:

CREATE TABLE test.metric (
    key text,
    timestamp bigint,
    value double,
    PRIMARY KEY (key, timestamp) )

我需要获取所有唯一的 key 。我当然可以SELECT DISTINCT key from metrics;,但我想知道是否有更有效的方法(除了创建另一个只包含键的表)来获取所有不同的分区键(可能来自一些 cassandra 表)

【问题讨论】:

  • 很好奇 - 您是否创建了一个新表来跟踪键,您不必担心一致性吗?例如。假设您添加了指标,但在新表中添加键失败。然后你必须回滚,但 Cassandra 不会回滚

标签: cassandra


【解决方案1】:

您要做的是设置一组并行作业,每个作业都执行:

SELECT DISTINCT key FROM metrics WHERE token(key) >= ? AND token(key) < ?

然后将环(您可能正在使用 Cassandra 的 Murmur3 分区器,因此您将从 -2^63 变为 2^63)划分为尽可能多的部分,并并行发出这些查询。您可以使用nodetool ring 的输出来帮助您提供一些关于划分作业的提示 - 按主机对其进行分解,这样每个主机只运行少量的 SELECT 查询可能是最高效的。

【讨论】:

  • 谢谢。这很有趣。你能详细说明一下吗? is'n 创建多个查询可能会以重复键结尾?
  • 我只是在阅读这项技术!更多解释见这里:scylladb.com/2017/02/13/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多