TDengine

1、在linux上安装服务端

  • 1、首先下载服务端,我下载的是:
    TDengine-server-2.6.0.30-Linux-x64.tar.gz
    下载地址

  • 2、下载过后传到虚拟机。并解压

  • 3、运行文件夹中的 ./install.sh 安装

  • 4、配置 /etc/taos/taos.cfg
    firstEp master:6030
    fqdn master(这里是hostname)

  • 5、taos 即可进入控制台访问

  • 6、卸载命令:rmtaos

2、在本地安装客户端

  • 1、首先下载客户端,与服务端版本保持一致:
    TDengine-client-2.6.0.30-Windows-x64.exe
    下载地址
  • 2、执行安装程序,按提示选择默认值,完成安装
  • 3、安装在C:/TDengine,修改cfg中的taos.cfg
    firstEp master:6030
    fqdn master
  • 4、在本机hosts文件做映射
    位置:C:\Windows\System32\drivers\etc\hosts
    192.168.182.134 master
  • 5、此时就可以在cmd 通过taos连接到 linux 的服务端了

3、通过Idea连接服务端

添加依赖:

<!-- 选用2.版本 与server client 要一致-->
<dependency>
    <groupId>com.taosdata.jdbc</groupId>
    <artifactId>taos-jdbcdriver</artifactId>
    <version>2.0.36</version>
</dependency>

连接测试:

import com.taosdata.jdbc.TSDBDriver;

import java.sql.*;
import java.util.Properties;


/**
 * @ClassName: ConnectTest
 * @Author: liumenghao
 * @Description:
 * @Date: 2022/11/17 11:04
 */
public class ConnectTest {
    
    

    public static void main(String[] args) throws Exception{
    
    
        Class.forName("com.taosdata.jdbc.TSDBDriver");
        String jdbcUrl = "jdbc:TAOS://master:6030?user=root&password=taosdata";
        Properties connProps = new Properties();
        connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
        connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
        connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
        Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
        System.out.println("Connected");
        Statement stmt = conn.createStatement();

        // create database
        stmt.executeUpdate("create database if not exists db");

        // use database,通过use指明数据库,后面查表的时候就不用再带上 数据库.表
        stmt.executeUpdate("use db");

        // create table
        stmt.executeUpdate("create table if not exists tb (ts timestamp, temperature int, humidity float)");

        insert(stmt);
        select(stmt);

        conn.close();
    }

    // 插入数据
    public static void insert(Statement stmt) throws Exception {
    
    
        // insert data
        int affectedRows = stmt.executeUpdate("insert into tb values(now, 23, 10.3) (now + 1s, 20, 9.3)");

        System.out.println("insert " + affectedRows + " rows.");
    }

    // 查询数据
    public static void select(Statement stmt) throws Exception {
    
    
        // query data
        ResultSet resultSet = stmt.executeQuery("select * from tb");

        Timestamp ts = null;
        int temperature = 0;
        float humidity = 0;
        while(resultSet.next()){
    
    
            // 根据columnIndex获取,从1开始
            ts = resultSet.getTimestamp(1);
            temperature = resultSet.getInt(2);
            // 根据属性名获取
            humidity = resultSet.getFloat("humidity");

            System.out.printf("%s, %d, %s\n", ts, temperature, humidity);
        }
    }
}

4、控制台基本使用

(1)创建库

CREATE DATABASE db KEEP 365 DURATION 10

创建数据库db,保留365天,每10天产生一个数据文件
(2)切换库

use db

(3)创建超级表
使用 TDengine, 需要对每个类型的数据采集点都创建一个超级表

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

表名:meters
表结构:第一列必须为时间戳(timestamp类型)其他列为自己所定。除此之外,还需要提供标签的schema(示例中为 location,groupId)

(4)创建表
TDengine 对每个数据采集点需要独立建表。与标准的关系型数据库一样,一张表有表名,Schema,除此之外,还可以带有一到多个标签。创建时,需要使用超级表做模板,同时指定标签的具体值。

CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);

(5)自助建表
在某些特殊场景中,用户在写数据时并不确定某个数据采集点的表是否存在,此时可在写入数据时使用自动建表语法来创建不存在的表,若该表已存在则不会建立新表且后面的 USING 语句被忽略。

INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32);

(6)写入数据

一次写入一条:

INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31);

一次写入多条:

INSERT INTO d1001 VALUES (1538548684000, 10.2, 220, 0.23) (1538548696650, 10.3, 218, 0.25);

一次写入多表:

INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, 218, 0.33) d1002 VALUES (1538548696800, 12.3, 221, 0.31);

5、流式计算

在时序数据的处理中,经常要对原始数据进行清洗、预处理,再使用时序数据库进行长久的储存。在传统的时序数据解决方案中,常常需要部署 Kafka、Flink 等流处理系统。而流处理系统的复杂性,带来了高昂的开发与运维成本。
TDengine 3.0 的流式计算引擎提供了实时处理写入的数据流的能力,使用 SQL 定义实时流变换,当数据被写入流的源表后,数据会被以定义的方式自动处理,并根据定义的触发模式向目的表推送结果。它提供了替代复杂流处理系统的轻量级解决方案,并能够在高吞吐的数据写入的情况下,提供毫秒级的计算结果延迟。

(1)创建流

create stream current_stream into current_stream_output_stb as select _wstart as start, _wend as wend, max(current) as max_current from meters where voltage <= 220 interval (5s);

报错了,不知为何。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/henulmh/article/details/127963187