工厂里有不同设备,同类设备又分布在不同车间:电机采集电压、电流,水泵关注压力、转速。放进数据库时,是每台设备单独建一张表,还是让同类设备共用一张表?
IoTDB 表模型给出了一种直观思路:同类设备用一张表管理,用标签区分设备,用测点记录随时间变化的数据。本文结合 IoTDB 入门第三场(10.28日)直播中的工厂案例,拆解表模型的基本结构、适用场景,以及从建模到查询的一条操作路线。
直播回放入口:Apache IoTDB视频号-直播回放
先看核心问题:哪些设备适合放进同一张表?
直播中构造了一个工厂场景:两家工厂下设多个车间,现场部署电机和水泵等设备。电机采集电压、电流;水泵采集水压、转速。
按照表模型的思路,可以将电机归为一类,用一张电机表管理;水泵归为另一类,用另一张水泵表管理。

这里的关键不是设备名称,而是设备结构是否相似:如果一类设备具有相近的测量项,适合用相同的表结构描述,就可以考虑归到一张表中。
这与“每台设备单独建表”的传统思路不同。共用表结构后,需要通过标签列区分每个设备,测量值则写入相应的测点列。
时间、标签、属性、测点,各自负责什么?
理解表模型,可以先把列分成几类。
-
时间列记录数据采集时间。设备数据随时间变化,时间列参与记录每个时刻对应的测量值。
-
标签列用于识别设备。例如工厂、车间、设备编号。它们共同描述一台设备属于哪里、具体是哪一台。在直播演示的例子中,“北京工厂 + 车间一 + 电机一号”可以定位一台电机。
-
属性列描述设备的静态信息。例如水泵的型号、生产厂商。这类信息用于描述设备本身,与电压、压力等持续变化的测量值不同。
-
测点列存储设备的观测值。电机的电压、电流,水泵的压力、转速,都属于测点数据。
把这几类信息区分开,建模时就更容易回答三个问题:这是什么设备?它在什么时候测到了什么值?它还有哪些相对固定的属性?
在数据筛选效率上,通常可理解为:时间列和标签列优先,其次是属性列,最后是测点列。
从工厂现场到数据库:五步建模顺序
直播示例里,电机表通过工厂、车间和设备编号区分不同电机;电压、电流作为测点列。水泵表也使用工厂、车间和设备编号作为标签,再把水压、转速作为测点,并可添加型号、厂商等属性信息。
这背后是一套可以复用的建模顺序:
1.先识别业务中的设备类别,例如电机、水泵。
2.找出同类设备共有的测量项,作为测点列。
3.确定哪些信息组合起来能够识别设备,作为标签列。
4.梳理型号、厂商等静态信息,判断是否需要作为属性列。
5.再按业务管理需要划分数据库,并创建对应的表。
数据库用来组织和管理相关数据表。IoTDB 的 TTL 支持数据库级别、表级别分别设置,用来控制数据保留时长,实际项目里结合业务需求选择配置粒度。

注意:操作表模型要使用带 -table 后缀的客户端,树模型和表模型的 SQL 互不通用。
建好表之后,如何确认结构和数据?
直播中的操作路线覆盖了表模型的常见步骤:创建数据库、切换数据库、创建表、查看表结构,之后再写入和查询数据。
-
建表时,需要明确标签列、测点列;按需补充属性、注释、TTL。
-
建表完成后,优先核对表结构,确认列类型、业务含义是否符合预期。
-
写入数据时,标签值定位设备,时间戳与测点值承载采集记录。
完成数据写入后,还可以通过 SQL 查询检查结果。例如,先使用 DESC 查看表的列名、数据类型和列类别,再通过 SELECT 查询设备在指定时间范围内的测点数据,确认设备标签、时间戳和测量值是否符合预期。
对于多台设备共享一张表的情况,还可以结合标签条件筛选特定设备的数据,验证建模方案是否满足实际查询需求。
建模阶段的设计非常关键:标签设计不合理,后续很难精准筛选设备;测点列和采集项不匹配,写入、查询都会混乱。建表不是简单堆砌列,而是让每一列都有明确的业务含义。
表模型和树模型怎么选?
IoTDB 同时支持树模型和表模型,两者都能够管理工业设备及其时序数据,但在数据组织方式和查询习惯上有所区别。
-
树模型通过层级路径组织设备和测点,适合按照工厂、车间、设备、测点等层级进行数据管理和访问的场景,例如工业监控、设备状态采集等。
-
表模型通过数据表组织同类设备,利用标签标识设备、测点列保存时序数据,更适合按照设备类别进行统一管理,并结合标签筛选、SQL 查询开展数据分析的场景。
对于熟悉关系型数据库、需要与现有 IT 业务系统或报表分析工具衔接的团队,表模型通常更容易理解和使用。

需要注意的是,两种模型并非相互排斥。IoTDB 允许树模型和表模型在同一集群中共存,并支持通过树转表视图,以表模型的查询方式访问已有的树模型数据。
因此,实际选型不应仅取决于设备是否存在层级关系,而应综合考虑数据组织方式、典型查询需求,以及现有业务系统的使用习惯。
表模型建模:抓准三类信息,简化时序设计
面对一批同类设备,可以先问三个问题:
用什么标签区分设备?这些设备有哪些共同测点?哪些信息只是设备属性?
把这三件事梳理清楚,再决定如何建库、建表,通常比直接开始写建表语句更有效。直播还演示了 TimechoCLI 结合 AI 助手的自然语言建表,这可以简化命令操作,但设备分类和列设计仍需要根据业务实际判断。

表模型的核心可以概括为:同类设备共享结构,标签标识设备,测点记录变化,属性补充背景。对正在规划工业设备数据结构的团队,这是一条可以先从小范围设备开始验证的建模思路。