时序数据库TDengine用法

官方中文文档:https://docs.taosdata.com/

1、ubuntu24 安装TDengine

添加软件仓库:

wget -qO - http://repos.taosdata.com/tdengine.key | sudo gpg --dearmor -o /etc/apt/keyrings/tdengine-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/tdengine-keyring.gpg arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list

安装:

sudo apt update

sudo apt install tdengine-tsdb

启动:

sudo systemctl start taosd

sudo systemctl start taosadapter

查看运行状态:

systemctl status taosd

集群部署:

TDengine 也支持集群部署,集群部署后的节点分为 mnode和vnode,,mnode是管理节点、每个mnode的数据都是一样的;客户端缓存了mnode信息列表,发起请求时负载均衡到其中一个mnode,从mnode中获取元数据(表结构、表字段、某个子表的时间段对应的数据块位置),确定数据块之后再发起请求给vnode,vnode读写数据后返回;

2、连接 TDengine

我使用DBeaver 连接TDengine,默认的账号密码是 root/taosdata,端口默认6041;

3、概念说明:

时序数据库和传统的关系型数据库在 数据库、表、字段 等含义上是相同的,在用法上有些不一样:

库:在创建库时可以指定数据的有效期、多少天的数据保存在一个文件中、内存池大小等;

表:分为超级表和子表,超级表是定义了一个表模板,一个超级表可以创建N个子表,子表的列和超级表完全一致;超级表定义模板、子表存储数据;

4、TDengine 常用语法

建库:CREATE DATABASE power PRECISION 'ms' KEEP 3650 DURATION 10 BUFFER 16;

也可以不指定这些参数,以下这些值默认值;

  • PRECISION 'ms' :这个数据库的时序数据使用毫秒(ms)精度的时间戳
  • KEEP 3650:这个库的数据将保留 3650 天,超过 3650 天的数据将被自动删除
  • DURATION 10 :每 10 天的数据放在一个数据文件中
  • BUFFER 16 :写入使用大小为 16MB 的内存池。

建超级表:

CREATE STABLE meters (

ts timestamp,

current float,

voltage int,

phase float

) TAGS (

location varchar(64),

group_id int

);

**创建子表,**USING meters (location,group_id) 表示使用超级表的列名列表,TAGS用于给这个子表打标签:

CREATE TABLE d1001

USING meters (

location,

group_id

) TAGS (

"California.SanFrancisco",

2

);

插入数据,子表不存在自动创建:

INSERT INTO d1002

USING meters

TAGS (

"California.SanFrancisco",

2

) VALUES (

NOW,

10.2,

219,

0.32

);

普通表,创建语法和传统关系型数据库一致;

其他更多用法参考文档

5、索引结构

主键索引:在创建超级表和普通表时第一列必须是时间类型,也是系统默认的主键索引,数据存储在块中,严格有序,每一个子表都有自己的主键索引,一个子表的一个时间段指向一个数据块

非主键索引:除了主键索引之外可以在其他列中建立索引,非主键索引是作用在超级表上的,也就是一个超级表下面的所有子表共用一个索引 ,非主键索引是使用倒排索引的结构存储;这里的倒排索引和es的倒排所有不同,es中的倒排索引是根据内部维护的字典分词后记录词的位置,而这里的倒排索引不会分词,直接记录某一列值的位置,时序数据库的应用场景是根据时间统计个观察数据,很少会用到非主键索引;

6、应用场景

时序库的设计重心在于高性能处理时序数据,只提供了单行数据的原子性和一致性,所以对于操作多行、多表等场景不能保证数据的一致性,更多应用于非关系型业务的时序场景;

相关推荐
Pluchon2 小时前
硅基计划5.0 MySQL 叁 E-R关系图&联合/多表查询&三大连接&子查询&合并查询
开发语言·数据库·学习·mysql
Gold Steps.2 小时前
MySQL 8+ 日志管理与数据备份恢复实战指南
数据库·mysql·数据安全
程序员鱼皮2 小时前
老弟第一次学 Redis,被坑惨了!小白可懂的保姆级 Redis 教程
数据库·redis·程序员
oak隔壁找我3 小时前
Druid 数据库连接池源码详细解析
java·数据库·后端
不剪发的Tony老师3 小时前
Yearning:一个免费开源的SQL审核平台
数据库·sql·mysql
Gauss松鼠会3 小时前
GaussDB慢sql信息收集和执行计划查看
数据库·sql·gaussdb
FreeBuf_4 小时前
AWS服务大规模中断,基础设施故障影响全球企业
网络·数据库·aws