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 :
JDK V1.8 ou version ultérieure installé
L'adresse IP de votre client ajoutée à la liste d'autorisation de l'instance Lindorm — consultez Configurer les listes d'autorisation
L'endpoint LindormTSDB — consultez Afficher les endpoints
É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
Vérifiez que l'IP de votre client figure dans la liste d'autorisation de l'instance.
Confirmez que l'endpoint et le port sont corrects dans l'URL JDBC.
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
Confirmez que la plage de temps dans votre clause
WHEREcorrespond aux horodatages des données insérées.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
URL du pilote JDBC — liste complète des paramètres d'URL JDBC
Opérations et méthodes API prises en charge — couverture de l'API JDBC pour LindormTSDB
Référence SQL — syntaxe SQL complète de LindormTSDB