【问题标题】:Cassandra 1.1: querying multiple row keys, but not a rangeCassandra 1.1:查询多个行键,但不是范围
【发布时间】:2012-08-30 15:38:22
【问题描述】:

我已经阅读了很多关于在 Cassandra 中构建反向索引的文档,但是我没有看到任何关于如何使用这些结果来获取适用行的信息。

我知道行切片,但这不适用于这里。我的问题是:如何根据行键获取大量特定行?

在伪 SQL 中:

SELECT * FROM table where Primark_Key IN (2, 32, 76, 1000, 2427)

【问题讨论】:

    标签: cassandra rows cql


    【解决方案1】:

    我认为multiget_slice 是您正在寻找的。获取要获取的键列表。值得记住的是,它并不是特别有效。虽然通常是唯一的选择。

    【讨论】:

    • 谢谢。您能否详细说明为什么这没有效率?
    • 当然 - 基本上因为每个密钥可能存储在您的戒指上的不同位置,所以 cassandra 没有太多可以优化的地方,基本上一次只能得到一个。这可能完全没问题,值得考虑,特别是如果您的 multiget 最终要求大量密钥。
    • 澄清一下,当你执行一个multiget时,协调器会从不同的节点并行请求单独的行。当单个节点必须读取多行时,它基本上是顺序的。总的来说,multigets 并不高效。应尽可能使用宽行模型(通常需要非规范化)。
    • 如果你有很多键并且调用 multiget_slice 可能会以 TimedOutException 告终。
    • 我迟到了,但有人能告诉我 multiget_slice 结果是否保持输入顺序吗?我假设没有。
    【解决方案2】:

    您发布的伪 SQL 也是有效的 CQL 查询

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2012-01-09
      • 1970-01-01
      • 2015-03-10
      • 2014-09-15
      • 2016-07-21
      • 1970-01-01
      • 2015-08-18
      • 2015-06-06
      相关资源
      最近更新 更多