TDengine 快速上手:安装部署与基础 SQL 实践(一)

发布于:2025-04-03 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、环境准备与安装部署

1.1 单机安装全流程

TDengine 支持在 Linux 和 Windows 等多平台上进行部署,为开发者提供了极大的便利。在众多安装方式中,官方提供的 tar.gz 包是一个非常可靠且推荐的选择,它能确保我们获取到最新版本的 TDengine 以及完整的安装支持。

在 Linux 系统下,我们首先需要获取 TDengine 的安装包。可以从 TDengine 的官方网站(https://www.taosdata.com/cn/download/)下载最新版本的 tar.gz 包,下载完成后,将其放置在合适的目录中,比如/usr/local/src。接下来,使用以下命令解压安装包:


tar -xvf TDengine-server-*.tar.gz

解压完成后,进入解压后的目录,执行安装脚本:


cd TDengine-server-*

sudo ./install.sh

安装过程中,会提示一些配置信息,对于单机安装,我们可以直接使用默认配置,一路回车即可完成安装。

安装完成后,启动 TDengine 服务。在 Linux 系统中,我们可以使用 systemctl 命令来启动服务:


sudo systemctl start taosd

通过systemctl status taosd命令可以查看服务的运行状态,确保服务正常启动。

在 Windows 系统下,安装过程也相对简单。首先从官网下载 Windows 版本的安装包,下载完成后,双击安装包,按照安装向导的提示进行安装。安装完成后,进入安装目录(默认路径为C:\TDengine),在命令提示符中运行taosd.exe即可启动服务。

安装完成并启动服务后,我们需要验证安装是否成功。打开终端,输入taos命令,即可进入 TDengine 的命令行界面(CLI)。在 CLI 中,输入show databases;命令,如果能够看到系统中已有的数据库列表,说明 TDengine 已经成功安装并运行。例如:


taos> show databases;

name | created_time | ntables | columns | tags | vgroups | replicas | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update |

========================================================================================================================================================================================================================================================================================================

information_schema | 2024-01-01 00:00:00.000 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 100 | 1 | 3000000 | 0 | 0 | us | |

log | 2024-01-01 00:00:00.000 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 100 | 1 | 3000000 | 0 | 0 | us | |

Query OK, 2 row(s) in set (0.001455s)

1.2 集群搭建实战

在实际应用中,为了满足大规模数据处理和高可用性的需求,我们通常会搭建 TDengine 集群。下面以一个 4 节点的集群配置为例,其中包括 3 个数据节点和 1 个客户端节点,详细介绍集群的搭建过程。

首先,对集群进行规划。假设我们有 4 台服务器,其 IP 地址和主机名分别如下:

节点类型

IP 地址

主机名

数据节点 1

192.168.1.101

dnode1

数据节点 2

192.168.1.102

dnode2

数据节点 3

192.168.1.103

dnode3

客户端节点

192.168.1.104

client

在每个节点上,都需要配置 hostname 和 hosts 文件,以确保节点之间能够通过主机名进行通信。在 Linux 系统中,可以使用以下命令修改 hostname:


sudo hostnamectl set-hostname dnode1

修改完成后,需要重启系统使修改生效。然后,编辑/etc/hosts文件,添加所有节点的 IP 地址和主机名映射,例如:


192.168.1.101 dnode1

192.168.1.102 dnode2

192.168.1.103 dnode3

192.168.1.104 client

在每个数据节点上,都需要修改 TDengine 的配置文件taos.cfg。打开taos.cfg文件,找到并修改以下关键参数:


# 指定第一个数据节点的Endpoint,格式为FQDN:port

firstEp = dnode1:6030

# 设置本数据节点的FQDN

fqdn = dnode1

在每个数据节点上,按照上述步骤解压、安装 TDengine。在安装过程中,当提示是否加入已有的集群时,对于第一个数据节点(dnode1),直接回车创建新集群;对于其他数据节点(dnode2 和 dnode3),输入第一个数据节点的 FQDN 和端口号(例如dnode1:6030)。

安装完成后,在每个数据节点上启动 TDengine 服务:


sudo systemctl start taosd

在第一个数据节点(dnode1)上,打开 TDengine 的命令行界面,使用以下命令添加其他数据节点:


CREATE DNODE "dnode2:6030";

CREATE DNODE "dnode3:6030";

添加完成后,可以使用show dnodes;命令查看集群中的数据节点状态,确保所有节点都已成功加入集群。

随着业务的发展,可能需要对集群进行动态扩展,添加新的数据节点。假设我们需要添加一个新的数据节点(dnode4,IP 地址为 192.168.1.105),首先在 dnode4 上按照上述步骤配置 hostname、hosts 文件和taos.cfg文件,然后在已有的数据节点上执行以下命令添加新节点:


CREATE DNODE "dnode4:6030";

添加完成后,TDengine 会自动进行负载均衡,将部分数据迁移到新节点上,实现集群的水平扩容。

二、核心 SQL 语法详解

2.1 数据建模三板斧

在 TDengine 中,数据建模是构建高效数据存储和查询体系的基础,主要包括创建数据库、定义超级表和生成子表这三个关键步骤。

创建数据库是整个数据建模的第一步,它为后续的数据存储和管理提供了一个逻辑容器。在 TDengine 中,我们使用CREATE DATABASE语句来创建数据库,并且可以通过一些参数来对数据库进行配置。例如,我们要创建一个名为power的数据库,并且设置数据保留期限为 365 天,数据文件的时间跨度为 10 天,可以使用以下语句:


CREATE DATABASE power KEEP 365 DURATION 10;

这里的KEEP参数用于指定数据的保留天数,DURATION参数用于指定每个数据文件所包含的数据时间跨度。合理设置这些参数,可以有效地管理数据存储和查询性能。

定义超级表是 TDengine 数据建模的核心概念之一。超级表是一种抽象的数据结构,它定义了一组具有相同结构的子表的模板。通过超级表,我们可以方便地对大量具有相似结构的数据进行统一管理和查询。在 TDengine 中,使用CREATE STABLE语句来定义超级表。例如,我们要创建一个名为meters的超级表,用于存储电表数据,每个数据记录包含时间戳ts和电流值current,并且带有一个标签location用于表示电表的位置,可以使用以下语句:


CREATE STABLE meters (ts timestamp, current float) TAGS (location nchar(64));

这里的TAGS关键字用于定义超级表的标签,标签是一种静态的元数据,用于对数据进行分组和过滤。

生成子表是将超级表的模板应用到具体的数据采集点上。每个子表对应一个具体的采集设备或实体,它继承了超级表的结构和标签定义。在 TDengine 中,使用CREATE TABLE语句来生成子表,并且需要指定子表所使用的超级表和标签值。例如,我们要创建一个名为d1001的子表,使用meters超级表,并且设置标签location的值为Beijing,可以使用以下语句:


CREATE TABLE d1001 USING meters TAGS('Beijing', 1);

通过这三个步骤,我们就完成了 TDengine 的数据建模,为后续的数据写入和查询奠定了基础。

2.2 高效写入技巧

在 TDengine 中,数据写入是一个关键的操作,它直接影响到系统的性能和数据的实时性。以下是一些高效写入的技巧。

单条写入是最基本的数据写入方式,适用于数据量较小或者对写入实时性要求极高的场景。在 TDengine 中,使用INSERT INTO语句来进行单条写入。例如,我们要向d1001子表中插入一条数据,记录当前时间的电流值为 220.5,可以使用以下语句:


INSERT INTO d1001 VALUES(now, 220.5);

这里的now是 TDengine 提供的一个系统函数,用于获取当前的时间戳。

批量写入可以大大提高数据写入的效率,减少写入操作的次数和开销。在 TDengine 中,我们可以在一条INSERT INTO语句中插入多条数据。例如,我们要向d1001子表中插入两条数据,记录不同时间的电流值,可以使用以下语句:


INSERT INTO d1001 VALUES(now, 221.3)(now, 222.1);

通过这种方式,可以将多条数据一次性写入到数据库中,减少了与数据库的交互次数,提高了写入效率。

自动建表功能是 TDengine 的一个特色功能,它可以在写入数据时自动创建不存在的子表,极大地简化了数据管理的流程。在 TDengine 中,使用INSERT INTO...USING...TAGS语句来实现自动建表。例如,我们要向一个可能不存在的d2001子表中插入数据,并且使用meters超级表和指定的标签值,可以使用以下语句:


INSERT INTO d2001 USING meters TAGS('Shanghai', 2) VALUES(now, 220.0);

如果d2001子表不存在,TDengine 会自动根据meters超级表的结构和指定的标签值创建该子表,然后再将数据写入。

2.3 查询优化实战

在 TDengine 中,数据查询是获取数据价值的关键操作,通过合理的查询优化,可以提高查询效率,快速获取所需的数据。以下是一些查询优化的实战技巧。

基础查询是最常用的查询操作,用于从表中获取指定的数据。在 TDengine 中,使用SELECT语句来进行基础查询。例如,我们要从d1001子表中获取前 10 条数据,可以使用以下语句:


SELECT * FROM d1001 LIMIT 10;

这里的LIMIT关键字用于限制查询结果的数量,通过合理设置LIMIT的值,可以减少返回的数据量,提高查询效率。

聚合计算是对数据进行统计和分析的重要操作,在 TDengine 中,支持丰富的聚合函数,如avg、sum、count等。通过使用这些聚合函数,我们可以对数据进行各种统计分析。例如,我们要计算meters超级表中每个小时的平均电流值,并且对缺失的数据进行线性插值填充,可以使用以下语句:


SELECT avg(current) FROM meters INTERVAL(1h) FILL(linear);

这里的INTERVAL关键字用于指定时间间隔,FILL关键字用于指定填充策略,通过合理设置这些参数,可以实现对数据的降采样和填充处理。

标签过滤是根据标签的值来筛选数据的操作,在 TDengine 中,标签是一种重要的元数据,通过标签过滤可以快速定位到所需的数据。例如,我们要从meters超级表中查询位置为Beijing的所有数据,可以使用以下语句:


SELECT * FROM meters WHERE location='Beijing';

通过这种方式,可以根据标签的值对数据进行精确筛选,提高查询的针对性和效率。


网站公告

今日签到

点亮在社区的每一天
去签到