IoT DC3 时序存储选型:四款数据库可插拔

IoT 平台的存储选型核心问题是:数据将以什么模式被查询------按设备取最近趋势、跨设备时段聚合,还是分析时多序列对齐。不同答案对应不同的数据库。

DC3 的时序层做成与消息总线同构的可插拔家族:dc3-tsdb-core 定义端口,四个适配器各自对接一款时序数据库,由配置项 dc3.tsdb.type 选择,同时只激活一个:

  • TimescaleDB(默认):PostgreSQL 生态内嵌,与平台主库同源,运维成本最低,支持连续聚合做分级 rollup;
  • TDengine:国产开源,"一个采集点一张表"的超级表模型,压缩比与写入吞吐是强项;
  • InfluxDB(3.x):时序领域的老牌选手,v3 HTTP API 直连,零客户端依赖;
  • IoTDB(2.x):国产开源(Apache 顶级项目),树形路径模型与工业场景天然契合。

能力矩阵:按实际声明发布,非预估

选型文档里最值得看的是一张能力矩阵(docs/tsdb-stores.md),它的每个格子都来自适配器的实际能力声明,不是营销口径:

  • 分桶聚合:四库全支持(time_bucket / INTERVAL / date_bin / 窗口分组);
  • 精确分位数(PERCENTILE):Timescale 与 TDengine 支持,InfluxDB 与 IoTDB 无此函数;
  • 按驱动分组统计:IoTDB 因为路径模型的差异,如实声明为不支持;
  • rollup 分级聚合:仅 TimescaleDB 提供原生支持(共享连续聚合),其余三库为原始扫描。

这些"不支持"是显式契约的一部分,原因见下文。

24 例 TCK 与"绝不给错数据"

四款适配器都要通过同一套 24 例库中立契约套件(dc3-tsdb-tck)。数据库不支持的能力,适配器如实声明为 false,契约套件按能力门控跳过对应用例,而数据中心门面对这些能力做降级处理:延迟直方图返回零桶、精确分位数与相关系数由门面从有界拉取的数据中自算。

一句话概括这套机制的价值取向:宁可少给能力,绝不给错数据。 存储抽象的主要风险是"抽象层隐式改变语义",TCK 与能力声明的组合将其转化为显式契约。

换型三步走

  1. 起目标存储:make up STACK=optional SERVICES="tdengine"(或 influxdb / iotdb),IoTDB 首启自动挂载微秒精度配置;
  2. 改环境变量 DC3_TSDB_TYPE=tdengine,按需覆盖连接参数;
  3. Maven 侧把所选适配器加入数据中心依赖(默认只打包 TimescaleDB)。

与 MQ 家族同一个约定:默认适配器随服务打包,其余按需引入------没人应该为不用的存储付出 jar 体积与启动开销。

实事求是的边界

  • 空桶补零四库均不支持,由消费端补零------这是有意的语义统一;
  • TDengine / IoTDB 适配已通过契约验证,生产规模的容量规划仍需按实际数据量测试;
  • 矩阵中的能力以适配器声明为准,会随版本演进更新,以 docs/tsdb-stores.md 为准。

仓库 :GitHub pnoker/iot-dc3 · Gitee pnoker/iot-dc3(GVP)

文档:docs.dc3.site · 时序选型 docs/tsdb-stores.md · book.dc3.site · demo.dc3.site

相关推荐
voipmaker1 小时前
GB28181 对接踩坑实录:注册不上、目录不全、流卡顿,一次说清(附 2022 版变更清单)
物联网·音视频·实时音视频·信息与通信·iot·gb28181·国标gb28181
小徐不徐说3 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
Chery11403 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
论文复现现场3 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__4 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁6 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk6 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW7 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB7 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_7 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学