我进入了每秒有大约100,000条输入记录要存储的场景。记录的本质是时间序列数据。
我需要不断地对数据运行聚合、其他分析以及一些机器学习算法。在这里,性能是我寻找接近实时结果的因素。
你会推荐什么作为数据库引擎?
发布于 2018-01-18 05:21:48
当然,您可以在cassandra之上实现您自己的,并为您的用例提供适当的数据模型。这可能会让你得到最好的结果,以满足你的需求。
您可以看看KairosDB (https://kairosdb.github.io/),它是apache cassandra之上的一个时间序列数据库,我在一个中等大小的单个(但裸机)节点上每秒有50k的写操作。
它有很好的文档记录(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
发布于 2019-10-13 05:30:06
看看ClickHouse分析数据库。它可以接受每秒数百万行的数据。它可以在一台计算机上每秒扫描数十亿行。它可以水平扩展到多个节点。它适合时间序列工作负载。
如果您仍然需要时间序列数据库,那么可以尝试使用VictoriaMetrics。它是建立在ClickHouse思想之上的,所以它是快速和资源高效的。
发布于 2019-11-15 00:26:24
我正在添加我自己的解决方案...
ClickHouse绝对是个不错的杀手。但我现在正在评估新项目的开源图形处理器数据库OmniSci。它的开源版本仅限于单个gpu节点(最多16个gpu设备-使用oem tesla,每个设备有64 as,您可以获得1TB VRAM,当然不像clickhouse那么便宜)。其简单的SQL数据库(JDBC驱动程序存在)与Kafka数据源
Omnisci也有已经获得许可的交叉仪表板解决方案,但你可以拥有实时仪表板,比如说20-500亿的ts记录(8-16个gpus)和多仪表板实时分析,而不需要任何类型的预聚合,等等。
但这要花很多钱。
如果你想纯开源,我的第二个候选者是NVIDA的RAPIDS框架,它实现了cuDF (CUDA Dataframe - like Spark data structure),最终你可以用它来保留你的数据窗口(追加新的,删除过时的),以及cuxfilter解决方案,它类似于OmniSci,但它更多的是框架,但通过熟练的前端编码器,你可以实现与OmniSci非常相似/相同的东西。
https://stackoverflow.com/questions/48309793
复制相似问题