VPC 환경에서 이용 가능합니다.
Data Query에서 제공하는 JDBC 사용 방법을 설명합니다.
네이버 클라우드 플랫폼의 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 문자열에 추가