如何在cassandra中选择计数器值

时间:2014-02-20 01:32:06

标签: cassandra datastax-java-driver cassandra-2.0

究竟在CQL中(或者更重要的是,在datastax java驱动程序中)我可以查询计数器的值,例如'WHERE counter> 5' ?

谢谢,

2 个答案:

答案 0 :(得分:1)

http://cassandra.apache.org/doc/cql3/CQL.html#counters

因此,您只能按键查询,而不能按计数器值查询。

答案 1 :(得分:0)

米哈伊尔发布的你不能用计数器来做。我还想补充几点。首先,由于架构原因,这基本上是不受支持的,并不是因为“CQL还不支持它”或其他一些肤浅的原因。其次,如果您想通过统计信息(包括计数)进行查询,则需要以下内容。

  • 允许按计数器值查询的表。如果您想要范围查询(<,>或等价物),请考虑计数是第一个聚类列的模式(即:primary key(some_group, counter_value, {counted object id}))。这将在内部按计数器值对行进行排序,从而为您指定的查询提供快速查找。您必须考虑分区键(some_group)的内容。在能够跨节点划分数据和易于全局查询之间存在权衡。

  • 更新可伸缩的已排序表的方法。这里有两个选项,基于数据的速度:

    a)如果更新真的很少,只需实时更新已排序的表。因此,当计数器递增时,删除旧行并插入新行。这为您提供了即时更新,但写入将非常有用,因此如果许多行总是在变化,这将无法扩展。

    b)如果写入是频繁的,或者如果您可以为逐个查询的场景使用稍微陈旧的数据,请考虑运行一个周期性任务,该任务将读取最新的计数并根据需要更新已排序的表。如果您正在进行“大数据”卷,则可能必须在Hadoop环境中运行此操作。