时序数据库InfluxDB、TimeScaleDB简介
2024-01-07 21:34:25
一、时序数据库作用、优点
1、作用:
时序数据库通常被用在监控场景,比如运维和 IOT(物联网)领域。这类数据库旨在存储时序数据并实时处理它们。
比如。我们可以写一个程序将服务器上 CPU 的使用情况每隔 10 秒钟向 InfluxDB 中写入一条数据。接着,我们写一个查询语句,查询过去 30 秒 CPU 的平均使用情况,然后让这个查询语句也每隔 10 秒钟执行一次。最终,我们配置一条报警规则,如果查询语句的执行结果>xxx,就立刻触发报警。
上述就是一个指标监控的场景,在 IOT 领域中,也有大量的指标需要我们监控。比如, 机械设备的轴承震动频率,农田的湿度温度等等。
2、优点:
其实关系型数据库也是支持时间戳的,也是可以存储时序数据,但是时序数据库与它相比还是有如下优点:
- 写入能力:时序数据库大多采用采用LSM Tree 的变种,顺序写磁盘来增强数据的写入能力,通常时序数据库都会保证在单点每秒数十万的写入能力。而关系型数据库一般采用 B+树数据结构,在数据写入时,有可能会触发叶裂变,从而产生了对磁盘的随机读写,降低写入速度(如果按照主键递增的顺序依次写入那倒还好,否则可能影响前面已经存好的数据,导致整个树大变动)
- 数据压缩:时序数据库一般用于指标监控场景。这个场景的数据有一个非常明显的特点就是冷热差别明显。通常,指标监控只会使用近期一段时间的数据,比如我只查询某个设备最近 10 分钟的记录,10 分钟前的数据我就不再用了。那么这 10 分钟前的数据,对我们来说就是冷数据,应该被压缩放到磁盘里去来节省空间。而热数据因为经常要用,数据库就应该让它留在内存里,等待查询。而市面上的时序数据库大都有类似的设计。通过此种方法可以大幅度的节省空间
- 为只写不改的场景而设计:这种类型的数据大多数情况下都是按时间顺序依次写入,但不去修改
- 数据分片存储:比如每个小时的数据或者每天的数据会放到一个shard中,查询某一天或者某个小时的数据时只查这个shard便可,不用全部查询,显著的提高查询速度
二、InfluxDB
主要用法:
- 从文件导入数据到InfluxDB
- 使用数据搜集工具,如Telegraf将数据搜集到InfluxDB。可以选择要搜集的数据来源,比如:cpu、nginx、redis、docker等
- 让InfluxDB主动拉取数据。有些服务提供获取自己metrics数据的接口,如nacos,这时只需在InfluxDB中配置相应接口,便可拉取到对应数据
- 利用程序,比如java程序调用InfluxDB提供的api接口,便可将数据上传到InfluxDB中,需要token
详情见:https://blog.csdn.net/qq_44766883/article/details/131511821
三、TimeScaleDB
TimescaleDB是一种用于处理时间序列数据的开源时序数据库,它是PostgreSQL的扩展。它可以处理大量的时间序列数据,并且支持SQL查询和连续聚合功能,如果之前系统已经使用了PostgreSQL,那么可以优先考虑TimeScaleDB
详情见:https://blog.csdn.net/shaopengjie2/article/details/130480459
文章来源:https://blog.csdn.net/qq_38639813/article/details/135388707
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!