概述
分布式数据库为物联网平台提供设备元数据、产品定义、用户信息、订单等业务数据的存储能力,与时序数据库(存储传感器数据)形成互补。物联网业务数据具有强一致性、事务性、关系型查询需求:设备注册、产品物模型、用户权限、多租户隔离等均需ACID保障;设备表与产品表、分组表的关联查询频繁;百万级设备规模下,单机MySQL难以支撑。分布式数据库如TiDB、CockroachDB、OceanBase通过分片、副本、分布式事务,实现水平扩展与高可用,满足物联网平台对业务数据存储的需求。
物联网平台通常采用"双库"架构:时序数据(设备上报的温湿度、用量等)存入InfluxDB、TDengine等时序库;业务数据(设备档案、产品、用户、规则)存入分布式关系库。两者通过设备ID关联,查询时可能需跨库聚合(如"某产品下所有设备的最近一条数据"),可通过应用层拼装或物化视图实现。
核心特性
分布式事务
跨节点ACID,保证"设备注册+产品关联+权限分配"等复合操作的原子性。采用两阶段提交(2PC)、Percolator等协议。物联网场景下,设备激活、订单创建、批量导入等操作常涉及多表写入,需事务保障。
水平扩展
按设备ID、租户ID、产品ID等分片,支持线性扩展。新增节点时数据自动迁移,无需停机。副本机制保证单点故障时数据不丢失,读请求可分散到副本。
MySQL兼容
TiDB、OceanBase等兼容MySQL协议,现有基于MySQL的应用可平滑迁移,降低改造成本。支持常用SQL语法、索引、外键(部分实现)。
高可用
自动故障转移,主节点宕机时从节点晋升。多可用区部署,避免单机房故障。RTO(恢复时间目标)、RPO(恢复点目标)可配置。
物联网典型表结构
设备表(devices):设备ID、产品ID、设备名称、密钥、状态、最后在线时间、所属租户、分组等。按产品ID或租户ID分片。
产品表(products):产品ID、物模型、通信协议、数据格式等。产品数量通常远小于设备数,可分片或单表。
用户与权限表:用户、角色、权限、租户。与多租户架构配合,实现数据隔离。
规则与配置表:规则引擎规则、告警配置、OTA任务等。读写比例高,可配合缓存。
选型考量
数据量规模、读写比例、事务需求、与现有技术栈的兼容性。TiDB适合MySQL迁移、HTAP混合负载;CockroachDB适合全球分布式;OceanBase适合金融级强一致。达希物联在物联网平台实践中,业务数据多采用TiDB或云厂商托管MySQL(如阿里云PolarDB),时序数据采用TDengine或InfluxDB,实现存储层的高效分工。