Node-RED物联网应用开发工程实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 物联网工程和时序数据库

和IT类工程一样,系统中存在数据库。和传统数据库不一样的是,物联网数据具备以下特点。

• 采集的所有数据都是时序数据,即和时间强关联,每一个数据都有时间戳。

• 数据是结构化的,不存在非结构化数据(如文件、图像等)。

• 一个数据采集点产生唯一的时序流,按照采集点进行时间组织。

• 很少有数据更新或删除操作。

• 一般是按到期日期删除数据。

• 数据以写操作为主,读操作为辅。

• 数据流量平稳,可以较为准确地计算。

• 数据都有统计、聚合等实时计算操作。

• 一定是在指定时间段和指定区域查找数据。

• 数据量巨大,一天的数据量就超过100亿条。

由于这些特点,如果用传统的关系数据库(如Oracle、SQL Server、MySQL)处理物联网数据,将非常困难,性能也得不到保证。同时,这些不间断产生的数据最终需要进行一些分析,因此需要在不断写入的情况下进行数据抽取,合并其他业务数据进行数据分析工作,如:综合所有的温湿度传感器的数据并配合办公场地的考勤数据进行统一分析,得到实时调节空调新风的方案。同时,海量数据处理面临挑战,如一台设备每秒上报一条数据,每条数据中包含10个参数,则一天产生864000个数据点,一年约产生3.15亿个数据点。再假设一个车间部署1000个设备,每年就产生3150亿个数据点,3.4TB数据,100个车间则需要处理340TB数据,存储5年则为1720TB数据。因此面对物联网的新型环境,数据库面临的挑战是如何实现高效写入、高效查询、存储空间动态扩展、水平扩展、简单易用和安全可靠。

在物联网场景下,传统的数据库存在以下缺陷。

• 关系数据库:海量时序数据读写性能低,分布式支持差,数据量越大,查询越慢。典型场景包括低频监控场景、业务管理系统。典型产品包括Oracle、SQL Server、MySQL。

• 传统工业实时库:架构陈旧,无分布式方案,无法水平扩展、依赖Windows等环境、分析能力弱,而且往往是封闭系统,无法云化部署。典型场景包括SCADA系统、生产监控系统。典型产品包括Wonderware、Siemens SIMATIC WinCC、Rockwell Auto mation FactoryTalk、GE Digital iFIX等。

• Hadoop大数据平台:组件多而杂,架构臃肿,支持分布式但单节点效率低,硬件维护、人力成本非常高。典型场景包括舆情大数据分析、电商大数据分析。

• NoSQL数据库:计算实时性差,查询慢,计算内存、CPU开销巨大,无针对时间关系的优化措施。典型场景包括非结构化数据存储、爬虫数据。典型产品包括MongoDB等。

在此背景下,市面上出现了一类新的数据库:时序数据库。时序数据库是一种专门用于存储、管理和查询时间序列数据的数据库系统。时间序列数据是按照时间顺序采集的数据,通常包括时间戳和与该时间相关联的值,如传感器数据、日志、监控数据等。时序数据库优化了时间序列数据的存储和检索,以满足对这类数据的高效处理需求。

以下是一些时序数据库的特点。

• 高效存储和压缩:时序数据库采用特定的存储结构和压缩算法,以最小化数据存储空间,并提高数据写入和读取的效率。

• 快速查询和分析:提供高效的查询引擎,能够快速检索和分析大量的时间序列数据,支持常见的聚合、计算、过滤等操作。

• 时间索引和划分:时间序列数据按时间进行索引和划分,以便快速定位和访问。

• 实时数据流采集和处理:支持实时数据流处理和采集,并实时存储。

• 数据质量和一致性控制:提供机制确保数据的质量和一致性,包括重复数据检测、缺失数据处理等。

• 扩展性和分布式架构:具备良好的横向扩展能力,可以分布式存储和处理大规模数据。

• API和集成:提供丰富的API,方便开发人员轻松地对时序数据库完成存储、抽取等各种数据操作。

一些常见的时序数据库系统如下。

• InfluxDB:一款高性能的开源时序数据库,专注于快速存储和查询大量时间序列数据。

• TDengine:一款高性能、高可靠的国内开源时序数据库系统,专门用于存储和处理大规模时间序列数据。它被广泛用于物联网、金融、工业监控、智能制造等领域,以满足大数据量、高写入频率、实时查询和分析的需求,查询性能上已经超过In-fluxDB。

• Apache IoTDB:一款开源、高性能的时序数据库系统,专门用于存储、管理和查询大规模物联网领域的时间序列数据,是由清华大学数据库研究团队于2015年发起的开源时序数据库项目,在2019年向Apache软件基金会提交并被接纳为Apache顶级项目,提供了可扩展、灵活、高性能的时间序列数据管理解决方案。

• Prometheus:开源的监控系统和时序数据库,用于记录和查询实时监控数据。

• KairosDB:开源的分布式时序数据库,用于大规模时间序列数据的存储和分析。

• Graphite:一款开源的时间序列数据存储和可视化系统,用于监控和度量。

• OpenTSDB:基于HBase的开源时序数据库,用于大规模、高性能的时间序列数据存储和查询。

从2013年开始,物联网时序数据库得到了高速发展。从DB-Engines的专业统计可以看出,2020年是发展最为迅速的一年,如图1-8所示。

图1-8 时序数据库发展趋势

商用物联网工程需要选择一个合适的时序数据库作为基础,通过Node-RED和时序数据库的专用节点进行对接,或者按照时序数据库的接口进行自定义节点开发。目前,In-fluxDB在Node-RED中的节点名字为node-red-contrib-influxdb,可以通过节点名字搜索实现安装。