最近学习了TDengine数据库,因为我们公司有硬件设备,设备按照每分钟,每十分钟,每小时上传数据,存入数据库。而这些数据会经过sql查询,统计返回展示到前端。但时间积累后现在数据达到了百万级数据,导致查询很慢,综合考虑下,决定使用这个时序数据库来存入数据。
关于TDengine详情,可去官网https://docs.taosdata.com/查看。具体理解超级表和子表。
接下来展示我的简单使用:
- 建入连接
有两种方式建入连接,一种是安装客户端驱动,一种是安装连接器,我这边使用的是安装连接器。
安装连接器,又有两种方式,一种是原声连接,一种是REST连接。两种连接端口不同(自行配置)。
我使用的REST连接:
首先导入依赖:
       <dependency>
            <groupId>com.taosdata.jdbc</groupId>
            <artifactId>taos-jdbcdriver</artifactId>
            <version>3.0.0</version>
        </dependency>接下来是建入连接代码:
application.yml:
tdengine:
  forward: false #是否启用该数据库开关
  ip: 127.0.0.49 #tdengine服务ip
  port: 8041
  database: hle_data
  user: root
  password: Hle8888TdengineConfig.java
@Configuration
public class TdengineConfig {
    public static String ip;
    public static String port;
    public static String database;
    public static String user;
    public static String password;
    public static Boolean forward;
    @Value("${tdengine.ip}")
    public void setIp(String ip) {
        TdengineConfig.ip = ip;
    }
    @Value("${tdengine.port}")
    public void setPort(String port) {
        TdengineConfig.port = port;
    }
    @Value("${tdengine.database}")
    public void setDatabase(String database) {
        TdengineConfig.database = database;
    }
    @Value("${tdengine.user}")
    public void setUser(String user) {
        TdengineConfig.user = user;
    }
    @Value("${tdengine.password}")
    public void setPassword(String password) {
        TdengineConfig.password = password;
    }
    @Value("${tdengine.forward}")
    public void setForward(Boolean forward) {
        TdengineConfig.forward = forward;
    }
}TdengineConnectConfig.java
@Component
public class TdengineConnectConfig {
    //8030原生连接端口  8041
    public static Connection conn = null;
    public static String URL = TdengineConfig.ip + ":" + TdengineConfig.port + "/" + TdengineConfig.database;
    @PostConstruct
    public static Connection getConnection(){
        if(!TdengineConfig.forward) return null;
        try{
            System.out.println("---------------start Connected");
            String jdbcUrl = "jdbc:TAOS-RS://"+ URL +"?user="+ TdengineConfig.user +"&password=" + TdengineConfig.password;
            Properties connProps = new Properties();
            //connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true");  //开启批量拉取功能
            conn = DriverManager.getConnection(jdbcUrl, connProps);
            System.out.println("---------------Connected success");
        }catch (Exception e){
            System.out.println("---------------Connected fail");
            e.printStackTrace();
        }
        return conn;
    }
    //执行sql
    public static void executeSql(String sql){
        try{
            if(conn == null) conn = getConnection();
            if(conn != null){
                Statement statement = conn.createStatement();
                statement.execute(sql);
            }
        }catch (Exception e){
            System.out.println("sql执行失败");
            e.printStackTrace();
        }
    }
}- 操作数据,执行sql
TdengineConnectConfig.executeSql(sql.toString());具体语法可以去看官网。给你们展示一下写入数据的sql:
--------执行sql:INSERT INTO 
 D_LE202012210190_2011_a24088 USING data_2011 TAGS ('LE202012210190','a24088','非甲烷总烃','mg/m³') VALUES (1675844844000,0.011,null,null,null,null)
 D_LE202012210190_2011_a34001 USING data_2011 TAGS ('LE202012210190','a34001','总悬浮颗粒物TSP','mg/m³') VALUES (1675844844000,0.132,null,null,null,null)
 D_LE202012210190_2011_a01012 USING data_2011 TAGS ('LE202012210190','a01012','烟气温度','°C') VALUES (1675844844000,14.9,null,null,null,null)
 D_LE202012210190_2011_GGY03 USING data_2011 TAGS ('LE202012210190','GGY03','油烟浓度','mg/m³') VALUES (1675844844000,0.028,null,null,null,null);注:表名中如果含有大写会自动转为小写,不能带有“-”符号,可以使用“_”。
再展示一下数据库界面:
 
   哈哈哈哈这就是我的简单使用,更多的自行去官网看看哦~





![[docker]笔记-镜像 管理](https://img-blog.csdnimg.cn/63ef5b515c304bfc9facc5cc94f6d7d7.png)












