Todos os produtos
Search
Central de documentação

Lindorm:Tutorial: Usar o driver JDBC do Lindorm para conectar e utilizar o LindormTSDB

Última atualização: Jun 28, 2026

Conecte-se ao LindormTSDB a partir de uma aplicação Java com o driver JDBC do Lindorm. Este tutorial aborda a instalação do driver, o estabelecimento da conexão e a execução de operações básicas de criação, inserção e consulta.

Pré-requisitos

Antes de começar, verifique se você tem:

  • JDK V1.8 ou posterior instalado

  • Endereço IP do cliente adicionado à lista de permissões da instância Lindorm — consulte Configure whitelists

  • Endpoint do LindormTSDB disponível — consulte Visualize endpoints

Etapa 1: Instalar o driver

Escolha um dos métodos de instalação a seguir.

Baixar o JAR manualmente

Baixe o pacote JAR lindorm-all-client no Maven Central. Selecione a versão adequada às suas necessidades. Por exemplo, para instalar a versão 2.1.5, baixe lindorm-all-client-2.1.5.jar e adicione-o ao classpath do projeto.

Adicionar a dependência Maven (recomendado)

Adicione a seguinte dependência ao arquivo pom.xml:

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

Especifique a versão conforme os requisitos do projeto.

Etapa 2: Conectar ao LindormTSDB

O formato da URL JDBC para o LindormTSDB é:

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

Parâmetro

Descrição

Exemplo

<endpoint>

Endpoint do LindormTSDB obtido no console do Lindorm

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

<port>

Porta do LindormTSDB

8242

Para obter a lista completa de parâmetros de URL, consulte URL of the JDBC driver.

Etapa 3: Criar tabela, inserir dados e executar consulta

O exemplo a seguir conecta-se ao LindormTSDB, cria uma tabela de séries temporais no banco de dados padrão, insere linhas em lote e consulta dados por intervalo de tempo.

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();
            }
        }
    }
}

Se a consulta for bem-sucedida, a saída será semelhante a:

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

Mapeamento de tipos de dados

Os tipos SQL do LindormTSDB correspondem aos tipos Java da seguinte forma:

Tipo LindormTSDB

Tipo Java

Getter 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()

Solução de problemas

Falha na conexão

  1. Verifique se o IP do cliente está na lista de permissões da instância.

  2. Confirme se o endpoint e a porta estão corretos na URL JDBC.

  3. Certifique-se de que a instância Lindorm está em execução e o mecanismo de séries temporais está ativado.

Consulta sem retorno de dados

  1. Confirme se o intervalo de tempo na cláusula WHERE corresponde aos timestamps dos dados inseridos.

  2. Verifique se o nome da tabela e os nomes das colunas estão corretos.

**Lentidão em executeBatch()**

Ajuste o tamanho do lote com base na carga de trabalho e no volume de dados.

Próximos passos