最近在调研时序数据(比如机器的监控数据)的存储和查询,看到有一个 TimescaleDB 是基于 PostgreSQL 的,比较好奇关系型数据库能比较高效地处理现在这种数据量很大的时序数据吗?有在实际生产环境中使用过的朋友了解这个吗?
1
opengps 2021-01-09 17:16:35 +08:00 via Android 1
没啥太大问题。主要是 io 低。关系型数据库数据读写结构整体复杂,会有一些逻辑影响 io 指标
|
2
funky 2021-01-09 17:21:00 +08:00
线上正在使用
|
3
funky 2021-01-09 17:23:19 +08:00 1
你可以看看 prometheus 自带的存储时序数据库 TSDB,如果你要实现监控系统,自己写个 proxy 借助 prometheus 也是可以
|
4
rockyou12 2021-01-09 17:32:25 +08:00 2
TimescaleDB 性能还是很高了,生产用其实没问题的,特别是一般的关系数据和时序数据可以用一个库。它现在最大问题还是压缩比太低了,比较吃硬盘。
按照他们自己的 benckmark,在高负载下 timescaledb 性能比 influxdb 还高出一大截。但现在 influxdb2.0 发布而且快稳定了,不知道提升多少 https://blog.timescale.com/blog/timescaledb-vs-influxdb-for-time-series-data-timescale-influx-sql-nosql-36489299877/ |
5
rogergood OP @funky 想问一下,具体的数据规模方便透露吗,比如说 metric 的个数和 device 的个数? 想根据这个对 timescaldb 的写入 io 和磁盘占用在线上环境的表现有个大概的认识
|
6
rockyou12 2021-01-09 19:17:06 +08:00 1
@rogergood prometheus 是专为运维监控设计的,如果你们是 iot 或其它业务它的模式不太合适,当前其实时序数据库我觉得靠谱有 3 个你可以联系他们或找找他们的性能测试文章:
influxdb,最老最稳定,有很强大生态,2.0 版蓄势待发 timescale,性能不错,由于基于 pg 所有可以使用 pg 的生态,开发非常方便。而且各方面性能其实比 influx 强(至少 infuxdb1 ) tdengine,国内团队产品,性能总体应该是最强的,但生态还不完善,有些功能可能还需要打磨但瑕不掩瑜 这几个数据库基本每秒写入几十万的指标点位都是轻轻松松,具体性能还是要看你环境 |
7
funky 2021-01-10 15:43:05 +08:00
@rogergood 你是问监控还是 timescaledb,timescaledb 压缩太占磁盘空间了,对数据的压缩比例不高,但是面对 iot 数据都是度量数据,一般不是很大,开源版本可以写个 crontab 定时清理不用的 chunks,商业版本支持添加 schedule job,支持在数据库层面执行任务,写入 io 方面,批量写入,特别是 iot 数据还好,开源版本的 timescaledb 不支持集群模式,要是支持的话就 666 了
|
8
funky 2021-01-10 15:52:58 +08:00
对了,prometheus 可以使用 timescaledb 作为默认存储的
|