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

Lindorm:Java JDBC ドライバー開発者ガイド

最終更新日:Aug 26, 2026

Lindorm JDBC ドライバーを使用して LindormTSDB に接続し、アクセスします。このガイドでは、サポートされている API 操作とメソッドについても説明します。

背景情報

LindormTSDB 用の JDBC ドライバーは、JDBC 4.1 仕様で定義されているインターフェースを実装しています。時系列データベースとして、LindormTSDB は JDBC 1.0 で定義されている基本機能セットのサブセットをサポートしています。

前提条件

  • Java がインストールされていること。Java Development Kit (JDK) 1.8 以降が必要です。

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

  • LindormTSDB の接続アドレスが取得されていること。詳細については、「エンドポイントの表示」をご参照ください。

手順

  1. 次のいずれかの方法で Lindorm JDBC ドライバーの依存関係をインストールします。

    • 手動インストール。

      JDBC ドライバーをローカルに統合するには、Lindorm-all-client から JAR パッケージをダウンロードします。インストールするバージョンを選択します。例えば、バージョン 2.1.2 をインストールする場合は、lindorm-all-client-2.1.2.jar パッケージをダウンロードします。

    • Maven を使用してダウンロード。

      Maven プロジェクトに JDBC ドライバーを統合するには、プロジェクトを作成し、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 にアクセスします。完全なコードサンプルについては、「アクセス例」をご参照ください。

    1. LindormTSDB への接続を確立します。

      String url = "jdbc:lindorm:tsdb:url=http://<host:port>";
      Connection conn = DriverManager.getConnection(url);
      説明
      • host:port:LindormTSDB の接続アドレスとポート。例:ld-bp17j28j2y7pm****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242。

      • jdbc:lindorm:tsdb:url=http://<host:port>:JDBC 接続アドレス。

    2. LindormTSDB データベースとテーブルを作成します。

      Statement stmt = conn.createStatement();
      
      stmt.execute("CREATE DATABASE test");
      stmt.execute("USE test");
      stmt.execute("CREATE TABLE sensor (device_id VARCHAR TAG,region VARCHAR TAG,time TIMESTAMP,temperature DOUBLE,humidity DOUBLE,PRIMARY KEY(device_id))");
    3. sensor テーブルにデータを挿入します。

      // PreparedStatement を使用したバルク書き込み (推奨)
      PreparedStatement pstmt = conn.prepareStatement("INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES (?, ?, ?, ?, ?)");
      int batchSize = 100;
      long ts = System.currentTimeMillis();
      
      for (int i = 0; i < batchSize; i++) {
      
           // INSERT 文の列順にパラメータをバインド
           pstmt.setString(1, "F07A1260");
           pstmt.setString(2, "north-cn");
           pstmt.setLong(3, ts + i * 10000);
           pstmt.setDouble(4, 12.1);
           pstmt.setDouble(5, 45.0);
      
           pstmt.addBatch();
      }
      
      pstmt.executeBatch();
      pstmt.clearBatch();
      
      // バルク書き込み
      Statement stmt = conn.createStatement();
      stmt.addBatch("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1260','north-cn',1619076780000,12.1,45.0)");
      stmt.addBatch("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1260','north-cn',1619076790000,13.2,47.0)");
      stmt.addBatch("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1260','north-cn',1619076800000,10.6,46.0)");
      stmt.addBatch("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1261','south-cn',1619076780000,18.1,44.0)");
      stmt.addBatch("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1261','south-cn',1619076790000,19.7,44.0)");
      stmt.executeBatch();
      stmt.clearBatch();
      
      // 単一行の書き込み (非推奨)
      Statement stmt = conn.createStatement();
      stmt.execute("INSERT INTO sensor(device_id, region, time, temperature, humidity) values('F07A1260','north-cn',1619076780000,12.1,45.0)");
    4. sensor テーブルからデータをクエリします。

      ResultSet rs = stmt.executeQuery("select device_id, region,time,temperature,humidity from sensor where time >= 1619076780000 and time <= 1619076800000");
      
      while (rs.next()) {
          String device_id = rs.getString("device_id");
          String region = rs.getString("region");
          Long time = rs.getLong("time");
          Double temperature = rs.getDouble("temperature");
          Double humidity = rs.getDouble("humidity");
          System.out.printf("%s %s %d %f %f\n", device_id, region, time, temperature, humidity);
      }