1

我每秒收到大约 1000 个不同的事件(4 个节点集群)。每次活动后,我都需要增加一些计数器。我的问题是,最好有一个只有一列的普通列族,并且所有计数器都被视为带有逗号“,”分隔的字符串(例如:“1,3,5,6,0,2”)或最好创建一个具有多列的 Counter Column 系列?我读了一些文档,它说计数器列系列可以以一致性级别 1 进行读写,这对于阅读来说很快。我不太关心写入性能。

4

1 回答 1

0

我认为这取决于您如何接收事件和延迟要求。

如果您同时从多个来源接收它们并且需要尽快写入数据,那么计数器似乎是更好的方法。对于一个大列,您需要将所有写入序列化到任何列以及读取当前值。这也可能不必要地使您的应用程序代码复杂化。如果性能有问题,您可以尝试为您的计数器列族启用行缓存。我从未尝试缓存计数器列系列,但我没有看到任何文档说它不受支持。您可以尝试并检查 JMX 统计信息以查看它是否正常工作。

如果您正在接收单线程事件并且可以执行诸如读取 1000 个事件的数据之类的操作,然后在将当前计数器值保存在内存中的同时向 cassandra 写入一次,那么单列可能就可以了。但是您需要意识到,如果您碰巧一次只需要读取几个计数器值,那么每次读取都会获取大量不必要的数据。除非您进行一些测试表明某一列的性能明显更好,否则我会支持计数器。

于 2012-10-25T15:38:25.943 回答