我们讲工业互联网、工业大数据,首先需要把数据从工业现场采集上来,这是第一步也是基础。
海量的数据从工业现场采集之后存在哪里呢?使用什么样的存储方式对后面的数据分析和计算有重要影响。
这里对数据库方式的存储进行了一个选型比较。
当前的数据库按类型分可以分为实时数据库,时序数据库,NoSQL数据库,关系型数据库。
实时数据库是工业领域长时间以来的数据存储方式,很多传统的工业软件厂商都提供实时数据库。今年来,随着物联网的发展,时序数据库的应用也越来越广。
1 实时数据库一般具备的特点
高速写入的能力:工业实时数据库通常会对写入的速度有很高的要求。以流程工业的场景为例,每个环节都会设置传感器,每个传感器的采集频率都很高,所以写入的并发量会特别大,有时甚至会要求每秒上百万的测点。所以除了对软件的要求之外,也会选用一些高性能的服务器。快速查询的能力:查询的需求分为两块,一是要响应实时的查询请求,用于及时反映系统的状态;二是历史数据也要能快速被查询,由于历史数据的量非常大,在查询时需要对特定时间段的数据做聚合,需要做到即使是查一整年的数据情况,也能很快的反应出来。超强数据压缩能力:上面提到监控数据会被存储很长时间,5年甚至是都是常有的事,在存储容量有限的情况下,就需要对数据做一定的压缩,通常压缩方式会分成无损压缩和有损压缩,相比而言,有损压缩的压缩比会更大一些,有时甚至会达到1:30-40,这就需要设计合理的算法来保留数据中的细节,使数据在还原后仍能保留重要的特征。积累丰富的工具:传统的实时数据库的解决方案一般是从采集开始到直可视化的一整套系统,有多年积累形成的丰富的工具包,比如会积攒上百种的协议,或者各种场景的数据模型,这些都是工业软件的重要竞争力。追求极致稳定:工业上对软件的稳定性要求特别高,除了用主备来保证高可用外,完全由软件的质量来保证程序的持续运行,工程师会自豪地拍胸脯保证软件跑十年也不会出错。2 时序数据库特点
1. 单条数据不会很长,但是数据量很大
2. 它们都带有时间戳,且按顺序生成
3. 数据大部分都是结构化的,用于描述某个参数在某个时间点的特征
4. 写入的频率会比查询的频率高很多
5. 已存储的数据很少有更新的需求
6. 用户会更关心一段时间的数据特征,而不是某一个时间点
7. 数据的查询分析大多基于某一个时间段或者某个数值范围
8. 需要进行统计和可视化的展示
3 选型分析
这里分别选择从一个类型中选择一个代表进行选型比较。
时序数据库选择InfluxDB,这是当前排名最高的时序数据库;
NoSQL数据库选择MongoDB,这也是当前排名最高的非关系型数据库;
关系型数据库选择PostgreSQL。为什么没有选mysql,主要还是从开放性考虑,在功能和性能上PostgreSQL和mysql都非常好,基本差别不大,但是Mysql属于Oracle之后,能否一致保持开源特性让人担忧,PostgreSQL则完全没有这方面的担心。
图一是截止.10的数据库的最新排名。
图1:数据库排名(截止.10)https://db-/en/ranking
表1:数据库分项比较
4 结论
只针对开源版本来说,Influxdb不支持集群,集群和高可靠用需要自己设计实现方案,在生产环境下不是最佳选择,如果不考虑这个方面或者可以购买企业版的话,influxdb是不错的选择。
PostgreSQL 在有了timescaledb 之后具备了时序数据库的功能,同时又天然支持集群和高可用方案,很好的选择。
MongoDB需要自己设计时序方案,稍显麻烦了,如果技术实力可以的话,也是一个选择。
如果觉得《工业数据存储数据库选型比较》对你有帮助,请点赞、收藏,并留下你的观点哦!