体验 TDengine 时序数据库
2023-06-15 by dongnan
什么是时序数据库
时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化)的数据,带时间标签的数据也称为时间序列数据。
TDengine
TDengine
是一款开源(GNU AGPL v3.0 )
的时序数据库,应用场景包括物联网、车联网、工业互联网、金融、IT运维等场景并进行了优化。
目标
使用 Docker
快速部署 TDengine
时序数据库服务器,并初步体验TDengine
。
环境描述
VM: 2vCPU/4GB/100GB On XenServer
OS: Ubuntu Server 20.04
Docker: docker-ce:20.10.12
镜像: tdengine/tdengine:latest
网络: 容器默认使用宿主机网络
操作步骤
下载镜像
# 2023年6月12号 版本为 3.0.5.0
docker pull tdengine/tdengine:latest
创建容器
docker run -d \
--name tdengine \
-e TAOS_FQDN=tdengine \
-p 6030:6030 \
-p 6041-6049:6041-6049 \
-p 6041-6049:6041-6049/udp \
-v td-data:/var/lib/taos \
tdengine/tdengine
- 参数
--name
创建容器的名称为tdengine
。 - 参数
-p
创建容器到主机的端口映射。 - 参数
-v
创建数据卷,容器内某些目录做数据持久化。
监听端口
TDengine 3.0
服务端使用TCP
协议6030
端口。TCP/UDP
协议6041-6049
端口为taosAdapter
所使用提供REST
服务。
默认目录
- 配置文件目录:
/etc/taos/taos.cfg
- 数据库目录:
/var/lib/taos
- 日志目录:
/var/log/taos
验证容器
查看容器日志
docker logs tdengine --tail 5
06/15 09:14:37.846415 00000059 DND The daemon initialized successfully
06/15 09:14:38.845235 00000081 MND dnode:1, mnode syncState from offline to leader, restoreState from 0 to 1
06/15 09:14:38.845261 00000081 MND dnode:1, from offline to online, memory avail:3683354624 total:4111257600 cores:4.00
06/15 09:14:38.845400 00000089 DND status rsp received from mnode, statusSeq:1:1 dnodeVer:0:2, gtid:0x:0x5d8b0be55df00002
06/15 09:14:38.846367 00000089 DND succeed to write dnode file:/var/lib/taos//dnode/dnode.json, num:1 ver:2
进入容器内部
docker exec -ti tdengine /bin/bash
容器内当前路径
root@d2940e232526:~# pwd
/root
命令行客户端
进入命令行客户端:
# 输入 taos 命令
taos>
退出命令行客户端:
taos> exit
root@d2940e232526:~#
写入1亿条记录
taosBenchmark
命令将在数据库 test
下面自动创建一张超级表 meters
,该超级表下有1万张表,表名为d0
到d9999
;
每张表有1万条记录,每条记录有 ts、current、voltage、phase
四个字段,
每张表带有标签 location
和 groupId
,groupId
被设置为1
到10
。
root@d2940e232526:~# taosBenchmark
[06/15 09:42:26.251611] INFO: client version: 3.0.5.0
#...省略
[06/15 09:44:20.353091] SUCC: insert delay, min: 14.2040ms, avg: 20.9869ms, p90: 30.3120ms, p95: 35.3520ms, p99: 47.5260ms, max: 125.5410ms
查询数据
TDengine
采用 SQL
作为查询语言。应用程序可以通过 REST API
或连接器发送 SQL
语句,还可以通过命令行工具 taos
手动执行 SQL
即席查询。
进入客户端:
root@d2940e232526:~# taos
Welcome to the TDengine Command Line Interface, Client Version:3.0.5.0
taos>
查看数据库:
taos> show databases;
name |
=================================
information_schema |
performance_schema |
test |
Query OK, 3 row(s) in set (0.001700s)
进入数据库:
taos> use test;
Database changed.
查看表结构:
taos> desc test.meters;
field | type | length | note |
=================================================================================
ts | TIMESTAMP | 8 | |
current | FLOAT | 4 | |
voltage | INT | 4 | |
phase | FLOAT | 4 | |
groupid | INT | 4 | TAG |
location | VARCHAR | 24 | TAG |
Query OK, 6 row(s) in set (0.001184s)
查询超级表meters
总条数:
taos> select count(*) from test.meters;
count(*) |
========================
100000000 |
Query OK, 1 row(s) in set (0.136925s)
查询平均值、最大值、最小值:
taos> select avg(current), max(voltage), min(phase) from test.meters;
avg(current) | max(voltage) | min(phase) |
==================================================================
9.980024408 | 114 | 0.29167 |
Query OK, 1 row(s) in set (0.279108s)
查询 where 条件
taos> select count(*) from test.meters where location="California.SanFrancisco";
count(*) |
========================
9970000 |
Query OK, 1 row(s) in set (0.038702s)
小结
TDengine
作为开源时序数据库,社区版本数据读写速度非常快、满足一般的使用场景,如需要高级功能可以使用企业版。- 社区支持优秀,技术文档清晰完整,为开发者提供了主流语言
SDK
和REST API
接口; - 更容易上手,虽然是非关系数型的据库但可以用
SQL
语句操作数据,这对熟悉mysql
等关系型数据库用户比较友好。