TDengine 完整的软件包包括服务端(taosd)、应用驱动(taosc)、用于与第三方系统对接并提供 RESTful 接口的 taosAdapter、命令行程序(CLI,taos)和一些工具软件。目前 taosdump、TDinsight 仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。TDengine 除了提供多种语言的连接器之外,还通过 taosAdapter 提供 RESTful 接口。
taosdump、TDinsight 肯定是好用的工具
RPM 和 Deb 包不含taosdump
和 TDinsight 安装脚本,这些工具需要通过安装 taosTools 包获得。
拿到 tar.gz 的安装包,一路正常安装,安装之后
To configure TDengine : edit /etc/taos/taos.cfg
To configure Taos Adapter : edit /etc/taos/taosadapter.toml
To start TDengine : sudo systemctl start taosd
To start Taos Adatper : sudo systemctl start taosadapter
To access TDengine : taos -h Kylin to login into TDengine server
启动报错,后来查了一下得知可能是安装包版本的问题
输入 arch
得知
服务器版本是 aarch64
,应该用 arm 版本的包,应该装
TDengine-server-3.0.1.4-Linux-arm64.tar.gz (53.6 M)
果然,换了个安装包就装好了
然后解压按照文档安装即可
默认用户名为 root
,默认密码为 taosdata
默认占用端口 6030
,systemctl start taosd
,连接 URL 为 jdbc:TAOS://xiashuo.xyz:6030
rest 链接接口 6041
,服务器需要启动相应的服务,连接 URL 为 jdbc:TAOS-RS://xiashuo.xyz:6041
systemctl start taosadapter
运行以下命令设置 TDengine 服务开机自启动。
systemctl enable taosd
可通过以下命令查看 TDengine 是否开机启动
systemctl list-unit-files | grep taosd
安装路径 /usr/local/taos
配置文件在 /usr/local/taos/cfg/taos.cfg
,也可以用 /etc/taos/taos.cfg
,指向的是同一个文件
也可以使用 rpm 安装。
sudo rpm -ivh TDengine-server-<version>-Linux-x64.rpm
各个版本的安装包的列表地址:
https://docs.taosdata.com/releases/tdengine/
命令行工具 taos
,类似于 mysql 的工具,可以建库建表,
在 Linux shell 下直接执行 taos
连接到 TDengine 服务,进入到 TDengine CLI 界面
输入 q 推出
性能测试命令 taosBenchmark
开发一个应用,如果你准备采用 TDengine 作为时序数据处理的工具,那么有如下几个事情要做:
参考文档:
https://docs.taosdata.com/reference/taosadapter/
https://docs.taosdata.com/connector/rest-api/
需要启动服务 systemctl start taosadapter
只有在没有安装 TDengine 服务端软件的系统上使用原生接口连接器才需要安装客户端驱动。
安装客户端驱动 taosc
注意,本地客户端的版本必须跟服务器端的版本号完全一致,例如,客户端为 3.0.1.5
,那么服务器端的版本,也必须是 3.0.1.5
,否则无法连接
然后再使用连接器,在程序中连接 TDengine
如果不是在代码中连接 TDengine。而是在 DataGrip 客户端中连接,应该使用 taos-jdbcdriver-3.0.0-dist.jar。其中包含第三方引用的依赖,
下载地址:Central Repository: com/taosdata/jdbc/taos-jdbcdriver/3.0.0
原生链接,选择
Datagrip 更换驱动之后可以正常连接数据库了,但是还是无法直接通过双击表名来查看表的内容,需要通过 use
指定数据库或者,在 select from 表名的时候的时候指定模式名
可以在配置 URL 的时候手动指定表名
// use
// String jdbcUrl = "jdbc:TAOS://localhost:6030/dbName?user=root&password=taosdata";
// if you want to connect a specified database named "dbName".
如果是 RS 链接,找
无法建立连接的排查
https://blog.csdn.net/u013810234/article/details/121269395
不同类型的数据采集点往往具有不同的数据特征,包括数据采集频率的高低,数据保留时间的长短,副本的数目,数据块的大小,是否允许更新数据等等。为了在各种场景下 TDengine 都能以最大效率工作,TDengine 建议将不同数据特征的表创建在不同的库里,因为每个库可以配置不同的存储策略。创建一个库时,除 SQL 标准的选项外,还可以指定保留时长、副本数、缓存大小、时间精度、文件块里最大最小记录条数、是否压缩、一个数据文件覆盖的天数等多种参数
CREATE DATABASE power KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1;
从 3.0.4.0 开始,如果后续需要订阅数据库,那么还要设置 WAL_RETENTION_PERIOD 参数
CREATE DATABASE power KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1 WAL_RETENTION_PERIOD 3600;
删除数据库
DROP DATABASE [IF EXISTS] db_name
上述语句将创建一个名为 power 的库,这个库的数据将保留 365 天(超过 365 天将被自动删除),每 10 天一个数据文件,每个 VNode 的写入内存池的大小为 16 MB,对该数据库入会写 WAL 但不执行 FSYNC。详细的语法及参数请见 数据库管理 章节。
创建库之后,需要使用 SQL 命令 USE
将当前库切换过来,例如:
USE power;
将当前连接里操作的库换为 power,否则对具体表操作前,需要使用“库名.表名”来指定库的名字。
使用 TDengine, 需要对每个类型的数据采集点创建一个超级表.
-
,</mark>** 包起来,比如删除
aaa-bbb-ccc`这样的表:
drop table `aaa-bbb-ccc`
比如删除数字开头的主题
drop topic `1223topic`
CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);
TDengine 对每个数据采集点需要独立建表。与标准的关系型数据库一样,一张表有表名,Schema,但除此之外,还可以带有一到多个标签。创建时,需要使用超级表做模板,同时指定标签的具体值。
CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);
TDengine 建议将数据采集点的全局唯一 ID 作为表名(比如设备序列号)。但对于有的场景,并没有唯一的 ID,可以将多个 ID 组合成一个唯一的 ID。不建议将具有唯一性的 ID 作为标签值。
在某些特殊场景中,用户在写数据时并不确定某个数据采集点的表是否存在,此时可在写入数据时使用自动建表语法来创建不存在的表,若该表已存在则不会建立新表且后面的 USING 语句被忽略。比如:
INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32);
对于采集量,直接随时间更新,只要插入的数据的时间更新了,就会新插入一条数据,如果时间在表中已经存在了,则会覆盖原来的数据,但是 tag 数据不会被覆盖,每一个子表,插入第一行数据的时候,tag 即确定,后续写入的时候,即使传入的 tag 跟第一次传入的时候的 tag 不一样,也不会修改。
值得注意的是,单独查询子表的时候,是不会显示 tag 字段的,只有在查询超级表的时候,才会显示 tag 字段
TDengine 支持多列模型,只要物理量是一个数据采集点同时采集的(时间戳一致),这些量就可以作为不同列放在一张超级表里。但还有一种极限的设计,单列模型,每个采集的物理量都单独建表,因此每种类型的物理量都单独建立一超级表。比如电流、电压、相位,就建三张超级表。
TDengine 建议尽可能采用多列模型,因为插入效率以及存储效率更高。但对于有些场景,一个采集点的采集量的种类经常变化,这个时候,如果采用多列模型,就需要频繁修改超级表的结构定义,让应用变的复杂,这个时候,采用单列模型会显得更简单。
默认只能创建 CPU核心数*2
个数据库。明显不够
TDengine3.0 踩坑实录_51CTO博客_tdengine巨坑
TDengine Community edition, is there any limitation on the number of database? · Issue #17372 · taosdata/TDengine · GitHub
修改 /etc/taos/taos.cfg
的 supportVnodes
配置然后重启即可。
https://docs.taosdata.com/taos-sql/stable/
DROP STABLE [IF EXISTS] [db_name.]stb_name
删除超级表之前,一定要把订阅了此超级表的主题删除。
删除表
DROP TABLE [IF EXISTS] [db_name.]tb_name
字符串类型,在 TDengine 中,应该是 NCHAR(32)
,而不是 VARCHAR(32)
,如果用 VARCHAR(32)
保存,通过 jdbc 驱动在 Java 代码中拿到查询结果的时候,字符串的值是空字符串。
use server_node_base;
-- select * from dock;
-- 查看所有的表
-- show tables;
-- 查看所有的超级表
-- show stables;
-- 查看表信息
-- describe dock;
表的 sql:https://docs.taosdata.com/taos-sql/table/
超级表的 sql:https://docs.taosdata.com/taos-sql/stable/
删除数据
use server_node_base;
delete from DOCK;
在 Java 代码中,所有的数据库模式名,表名,尽量用小写,不要用大写。