在很多物联网系统中,都需要对联网的设备进行监控,并对监控采样到的数据进行持久化。对采样数据进行持久化,其实很多年前在工业领域已经有专门的数据库来完成这个任务了。在工业领域,这个叫实时数据库。

工业领域的实时数据库具有数据采集、实时数据缓存、数据回写(向设备发送指令)、采样数据归档存盘等主要功能。目前工业领域实时数据库基本上被国外厂家所垄断,价格昂贵。以PI数据库为例,基础版本(只有5000个测点)就需要大约10万美元,每个数据采集接口需要6000美元。这个价格对新兴的物联网公司来说代价太大了。

幸好,最近几年IT公司针对IT设备运维提出了一种新型的数据库:TSDB,时序数据库。该数据库专门用来存储时序数据,物联网系统从设备上采集的数据就是一种时序数据,物联网系统完全可以用TSDB来存储设备采样数据。

目前国内大型互联网公司中的阿里巴巴、百度等已经进军物联网行业的公司都提供了云服务形式TSDB数据服务。如果你的物联网应用是运行在互联网上,并且服务器也是用了Alibaba或者百度的云服务,那么你完全可以采用他们的TSDB服务来保存系统中的时序数据。

但假如你的物联网应用是运行在封闭式的局域网或者专网中的,又该如何选择呢?

用搜索引擎搜索下 “tsdb”或者 “时序数据库”,你可以看到各种开源的时序数据库,我没有对各种开源时序数据库进行过详细对比,只是大致上看了下别人的评论。从评论来看InfluxDB应该是目前综合性能最好的,但是它的集群版是闭源的商业产品。OpenTSDB用的人也挺多,但是性能上比较差,写入速度波动幅度比较大。假如你的物联网系统需要保存历史数据的测点数量不超过5万,那么用InfluxDB应该是没问题的。

假如你想对各种TSDB做一个测试,并根据测试结果来选择,我的建议如下:

1、测试其写入速度,并关注写入速度的波动性。所有的TSDB在实现的时候肯定都用来内存来缓存写入速度的,它们需要在特定时机把缓存的数据写入到磁盘进行归档。所以,在考察写入速度的时候,一定要关注它在对内存数据进行归档化处理时候的写入速度。

2、在写入的同时测试其查询速度。因为物联网系统中设备时刻都在产生数据,你的每个查询都是和大量的写入操作同时执行的。

3、测试其数据完整性,前面我们提到tsdb在执行写操作时都是先写内存的,然后在特定时候归档到磁盘。 这样一来就存在"tsdb数据库正常关闭或者异常关闭时候 丢失数据"的可能性。作为tsdb的使用者,当然希望它关闭重启的时候尽可能少丢失已经写入的数据。

4、测试其在时序错位情况下的数据完整性,时序错位有两种情况:采样数据的时间和tsdb服务器当前时间有较大偏差;两个不同测点之间,几乎同时写入的数据,但被标记为不同的采样时间(有较大的时差);在这两种情况下,重启服务器后,测试其数据丢失情况。

5、测试其磁盘占用率,假如你的系统中连接了1000的设备,每个设备有10个测点,每个测点没秒钟持久化一次,那么你每天需要持久化的时序数据有864兆,每份数据最少包含一下内容:一个测点Id、一个时间戳、一个值。测点算它4个字节、时间戳8个字节、值4个字节。在不压缩的情况下至少需要13G磁盘空间。所以压缩性能是tsdb的一项关键指标。

6、了解其查询接口是否丰富,既然把这么多历史数据都保存下来,那当然是希望这些数据能发挥出其价值。一个强大的查询接口是这些数据发挥价值的前提条件。除了普通的按照时间和标签查询某些测点在某个时间段的所有值之外,我觉得tsdb还应该包括:降频查询(在时间轴上分组聚合),聚合查询(把一些测点按照某个算法计算相同采样时间点的值,可以在查询时聚合或者写入时聚合)。
---------------------
作者:spdata
来源:CSDN
原文:https://blog.csdn.net/spdata/article/details/79777672
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/zouhao/p/9862142.html

