このトピックでは、Lindorm用Java Database Connectivity(JDBC)ドライバーを使用して、Lindorm時系列エンジン(LindormTSDB)に接続して使用する方法について説明します。
前提条件
Java Development Kit(JDK) V1.8以降がインストールされている。
クライアントのIPアドレスがLindormインスタンスのホワイトリストに追加されている。 詳細については、「ホワイトリストの設定」をご参照ください。
Lindorm のエンドポイントが取得されている。 詳細については、「エンドポイントの表示」をご参照ください。

手順
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のバージョンを指定します。
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