什么时间序列数据库 select 用于大量记录?

What timeseries database to select for large number of records?

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

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

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

当然,您可以使用适合您用例的数据模型在 cassandra 之上实现您自己的模型。这可能会为您带来根据您的需求量身定制的最佳结果。

您可以查看 KairosDB (https://kairosdb.github.io/),这是一个基于 apache cassandra 的时间序列数据库,我在一个中等大小的单个(但裸机)节点上每秒写入 50k。

它有很好的记录 (https://kairosdb.github.io/docs/build/html/CassandraSchema.html) and it has aggregators out of the box (https://kairosdb.github.io/docs/build/html/restapi/QueryMetrics.html)。

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

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

如果你还需要时间序列数据库,那就试试VictoriaMetrics。它基于 ClickHouse 的想法构建,因此速度快且资源高效。

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

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

Omnisci 也有交叉仪表板解决方案,该解决方案已经获得许可,但您可以实时仪表板,比如 20-500 亿条 ts 记录(8-16 gpus)和多仪表板实时分析,无需任何类型的预聚合等....

但是要花钱...

如果你想完全开源,我的第二个候选者是 NVIDA 的 RAPIDS 框架,它实现了 cuDF(CUDA Dataframe - 像 Spark 数据结构),最终你可以用它来保存你的数据 window(追加新的, 删除过时的)和 cuxfilter 解决方案,它类似于 OmniSci,但它的框架更多,但如果有熟练的前端编码人员,您可以实现与 OmniSci 非常 similar/same 的东西。