tdengine是国内涛思数据开源的一款高性能时序数据库,尤其针对物联网应用领域,大部分采用C++语言开发,所以不存在类似cassandra的GC问题,涛思官网对自家产品与其他几款时序数据库做了比较详尽的性能对比,详见:文档 | 涛思数据
tdengine在很多方面性能都远超其他竞品,tdengine之所以快有开发语言问题,更多的是其在多方面的优化,比如一设备一表的设计,这种设计不管是读取还是插入都会有不同程度的性能提升,所以性能对比多少有那么一点点取巧的感觉。
好了,进入今天的正题,说说tdengine的超级表设计,超级表是为了更好的管理一设备一表的模式而设计的,首先要强调的是tdengine是一款结构化的数据库(需要提前设计表结构),尤其是设备很多的时候,总不能提前为每个设备创建表结构,这样及其麻烦。这时候超级表就出现了,超级表类似于一种模板,可以根据这个模板创建每个设备的表。具体怎么工作的,咱们以官网的例子来说明:
1、创建一张超级表meters,
CREATE STABLE meters(ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS(location BINARY(30), groupId INT);
2、以超级表为模板直接往子表插入数据:
INSERT INTO d21001 USING meters (groupId) TAGS (2) VALUES ('2021-07-13 14:06:33.196', 10.15, 217, 0.33)
上面这种方式不需要提前创建设备子表,直接插入即可,没有设备子表的话tdengine会自动创建。
也就是说tdengine目前是不支持直接通过超级表插入数据的,笔者觉得也许这只是一个中间阶段,这种设计也许是从tdengine自身开发人员的角度出发的,使用者有时并不需要关注这些东西,期待可以直接通过超级表插入数据的功能。
PS:
1、虽然tdengine暂时不支持通过超级表插入数据,但是支持通过超级表读取数据。
参考文章: