
很多人使用 TDengine 在初期建模的时候有个困惑,我的数据库及超级表应该规划为多少个为好,带着这个问题,根据 TDengine 用户的使用情况,总结了下面的文章,帮助大家解决心中的困惑。
总体规模建议
- 小型部署: 数据库 1-5;每库超级表 10-50;每超级表子表 1千-5万。
- 中型部署: 数据库 3-20;每库超级表 30-150;每超级表子表 5万-100万。
- 大型/全国性部署: 数据库 10-50(多租户/多区域);每库超级表 100-300;每超级表子表 100万-2000万。
- 说明: 具体上限受集群规模(节点数、vnode 配置)、磁盘/内存、写入并发与保留策略影响;TDengine 能支撑海量子表,但合理的分库/分超级表设计更便于运维与扩展。
行业典型规模
- 工业 IoT/制造
- 数据库: 每工厂/租户 1-3,集团级合并场景 5-20。
- 超级表: 20-120(设备类型/测点类别区分)。
- 子表: 1万-100万(中型工厂),50万-500万(大型集团)。
- 能源/公共事业(电/水/气/热)
- 数据库: 3-10(区域/业务线)。
- 超级表: 20-80(表计、站点、设备类别)。
- 子表: 10万-1000万(智能表计/终端数量大)。
- 车联网/车队管理/远程诊断
- 数据库: 1-5(OEM/租户)。
- 超级表: 30-150(车型/ECU/传感类别)。
- 子表: 10万-500万(按车辆/设备实例为子表)。
- 互联网运维监控(主机/服务指标、日志汇总)
- 数据库: 3-15(产品线/环境:prod/stage/dev)。
- 超级表: 50-200(metrics/logs 维度拆分)。
- 子表: 1万-50万(主机/实例为子表;日志可更少子表更多标签)。
- 智慧城市/园区(安防、环境、交通)
- 数据库: 5-20(域/场景划分)。
- 超级表: 50-200(设备/业务类型)。
- 子表: 50万-2000万(设备终端规模大)。
- 医疗/可穿戴/康养
- 数据库: 1-3(平台/区域)。
- 超级表: 20-60(设备/指标)。
- 子表: 5万-200万(患者/设备为子表)。
- 零售/物流(仓/店/车队 IoT)
- 数据库: 3-10(区域/品牌)。
- 超级表: 20-80。
- 子表: 10万-200万(门店/设备/车辆)。
- 金融/行情采集(按标的/源划分)
- 数据库: 1-3(市场/来源)。
- 超级表: 30-100(品种/频率)。
- 子表: 1万-50万(按合约/代码为子表;高频源更看写入并发与存储)。
设计与运维建议
- 分库策略: 按租户/区域/环境分库,避免单库过度膨胀;一般控制总库数 ≤50,便于权限与备份治理。
- 超级表划分: 以"同结构、同生命周期"的数据聚类为原则;避免为每设备建超级表,按设备类型/指标类型建超级表更佳。
- 子表粒度: 以"设备/实体实例"为子表是主流;当实例数超千万时,评估是否进一步按区域/批次拆分为多超级表分担。
- 标签(tags)设计: 控制高基数标签数量,避免把高频变化属性做标签;查询常用维度优先标签化。
- 保留与分层: 设置
TTL/保留策略,冷热分层(原始→汇总)减轻存储与查询压力。 - vnode/表配置: 根据写入速率与子表规模调整
maxTablesPerVnode、内存与分片数;随节点数增长进行再均衡。 - 命名与治理: 统一库/表/子表命名规则(租户_区域_类型_实例ID),配合自动化建表与生命周期管理。
- 容量规划: 以峰值写入、保留期、压缩比估算磁盘需求;预留 30%-50% 余量以应对增长与重均衡。
- 上线基准: 先以小规模验证(如每超级表 1万-5万子表),通过监控写入延迟、查询耗时、内存/磁盘占用,再扩展到目标规模。
如果你能分享你们当前的设备/实例规模、租户数、保留期与主要查询模式,我可以把上面的范围进一步收敛到更精确的建议,并给出具体的分库/分表与标签方案。
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。