使用Docker快速搭建TDengine环境
1.创建Docker容器并运行
使用 docker run 命令启动运行 TDengine server 的 docker 容器,并使用 --name
命令行参数将容器命名为 tdengine
,使用 --hostname
指定 hostname 为 tdengine-server
,通过 -v
挂载本地目录到容器,实现宿主机与容器内部的数据同步,防止容器删除后,数据丢失。
docker run -d --name tdengine --hostname="tdengine-server" -v ~/work/taos/log:/var/log/taos -v ~/work/taos/data:/var/lib/taos -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp tdengine/tdengine
- –name tdengine:设置容器名称,我们可以通过容器名称来访问对应的容器
- –hostname=tdengine-server:设置容器内 Linux 系统的 hostname,我们可以通过映射 hostname 和 IP 来解决容器 IP 可能变化的问题。
- -v:设置宿主机文件目录映射到容器内目录,避免容器删除后数据丢失。
2.使用 docker ps 命令确认容器是否已经正确运行
docker ps
3.通过 docker exec 命令,进入到 docker 容器,进入TDengine客户端
进入tdengine容器
docker exec -it tdengine /bin/bash
进入客户端程序
taos
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 亿条记录。
5.进入 TDengine 客户端,查看 taosBenchmark 生成的数据。
查看数据库
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);
Java 连接器
maven依赖
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>2.0.38</version>
</dependency>
安装客户端驱动 taosc
Windows
-
下载客户端安装包
- TDengine-client-2.6.0.1-Windows-x64.exe (9.9 M)
- TDengine-client-2.6.0.1-Windows-x86.exe (9.9 M)
所有下载
-
执行安装程序,按提示选择默认值,完成安装
-
安装路径
默认安装路径为:C:\TDengine,其中包括以下文件(目录):
- taos.exe:TDengine CLI 命令行程序
- cfg : 配置文件目录
- driver: 应用驱动动态链接库
- examples: 示例程序 bash/C/C#/go/JDBC/Python/Node.js
- include: 头文件
- log : 日志文件
- unins000.exe: 卸载程序
-
配置 taos.cfg文章来源:https://www.toymoban.com/news/detail-416551.html
编辑 taos.cfg 文件(默认路径 C:\TDengine\cfg\taos.cfg),将 firstEP 修改为 TDengine 服务器的 End Point,例如:
h1.tdengine.com:6030
。
Linux
-
下载客户端安装包
- TDengine-client-2.6.0.1-Linux-x64.tar.gz (8.6 M)
- TDengine-client-2.6.0.1-Linux-x64-Lite.tar.gz (3.2 M)
所有下载
-
解压缩软件包
将软件包放置在当前用户可读写的任意目录下,然后执行下面的命令:
tar -xzvf TDengine-client-VERSION.tar.gz
其中 VERSION 需要替换为实际版本的字符串。 -
执行安装脚本
解压软件包之后,会在解压目录下看到以下文件(目录):
- install_client.sh:安装脚本,用于应用驱动程序
- taos.tar.gz:应用驱动安装包
- driver:TDengine 应用驱动 driver
- examples: 各种编程语言的示例程序(c/C#/go/JDBC/MATLAB/python/R) 运行 install_client.sh 进行安装。
-
配置 taos.cfg
编辑
taos.cfg
文件(默认路径/etc/taos/taos.cfg),将firstEP
修改为 TDengine 服务器的 End Point,例如:h1.tdengine.com:6030
文章来源地址https://www.toymoban.com/news/detail-416551.html
连接Tdengine写入数据
package com.ambitfly.tdengine;
import com.taosdata.jdbc.SchemalessWriter;
import com.taosdata.jdbc.TSDBDriver;
import com.taosdata.jdbc.enums.SchemalessProtocolType;
import com.taosdata.jdbc.enums.SchemalessTimestampType;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
public class WriteToTDengine {
public static void main(String[] args) throws SQLException {
String dateBase = "dateBase";
String stable = "stable";
insertData(dateBase,stable,getRawData(),getConnection());
}
public static Connection getConnection() throws SQLException {
String jdbcUrl = "jdbc:TAOS://hadoop001:6030?user=root&password=taosdata";
return DriverManager.getConnection(jdbcUrl);
}
// 2022-05-31T15:51:26.25
private static List<String> getRawData() {
return Arrays.asList(
"d111211,2022-06-01 17:38:04.68,0,192,111211"
// ,
// "d74481,1654105479000,1,192,74481",
// "d74485,1654105479000,0,192,74485",
// "d74489,1654105479000,1,192,74489",
// "d27552,1654105479000,33.75,192,27552",
// "d27551,1654105479000,0,192,27551"
);
}
private static String getSQL(String dateBase,String stable,List<String> data) {
StringBuilder sb = new StringBuilder("INSERT INTO ");
for (String line : data) {
String[] ps = line.split(",");
sb.append(dateBase+"." + ps[0]).append(" USING " + dateBase + "." + stable + " TAGS(")
.append(ps[4]) // tag: groupId
.append(") VALUES(")
.append("\'").append(ps[1]).append("\'").append(",") // time_stamp
.append(ps[2]).append(",") // value
.append(ps[3]).append(") "); // quality_stamp
}
return sb.toString();
}
public static void insertData(String dateBase,String stable,List<String> data,Connection conn) throws SQLException {
try (Statement stmt = conn.createStatement()) {
String sql = getSQL(dateBase,stable,data);
//System.out.println(sql);
int rowCount = stmt.executeUpdate(sql);
//System.out.println("rowCount=" + rowCount); // rowCount=8
}
}
}
到了这里,关于TDengine快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!