Tous les produits
Search
Centre de documentation

Lindorm:Tutoriel : Utiliser le pilote JDBC pour Lindorm afin de se connecter à LindormTSDB et l'utiliser

Dernière mise à jour :Sep 06, 2026

Connectez-vous à LindormTSDB depuis une application Java en utilisant le pilote JDBC Lindorm. Ce tutoriel vous guide à travers l'installation du pilote, l'établissement d'une connexion et l'exécution d'opérations de base de création, d'insertion et de requête.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Étape 1 : Installer le pilote

Choisissez l'une des méthodes d'installation suivantes.

Télécharger manuellement le fichier JAR

Téléchargez le package JAR lindorm-all-client depuis Maven Central. Sélectionnez la version qui correspond à vos besoins. Par exemple, pour installer la version 2.1.5, téléchargez lindorm-all-client-2.1.5.jar et ajoutez-le au classpath de votre projet.

Ajouter la dépendance Maven (recommandé)

Ajoutez la dépendance suivante à votre fichier pom.xml :

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

Spécifiez la version en fonction de vos besoins.

Étape 2 : Se connecter à LindormTSDB

Le format de l'URL JDBC pour LindormTSDB est le suivant :

jdbc:lindorm:tsdb:url=http://<endpoint>:<port>
Paramètre Description Exemple
<endpoint> L'endpoint LindormTSDB obtenu depuis la console Lindorm ld-bp12pt80qr38p****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com
<port> Le port LindormTSDB 8242

Pour la liste complète des paramètres d'URL, consultez URL du pilote JDBC.

Étape 3 : Créer une table, insérer des données et exécuter une requête

L'exemple suivant se connecte à LindormTSDB, crée une table de séries temporelles dans la base de données par défaut, insère des lignes par lot et interroge les données en utilisant une plage de temps.

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 requête aboutit, la sortie ressemble à ce qui suit :

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

Correspondance des types de données

Les types SQL LindormTSDB correspondent aux types Java comme suit :

Type LindormTSDB Type 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()

Dépannage

Échec de la connexion

  1. Vérifiez que l'IP de votre client figure dans la liste d'autorisation de l'instance.

  2. Confirmez que l'endpoint et le port sont corrects dans l'URL JDBC.

  3. Assurez-vous que l'instance Lindorm est en cours d'exécution et que le moteur de séries temporelles est activé.

La requête ne renvoie aucune donnée

  1. Confirmez que la plage de temps dans votre clause WHERE correspond aux horodatages des données insérées.

  2. Vérifiez que le nom de la table et les noms des colonnes sont corrects.

**executeBatch() est lent**

Ajustez la taille du lot en fonction de votre charge de travail et du volume de données.

Étapes suivantes