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 在任何给定时刻都没有准确的计数,但是对于分布式计算,接近正确答案通常就足够了。
让我们考虑以下 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 在任何给定时刻都没有准确的计数,但是对于分布式计算,接近正确答案通常就足够了。