Tüm Ürünler
Search
Belge Merkezi

Lindorm:Öğretici: Lindorm için JDBC sürücüsü kullanarak LindormTSDB'ye bağlanma ve kullanma

Son Güncelleme:Oct 07, 2026

Lindorm JDBC sürücüsünü kullanarak bir Java uygulamasından LindormTSDB'ye bağlanın. Bu öğreticide sürücüyü yükleme, bağlantı kurma ve temel oluşturma, ekleme ve sorgulama işlemlerini çalıştırma adımları açıklanmaktadır.

Önkoşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Adım 1: Sürücüyü yükleme

Aşağıdaki yükleme yöntemlerinden birini seçin.

JAR dosyasını manuel olarak indirme

Maven Central'dan lindorm-all-client JAR paketini indirin. Gereksinimlerinize uygun sürümü seçin. Örneğin, 2.1.5 sürümünü yüklemek için lindorm-all-client-2.1.5.jar dosyasını indirin ve proje sınıf yoluna (classpath) ekleyin.

Maven bağımlılığını ekleme (önerilen)

Aşağıdaki bağımlılığı pom.xml dosyanıza ekleyin:

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

Gereksinimlerinize göre sürümü belirtin.

Adım 2: LindormTSDB'ye bağlanma

LindormTSDB için JDBC URL biçimi şöyledir:

jdbc:lindorm:tsdb:url=http://<endpoint>:<port>
Parametre Açıklama Örnek
<endpoint> Lindorm konsolundaki LindormTSDB uç noktası ld-bp12pt80qr38p****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com
<port> LindormTSDB bağlantı noktası 8242

URL parametrelerinin tam listesi için bkz. JDBC sürücüsünün URL'si.

Adım 3: Tablo oluşturma, veri ekleme ve sorgu çalıştırma

Aşağıdaki örnek, LindormTSDB'ye bağlanır, varsayılan veritabanında bir zaman serisi tablosu oluşturur, satırları toplu iş olarak ekler ve bir zaman aralığı kullanarak veri sorgular.

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

Sorgu başarılı olursa çıktı aşağıdakine benzer:

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

Veri türü eşlemesi

LindormTSDB SQL türleri ile Java türleri arasındaki eşleme aşağıdaki gibidir:

LindormTSDB türü Java türü JDBC alıcısı
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()

Sorun giderme

Bağlantı başarısız oluyor

  1. İstemci IP adresinizin örnek izin listesinde bulunduğunu doğrulayın.

  2. JDBC URL'sindeki uç nokta ve bağlantı noktasının doğru olduğunu onaylayın.

  3. Lindorm örneğinin çalıştığını ve zaman serisi motorunun etkinleştirildiğini kontrol edin.

Sorgu veri döndürmüyor

  1. WHERE yan tümcesindeki zaman aralığının, eklenen verilerin zaman damgalarıyla eşleştiğini onaylayın.

  2. Tablo adı ve sütun adlarının doğru olduğunu doğrulayın.

**executeBatch() yavaş çalışıyor**

İş yükünüzü ve veri hacminizi temel alarak toplu iş boyutunu ayarlayın.

Sonraki adımlar