Hubungkan ke LindormTSDB dari aplikasi Java menggunakan driver JDBC Lindorm. Tutorial ini memandu Anda melalui proses instalasi driver, pembentukan koneksi, serta menjalankan operasi dasar create, insert, dan query.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menginstal JDK versi 1.8 atau yang lebih baru.
Menambahkan alamat IP klien Anda ke daftar putih instans Lindorm — lihat Konfigurasi daftar putih.
Memiliki titik akhir LindormTSDB — lihat Lihat titik akhir.
Langkah 1: Instal driver
Pilih salah satu metode instalasi berikut.
Unduh JAR secara manual
Unduh paket JAR lindorm-all-client dari Maven Central. Pilih versi yang sesuai dengan kebutuhan Anda. Misalnya, untuk menginstal versi 2.1.5, unduh lindorm-all-client-2.1.5.jar dan tambahkan ke classpath proyek Anda.
Tambahkan dependensi Maven (disarankan)
Tambahkan dependensi berikut ke file pom.xml Anda:
<dependency>
<groupId>com.aliyun.lindorm</groupId>
<artifactId>lindorm-all-client</artifactId>
<version>2.2.1.3</version>
</dependency>Tentukan versi sesuai kebutuhan Anda.
Langkah 2: Hubungkan ke LindormTSDB
Format URL JDBC untuk LindormTSDB adalah:
jdbc:lindorm:tsdb:url=http://<endpoint>:<port>| Parameter | Deskripsi | Contoh |
|---|---|---|
<endpoint> | Titik akhir LindormTSDB dari Konsol Lindorm | ld-bp12pt80qr38p****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com |
<port> | Port LindormTSDB | 8242 |
Untuk daftar lengkap parameter URL, lihat URL driver JDBC.
Langkah 3: Buat tabel, masukkan data, dan jalankan kueri
Contoh berikut menghubungkan ke LindormTSDB, membuat tabel deret waktu di database default, memasukkan baris data secara batch, dan melakukan kueri data berdasarkan rentang waktu.
import java.sql.*;
class Test {
public static void main(String[] args) {
// Ganti dengan titik akhir dan port LindormTSDB Anda.
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()) {
// Buat tabel deret waktu di database default.
// device_id dan region adalah kolom TAG (dimensi untuk penyaringan).
stmt.execute("CREATE TABLE sensor1 (device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity DOUBLE, PRIMARY KEY(device_id))");
// Masukkan beberapa baris dalam satu batch untuk mengurangi round trip.
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();
}
// Selalu tentukan rentang waktu untuk membatasi jumlah data yang dipindai.
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();
}
}
}
}Jika kueri berhasil, output-nya mirip dengan:
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.000000Pemetaan tipe data
Tipe SQL LindormTSDB dipetakan ke tipe Java sebagai berikut:
| Tipe LindormTSDB | Tipe Java | JDBC getter |
|---|---|---|
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() |
Pemecahan masalah
Koneksi gagal
Verifikasi bahwa IP klien Anda ada dalam daftar putih instans.
Konfirmasi bahwa titik akhir dan port pada URL JDBC sudah benar.
Periksa apakah instans Lindorm sedang berjalan dan mesin deret waktu telah diaktifkan.
Kueri tidak mengembalikan data
Konfirmasi bahwa rentang waktu pada klausa
WHEREsesuai dengan timestamp data yang dimasukkan.Verifikasi bahwa nama tabel dan nama kolom sudah benar.
executeBatch() lambat
Sesuaikan ukuran batch berdasarkan workload dan volume data Anda.
Langkah selanjutnya
URL driver JDBC — daftar lengkap parameter URL JDBC
Operasi dan metode API yang didukung — cakupan API JDBC untuk LindormTSDB
Referensi SQL — sintaks SQL lengkap LindormTSDB