物联网系统开发如何选择时序数据库相关推荐

  1. 物联网场景中,我们如何选择时序数据库 ?

    如今时序数据的应用场景十分广泛,许多类型的数据都是时间序列数据: 金融市场交易 传感器测量(水冷.高温.地震...) 服务器监控(CPU.内存.磁盘...) 资源消耗(能源.电力...) 人体健康(心 ...

  2. 一篇入门物联网大数据:TDengine时序数据库

    目录 一.大数据时代 二.TDengine设计思想 三.CAP理论和TDengine的特性 1.CAP理论 2.TDengine特性 四.数据模型 1.数据特点 2.超级表和表 3.数据查询 a. 单 ...

  3. pos系统开发步骤1-创建数据库以及拼音缩写的实现

    pos系统开发步骤1-创建数据库以及拼音缩写的实现

  4. 环保监测平台为什么弃用MySQL,而选择时序数据库?

    小 T 导读:昆岳互联的"a环保"APP基于自主打造的环保产业互联网平台(INECO平台),对环境基础设施海量数据实时处理与分析,可以秒级实时采集工业大气环保各项监控指标的数据,分 ...

  5. 物联网系统开发的11个步骤【看评论区里领取项目资料】

    如果你还没有听说过"物联网"这个词,那你就out没商量了.物联网作为我国新经济增长的战略新兴产业,是继通信网之后的另一个万亿级市场.在未来,物联网还将是推动世界发展的下一个重要生产 ...

  6. LINUX嵌入式系统开发平台选择

    1 嵌入式系统与Linux 按照电气工程师协会的一个定义:嵌入式系统是用来控制或监视机器.装置或工厂等的大规模系统的设备.具体说来,它是电脑软件和硬件的综合体:是以应用为中心,以计算机技术为基础,软硬 ...

  7. 抖音seo源码系统开发服务商选择

    "账号矩阵"是一种账号运营的高阶玩法,指一个运营主体同时开设多个平台多个账号利用品牌联动的形式来实现账号之间的相关引流,以账号组的形式实现企业营销价值最大化.那么运营多个账号,短视 ...

  8. field list什么意思_时序数据库有什么不一样?

    前言 如今在万物互联(IoT)兴起的推动下,时间序列数据(衡量事物随时间变化的数据)应用和场景激增,是增长最快的数据类型之一,比如监控指标数据,传感器数据,日志,财务分析等等:时间序列数据具有特定的特 ...

  9. 监控系统如何选择合适的时序数据库?

    1.可以按照以下需求自行选择合适的存储: 小而精,性能高,数据量较小(亿级): InfluxDB 简单,数据量不大(千万级),有联合查询.关系型数据库基础:timescales 数据量较大,大数据服务 ...

最新文章

  1. Docker的性能损耗:以基因组分析流程为例
  2. xilinx中IP核是灰色的 license为带美元的小锁
  3. ASCII码对照表(不可见字符)
  4. 创作共用协议创始人-Lawrence Lessig(2)
  5. Python easy_install
  6. qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件
  7. form表单reset报 reset is not a function
  8. 基于内容的图像检索概述
  9. Unix/Linux的内存映射
  10. 《Android游戏开发详解》一3.5 继承
  11. 基于JavaWEB的学生考勤管理系统
  12. IDEA 导入项目 导入不进去
  13. 【设计模式】简单工厂模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  14. 清洁机器人--屏幕显示之OLED屏和LCD屏的区别
  15. Andriod 虚拟机
  16. Word中endnote选项无效,怎么处理?
  17. c语言ascii码字符集共有多少个编码,标准ascii码字符集共有多少个编码
  18. python黑色背景白色背景_如何在一个文件夹中将白色图像背景色改为黑色?
  19. 5-11 猿课 笔记
  20. POST和GET有什么区别?

热门文章

  1. 跟着百度学PHP[4]OOP面对对象编程-16-switch逻辑就语句
  2. 李洪强iOS开发之Foundation框架—结构体
  3. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
  4. Android AlarmManager实现不间断轮询服务
  5. NFC 与 RFID
  6. proe输入数字时成双出现_职场数据控系列,超市基础篇,商品双ABC分析法及应用...
  7. Python在数字前方补0
  8. html整体移动,html 可以拖动多个div
  9. java如何实现e的次方_java 大数据次方运算
  10. 翁恺老师C语言学习笔记(十)指针_指针与数组