ElasticSearch for Time Series Data

Pat*_*ick 6 elasticsearch

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

数据由从设备以不同间隔收集的各种度量和统计数据组成.每条数据都是JSON对象.我希望收集大约12GB /天,但只需要将数据保存在ES中180天.

与MongoDB或Hbase相比,ElasticSearch是否适合这些数据?

Ser*_*top 19

您可以在ElasticSearch时间序列的用例例如读了这里.

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

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

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

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


Jet*_*die 6

使用基于时间的索引,例如每天一个索引,连同索引模板功能和别名来一次查询所有索引可能会很好地匹配。仍然有很多因素需要您考虑,例如: - 查询类型 - 文档的结构和对该结构的查询要求。- 读取量与写入量 - 可用性、备份、监控 - 等

回答是或否不是一个容易的问题,恐怕你必须自己做更多的研究才能真正说它是这项工作的最佳工具。