我正在开发一个项目,将日志聚合和分析作为更大项目的一部分。我不知道选择哪个数据库来处理这些日志。我最近在MongoDB和Cassandra之间往返,但我确信还有其他人也适合我的需求。我应该选择哪一个?为什么?
现在一切都刚刚开始,但到目前为止这里有要求:
我们期望将数据库增长到一些TB数据(每秒约50K插入),因此必须进行分片。查询不常见,因为它们主要由较大项目的开发人员使用。但结果需要在几秒钟内返回。
目前,所有机器的存储都很常见(而且很慢)。因此,对于可伸缩性,我认为我们需要充分利用内存和多线程 - 为了使分片有意义。
我到目前为止所获得的基本思想是MongoDB具有更多功能,例如正则表达式或排序结果,并且更容易设置到合适的配置,而Cassandra似乎更具可扩展性(通过简单地添加服务器),以及还有一些简洁的功能,比如在数据上添加TTL。
答案 0 :(得分:5)
稀疏的列式数据存储区(如Apache Cassandra)在汇总时间序列数据方面非常出色。有关示例,请参阅以下文章:
答案 1 :(得分:2)
MongoDB听起来非常适合您的要求。原因如下:
您甚至可以找到合适的配置,以便在非分片设置中使用它。例如,默认情况下,它每隔60秒同步到磁盘,这意味着将缓冲60秒的写入,从而减少IO。我在一台机器上尝试了半个TB的数据,一个索引的字段查询在cca 100-200ms内运行。