请问保存 MQTT 的数据应该如何设计数据库结构

查看 75|回复 8
作者:Lexgni   
第一次使用这个协议,服务器使用的 emqx ,具体流程是 [多个传感器->网关->emqx ] ,问题主要是出在了数据是网关把所有传感器数据一起发布,但是这个网关下又不能保证每个项目的传感器数量是一致的
目前的消息结构大概是这样:
{
    "data": [
        -0.06106870248913765,
        5.2061066627502441
    ],
    "time": "2024-05-22T06:47:24.391927"
}
只发送了传感器的数据,具体是哪个设备根据 0,1,2 去对应,但是可以预见的问题是这个数据设备端全靠手写配置去对应,万一手抖就对应不上了,也考虑过给每个传感器一个唯一的编号,但是问了硬件的小伙伴说拿不到一个唯一的值,如果要靠手动分发可能会有些复杂
绕了一圈后还是想着回到上面的消息结构,毕竟出厂后增减传感器的几率不大,但是现在出现了一个问题就是这个数据不好存,因为每个项目的传感器数量不一致,如果不分配一个传感器的唯一值,就不好把传感器的值单独放在一个表,如果放在一条里有没法确定要加几个传感器的键,如果把数据放在一起,又怕影响查询效率
希望有大佬可以指点一二,谢谢
ipoh   
| 网关 ID | 设备索引(0,1,2...) | Data |
如果是我会这样设计
IvanLi127   
看起来这情况只能把网关 id 加传感器索引作为传感器的 id 了,问题就变成网关去转还是 mqtt 之后的程序去转了。
Lexgni
OP
  
@ipoh 这样就怕索引有变动
Lexgni
OP
  
@IvanLi127 感觉比较好的方式是这样,但是一个个去对应这些设备可能会比较麻烦
wssy001   
时序数据库了解一下
Eiden   
硬件的偷懒吧, 传感器里有单片机吧, 有单片机就有唯一编号, 这种场景肯定传感器要编号的
KongLiu   
硬件怎么可能拿不到,最起码的 MAC 地址有吧,不过我们的做法是硬件第一次上传数据都是 000000 ,然后服务器这边看到是 000000 ,就会给他下发一个唯一编码
Lexgni
OP
  
@Eiden 这个还得再去问问,我感觉也不太可能拿不到
@KongLiu 这个不太适用于下发,主要是没法知道那个是什么传感器
您需要登录后才可以回帖 登录 | 立即注册

返回顶部