EMQX数据直接对接TDengine数据库
最近系统中引进了新的数据库 TDengine 数据库
TDengine 是一个高性能、开源的时序数据库
我们这边主要看中了他的 高性能写入、极致压缩、高性能都是读取
本文重点介绍 EMQX数据是怎么直接对接TDengine数据库的(本文默认已经安装好TDengine数据库)
在EMQX的官网文档中是可以直接对接TDengine数据库的。将 MQTT 数据写入到 TDengine | EMQX文档
要将MQTT中的数据直接写入到TDengine数据库中,需要两步:
第一步,建表
在TDengine数据库中创建与MQTT消息内容相匹配的数据库结构,这个与MySQL建表类似。
建表是有STables和Tables之分的,MQTT消息的存储,建议创建STables,这样可以创建逻辑子表。提高存储和查询的效率。创建的时候只创建超表即可。具体查看官方文档
第二步,建立连接
要建立连接,首先要先进入EMQX的管理后台,一般是MQTT地址加18083端口
2.1、创建连接器
首先要创建一个HTTP协议的连接器,用来做EMQX和TDengine之间的连接。
创建的时候有两点需要注意,第一点就是连接的URL,第二点就是请求头的键。
此处的
6041/resl/sql
这个地址格式是 TDengine 官方规定的、用于通过其 RESTful API 执行 SQL 命令的标准入口点。此处的
Authorization
是必须要有的,如果没有测试连接也是可以成功,但是在执行sql操作的时候不会成功,后面具体的值,是根据用户名个密码生成的 可以参考官方文档地址。
获取到相关value值之后,可以根据官方文档来验证是否可以查到相关数据。验证sql可以记上limit限制,避免数据过多造成卡顿。
可以根据此处的提示生产对应的value值,填上即可。
2.2、创建规则
2.2.1、数据输入
此处sql配置的内容,即为MQTT中的消息,想要哪个主题,哪个字段直接配置即可
2.2.2、数据输出
此处的动作选择创建动作
即可,连接器的选择,直接选择2.1处创建的连接器即可,其他请求投不需要变动。
重要的是请求体SQL的书写。跟MySQL的insert语句是一样的 ,但是值的处理都是动态的。
INSERT INTO 库名.表名 (
tbname,
aaa, -- 字符串
bbb, -- 数值或者时间
aaa.ccc -- 取数据中的数据
)
VALUES
(
'父表名_${动态子表区分字段}',
'${aaa}',
$ { bbb },
'${ccc}'
)
这样就可以准确的传输数据到TD数据都对应的表中了。