用 Docker 快速体验 TDengine TSDB
本页介绍如何使用 Docker 快速启动 TDengine TSDB Enterprise,并完成一次基础体验:启动服务、进入命令行、写入数据和查询数据。如果你不熟悉 Docker,可以使用 安装包方式快速体验。如果你希望为 TDengine 贡献代码,或对内部技术实现感兴趣,请参考 TDengine GitHub 主页。
从 3.3.7.0 版本开始,TDengine TSDB 的镜像名称调整如下:
- 社区版的镜像名称从
tdengine/tdengine重命名为tdengine/tsdb - 企业版的镜像名称从
tdengine/tdengine-ee重命名为tdengine/tsdb-ee
前提条件
请先确认已经完成以下准备:
- 本机已经安装 Docker,并且当前用户可以执行
docker命令。 - 本机可以访问 Docker Hub,或已经从 TDengine 产品下载中心获取离线镜像。
启动服务
拉取镜像
拉取最新版本的企业版镜像:
docker pull tdengine/tsdb-ee:latest
如果你无法直接访问 Docker Hub,可以前往 TDengine 产品下载中心的 Docker 镜像下载页面,获取 Docker 镜像下载链接。完成下载后,请根据页面中的离线安装提示加载镜像,并修改镜像名称和标签。
启动容器
执行下面的命令启动 TDengine 容器:
docker run -d \
-v ~/data/taos/dnode/data:/var/lib/taos \
-v ~/data/taos/dnode/log:/var/log/taos \
-p 6030:6030 -p 6041:6041 -p 6043:6043 -p 6060:6060 \
-p 6044-6049:6044-6049 \
-p 6044-6045:6044-6045/udp \
-p 6050:6050 -p 6055:6055 \
--name tdengine-tsdb \
tdengine/tsdb-ee
关于 TDengine 各服务的端口占用情况,请参考运维指南中的 网络端口要求 章节。
查看容器状态
执行下面的命令查看容器运行状态:
docker ps -f name=tdengine-tsdb
查看命令输出中的 STATUS 字段。如果该字段显示 Up ... (healthy),说明容器已经启动并正常运行。
进入容器
执行下面的命令进入容器:
docker exec -it tdengine-tsdb bash
进入容器后,就可以执行 Linux 命令,并通过 taos、taosBenchmark 等工具体验 TDengine。
关于使用 Docker 部署 TDengine 的更多详情,请参考运维指南中的 Docker 部署 章节。
快速体验
打开命令行
TDengine 提供命令行工具 taos shell,可用于检查服务状态、执行 SQL、管理数据库和表。进入 shell 后,你可以直接体验写入和查询功能。
在 Linux 或 macOS 终端中执行:
taos
在 Windows 中执行:
taos.exe
进入 shell 后,提示符如下:
taos>
在 shell 中,SQL 语句需要以分号(;)结尾。下面的示例会创建数据库、写入两条数据并查询结果:
CREATE DATABASE demo;
USE demo;
CREATE TABLE t (ts TIMESTAMP, speed INT);
INSERT INTO t VALUES ('2019-07-15 00:00:00', 10);
INSERT INTO t VALUES ('2019-07-15 01:00:00', 20);
SELECT * FROM t;
ts | speed |
========================================
2019-07-15 00:00:00.000 | 10 |
2019-07-15 01:00:00.000 | 20 |
Query OK, 2 row(s) in set (0.003128s)
除执行 SQL 外,你还可以通过 shell 检查系统运行状态、管理用户账号等。shell 和应用驱动也可以独立安装在其他机器上运行,详情请参考 TDengine 命令行。
写入测试数据
taosBenchmark 是 TDengine 提供的测试工具,可用于快速生成测试数据,并体验写入、查询和订阅等功能。它可以模拟大量设备产生的数据,并支持配置数据库、超级表、标签列、数据列、子表数量、每张子表的数据量、写入间隔、工作线程数量以及是否写入乱序数据等参数。
确认 TDengine 服务已经启动后,在终端中执行下面的命令:
taosBenchmark -y
执行后,系统会自动在 test 数据库中创建一张名为 meters 的超级表。该超级表包含 10,000 张子表,表名从 d0 到 d9999,每张表包含 10,000 条记录。每条记录包含 ts(时间戳)、current(电流)、voltage(电压)和 phase(相位)4 个字段。时间戳范围从 2017-07-14 10:40:00.000 到 2017-07-14 10:40:09.999。每张表还带有 location 和 groupId 两个标签,其中 groupId 的取值为 1 到 10,location 为 California.Campbell、California.Cupertino 等城市信息。
该命令会写入 1 亿条记录。实际耗时取决于硬件性能,即使在普通 PC 服务器上,这个过程通常也只需要十几秒。
taosBenchmark 提供了丰富的参数,可用于自定义表数量、记录条数等测试配置。执行下面的命令可以查看完整参数列表:
taosBenchmark --help
有关 taosBenchmark 的详细使用方法,请参考 taosBenchmark 参考手册。
查询测试数据
使用 taosBenchmark 写入数据后,可以在 shell 中执行下面的查询,体验查询速度。
- 查询超级表
meters下的记录总条数:
SELECT COUNT(*) FROM test.meters;
count(*) |
===================
100000000 |
Query OK, 1 row(s) in set (0.075247s)
- 查询 1 亿条记录的平均值、最大值和最小值:
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters;
avg(current) | max(voltage) | min(phase) |
===============================================
10.2084751316071 | 258 | 145 |
Query OK, 1 row(s) in set (0.094037s)
- 查询
location = "California.SanFrancisco"的记录总条数:
SELECT COUNT(*) FROM test.meters WHERE location = "California.SanFrancisco";
count(*) |
===================
10340000 |
Query OK, 1 row(s) in set (0.050540s)
- 查询
groupId = 10的所有记录的平均值、最大值和最小值:
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters WHERE groupId = 10;
avg(current) | max(voltage) | min(phase) |
===============================================
10.2084751316071 | 258 | 145 |
Query OK, 1 row(s) in set (0.033754s)
- 对表
d1001按每 10 秒进行平均值、最大值和最小值聚合统计:
SELECT _wstart, AVG(current), MAX(voltage), MIN(phase)
FROM test.d1001 INTERVAL(10s);
_wstart | avg(current) | max(voltage) | min(phase) |
=========================================================================
2017-07-14 10:40:00.000 | 10.2084751316071 | 258 | 145 |
Query OK, 1 row(s) in set (0.004716s)
在上面的查询中,系统伪列 _wstart 表示每个窗口的开始时间。
进阶体验
完成以上内容后,你可以继续体验以下任务:
下一步
完成上述快速体验后,你可以继续阅读后续章节,进一步了解 TDengine 的数据建模、写入、查询、数据订阅和流式计算等能力。








