TDengine
TDengine 是涛思数据旗下一款产品开源、云原生的时序数据库(Time Series Database),已在2018年8月推出正式商业化版本。TDengine不依赖任何开源或第三方软件,拥有完全自主知识产权,具有高性能、高可靠、可伸缩、零管理、简单易学等技术特点。 [1] 提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。
TDengine官方文档
一.TDengin 安装
1.拉取TDengine镜像
docker pull tdengine/tdengine:latest
2.使用docker安装tdengine需映射网络端口和文件夹,时间较长
sudo docker run -d --name tdengine -h tdengine -p 6041:6041 -p 6030-6035:6030-6035 -p 6030-6035:6030-6035/udp tdengine/tdengine:latest
3.通过 docker exec 命令,进入到 docker 容器,进入TDengine客户端
docker exec -it tdengine /bin/bash
4.应用示例:在宿主机使用 taosBenchmark 写入数据到 Docker 容器中的 TDengine server
在tdengine容器里执行
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.SanFrancisco” 或者 “California.SanDieo”。
最后共插入 1 亿条记录。
进入客户端程序
taos
查看数据库
show databases;
查看超级表
use test;
查询表,限制输出十条
select * from test.d0 limit 10;
二.TDengine 建表
1.创建库
CREATE DATABASE sin KEEP 365 DAYS 10 BLOCKS 6 UPDATE 1;
上述语句将创建一个名为 sin 的库,这个库的数据将保留 365 天(超过 365 天将被自动删除),每 10 天一个数据文件,内存块数为 6,允许更新数据。
创建库之后,需要使用 SQL 命令 USE 将当前库切换过来
USE sin;
2.创建超级表
一个物联网系统,往往存在多种类型的设备,比如对于电网,存在智能电表、变压器、母线、开关等等。为便于多表之间的聚合,使用 TDengine, 需要对每个类型的数据采集点创建一个超级表。
CREATE STABLE gl07 (ts timestamp,value int) TAGS (groupId int);
3.创建表
TDengine 对每个数据采集点需要独立建表。与标准的关系型数据库一样,一张表有表名,Schema,但除此之外,还可以带有一到多个标签。创建时,需要使用超级表做模板,同时指定标签的具体值。
CREATE TABLE d1008 USING gl07 TAGS (1008);
4.自动建表
在某些特殊场景中,用户在写数据时并不确定某个数据采集点的表是否存在,此时可在写入数据时使用自动建表语法来创建不存在的表,若该表已存在则不会建立新表且后面的 USING 语句被忽略。
INSERT INTO d1009 USING gl07 TAGS (1009) VALUES (now, 9);
验证是否创建
select * from d1009;
TDengine SQL写入数据
1.写入一条数据,子表不存在自动创建
INSERT INTO d1009 USING gl07 TAGS (1009) VALUES (now, 10);
2.写入一条数据
INSERT INTO d1001 VALUES (now, 34);
3.写入多条数据
INSERT INTO d1001 VALUES (now,14) (now,16);