TDengine 时序数据库的安装和快速入门指南

数据库 潘老师 3个月前 (01-24) 105 ℃ (0) 扫码查看

本文将为你提供TDengine 快速入门指南,帮助你快速掌握 TDengine 的安装和基础使用方法。所有内容均基于官方文档整理,旨在为你提供一个简洁明了的入门路径。

一、TDengine 简介

TDengine 是一款专为时序数据设计的高性能分布式数据库,支持高并发写入和查询,同时具备强大的数据压缩和存储优化能力。它提供了丰富的功能,包括数据自动分区、灵活的表结构设计以及高效的聚合计算等。无论是开源版本还是商业版本,TDengine 都能满足不同场景下的需求,具体功能对比可以参考官方文档

二、基于 Docker 的单节点安装

1. 编写 docker-compose.yml 文件

以下是基于 Docker Compose 的 TDengine 单节点安装配置文件示例:

version: '3'
services:
  nexus:
    image: tdengine/tdengine:3.3.3.0
    container_name: tdengine
    networks:
      - default
    ports:
      - "6030:6030"
      - "6041:6041"
      - "6043:6043"
      - "6044-6049:6044-6049"
      - "6044-6045:6044-6045/udp"
      - "6060:6060"
    volumes:
      - ./taos:/var/lib/taos
      - ./log:/var/log/taos
networks:
  default:
    external:
      name: nisec

 

2. 启动服务

在配置文件所在目录下运行以下命令,即可启动 TDengine 服务:

docker compose up -d

三、数据库操作指南

1. 创建数据库

创建数据库时,需要指定数据精度、保留时间、数据文件存储周期等参数。例如:

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

 

  • PRECISION 'ms':设置时间戳精度为毫秒级。
  • KEEP 3650:数据保留 3650 天,超出时间范围的数据将自动删除。
  • DURATION 10:每 10 天的数据存储在一个数据文件中。
  • BUFFER 16:写入操作使用 16MB 的内存缓冲区。

2. 创建超级表

超级表是 TDengine 的核心概念之一,它类似于传统数据库中的表模板,用于定义一组具有相同结构的子表。例如:

CREATE STABLE meters (
    ts timestamp, 
    current float, 
    voltage int, 
    phase float
) TAGS (
    location varchar(64), 
    group_id int
);

 

  • 第一列必须是时间戳类型(如 ts timestamp)。
  • 后续列是数据采集列,支持多种数据类型(如 current float)。
  • TAGS 是超级表的标签,用于区分不同的子表(如 location 和 group_id)。

3. 创建子表

基于超级表,可以快速创建具体的子表。例如:

CREATE TABLE d1001 
USING meters (
    location,
    group_id
) TAGS (
    "California.SanFrancisco", 
    1
);

  • USING meters 表示基于超级表 meters 创建子表。
  • TAGS 指定了子表的具体标签值。

4. 数据写入

TDengine 提供了灵活的数据写入方式,支持单条、批量和多表写入。

单条写入

INSERT INTO d1001 (ts, current, voltage, phase) VALUES ("2018-10-03 14:38:05", 10.3, 219, 0.31);

批量写入

insert into d1001 values
 ( "2018-10-03 14:38:05", 10.2, 220, 0.23),
 ( "2018-10-03 14:38:15", 12.6, 218, 0.33),
 ( "2018-10-03 14:38:25", 12.3, 221, 0.31)

多表写入

INSERT INTO d1001 VALUES 
    ("2018-10-03 14:38:05", 10.2, 220, 0.23),
    ("2018-10-03 14:38:15", 12.6, 218, 0.33),
    ("2018-10-03 14:38:25", 12.3, 221, 0.31) 
d1002 VALUES 
    ("2018-10-03 14:38:04", 10.2, 220, 0.23),
    ("2018-10-03 14:38:14", 10.3, 218, 0.25),
    ("2018-10-03 14:38:24", 10.1, 220, 0.22)
d1003 VALUES
    ("2018-10-03 14:38:06", 11.5, 221, 0.35),
    ("2018-10-03 14:38:16", 10.4, 220, 0.36),
    ("2018-10-03 14:38:26", 10.3, 220, 0.33)
;

指定列写入

insert into d1004 (ts, voltage, phase) values("2018-10-04 14:38:06", 223, 0.29)

自动建表写入

insert into d1005
using meters (location)
tags ( "beijing.chaoyang")
values ( "2018-10-04 14:38:07", 10.15, 217, 0.33)

通过超级表写入

TDengine 提供了一种高效的数据写入方式,允许直接向超级表插入数据。超级表本质上是一个结构模板,它本身并不直接存储数据,而是将数据存储到对应的子表中。例如,通过以下 SQL 语句,可以指定 tbname 列将数据写入子表 d1001,如果子表不存在,系统会自动创建该表。这种操作模式不仅简化了数据写入流程,还提高了开发效率,因此非常推荐使用。

insert into meters (tbname, ts, current, voltage, phase, location, group_id)
values( "d1001", "2018-10-03 14:38:05", 10.2, 220, 0.23, "California.SanFrancisco", 2)

 

5. 数据更新与删除

更新数据

推荐直接使用超级表进行更新操作:

INSERT INTO d1001 (ts, current) VALUES ("2018-10-03 14:38:05", 22);

 

删除数据

同样推荐使用超级表进行删除操作:

DELETE FROM meters WHERE ts < '2021-10-01 10:40:00.100';

 

四、总结

通过本文的介绍,你已经掌握了 TDengine 的基本安装和操作方法。从基于 Docker 的快速部署到数据库的创建、超级表的设计、数据的写入与管理,TDengine 提供了一套高效且灵活的解决方案。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/db/13194.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】