物联网关键技术:时序数据库

物联网系统中,需要实时处理的数据可通过队列送入流处理引擎;不需要实时处理的数据,用于离线分析或数据挖掘,需要先存储起来。物联网系统的数据存储的方式很多,要根据实际场景来选择。

物理网系统各种可能的存储选择

物联网的数据主要是通过传感器采集, 经过解析和清洗, 以结构化的格式进行存储。在数据量不大的情况下, 用mysql等关系数据库就可以满足我们的需求。如果经常有很多报表统计的需要,也可以使用clickhouse、greenplum等nosql数据库。

物联网系统的数据存在特殊性,不同于传统互联网应用,除了互联网应用常用的数据库,可以结合物联网系统的数据特点,设计专门的数据存储系统。

物联网数据特点

数据写入

物联网系统的数据写入具有平稳、持续、高并发高吞吐的特点;通常写多读少,实时写入传感器最近生成的数据,几乎没有数据更新的操作。

数据查询和分析

  • 物联网系统的数据通常需要按时间范围读取,系统使用者不会去关心某个特定点的数据,关心的是一段时间的数据;
  • 时间近的数据被读取的概率高,查询的粒度比较细;反之时间远的数据被读取的概率低,查询粒度比较粗;
  • 物联网系统往往需要支持多精度的数据查询和多维度的数据分析。

数据存储

物联网系统数据存储量大;数据冷热分明,不同时效的数据查询需求不同;数据存储也要实现多种精度的数据存储,通常是按照时间维度统计。

时序数据库

物联网数据有个特点, 那就是每条数据都会带一个时间戳, 代表数据被采集的时间,所以物联网系统的数据是时间序列数据。

时序数据库尤其适合时间序列数据的存储,比如互联网运维领域常用的Prometheus就是基于leveldb引擎的时序数据库。顾名思义,时序数据库就是存放时序数据的数据库,支持时序数据的快速写入、持久化、多维度的聚合查询等功能。

最早的时序数据库应该是RRDTool(Round Robin Database Tool),由Tobias Oetiker 编写,后来世界各地的人对代码做出了各自贡献。

RRD存储数据的文件好似一个圆

RRDTool数据库由一个固定大小的数据文件来存放数据,此数据库不会像传统数据库一样为随着数据的增多而文件的大小也在增加,RRDTool在创建好后其文件大小就固定了。

可以将RRDTool的数据文件看成一个圆,圆的众多直径把圆划分成一个个扇形,每个扇形就是可以存数据的槽位,每个槽位上被打上了一个时间戳。

圆心上有一个指针,随着时间的流逝,取回数据后,指针会负责把数据填充在相应的槽位上;当指针转了360度后,最开始的数据就会被覆盖,就这样RRDTool循环填充着数据。

在RRDTool数据库之后,又出现了很多开源数据库。

历史上发布的开源时序数据库:

·1999/07/16 RRDTool First release

·2009/12/30 Graphite 0.9.5

·2011/12/23 OpenTSDB 1.0.0

·2013/05/24 KairosDB 1.0.0-beta

·2013/10/24 InfluxDB 0.0.1

·2014/08/25 Heroic 0.3.0

·2017/03/27 TimescaleDB 0.0.1-beta

从2016年以后,随着物联网市场的发展,时序数据库也跟着火了起来。2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB;2017年2月Facebook开源了Beringei时序数据库;2017年4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了。

