cassandra 2.0.11 - 分区键的列数

时间:2015-01-28 10:44:43

标签: cassandra cassandra-2.0

让我们考虑从http://planetcassandra.org/blog/getting-started-with-time-series-data-modeling/

中取得的表格
CREATE TABLE temperature 
(
    weatherstation_id text,
    event_time timestamp,
    temperature text,
    PRIMARY KEY (weatherstation_id,event_time)
);

因此weatherstation_id是分区键,event_time是群集列。
数据加载到该表,然后我们运行查询:

SELECT COUNT(1) FROM temperature WHERE weatherstation_id = '1234ABCD'

所以实际上我们要求底层cassandra存储行中的列数。

1)是O(1)操作吗?
2)如果不是 - 如何在计算cassandra存储行中的列时实现O(1)?使用计数器?

(我正在使用Cassandra v2.0.11)

谢谢

2 个答案:

答案 0 :(得分:3)

它不是O(1)操作,因为它必须扫描分区并计算列数。如果你想要一个恒定的时间计数,你必须以其他方式跟踪它。您可以使用计数器列,但应首先阅读this

答案 1 :(得分:0)

对于像这样的问题,我可能会使用汇总方法。您将事件存储在表中,然后定期运行任务以聚合您需要的有关数据的任何统计信息,然后将其插入另一个表中。第二个表的作用类似于缓存,因此,如果您正在运行Web服务器,它可以立即为这些统计信息提供服务。如果您使用分区键直接到达具有所需统计信息的行,那么它将是O(1)访问时间。缺点是汇总表在任何给定时刻都没有准确的计数,但对于分布式计算,接近正确的答案通常是足够好的。