Todos los productos
Search
Centro de documentos

Lindorm:Tutorial: uso del controlador JDBC de Lindorm para conectarse a LindormTSDB y utilizarlo

Última actualización: Sep 06, 2026

Conéctese a LindormTSDB desde una aplicación Java mediante el controlador JDBC de Lindorm. Este tutorial explica cómo instalar el controlador, establecer la conexión y ejecutar operaciones básicas de creación, inserción y consulta.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • JDK V1.8 o una versión posterior instalada.

  • La dirección IP de su cliente agregada a la lista de permitidos de la instancia de Lindorm; consulte Configure whitelists.

  • El endpoint de LindormTSDB; consulte View endpoints.

Paso 1: instalar el controlador

Elija uno de los siguientes métodos de instalación.

Descargar el archivo JAR manualmente

Descargue el paquete JAR lindorm-all-client desde Maven Central. Seleccione la versión que se ajuste a sus necesidades. Por ejemplo, para instalar la versión 2.1.5, descargue lindorm-all-client-2.1.5.jar y agréguelo al classpath de su proyecto.

Agregar la dependencia de Maven (recomendado)

Agregue la siguiente dependencia a su archivo pom.xml:

<dependency>
    <groupId>com.aliyun.lindorm</groupId>
    <artifactId>lindorm-all-client</artifactId>
    <version>2.2.1.3</version>
</dependency>

Especifique la versión según sus necesidades.

Paso 2: conectarse a LindormTSDB

El formato de la URL JDBC para LindormTSDB es a continuación:

jdbc:lindorm:tsdb:url=http://<endpoint>:<port>

Parámetro

Descripción

Ejemplo

<endpoint>

El endpoint de LindormTSDB obtenido desde la consola de Lindorm.

ld-bp12pt80qr38p****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com

<port>

El puerto de LindormTSDB.

8242

Para consultar la lista completa de parámetros de la URL, consulte URL of the JDBC driver.

Paso 3: crear una tabla, insertar datos y ejecutar una consulta

En el siguiente ejemplo se establece una conexión a LindormTSDB, se crea una tabla de series temporales en la base de datos predeterminada, se insertan filas por lotes y se consultan los datos mediante un rango de tiempo.

import java.sql.*;

class Test {
    public static void main(String[] args) {
        // Replace with your LindormTSDB endpoint and port.
        String url = "jdbc:lindorm:tsdb:url=http://ld-bp12pt80qr38p****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242";
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(url);
            try (Statement stmt = conn.createStatement()) {
                // Create a time series table in the default database.
                // device_id and region are TAG columns (dimensions for filtering).
                stmt.execute("CREATE TABLE sensor1 (device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity DOUBLE, PRIMARY KEY(device_id))");

                // Insert multiple rows in a single batch to reduce round trips.
                stmt.addBatch("INSERT INTO sensor1(device_id, region, time, temperature, humidity) values('F07A1260','north-cn','2021-04-22 15:33:00',12.1,45)");
                stmt.addBatch("INSERT INTO sensor1(device_id, region, time, temperature, humidity) values('F07A1260','north-cn','2021-04-22 15:33:10',13.2,47)");
                stmt.addBatch("INSERT INTO sensor1(device_id, region, time, temperature, humidity) values('F07A1260','north-cn','2021-04-22 15:33:20',10.6,46)");
                stmt.addBatch("INSERT INTO sensor1(device_id, region, time, temperature, humidity) values('F07A1261','south-cn','2021-04-22 15:33:00',18.1,44)");
                stmt.addBatch("INSERT INTO sensor1(device_id, region, time, temperature, humidity) values('F07A1261','south-cn','2021-04-22 15:33:10',19.7,44)");
                stmt.executeBatch();
                stmt.clearBatch();
            }

            // Always specify a time range to limit the amount of data scanned.
            try (PreparedStatement pstmt = conn.prepareStatement(
                    "SELECT device_id, region, time, temperature, humidity FROM sensor1 WHERE time >= ? AND time <= ?")) {
                pstmt.setTimestamp(1, Timestamp.valueOf("2021-04-22 15:33:00"));
                pstmt.setTimestamp(2, Timestamp.valueOf("2021-04-22 15:33:20"));
                try (ResultSet rs = pstmt.executeQuery()) {
                    while (rs.next()) {
                        String device_id  = rs.getString("device_id");
                        String region      = rs.getString("region");
                        Timestamp time     = rs.getTimestamp("time");
                        Double temperature = rs.getDouble("temperature");
                        Double humidity    = rs.getDouble("humidity");
                        System.out.printf("%s %s %s %f %f\n", device_id, region, time, temperature, humidity);
                    }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Si la consulta se ejecuta correctamente, la salida será similar a a continuación:

F07A1261 south-cn 2021-04-22 15:33:00.0 18.100000 44.000000
F07A1261 south-cn 2021-04-22 15:33:10.0 19.700000 44.000000
F07A1260 north-cn 2021-04-22 15:33:00.0 12.100000 45.000000
F07A1260 north-cn 2021-04-22 15:33:10.0 13.200000 47.000000
F07A1260 north-cn 2021-04-22 15:33:20.0 10.600000 46.000000

Mapeo de tipos de datos

Los tipos SQL de LindormTSDB corresponden a los tipos de Java de a continuación:

Tipo de LindormTSDB

Tipo de Java

Método getter de JDBC

VARCHAR

java.lang.String

rs.getString()

VARCHAR TAG

java.lang.String

rs.getString()

DOUBLE

java.lang.Double

rs.getDouble()

TIMESTAMP

java.sql.Timestamp

rs.getTimestamp()

Solución de problemas

Error de conexión

  1. Compruebe que la IP de su cliente esté incluida en la lista de permitidos de la instancia.

  2. Confirme que el endpoint y el puerto sean correctos en la URL JDBC.

  3. Compruebe que la instancia de Lindorm se esté ejecutando y que el motor de series temporales esté habilitado.

La consulta no devuelve datos

  1. Confirme que el rango de tiempo de la cláusula WHERE coincida con las marcas de tiempo de los datos insertados.

  2. Compruebe que el nombre de la tabla y los nombres de las columnas sean correctos.

**executeBatch() es lento**

Ajuste el tamaño del lote según su carga de trabajo y el volumen de datos.

Pasos siguientes