按照存储的底层技术,大致可以将时序数据库大致分为三类:

  • 基于文件存储:RRDTool,Graphite Whisper。此类常用于服务监控告警,数据存储基于RRD的文件结构。
  • 基于K/V数据库:opentsdb基于hbase,kairosDB基于cassandra,prometheus基于leveldb,influxdb则选择自己实现的一套KV存储结构,类似LSM(Log Structured Merge) tree的TSM(Timestamp Segments Merged Tree)。
  • 基于关系型数据库:MySQL,PostgreSQL 等关系数据库也可以保存时间序列数据。
  • 时序数据是基于时间的数据。在以时间为轴的坐标系中将这些数据点连成线,可以做成多维度报表,揭示历史数据的趋势性、规律性、异常性;也可以做大数据分析,机器学习,实现对未来的预测和预警。时序数据库为时序数据的归纳和分析提供了存储基础,在物联网蓬勃发展的今天,必将得到越来越广泛的应用。

    (0)

    相关推荐

    • Python常用的数据存储方式有哪些?五种!

      当我们学习Python的时候,肯定避免不了与数据打交道,而提及数据,大部分人都会想起Python数据存储,那么你知道Python常用的数据存储方式有哪些?我们一起来看看这五种存储方式吧. 1. jso ...

    • OpenTSDB是什么

      OpenTSDB 是一个时间序列数据库.它支持秒级数据采集所有 metrics,支持永久存储,可以做容量规划,并很容易地接入到现有的报警系统里.OpenTSDB 可以从大规模的集群(包括集群中的网络设 ...

    • TDH8.0使用必读2: 10种数据模型全支持 未来属于多模型大数据平台

      引言 星环科技于2021年3月发布了星环极速大数据平台TDH的8.0版本.相信很多用户都对这款产品非常感兴趣. 本系列文章向您逐一介绍TDH8.0全新功能和技术创新.帮助企业级数据平台用户更全面.深入 ...

    • SIGMOD 2020 | 为数据库构建基于存储布局的多维学习索引

      论文原文:Learning Multi-dimensional Indexes 论文地址:https://www.aminer.cn/pub/5de8d5463a55ac9c4229173a   在多 ...

    • 【新提醒】未来传感器发展为物联网关键技术

      什么是传感器?传感器是一种检测装置,能感受测量到的信息,并且能把该信息变换形式输入,实现信息的记录.存储.处理.输出.显示和控制等功能.通俗地以我们的躯体来做比喻,我们的眼睛.鼻子.耳朵等器官就是一个 ...

    • 物联网关键技术:云原生容器技术在边缘计算中的应用

      何为云原生 随着云计算的应用普及,最近几年,云原生技术(Cloud Native)的概念很火.Pivotal公司的Matt Stine于2013年首次提出云原生的概念:云原生的具体含义在过去的几年中也 ...

    • 物联网关键技术:边缘计算

      物联网的许多应用实现不完全依赖于云平台,边缘计算技术可以实现物联网应用产生更快速的网络响应,满足行业应用在实时业务.应用智能.安全与隐私保护等方面的需求. 2020 年全球有超过 500 亿的终端与设 ...

    • 物联网关键技术:如何实现设备接入

      物联网云平台 设备接入.规则引擎.实时计算.数据存储都是物联网云平台的关键技术,其中设备接入组件(IoT Hub)是物联网云平台的核心. 物联网云平台架构(简化示意图) 物联网云平台需要支持多网络多协 ...

    • 物联网关键技术:消息队列

      消息队列MQ连接物联网与后端系统(业务应用.数据分析) 大量的设备接入物联网平台后,会产生各种类型的事件和数据,对接到后端的各种服务,包括计算和存储.消息队列可以起到异步通信.应用解藕.削峰平谷的作用 ...

    • 物联网关键技术

      目录 一.传感器概述 二.传感器原理 1.电阻式传感器 2.电容式传感器 3.电感式传感器 4.压电式传感器 5.磁敏传感器 6.光电式传感器 7.热电偶与热电阻 三.传感器数据处理 1.温度补偿 2 ...

    • 利用NBI可视化+influxDB时序数据库构建物联网大数据分析平台

      什么是时序数据库        先来介绍什么是时序数据.时序数据是基于时间的一系列的数据.在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性.规律性.异常性:往未来看可以做大 ...

    • PPT 微课视频带你了解物联网应用层关键技术!

      文末可获取本文PDF版资料 物联网技术概论 主编 季顺宁,教材<物联网技术概论>,本书是高等职业教育系列教材,配套电子课件.习题答案.微课视频. 视频一:区块链概念 点击观看视频

    • 10kV配电物联网智慧台区关键技术与实践

      珠海许继电气有限公司的研究人员赵凯.孙豪文,在2020年第7期<电气技术>杂志上撰文指出,传统配电网管理模式不满足新时期发展需求,迫切需要深入应用"云大物移智"等先进技 ...