【问题标题】:Cassandra 0.8 = What kind of "Row Count" features are provided?Cassandra 0.8 = 提供了什么样的“行数”功能?
【发布时间】:2011-09-20 00:03:22
【问题描述】:

同时支持 Cassandra 中的“行计数”(在 CF 中)

a) 随机分区器?

b) OrderPreservingPartitioner?

http://www.datastax.com/dev/blog/whats-new-in-cassandra-0-8-part-2-counters 暗示这很容易实现?引用:““计数”,我们的意思是在单个列值中提供原子增量操作,而不是计算一行中的列数或列族中的行数,这两者都已经得到支持。“

两年前它绝对不支持 RP: Row count of a column family in Cassandra

Furthermoe 即使使用 OrderPreservingPartitioner,它也是(??)一个非常繁重的操作(据我了解,我必须检索所有对象,这不仅是对行计数的轻量级计数操作,而是读取还有所有数据(行?)?)

更新:我完全清楚,新的计数功能与行计数完全不同。但是上面的文字暗示行数也很容易实现并且支持引用“......两者都支持......”?这种营销语言是否意味着它只能作为使用 get_range_slice 的极其繁重的操作?还是有什么我完全错过的新东西,这对两个分区器来说都是轻量级的?

谢谢

马库斯

【问题讨论】:

  • 谢谢蒂洛。绝对不!我更新了标题。

标签: cassandra


【解决方案1】:

计数器和计算行数/列数是两个不同的主题。

http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Count-rows-td5420889.html

我建议,当您向列族添加新行时,只需将计数器 CF/行/键增加 +1,您就不必翻阅所有行(如上面的链接所述,如果您有数十亿?)——这也让你不必关心你使用哪个分区器......

【讨论】:

  • 然而,为了保持准确的计数,您必须在添加键之前检查是否存在,这会阻碍只写插入过程。
【解决方案2】:

Sasha 击中了重点。只是想澄清一下:

上面的文字暗示行数也很容易实现

是的,我在 12 月 9 日的回答已经过时了。 RandomPartitioner 暂时支持以蛮力方式(seq 扫描)计算行数。

【讨论】:

    【解决方案3】:

    Cassandra 中的行计数确实是一种反模式。在极少数情况下您必须这样做,您可以使用 Range Slice Query 遍历所有行并计算总数。这里给出了一个使用 Hector 的例子: http://randomizedsort.blogspot.com/2011/10/counting-all-rows-in-cassandra.html

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 2014-07-09
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多