VPC環境で利用できます。
Data Queryで提供する JDBCの使用方法を説明します。
NAVERクラウドプラットフォームの Data Query JDBCは現在、User&Password認証方式以外の認証方式をサポートしていません。
- User: ユーザー AccessKey、Password: ユーザー SecretKeyを入力してユーザー認証
準備事項
JDBCを使用する環境に Java 8以上がインストールされている必要があります。
使用方法
Data Query JDBCの使用方法を説明します。
1. ダウンロード
Data Query用 JDBCドライバーファイルを以下のリンクからダウンロードしてください。
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ドライバーを登録する方法は、次の通りです。

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

- DataGripの File > New > Data Source > NCP Data Query メニューを順にクリックします。
- User項目に ユーザー AccessKey情報 を入力します。
- Password項目に ユーザー SecretKey情報 を入力します。
- URL項目に Data Query JDBC URL情報 を入力します。
- リージョン別 Data Query Service JDBC URLを参照
- 正常に接続されたか確認するために [Test Connection] ボタンをクリックします。
- 登録を完了するには、 [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を接続

リージョン別 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に連携し、クエリを提出して結果を確認します。
例)

2.2. Javaプロジェクト内の JDBCを連携
Data Query JDBC Driverを Java Projectの Libraryに追加して Data Queryにクエリを実行できます。このガイドでは JetBrains IntelliJ IDEAを使って Data Queryに接続する方法を説明します。
- このガイドは
IntelliJ IDEA 2023.1バージョンを基準に作成しました。 - Gradle、Mavenなどのビルド自動化ツールを使う場合は、DataQuery Repositoryドキュメントをご参照ください。より簡単な JDBC連携が可能です。
2.2.1. Data Query JDBCドライバーライブラリ登録
Data Query JDBCドライバーライブラリを登録するには、ダウンロードした JDBC Driverをプロジェクト設定に追加します。Data Query JDBCドライバーライブラリを登録する方法は、次の通りです。

- IntelliJ > Project Settings > Modules メニューを順にクリックします。
- [Dependencies] タブをクリックし、 [+] ボタンをクリックします。
- JARs or Directories を選択し、検索ウィンドウからダウンロードしたドライバーファイルをクリックして選択します。
- 登録を完了するには、 [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文字列に追加