1

在 CQL 中(或更重要的是,在 datastax java 驱动程序中)我如何查询计数器的值,例如“WHERE counter > 5”?

谢谢,

4

2 回答 2

1

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

所以只能按键查询,不能通过计数器值查询。

于 2014-02-20T04:27:02.833 回答
0

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

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

  • 一种更新可扩展的排序表的方法。根据数据输入的速度,这里有两个选项:

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

    b)如果写入频繁,或者如果您可以在按计数器查询方案中使用稍微陈旧的数据,请考虑运行一个定期任务,该任务将读取最新计数并酌情更新排序表。如果你有“大数据”卷,运行它可能必须在 Hadoop 环境中完成。

于 2014-02-20T22:07:43.547 回答