跳到主要内容

用 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

前提条件

请先确认已经完成以下准备:

  1. 本机已经安装 Docker,并且当前用户可以执行 docker 命令。
  2. 本机可以访问 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 命令,并通过 taostaosBenchmark 等工具体验 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 张子表,表名从 d0d9999,每张表包含 10,000 条记录。每条记录包含 ts(时间戳)、current(电流)、voltage(电压)和 phase(相位)4 个字段。时间戳范围从 2017-07-14 10:40:00.0002017-07-14 10:40:09.999。每张表还带有 locationgroupId 两个标签,其中 groupId 的取值为 1 到 10,locationCalifornia.CampbellCalifornia.Cupertino 等城市信息。

该命令会写入 1 亿条记录。实际耗时取决于硬件性能,即使在普通 PC 服务器上,这个过程通常也只需要十几秒。

taosBenchmark 提供了丰富的参数,可用于自定义表数量、记录条数等测试配置。执行下面的命令可以查看完整参数列表:

taosBenchmark --help

有关 taosBenchmark 的详细使用方法,请参考 taosBenchmark 参考手册

查询测试数据

使用 taosBenchmark 写入数据后,可以在 shell 中执行下面的查询,体验查询速度。

  1. 查询超级表 meters 下的记录总条数:
SELECT COUNT(*) FROM test.meters;

count(*) |
===================
100000000 |

Query OK, 1 row(s) in set (0.075247s)
  1. 查询 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)
  1. 查询 location = "California.SanFrancisco" 的记录总条数:
SELECT COUNT(*) FROM test.meters WHERE location = "California.SanFrancisco";

count(*) |
===================
10340000 |

Query OK, 1 row(s) in set (0.050540s)
  1. 查询 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)
  1. 对表 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 的数据建模、写入、查询、数据订阅和流式计算等能力。