すべてのプロダクト
Search
ドキュメントセンター

Lindorm:チュートリアル: LindormTSDBへの接続と使用にLindorm用JDBCドライバーを使用する

最終更新日:Jan 14, 2025

このトピックでは、Lindorm用Java Database Connectivity(JDBC)ドライバーを使用して、Lindorm時系列エンジン(LindormTSDB)に接続して使用する方法について説明します。

前提条件

  • Java Development Kit(JDK) V1.8以降がインストールされている。

  • クライアントのIPアドレスがLindormインスタンスのホワイトリストに追加されている。 詳細については、「ホワイトリストの設定」をご参照ください。

  • Lindorm のエンドポイントが取得されている。 詳細については、「エンドポイントの表示」をご参照ください。 查看地址页面

手順

  1. Lindorm用JDBCドライバーをインストールするには、次のいずれかの方法を使用できます。

    • JDBCドライバーを手動でインストールする

      クライアントに Lindorm-all-client JARパッケージをダウンロードし、JDBCドライバーをインストールします。 インストールするJDBCドライバーのバージョンを選択できます。 たとえば、JDBCドライバー 2.1.5 をインストールする場合は、lindorm-all-client-2.1.5.jarパッケージをダウンロードします。

    • Mavenを使用してJDBCドライバーをダウンロードする

      JDBCドライバーをMavenプロジェクトに統合するには、Mavenプロジェクトを作成し、pom.xmlファイルに次の依存関係を追加します。

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

      ビジネス要件に基づいて、lindorm-all-clientのバージョンを指定します。

  2. LindormTSDBにアクセスします。 次のコードブロックは、LindormTSDBにアクセスする方法の例を示しています。

    import java.sql.*;
    
    class Test {
        public static void main(String[] args) {
            // LindormTSDBへの接続に使用するJDBC URLを指定します。
            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()) {
                    // 時系列テーブルを作成します。 デフォルトでは、時系列テーブルはdefaultという名前のデータベースに作成されます。
                    stmt.execute("CREATE TABLE sensor1 (device_id VARCHAR TAG,region VARCHAR TAG,time TIMESTAMP,temperature DOUBLE,humidity DOUBLE,PRIMARY KEY(device_id))");
    
                    // 複数の行をバッチで挿入します。
                    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();
                }
    
                // パラメーターをバインドしてデータをクエリします。
                // データをクエリします。 スキャンされるデータ量を減らすために、時間範囲を指定することをお勧めします。
                try (PreparedStatement pstmt = conn.prepareStatement("SELECT device_id, region,time,temperature,humidity FROM sensor1 WHERE time >= ?  and time <= ?")) {
                    Timestamp startTime =Timestamp.valueOf("2021-04-22 15:33:00");
                    Timestamp endTime = Timestamp.valueOf("2021-04-22 15:33:20");
                    pstmt.setTimestamp(1, startTime);
                    pstmt.setTimestamp(2, endTime);
                    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();
                }
            }
        }
    }
    説明
    • JDBC URLに設定できるパラメーターの詳細については、「JDBCドライバーのURL」をご参照ください。

    • LindormTSDB にアクセスするために JDBC ドライバーを使用する場合にサポートされている API 操作とメソッドの詳細については、「サポートされている API 操作とメソッド」をご参照ください。

    • LindormTSDB でサポートされている SQL 構文の詳細については、[SQL リファレンス] をご参照ください。

    次のサンプルレスポンスが返された場合、実行は成功です。

    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