3

我需要维护存储大量计数器的小时表。我计划在任何时候只保留当前的小时表和前一小时的表,因为旧数据对我来说并不重要。

例如。如果时间是下午 4 点 30 分,我将在下午 3:00 - 4:00 有一个小时表,而当前的小时表是下午 4:00 - 4:30。一旦时间超过 5:00 pm,我删除 3:00-4:00 pm 表。

每个每小时的表将增长到最大 7-8 gb 的大小,并且查询是高度并发和面向写入的(10:1 写入:读取,每秒 20,000 次写入和平均每秒 2000 次读取)。

由于数据的大小很小(我的数据库中最大 10gb)并且所有查询都是计数器增量,我应该选择像 Cassandra(计数器列)这样的 key val 存储还是像 Redis 这样的内存数据库。(我打算对数据库进行分区以分割巨大的写入负载)?

谢谢。

4

1 回答 1

1

这听起来像是内存中处理的任务:HashMap 比最快的数据库快得多。所以,我建议看看 hazelcast (http://www.hazelcast.com/) 或storm (https://github.com/nathanmarz/storm)。

可能会定期将计数器转储到某些内存数据库(如 Redis 或 Memcached)以简化查询。但它完全在内存中是可行的,根本没有任何数据库后端。

对于这项任务,Cassandra 看起来有点矫枉过正:当您需要以复制和高可用性的方式永久存储 TB 级数据时,这真是太棒了,但如果您以前从未这样做过,将其设置为重负载并非易事。

于 2012-09-18T22:50:00.187 回答