设备平台通常同时需要关系数据库和时序数据库。用户、权限、设备档案和规则具有关系与事务;温度、电压和位置则是持续追加、按时间范围查询的时序数据。
1 | MySQL/PostgreSQL:设备档案、租户、规则、命令、订单 |
MySQL 与 PostgreSQL
两者都支持 SQL 和事务,但 SQL 不是完全相同。数据类型、自动编号、JSON、日期函数、Upsert、索引和管理工具存在差异,迁移时不能只换连接字符串。
| 方向 | MySQL | PostgreSQL |
|---|---|---|
| 常见优势 | Web 业务生态成熟、运维普及 | SQL 能力丰富、扩展性强、复杂查询友好 |
| JSON | 支持 JSON 类型和函数 | JSONB、索引与运算能力完整 |
| 扩展 | 存储引擎和复制生态 | PostGIS、TimescaleDB 等扩展生态 |
选型首先看团队、云服务、数据模型和运维能力,不应根据一张“谁更强”的表决定。
三种时序数据库的侧重点
| 产品 | 数据组织特点 | 更常见的方向 |
|---|---|---|
| Apache IoTDB | 设备树与表模型 | 工业设备层级、海量测点、边云场景 |
| InfluxDB | Measurement、Tag、Field、Time | 通用指标、监控、IoT 与采集生态 |
| QuestDB | 表模型、SQL、列式时序处理 | 高频写入、实时 SQL 分析、行情 |
IoTDB 路径示例:
1 | root.factory1.line1.machine001.temperature |
Influx Line Protocol 示例:
1 | device_metrics,device_id=device001 temperature=36.5,humidity=71 1751180400000000000 |
QuestDB 表更接近 SQL:
1 | CREATE TABLE device_metrics ( |
选择前要做的测试
- 按真实设备数量和频率写入样本数据。
- 测试最近值、时间范围、聚合和多设备查询。
- 验证乱序、重复、保留策略和压缩。
- 评估高可用、备份、扩容和恢复。
- 测试驱动、Grafana、Kafka 和现有语言生态。
- 计算存储、网络和云服务成本。
不要把所有原始遥测长期堆进 MySQL,也不要把用户、支付和权限迁进时序库。混合存储往往比寻找“一个数据库解决全部问题”更稳妥。