1 概述
ThingsBoard是用于数据收集、处理、可视化和设备管理的开源物联网平台。它通过行业标准的物联网协议MQTT、CoAP和HTTP实现设备连接,并支持云和本地部署。
ThingsBoard迄今没有导入专业的时序数据库应用,用户可选择的只有PostgreSQL和Cassandra。虽然针对PostgreSQL引入了TimeScale插件,但由于其不是按照宽表的方式组织数据记录,TimeScale的优势根本发挥不出来。总之,这两种数据库不具备高效的数据吞吐能力。
而且,Thingsboard在数据入库时,是将设备的多个遥测值拆分成不同的记录。不断增加了数据冗余量,而且非常不便于使用。
TDengine是涛思数据专为物联网设计和优化的时序数据库。其具有高性能、高可靠、可伸缩、零管理、简单易学等技术特点,提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。
TDEngine的主要功能特点包括:
- 类SQL查询语言来插入或查询数据
- 支持C/C++, Java(JDBC), Python, Go, RESTful, and Node.JS 等开发接口
- 通过TDengine Shell或Python/R/Matlab可做各种Ad Hoc查询分析
- 通过连续查询,支持基于滑动窗口的流式计算
- 引入超级表,让设备之间的数据聚合通过标签变得简单、灵活
- 内嵌消息队列,应用可订阅最新的数据
- 内嵌缓存机制,每台设备的最新状态或记录都可快速获得
- 无历史数据与实时数据之分
- 安装包仅2.7M
我们通过改造ThingsBaord的JDBC驱动包和新增“保存遥测数据(TDengine)”规则节点,成功用TDEngine替换Cassandra。同时,数据记录以测控点为单位进行组织,有效克服了ThingsBoard时序数据高并发瓶颈问题。
本文主要介绍如何将TDengine集成到ThingsBoard,并进行压力测试。
2 安装部署
2.1 安装TDengine
TDengine软件分为服务器、客户端模块两部分,目前2.0版服务器仅能在Linux系统上安装和运行。客户端可以在Windows