时序数据库选型、对比IotDB与InfluxDB

为什么要用时序数据库

首先时序数据库是一种针对时序数据高度优化的垂直型数据库,在各行各业有着广泛的应用。
通常情况设备产生的过程数据有一个非常明显的特点就是和时间有关,一般来说,工业数据、设备数据的典型特点包括

  1. 产生频率快
    以常见数据采集、发送数据为例,分为高低优先级数据,5秒,到每天一个EMS单采集点会发送17280
  2. 严重依赖采集时间
    设备数据每一条数据要求对应唯一时间
  3. 测点多、信息量大,但结构相对简单
    常规的实时监测系统均有成千上万的监测点,监测点每秒钟都产生数据,每天产生大量的数据
    比如,现有监测点共有2000个,以后会随着研发设备类型的增加,监测点也会增加。发送数据格式相对较为简单主要以格式发送。
    估算数据量:5000台设备17280条数据 = 86400000条数据
    上报数据大小4kb
    5000个设备数据大小为4kb
    86400000= 345,600,000/1024/1024=330(仅供参考,未考虑压缩情况)
  4. 抵达的数据几乎总是作为新条目被记录
  5. 数据通常按照时间顺序抵达
  6. 时间是一个主坐标轴(既可以是规则的时间间隔,也可以是不规则的)
  7. 基本不修改已有数据

mysql与时序数据库对比

  1. 时序数据库读取、插入数据优于mysql
  2. 阿里巴巴《Java 开发手册》提出单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表,mysql数据行数大于2000万后性能会有所下降,所以不适合该场景
    综上所述,使用传统的数据库不满足以上条件,所以引入运势而生的时序数据库,存储海量数据。且做到分析过去的变化,监测现在的变化,以及预测未来将如何变化。

各维度对比

对比IotDB与InfluxDB(主要是阿里云提供的服务对比)
目前阿里云提供influxDB最新版本为:1.8.9

对比维度IOTinfluxDB
运维需私有化部署,保证服务稳定性1.支持集群部署; 2.阿里云支持InfluxDB®版本,提供了图形化的控制台,方便进行基本的管理操作,避免学习InfluxDB复杂的基本管理命令 3.influxDB支持国外云服务部署
可靠性1.0.12以上支持集群部署;2.数据库安全问题需自行实现阿里云提供对应服务
易用性类SQL查询1.0 支持类SQL查询,2.0开始influxSQL
兼容性-emqx不支持桥接,需手动编写代码完成功能支持直接桥接,emq数据直接入库
DBEngines排名排名19排名第1

排名截图
排名链接:DB排名在这里插入图片描述

结论

在大量数据的情况下,iotDB性能方面有高于influxDB,易用性持平,但是从运维和可靠性方面分析,influxDB是优于iotDB。
1.可以自行搭建或购买云influxDB云服务与自购服务器搭建iotDB集群费用相差不大,但是提供的云服务可以有效减少运维成本和不可靠因素;
2.Emqx支持数据持久化,直接桥接到influxDB,尚未支持iotDB,数据直接桥接到influxDB,可以有效减少我们服务的负载;
3.DBEngines排名中,influxDB稳坐第一的位置,iotDB虽说是增长的趋势,但是排名还是略低一些,排名19

综上所述,物联网落地方案千差万别,不像传统mysql、Oracle使用场景是经过多年验证的、可靠的选型;选择某一个时序数据库数据库需要结合团队运维、开发成本、数据可靠性、场景适合什么数据库等多条件综合分析,而不是为了用技术而用技术,上面只简单的说明了iotDB,但是也需要持续关注国产数据库发展,如TDengine、DolphinDB优秀的国产时序数据库;也要关注influxDB2.x版本更新提供的新功能与特性。也许在项目后续的版本迭代中选择与各位大佬的项目更契合的数据库与新的版本。

后续会补上基本influxDB基本使用与EMQ的常用实现方案

InfluxDB、TDengine和IoTDB都是流行的时间序列数据库,用于处理和存储大规模时间序列数据。它们在设计理念、功能特性和适用场景上有一些区别。下面是它们之间的对比: 1. InfluxDB: - 设计理念:InfluxDB是一个开源的、分布式的、高性能的时间序列数据库,专门为快速存储和检索时间序列数据而设计。 - 功能特性:支持高并发写入和查询操作,提供SQL-like查询语言(InfluxQL)和基于HTTP的API,支持数据的聚合、降采样和连续查询等功能。 - 适用场景:适用于需要实时监控和分析大量时间序列数据的场景,如监控系统、物联网、传感器数据处理等。 2. TDengine: - 设计理念:TDengine是一个开源的、高性能的时间序列数据库,旨在提供高效的数据存储和实时数据分析能力。 - 功能特性:支持高并发写入和查询操作,提供类似于SQL的查询语言(TAOS SQL)和基于TCP/UDP的API,支持数据的压缩、分区和副本等功能。 - 适用场景:适用于需要高性能和低延迟的实时数据分析场景,如物联网、金融行业的交易数据分析、工业监控等。 3. IoTDB: - 设计理念:IoTDB是一个开源的、分布式的、可扩展的时间序列数据库,专门用于存储和处理物联网设备生成的海量时间序列数据。 - 功能特性:支持高并发写入和查询操作,提供类似于SQL的查询语言(IoTDB SQL)和基于JDBC的API,支持数据的压缩、索引和多维查询等功能。 - 适用场景:适用于大规模物联网设备数据的存储和分析场景,如智能城市、工业自动化、智能交通等。 总体而言,这三个时间序列数据库都具有高性能、高并发的特点,适用于不同规模和类型的时间序列数据处理场景。选择哪个数据库取决于数据规模、性能需求、功能需求以及你的团队对相关技术的熟悉程度。在进行选择时,建议进行详细的评估和性能测试,以确定最适合你的具体需求的数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值