用关系型数据库存储查询时序数据怎么样?

2021-01-09 17:12:30 +08:00
 rogergood

最近在调研时序数据(比如机器的监控数据)的存储和查询,看到有一个 TimescaleDB 是基于 PostgreSQL 的,比较好奇关系型数据库能比较高效地处理现在这种数据量很大的时序数据吗?有在实际生产环境中使用过的朋友了解这个吗?

1994 次点击
所在节点    问与答
8 条回复
opengps
2021-01-09 17:16:35 +08:00
没啥太大问题。主要是 io 低。关系型数据库数据读写结构整体复杂,会有一些逻辑影响 io 指标
funky
2021-01-09 17:21:00 +08:00
线上正在使用
funky
2021-01-09 17:23:19 +08:00
你可以看看 prometheus 自带的存储时序数据库 TSDB,如果你要实现监控系统,自己写个 proxy 借助 prometheus 也是可以
rockyou12
2021-01-09 17:32:25 +08:00
TimescaleDB 性能还是很高了,生产用其实没问题的,特别是一般的关系数据和时序数据可以用一个库。它现在最大问题还是压缩比太低了,比较吃硬盘。

按照他们自己的 benckmark,在高负载下 timescaledb 性能比 influxdb 还高出一大截。但现在 influxdb2.0 发布而且快稳定了,不知道提升多少
https://blog.timescale.com/blog/timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/
rogergood
2021-01-09 18:28:32 +08:00
@funky 想问一下,具体的数据规模方便透露吗,比如说 metric 的个数和 device 的个数? 想根据这个对 timescaldb 的写入 io 和磁盘占用在线上环境的表现有个大概的认识
rockyou12
2021-01-09 19:17:06 +08:00
@rogergood prometheus 是专为运维监控设计的,如果你们是 iot 或其它业务它的模式不太合适,当前其实时序数据库我觉得靠谱有 3 个你可以联系他们或找找他们的性能测试文章:

influxdb,最老最稳定,有很强大生态,2.0 版蓄势待发
timescale,性能不错,由于基于 pg 所有可以使用 pg 的生态,开发非常方便。而且各方面性能其实比 influx 强(至少 infuxdb1 )
tdengine,国内团队产品,性能总体应该是最强的,但生态还不完善,有些功能可能还需要打磨但瑕不掩瑜


这几个数据库基本每秒写入几十万的指标点位都是轻轻松松,具体性能还是要看你环境
funky
2021-01-10 15:43:05 +08:00
@rogergood  你是问监控还是 timescaledb,timescaledb 压缩太占磁盘空间了,对数据的压缩比例不高,但是面对 iot 数据都是度量数据,一般不是很大,开源版本可以写个 crontab 定时清理不用的 chunks,商业版本支持添加 schedule job,支持在数据库层面执行任务,写入 io 方面,批量写入,特别是 iot 数据还好,开源版本的 timescaledb 不支持集群模式,要是支持的话就 666 了
funky
2021-01-10 15:52:58 +08:00
对了,prometheus 可以使用 timescaledb 作为默认存储的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/743358

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX