1、简介
TDengine 是一款开源、云原生的时序数据库,专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。
TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括:
- SQL 写入、无模式写入和通过第三方工具写入
- S标准 SQL 查询、时序数据特色查询以及自定义函数(UDF)
- S缓存每个时间序列的最新数据
- S连续查询以及事件驱动流计算
- S类 Kafka 数据订阅,加以过滤功能
- S与 Grafana、Google Data Studio 可视化工具的无缝集成
- S集群、高可用、高可靠
- S主流编程语言的连接器
- S命令行以及监控、数据导出、数据导入等多种工具
2、安装
2.1 安装TDengine服务
下载地址: https://docs.taosdata.com/get-started/package/
目前 TDengine 在 Windows 平台上只支持 Windows Server 2016/2019 和 Windows 10/11。
这里我们先下载和安装TDengine-server-3.0.1.7-Windows-x64.exe
安装之后的文件夹如下:
2.2 运行TDengine服务(taosd)
安装后,可以在拥有管理员权限的 cmd 窗口执行 sc start taosd 或在 C:\TDengine 目录下,运行 taosd.exe 来启动 TDengine 服务进程。
taosd.exe
2.3 执行TDengine命令行(taos)
为便于检查 TDengine 的状态,执行数据库(Database)的各种即席(Ad Hoc)查询,TDengine 提供一命令行应用程序(以下简称为 TDengine CLI)taos。要进入 TDengine 命令行,您只要在终端执行 taos 即可。
taos
3、测试
TDengine 完整的软件包包括服务端(taosd)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、应用驱动(taosc)、命令行程序 (CLI,taos) 和一些工具软件。TDengine 除了提供多种语言的连接器之外,还通过 taosAdapter 提供 RESTful 接口。
在 TDengine CLI 中,用户可以通过 SQL 命令来创建/删除数据库、表等,并进行数据库(Database)插入查询操作。在终端中运行的 SQL 语句需要以分号(;)结束来运行。示例:
3.1 新建数据库(命令行命令)
进入 TDengine CLI 后,你可执行各种 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;
除执行 SQL 语句外,系统管理员还可以从 TDengine CLI 进行检查系统运行状态、添加删除用户账号等操作。TDengine CLI 连同应用驱动也可以独立安装在机器上运行,更多细节请参考 TDengine 命令行。
3.2 新建数据库(脚本文件)
在 TDengine CLI 里可以通过 source 命令来运行脚本文件中的多条 SQL 命令。
# taos> source <filename>;
taos> source test.txt;
- test.txt内容如下:
CREATE DATABASE demo2;
USE demo2;
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;
3.3 命令行参数
# taos -h ip/hostname
# taos -h h1.taos.com -s "use db; show tables;"
taos -h 127.0.0.1 -s "use demo; show tables;"
常用的几个命令行参数:
-c, --config-dir: 指定配置文件目录,默认为/etc/taos
-h, --host: 指定服务的FQDN,默认为本地服务
-s, --commands: 在不进入终端的情况下运行TDengine命令
-u, --user: 连接TDengine服务器的用户名,缺省为root
-p, --password: 连接TDengine服务器的密码,缺省为taosdata
-?, --help: 打印出所有命令行参数
3.4 taosBenchmark命令(体验写入速度)
可以使用 TDengine 的自带工具 taosBenchmark 快速体验 TDengine 的写入速度。 启动 TDengine 服务,然后在终端执行 taosBenchmark(曾命名为 taosdemo):
# taosBenchmark --help
taosBenchmark
该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 d0 到 d9999,每张表有 1 万条记录,每条记录有 ts、current、voltage、phase 四个字段,时间戳从 2017-07-14 10:40:00 000 到 2017-07-14 10:40:09 999,每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10,location 被设置为 California.Campbell、California.Cupertino、California.LosAngeles、California.MountainView、California.PaloAlto、California.SanDiego、California.SanFrancisco、California.SanJose、California.SantaClara 或者 California.Sunnyvale。
3.5 TDengine CLI命令(体验查询速度)
使用上述 taosBenchmark 插入数据后,可以在 TDengine CLI(taos)输入查询命令,体验查询速度。
use test;
describe meters;
show tables;
查询超级表 meters 下的记录总条数:
SELECT COUNT(*) FROM test.meters;
查询 1 亿条记录的平均值、最大值、最小值等:
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters;
查询 location = "California.SanFrancisco" 的记录总条数:
SELECT COUNT(*) FROM test.meters WHERE location = "California.SanFrancisco";
查询 groupId = 10 的所有记录的平均值、最大值、最小值等:
SELECT AVG(current), MAX(voltage), MIN(phase) FROM test.meters WHERE groupId = 10;
对表 d10 按 10 每秒进行平均值、最大值和最小值聚合统计:
SELECT FIRST(ts), AVG(current), MAX(voltage), MIN(phase) FROM test.d10 INTERVAL(10s);
select count(tbname) from test.meters;
select count(*) from test.meters;
select * from test.meters limit 1;
3.6 基础命令
- 查看服务端参数
taosd -C
- 查看客户端参数
taos -C
- 客户端登录
taos
- 查看数据库参数
show variables;
3.7 节点管理
- 查看数据节点
show dnodes;
- 查看管理节点
show mnodes;
- 添加数据节点
create dnode "ms001.xiaomu.com:6030" ;
- 删除数据节点
drop dnode "ms001.xiaomu.com:6030" ;
3.8 用户管理
- 添加用户
create user xiaomu pass '123456';
- 删除用户
drop user xiaomu ;
- 查看用户
show users;
- 修改用户密码
alter user xiaomu pass '666666';
- 修改用户权限
alter user xiaomu privilege read;
系统内共有 super/write/read 三种权限级别,但不允许把 super 权限赋予用户。
3.9 会话管理
- 查看会话
show connections;
- 清理会话
kill connection 1219806014 ;
3.10 数据库管理
# 创建数据库
create database testdb replica 3 keep 30 days 7 blocks 4 update 1;
# 删除数据库
drop database testdb ;
# 修改数据库参数
alter database testdb comp 1;
alter database testdb replica 2;
alter database testdb keep 365;
alter database testdb quorum 2;
alter database testdb blocks 100;
alter database testdb cachelast 1;
# 查看vgroups
show vgroups;
3.11 表管理
# 创建表
use testdb;
create table t1 (ts TIMESTAMP,name1 BINARY(100)) ;
# 查看表结构
describe t1;
# 插入数据
insert into t1 values(‘2021-03-10 22:37:36.100’,‘test’);
# 查询表
select * from t1;
# 查看当前所有表
show tables;
# 创建超级表
use testdb;
create table st1 (ts TIMESTAMP,name1 BINARY(100)) tags (tgs binary(20));
# 查看超级表结构
describe st1;
# 插入数据
insert into t2 using st1 tags(‘tt’) values(‘2021-03-10 22:37:36.100’,‘test’);
# 查询超级表
select * from t1;
# 查看当前所有超级表
show stables;
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!