究竟在CQL中(或者更重要的是,在datastax java驱动程序中)我可以查询计数器的值,例如'WHERE counter> 5' ?
谢谢,
答案 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环境中运行此操作。