TDengine一些概念记录(gold_axe)

超级表:

先定义超级表
不同的采集点, 实际表结构是一样的
就是超级表的表结构
按超级表来统计, 用不同的标签区分不同的表
标签列的值 属于表的原数据 不保存在表的数据节点中, 而是通过超级表 保存在元数据里
只在聚合统计时用到,从表里面查不到标签

表:

一个采集点,一张表
除非有多组采集量多种采集频次
每个采集点单独建表,存储上是一块连续的空间, 减少随机读, 只有一个写入者, 不用锁
没有自定义索引, 只有对时间戳的自动建立的索引

虚拟节点vnode

存储、资源分配以及数据备份的单元,
物理节点dnode分割的结果
有专属的缓存, 硬盘上有自己的专门的文件夹

TDengine一些概念记录(gold_axe)_第1张图片

创建库时, 库会被自动分配1一个vnode,
添加一个表时,库拥有的vnode如果都没有空位了,管理节点将分配一个新的虚拟节点给该库
这些vnode就专属于这个数据库

每个vnode 会存有完整的多个表

默认数据存储目录在/var/lib/taos/目录下,可以通过配置文件(默认是/etc/taos/taos.cfg)dataDir来配

如果是集群, 每个vnode在其他物理节点里面会有一样的拷贝

数据文件

每个vnode在硬盘上有对应的文件夹 里面是这样, 就是数据文件


TDengine一些概念记录(gold_axe)_第2张图片

数据文件总共有三类文件,

  • data文件,真实的数据块
  • head文件, 对应的data文件中数据块的索引信息;
  • last文件,专门存储最后写入的数据,每次落盘操作时,这部分数据会与内存里的数据合并,并决定是否写入data文件还是last文件。

数据块

一个vnode里面的数据的存储 是按时间,而不是按表,
一个虚拟节点内的所有表,在同一时间段的 数据 存储在同一个数据文件

数据文件 里面 划分成 数据块,数据在数据块中按列存储:同列的数据存放在一起
这样,对于不同的数据类型采用不同的压缩方法,提高压缩的比例

每个表的数据分散在各个数据文件的数据块里面,所以,每张表有一索引,保存每个数据块在文件中的偏移量,起始时间、数据点数、压缩算法等信息,
查询时,根据给定的时间段, 将计算出查找的数据会在哪个数据文件,然后读取。

内存块

TDengine一些概念记录(gold_axe)_第3张图片

图中的4 写入内存块, 就可以回复客户端完成了
内存块一般就是一页16k , 时间到或者满了就会刷到硬盘
一个表会分到多个内存块
但块与块是不连续的,在内存里面, 会有块的索引

期限

在默认配置下,硬盘上的每个数据文件存放10天数据。。

表中的数据都有保存时间,一旦超过保存时间(缺省是365天),数据将被系统自动删除。

# number of days per DB file
# days                  10

# number of days to keep DB file
# keep                  3650

你可能感兴趣的:(TDengine一些概念记录(gold_axe))