为什么要用时序数据库,influxDB 和 VictoriaMetrics 谁才是王者?

在数据库领域有一种数据库叫做时序数据库,那么相比于传统的关系数据库这种数据库有什么特点呢?
首先我们需要了解一下什么是时序数据,以及它有什么特点?

什么是时序数据?

时序数据库中存储的时序数据就是带着时间戳的数据,采集时序数据的目的是监测数据的前后差异,然后做出响应。

时序数据的特点
  • 一旦被存储就不会被修改
    新的数据只会被添加到系统中,数据不会在将来的某个时段被修改为其他的值。
  • 最近产生的数据的重要性超过老数据
  • 数据量巨大
    因为每隔一个时间段就会新增一批数据,所以数据量非常大。比如对于一个有5000个数据点的工厂,每秒采集一次数据,一小时的数据量就会超过18,000,000条。
  • 往往是时间间隔越小差异性越小
    比如某地的温度,如果用秒级监控,差异会很小
时序数据的来源

时序数据的主要来源有以下三个方面:

  1. IOT
    主要来源是传感器,比如某点的温度、湿度、压力、电流、电压等
  2. 金融和科学数据
    比如交易时段的证券价格,地震监控数据等
  3. IT 基础架构
    这里的主要来源是软硬件的监控数据
为什么要用时序数据库

时序数据有数据量特别巨大的特点。数据量大需要解决两个问题:

  1. 每秒接收和存储数据必须快
    时序数据的数据点多,更新频率高,目前时序数据普遍使用LSM技术,而不是B树来存储数据。LSM先在内存中积累数据然后再批量写入磁盘,而B树的优势在于读取而不是存储。
  2. 能有效压缩数据,节省存储空间
    目前大部分时序数据库采用Facebook提出的Gorilla算法,简单说就是存储数据的差异,因为时序数据有频率高差异小的特点。如果直接使用传统的关系数据库来存储时序数据会需要极高的存储成本,相比传统的关系数据库,时序数据库在存储时序数据上能做到只需要 1/20 甚至更低的存储空间需求。
  3. 在已有数据量巨大的基础上,如何做到快速查询
    很多时序数据库是列数据库,列数据库具有更好的分析数据的性能。
  4. 时序数据往往需要留存策略
    比如几年以前的数据和最近几个月的数据处理方式和留存策略是不同的。时序数据库有相应的处理策略。
InfluxDB 和 VictoriaMetrics 谁是王者

在时序数据库领域 InfluxDB 的名气比 VictoriaMetrics 大的多,但是根据最近一项比较研究 VictoriaMetrics 才是这一领域的王者。我们来看看下面的 Benchmark:

单机性能可扩展性
  • CPU线性可扩展性
    从下图能够看出,VictorialMetrics 和 InfluxDB 相比有更好的线性可扩展性,在一个单核机器上可以支持510K数据点,在64核机器上可以支持高达19M数据点
    VictorialMetrics 有更好的线性可扩展性
  • 写盘带宽需求
    从下图可以看到 VictorialMetrics 对写盘时带宽占用最少,这表明它的数据压缩做的最好,而基于传统数据库的TimescaleDB,在8核时就早早地占满了整个硬盘带宽。
    磁盘写带宽的利用率
  • 查询速度的比较
    在多核机器上 VictorialMetrics 和 TimescaleDB 比 InfluxDB要快,VictorialMetrics 大幅度胜出。
    double-groupby
    在这里插入图片描述
    读者可以从文后的参考链接中读到3个数据库的测试方法和对比详情
结论

本文介绍了时序数据和时序数据库的特点。通过已有的 Benchmark 比较了流行的3个时序数据库。通过比较我们可以看到 VictorialMetrics 显然是3者中的王者。

参考链接:

行数据库和列数据库各有什么优势?
https://valyala.medium.com/measuring-vertical-scalability-for-time-series-databases-in-google-cloud-92550d78d8ae
https://redmonk.com/rstephens/2018/04/03/the-state-of-the-time-series-database-market/
https://medium.com/faun/victoriametrics-achieving-better-compression-for-time-series-data-than-gorilla-317bc1f95932

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
时序数据库InfluxDB的性能测试是通过在特定环境下对其进行写入和查询测试来评估其性能表现。在一个具体的测试环境中,使用了4核16G的CPU内存和1Gbit/s的带宽,操作系统为Ubuntu 4.8.4-2ubuntu1~14.04.3。测试结果显示,InfluxDB在处理时序数据方面表现出色。 引用\[2\]中提到了对InfluxDB的性能测试报告。测试环境包括写入测试和查询测试。在写入测试中,通过模拟大量的写入操作来测试InfluxDB的写入性能。在查询测试中,通过执行各种类型的查询操作来测试InfluxDB的查询性能。 InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。它专门设计用于处理时序数据,并且在处理大量数据和多样化数据类型方面表现出色。相比传统的关系型数据库InfluxDB时序数据处理方面具有更高的性能和效率。 总结来说,时序数据库InfluxDB在性能测试中展现出了优秀的表现,特别适用于处理时序数据。它的高性能和高效率使其成为许多应用场景中的首选数据库。 #### 引用[.reference_title] - *1* [【数据库时序数据库InfluxDB 性能测试和为什么时序数据库更快、时序数据库应用场景...](https://blog.csdn.net/weixin_42319496/article/details/119372355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [性能爆表-时序数据库InfluxDB](https://blog.csdn.net/kobe_okok/article/details/117233188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值