因为TDengine是面向物联网诞生的一种数据库,所以在一些概念的命名上有一点相应的特色。
比如需要对一辆高铁上的各种信息进行采集,采集信息存入数据库中。我们可以对高铁车厢内的一些数据进行采集,比如:车厢内温度、车厢内湿度、车厢内噪音…;也可以对车厢外即车厢外壳的一些数据进行采集,比如:空气流速、车厢表面温度…;
上述中,“车厢内”,“车厢外壳”,这两个就是不同的“数据采集点”,这便是数据采集点的定义。
某一数据采集点采集的各种数据就是“采集量”,比如上面举例中,“车厢内”是“数据采集点”,“车厢内温度、车厢内湿度、车厢内噪音…”这些是采集量。——相当于sql中的字段。
标签是指“数据采集点”的静态属性,不是随时间变化的。比如上述举例中中“车厢内”数据采集点,高铁上有很多节车厢,每一节车厢都有自己对应的编号:1、2、3…。车厢编号就是“车厢内”该数据采集点的标签。虽然是静态的,但 TDengine 容许用户修改、删除或增加标签值。
一个数据采集点就可以对应一张表,比如车厢内的数据写到一张表中,车厢外的数据写到一张表中。值得注意的是,规定,表的第一列必须是时间戳,即数据类型为 Timestamp。
超级表是指某一特定类型的数据采集点的集合。同一类型的数据采集点,其表的结构是完全一样的,但每个表(数据采集点)的静态属性(标签)是不一样的。
比如上述内高铁每一节“车厢内”该类数据采集点,1、2、3…节车厢内采集的数据都是一样的,都是采集的“车厢内温度、车厢内湿度、车厢内噪音…”这些参数,但每一节车厢的编号又是不同的(即标签不一样)。因此,可以建立超级表,包含1、2、3…“车厢内”这些数据采集点的每张表。
根据 超级表的理解, 1、2、3…“车厢内”这些数据采集点的每张表 就是 子表。
子表就是表,因此所有正常表的 SQL 操作都可以在子表上执行。
子表在正常表的基础上有扩展,它是带有静态标签的,而且这些标签可以事后增加、删除、修改,而正常的表没有。
子表一定属于一张超级表,但普通表不属于任何超级表
普通表无法转为子表,子表也无法转为普通表。
即Database,一个库里,可以有一到多个超级表,但一个超级表只属于一个库。一个超级表所拥有的子表全部存在一个库里。
官方文档:点击此处,以内文档写到比较具体繁琐,所以拿高铁车厢进行理解,便于区分与sql的区别,主要是超级表和子表的概念。