什么时间序列数据库选择大量的记录?

时间:2018-01-17 20:51:50

标签: cassandra time-series database-performance

我遇到了每秒存储大约100,000条输入记录的情况。记录的性质是时间序列数据。

我需要不断地对数据运行聚合,其他分析以及一些机器学习算法。当我寻找接近实时的结果时,性能就是这个因素。

你会推荐什么作为数据库引擎?

3 个答案:

答案 0 :(得分:1)

当然,您可以在cassandra上使用适合您的用例的数据模型实现自己的。这可能会为您提供最适合您需求的结果。

您可以查看KairosDB(https://kairosdb.github.io/),这是一个位于apache cassandra之上的时间序列数据库,我在中型单(但裸机)节点上每秒获得5万次写入。

这是非常好的文档(https://kairosdb.github.io/docs/build/html/CassandraSchema.html),并且它具有开箱即用的聚合器(https://kairosdb.github.io/docs/build/html/restapi/QueryMetrics.html)。

我的测试中OpenTSDB速度较慢。 Influx看起来很有希望,但我自己没有经验:https://github.com/influxdata/influxdb

答案 1 :(得分:1)

看看ClickHouse分析数据库。它每秒可以接受数百万行。它可以在一台计算机上每秒扫描数十亿行。它水平缩放到多个节点。它适合时间序列的工作量。

如果您仍然需要时间序列数据库,请尝试VictoriaMetrics。它建立在ClickHouse创意的基础上,因此既快速又节省资源。

答案 2 :(得分:0)

我正在添加自己的解决方案...

ClickHouse绝对是不错的杀手。但是我现在正在评估新的项目开源gpu数据库OmniSci。它的开放源代码版本仅限于单个gpu节点(最多16个gpu设备-oem tesla每个设备具有64GB的空间,您可以获得1TB VRAM,当然不如clickhouse便宜)。带有Kafka数据源的类固醇上的简单SQL数据库(存在JDBC驱动程序)

Omnisci还拥有已经获得许可的交叉仪表盘解决方案,但是您可以进行实时仪表盘显示,例如20500亿个ts记录(8-16 gpus)和多仪表盘实时分析,而无需任何类型的预聚合等。 ....

但这会花钱...

如果您想纯粹开源,那么我的第二个候选对象是NVIDA的RAPIDS框架,该框架实现了cuDF(CUDA Dataframe-类似Spark数据结构),最终您可以使用它来保持数据窗口(追加新内容,删除过时的内容),以及与OmniSci类似的cuxfilter解决方案,但其框架更多,但是使用熟练的前端编码器,您可以实现与OmniSci非常相似/相同的功能。