ElasticSearch for Time Series Data

时间:2014-07-22 14:42:20

标签: elasticsearch

我正在评估许多不同的NoSQL数据库来存储时间序列JSON数据。由于查询引擎,ElasticSearch非常有趣,我不知道它是否适合存储时间序列数据。

数据由各种设备收集的各种指标和统计数据组成。每条数据都是JSON对象。我希望收集大约12GB /天,但只需要将数据保存在ES中180天。

ElasticSearch是否适合此数据与MongoDB或Hbase?

2 个答案:

答案 0 :(得分:19)

您可以阅读ElasticSearch时间序列用例示例here

但我认为柱状数据库更适合您的要求。

我的理解是,当您的查询返回一小部分结果时,ElasticSearch的效果最佳,并且它会缓存此类参数以便稍后使用。如果再次在查询中使用相同的参数,它可以在联合中一起使用这些缓存的结果,因此返回结果的速度非常快。但是在时间序列数据中,您通常需要聚合数据,这意味着您将遍历大量行和列。这种行为非常结构化,易于建模,在这种情况下,似乎没有理由说ElasticSearch应该比柱状数据库表现更好。另一方面,它可以提供易用性,较少调整等,所有这些都可以使其更优选。

列式数据库通常为时间序列数据提供更有效的数据结构。如果您的查询结构提前知道,那么您可以使用Cassandra。请注意,如果您的查询请求而不使用主键,Cassandra将无法执行。您可能需要为不同的查询创建具有相同数据的不同表,因为其读取速度取决于它写入磁盘的方式。您需要了解其复杂性,时间序列示例为here

您可以尝试的另一个柱状数据库是为Postgresql提供的列式扩展。考虑到您的最大数据库大小约为180 * 12 = 2.16 TB,此方法应该可以正常工作,实际上可能是您的最佳选择。您还可以预期一些大小压缩大约3倍。您可以详细了解here

答案 1 :(得分:4)

使用基于时间的索引,例如一天的索引,以及索引模板功能和一次查询所有索引的别名,可以很好地匹配。还有很多因素需要考虑到: - 查询类型 - 文档的结构和对此结构的查询要求。 - 读取与写入的数量 - 可用性,备份,监控 - 等等

回答“是”或“否”不是一个简单的问题,在您真正说它是最适合工作的工具之前,我担心您必须自己做更多的研究。