随着物联网技术的快速发展,物联网设备产生的数据呈爆炸式增长,数据的总量、数据类型越来越多、访问速度要求越来越快、对数据价值的挖掘越来越重视。物联网产生的数据通常都具备时间序列特征,时序数据库是当前针对物联网、工业互联网、应用性能监控场景等垂直领域定制的数据库解决方案,本文主要介绍物联网场景海量时序数据存储与处理的关键技术挑战及解决方案。
作者:王建荣
单位:中移(杭州)信息技术有限公司
1什么是时序数据
时序数据是随时间不断产生的一系列数据,例如持续监控的气象变化数据、股市交易记录、应用监控数据等,通常一个时序数据点可以由时序指标(metric)+ 一组标签(tags)+ 数据产生时间(timestamp)三部分唯一确定。
时序数据更适合体现数据“变化”的过程价值。如果在时间坐标中将这些数据点连成线,过往的数据可以形成多纬度报表,揭示数据的趋势性、规律性,捕获异常;未来的数据可以建立数据模型、做统计分析,实现预测和预警。
2时序数据应用场景
随着5g/iot技术的发展,数据呈爆炸式增长,其中物联网与应用性能监控等是时序数据最典型的应用领域,覆盖物联网、车联网、智能家居、工业互联网、应用性能监控等常见的应用场景。
图一 时序数据应用场景
3时序数据的特征及挑战
在典型的物联网与应用性能监控等时序数据应用场景里,数据产、访问都有比较明显的规律,有很多共同的特征,相比当前互联网典型的应用特征有比较大的区别。
结合时序数据的特征,要满足大规模时序数据存储需求,至少面临如下的几个核心挑战:
高并发高吞吐写入:在一些大规模的应用性能监控、物联网场景,海量的设备持续产生时序数据,例如某cdn内容分发网络系统,3000+台服务器,每秒/每十秒采集超100个系统指标和业务指标,每秒的时序数据点数达到数十万时间点,需要数十台机器的集群规模来支撑全量的业务写入;时序数据存储需要解决大规模集群的横向扩展,高性能平稳写入的需求。
高效的时序数据查询分析:在典型的监控场景,通常需要对长周期的数据进行查询分析,比如针对某些指标最近1天、3天、7天、1个月的趋势分析、报表等;这些查询都需要扫描大量的集群数据才能拿到结果,同时查询的结果集也可能非常大;时序数据存储需要支持多维时间线检索、并具备流式处理、预计算等能力,才能满足大规模应用监控、物联网业务场景的典型查询需求,并且针对时序大查询要最小化对写入的影响。
低成本的时序数据存储:某家庭安防场景,超千万安防设备,每天就产生近百gb的视频切片元数据指标,如果要保存一年的运行数据就需要pb级的数据存储规模;由于数据规模巨大,对存储的低成本要求很高,另外时序数据的冷热特征明显。时序数据存储需要充分利用好时序数据量大、冷热访问特征明显、做好计算、存储资源的解耦,通过低成本存储介质、压缩编码、冷热分离、高效ttl等技术将数据存储成本降低到极致。
简单便捷的生态协同:在物联网、工业互联网等场景,时序数据通常有进一步做运营分析处理的需求,在很多情况下时序数据只是业务数据的一部分,需要与其他类型的数据组合来完成查询分析;时序数据存储需要能与生态bi分析工具、大数据处理、流式分析系统等做好对接,与周边生态形成协同来创造业务价值。
4时序数据库的现状和发展
时序数据库结合时序数据的特征,尝试解决时序数据存储在高写入吞吐、横向扩展、低成本存储、数据批量过期、高效检索、简单访问与时序数据计算等方面面临的挑战。进入2010年后,针对时序数据存储设计的数据库相继诞生,并且时序数据库的增长趋势、关注热度持续领先,国产化进程不断加快。
➢ 时序数据库关注度日趋火热,未来还有更大空间
在db-engine排行榜上,我们可以看到时序数据库在近两年在db-engine上是关注度上升最快的数据库类型。
图2时序数据库关注热度(数据来源:https://db-engines.com/en/ranking_categories)
➢ 时序数据库处于百花齐放,各家时序数据正在深耕各自领域
图3 时序数据库热度排名(数据来源:db-engines)
图4 时序数据库发展简史
经过多年发展,时序数据库大致经历了几个阶段:
第一代时序数据库:基于关系型数据库的简单存储。代表:timescaledb,基于postgresql关系数据库构建。
第二代时序数据库:依赖与hadoop生态的通用分布式存储系统。代表:opentsdb(底层使用hbase),kairosdb(底层使用 cassandra)。
第三代时序数据库:对高性能,低成本有强需求,需要针对时序领域特别专门设计。代表:influxdb,iotdb和tdengine等。
➢ 数据库产品国产化进程加快,大厂纷纷布局
包括tdengine(涛思)、iotdb(清华)、dolphindb(智臾科技)等优秀的国内时序数据库异军突起,自主可控成为国内华为、阿里等厂商布局时序数据库场景的重要考量,华为时序数据库内化influxdb和iotdb,阿里自研tsdb时序引擎,并提供基于influxdb的阿里云tsdb for influxdb,腾讯也推出了tencentdb for ctsdb云服务。
5典型时序数据库介绍及对比
5.1 influxdb
influxdb由golang语言编写,系统性能、稳定性好,被广泛应用,是当前db-engine热度排名第一的时序数据库,生态支持丰富全面。不过,influxdb采用mit开源协议,开源版本没有集群功能,商业版本具备分布式集群、数据分级存储等功能,但价格不菲。
5.2 opentsdb
opentsdb是apache开源软件,是在hbase的基础上开发的,底层存储是hbase,但其依据时序数据的特点做了一些优化。其最大的好处就是建立在hadoop体系上,各种工具链成熟,但这也是它最大的缺点,因为hadoop不是为时序数据打造的,导致其性能很一般,而且需要依赖很多组件,安装部署相当复杂。
图5 opentsdb系统架构
图6 opentsdb在hbase中存储数据模式
5.3 tdengine
tdengine不仅是一款时序数据库,而且还提供缓存、消息队列、数据订阅、流式计算等系列功能,是时序数据的全栈技术解决方案。而且它不依赖任何第三方软件,安装包只有1.5mb,使系统设计、安装、部署和维护都变得极为简单。
图7 tdengine系统框图及全栈解决方案
5.4 iotdb
apache iotdb是一体化收集、存储、管理与分析物联网时序数据的软件系统。apache iotdb采用轻量式架构,具有高性能和丰富的功能,并与apache hadoop、spark和flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。
图8 iotdb系统架构图
iotdb独创采用了tree schema来对时序数据建模,该数据模型更符合工业物联网场景中的层级结构,但牺牲了一些标签灵活性。
图9 iotdb树状模式样例
主流时序数据库对比
数据来源:公开资料及实测分析
电力安全工器具力学性能试验机介绍
牵手新希望乳业打造云原生联合创新实验室 打造乳制品行业数字化最佳解决方案
健身房智能镜子的应用成为一种新的健身潮流
5G基站的加速建设,吸引了多家的厂商加码布局
基于FPGA的图像信息提取设计及仿真
物联网场景海量时序数据存储与处理的关键技术
合成数据对于 AI 开发至关重要
LED显示屏+虚拟环境,展现LED无限可能性
FORESEE S800 SSD加载超级电容助力安防存储
英特尔的问题集中体现了美国半导体制造业的尴尬局面
华为真正的危机 来了!
智能型电动机保护器的详细介绍
小米漂流瓶快应用横空出世 语音+快应用还能这么玩
基于FPGA的倏逝波型光纤气体检测研究
半导体行业中的陶瓷材料
电容的选用常识
谷歌承认雇人监听并转录智能助理的录音
AFRD防火门监控系统介绍
小米有品众筹上架了8H Milan智能电动床Pro,众筹价4899元起
世界首艘燃料电池船诞生 由挪威和德国联合研制