cassandra 1大列与读取性能中的多个小列?

时间:2012-10-22 21:29:13

标签: performance cassandra

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

1 个答案:

答案 0 :(得分:0)

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

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

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