JDBC

Prev Next

VPC環境で利用できます。

Data Queryで提供する JDBCの使用方法を説明します。

参考

NAVERクラウドプラットフォームの Data Query JDBCは現在、User&Password認証方式以外の認証方式をサポートしていません。

  • User: ユーザー AccessKey、Password: ユーザー SecretKeyを入力してユーザー認証

準備事項

JDBCを使用する環境に Java 8以上がインストールされている必要があります。

使用方法

Data Query JDBCの使用方法を説明します。

1. ダウンロード

Data Query用 JDBCドライバーファイルを以下のリンクからダウンロードしてください。

dataquery-jdbc-101-437.zip

参考

Data Query JDBCはオープンソースである trinodb/trinoをベースにします。関連ライセンス情報は、ファイル内の NOTICEファイルの内容をご参照ください。

2.1. DB Toolを使った連携

Data Query JDBC Driverを DB Toolに登録して Data Queryにクエリを実行できます。ガイドでは JetBrains DataGripを使って Data Queryに接続する方法をご案内します。

参考

このガイドは DataGrip 2023.1.1 バージョンを基準に作成しました。

2.1.1. Data Query JDBCドライバー登録

Data Query JDBCドライバーを登録する方法は、次の通りです。

dataquery-jdbc-vpc-01

  1. DataGripの File > New > Driver メニューを順にクリックします。
  2. Drivers タブをクリックした後、 [+] ボタンをクリックします。
  3. Name項目に NCP Data Queryを入力します。
  4. Driver Files領域の [+] ボタンをクリックします。
  5. Custom Jars を選択した後、検索ウィンドウでダウンロードしたドライバーファイルをクリックして選択します。
  6. Class項目リストで io.trino.jdbc.TrinoDriver を選択します。
  7. 登録を完了するには、 [Apply] ボタンや [OK] ボタンをクリックします。

2.1.2. Data Query Data Source登録

Data Query Data Sourceを登録する方法は、次の通りです。

dataquery-jdbc-vpc-02

  1. DataGripの File > New > Data Source > NCP Data Query メニューを順にクリックします。
  2. User項目に ユーザー AccessKey情報 を入力します。
  3. Password項目に ユーザー SecretKey情報 を入力します。
  4. URL項目に Data Query JDBC URL情報 を入力します。
    • リージョン別 Data Query Service JDBC URLを参照
  5. 正常に接続されたか確認するために [Test Connection] ボタンをクリックします。
  6. 登録を完了するには、 [Apply] ボタンや [OK] ボタンをクリックします。

2.1.3. 使用可能オプション

詳細接続設定は登録した Data Sourceの [Advanced] タブで設定できます。

オプション名 データタイプ 入力値 必須有無 備考
reuseQueryResult Boolean true または false N * default : false
reuseQueryMaxAge Integer 1 ~ 10,080 N * default : 60
* reuseQueryResult値が true の場合にのみ使用(単位: 分)

例) 提出するクエリ結果として最近1時間以内の同じリクエストクエリを再利用するように JDBCを接続
dataquery-jdbc-vpc-03

リージョン別 Data Query Service JDBC URL
現在は KRリージョンのみ使用でき、使用可能なリージョンは拡大する予定です。

リージョン JDBC URL
KR jdbc:trino://kr.dataquery.naverncp.com:443
参考

dataquery-jdbc trino-jdbcベースで提供します。上記で案内されたオプション以外の追加内容は、Trinoドキュメントをご参照ください。

2.1.4. クエリ提出と結果確認

Toolの使用方法に応じて追加された Data Sourceに連携し、クエリを提出して結果を確認します。

例)
dataquery-jdbc-vpc-03

2.2. Javaプロジェクト内の JDBCを連携

Data Query JDBC Driverを Java Projectの Libraryに追加して Data Queryにクエリを実行できます。このガイドでは JetBrains IntelliJ IDEAを使って Data Queryに接続する方法を説明します。

参考
  • このガイドは IntelliJ IDEA 2023.1 バージョンを基準に作成しました。
  • GradleMavenなどのビルド自動化ツールを使う場合は、DataQuery Repositoryドキュメントをご参照ください。より簡単な JDBC連携が可能です。

2.2.1. Data Query JDBCドライバーライブラリ登録

Data Query JDBCドライバーライブラリを登録するには、ダウンロードした JDBC Driverをプロジェクト設定に追加します。Data Query JDBCドライバーライブラリを登録する方法は、次の通りです。

dataquery-jdbc-vpc-03

  1. IntelliJ > Project Settings > Modules メニューを順にクリックします。
  2. [Dependencies] タブをクリックし、 [+] ボタンをクリックします。
  3. JARs or Directories を選択し、検索ウィンドウからダウンロードしたドライバーファイルをクリックして選択します。
  4. 登録を完了するには、 [Apply] ボタンや [OK] ボタンをクリックします。

2.2.2. クエリ提出と結果確認

コードを作成してクエリを提出し、結果を確認します。

例)

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class DataQueryJdbcDemo {
	public static void main(String[] args) {
		final String accesskey = "{my-access-key}";
		final String secretKey = "{my-secret-key}";
		final String jdbcUrl = "{dataquery-jdbc-url}";

		String query = """
			SELECT movieId, COUNT(*) AS ratingCount
			FROM public_data.the_movies_dataset.ratings_small
			GROUP BY movieId
			ORDER BY ratingCount DESC
			LIMIT 10
			""";

		try {
			// Create a connection
			/* propertiesを使用する方法と url parametersを使用する方法の中から選択できます。 */
			// 1. properties
			Properties properties = new Properties();
			properties.setProperty("user", accesskey);
			properties.setProperty("password", secretKey);
			properties.setProperty("SSL", "true");
			Connection connection = DriverManager.getConnection(jdbcUrl, properties);
			// 2. URL parameters
			// String url = String.format("%s?user=%s&password=%s&SSL=true", jdbcUrl, accesskey, secretKey);
			// Connection connection = DriverManager.getConnection(url);

			// Create a statement
			Statement stmt = connection.createStatement();
			// Execute the SELECT query
			ResultSet resultSet = stmt.executeQuery(query);
			// Process the query results
			long index = 0L;
			while (resultSet.next()) {
				System.out.println(
					String.format("[%d] %s %d", index, resultSet.getString(1), resultSet.getInt(2))
				);
				index++;
			}
			// Close the result set
			resultSet.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
// 結果例
[0] 356 341
[1] 296 324
[2] 318 311
[3] 593 304
[4] 260 291
[5] 480 274
[6] 2571 259
[7] 1 247
[8] 527 244
[9] 589 237

2.2.3. 使用可能オプション

2.1.3. 使用可能オプションで説明した内容を同様に使えます。Connection方法に応じて以下のような形で使用してください。

  • Properties方式: properties.setProperty("옵션명", 옵션값) の形態で Propertiesに追加
  • Url方式: "{dataquery-jdbc-url}?옵션명=옵션값" の形態で Url文字列に追加