谈谈tdengine的超级表设计

TDengine是一款专为物联网设计的高性能时序数据库,以其C++开发避免了GC问题。超级表作为其管理工具,允许用户以模板方式创建和管理众多设备表,简化操作。在无需预先创建设备子表的情况下,数据可直接插入,自动创建所需表结构。目前,TDengine不支持直接通过超级表插入数据,但支持读取。超级表提高了在大量设备场景下的管理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        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、以超级表为模板直接往子表插入数据:

  1. 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暂时不支持通过超级表插入数据,但是支持通过超级表读取数据。

参考文章:

1、文档 | 涛思数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值