cassandra 2.0.11 - 分区键的列数

cassandra 2.0.11 - column count for partition key

让我们考虑以下 table 摘自 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是集群列。
数据加载到 table 然后我们 运行 查询:

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

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

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

(我使用的是 Cassandra v2.0.11)

谢谢

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

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