Foundry 데이터셋을 위한 ODBC 및 JDBC 드라이버는 BI 도구와 ETL 도구와 같은 클라이언트 애플리케이션에서 데이터셋에 접근하기 위한 읽기 전용 SQL 기반 인터페이스를 제공합니다. 사용자는 Foundry에서 프로젝트와 데이터셋을 탐색하고 SQL 쿼리를 실행하여 테이블 데이터에 접근할 수 있습니다. 이 드라이버들은 서버 측에서 SQL 쿼리를 처리하고 실행하는 데 Foundry SQL Server를 활용합니다.
클라이언트 애플리케이션에서 두 프로토콜을 모두 지원하는 경우에는 JDBC를 ODBC보다 권장합니다. JDBC 드라이버는 설치하고 설정하는 것이 더 쉽고, 데이터 로딩 성능이 더 우수합니다.
이 드라이버들은 Foundry 데이터셋에 대한 SQL 쿼리를 처리하고 실행하는 데 Foundry SQL Server를 의존합니다. Foundry SQL Server 아키텍처 문서를 검토하여 아키텍처에 대해 더 알아보고 쿼리 성능을 향상시키는 방법을 알아보세요.
운영체제 | 요구사항 |
---|---|
Windows |
|
현재 ODBC 드라이버는 Windows에서만 호환됩니다.
운영체제 | 요구사항 |
---|---|
Windows |
|
macOS | |
Linux |
Java 16+는 추가 설정을 통해 지원됩니다. 아래의 가이드를 참고해 자세한 내용을 확인하세요.
Downloads: ODBC Driver에 있는 안내에 따라 ODBC 드라이버 설치 프로그램을 실행합니다.
드라이버를 클라이언트 애플리케이션 내에서 사용하려면, 먼저 Foundry 환경에 대한 데이터 소스 이름(DSN)을 설정해야 합니다:
https://<SUBDOMAIN>.palantirfoundry.com
.연결 URL을 구성하는 방법과 추가 설정 파라미터에 대한 정보는 설정 파라미터를 참고하세요.
DSN을 생성한 이후에는 ODBC 소스를 지원하는 클라이언트 애플리케이션에서 참조할 수 있습니다. ODBC 소스에 대한 클라이언트 애플리케이션 문서를 참조하세요. 아래에는 Foundry와 함께 주로 사용되는 애플리케이션들에 대한 설정 가이드가 있습니다:
클라이언트 애플리케이션이 지원하는 경우, Foundry 데이터셋에서 행을 반환하는 SQL 쿼리를 테스트해보세요:
-- 데이터셋의 경로에서 처음 10개 데이터를 선택합니다.
SELECT * FROM "/Path/To/Dataset" LIMIT 10
클라이언트 애플리케이션을 통해 프로젝트를 탐색하고 데이터셋을 선택하여 데이터에 접근할 수도 있습니다.
다운로드: JDBC 드라이버 페이지에서 JDBC 드라이버 (.jar 파일)를 다운로드합니다. 다운로드한 후, 파일을 클라이언트 애플리케이션의 JDBC 연결을 설정하는 관련 문서에서 지정한 적절한 파일 위치에 놓습니다.
JDBC 연결 문자열 형식은 다음과 같습니다:
jdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>
// jdbc:foundrysql://<FOUNDRY_호스트네임>?Password=<토큰>
FOUNDRY_HOSTNAME
은 Foundry 환경의 호스트 이름입니다(예: subdomain.palantirfoundry.com
).TOKEN
은 Foundry 내 설정 페이지에서 생성된 보안 토큰입니다. 토큰을 얻는 방법은 사용자 생성 토큰 문서를 참고하세요. 추가 인증 옵션은 OAuth를 사용하여 인증하기 가이드를 검토하세요.선택적인 파라미터는 &OptionalParam=<VALUE>
를 연결 문자열에 추가하여 지정할 수 있습니다. 사용 가능한 모든 파라미터의 전체 목록은 설정 파라미터를 참조하세요.
JDBC 클라이언트가 드라이버 클래스를 명시적으로 지정해야 하는 경우, com.palantir.foundry.sql.jdbc.FoundryJdbcDriver
를 지정하세요.
클라이언트 애플리케이션이 지원하는 경우, Foundry 데이터셋에서 행을 반환하는 SQL 쿼리를 테스트하세요:
-- 데이터셋 경로에서 처음 10개 데이터를 선택합니다.
SELECT * FROM "/Path/To/Dataset" LIMIT 10
클라이언트 애플리케이션은 프로젝트를 탐색하고 데이터셋을 선택하여 데이터에 액세스할 수도 있습니다.
ODBC 및 JDBC에서 사용 가능한 설정 파라미터는 동일합니다. 각 드라이버는 클라이언트 애플리케이션 내의 연결 문자열을 사용하거나 클라이언트 애플리케이션 외부에서 구성하는 두 가지 방법으로 구성할 수 있습니다.
연결 문자열 사용 | 클라이언트 애플리케이션 외부 | |
---|---|---|
ODBC | Driver=FoundrySqlDriver;BaseUrl=<FOUNDRY_HOSTNAME>;Pwd=<TOKEN>;OptionalParamOne=ABC;OptionalParamTwo=XYZ | Windows ODBC 데이터 소스 도구를 사용하여 DSN을 구성합니다. Part 2. Configure a Data Source Name (DSN) configuration 참조. |
JDBC | jdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>&OptionalParamOne=ABC&OptionalParamTwo=XYZ | foundry.ini config 파일을 사용합니다. Configure the JDBC driver using a foundry.ini config file 참조. |
파라미터 | 연결 문자열 키 | 필수 | 설명 |
---|---|---|---|
Foundry URL | ODBC BaseUrl / JDBC N/A | 예 | Foundry URL, 예: https://<SUBDOMAIN>.palantirfoundry.com |
인증 토큰 | ODBC Pwd / JDBC Password | 예 | Foundry UI를 사용하여 생성된 인증 토큰 또는 OAuth 인증 흐름을 통해 획득된 토큰. |
데이터셋 브랜치 | Branch | 아니오 | 쿼리할 데이터셋이 있는 브랜치입니다. 설정하지 않으면 master 로 기본 설정됩니다. |
프로젝트/카탈로그 | Catalog | 아니오 | 드라이버가 표시하는 테이블을 단일 프로젝트로 제한합니다. /MyOrg/MyProject 와 같은 전체 프로젝트 경로로 설정합니다. 이 속성을 설정하면 일부 애플리케이션에서 테이블 탐색 문제가 해결될 수 있습니다. |
인증 방법 | AuthMethod | 아니오 | 연결에 사용할 인증 방법입니다. 허용되는 값: Token (기본값), OauthFlow , 또는 ClientCredentials . OAuth 기반 인증 방법을 사용하는 방법에 대한 지침은 Use OAuth to authenticate를 참조하십시오. |
OAuth 클라이언트 ID | OauthClientId | 아니오 | Foundry에 등록 및 활성화된 타사 애플리케이션의 클라이언트 ID입니다. AuthMethod 가 OauthFlow 또는 ClientCredentials 로 설정된 경우 필요합니다. |
OAuth 클라이언트 비밀 | OauthClientSecret | 아니오 | Foundry에 등록 및 활성화된 타사 애플리케이션의 클라이언트 비밀입니다. AuthMethod 가 ClientCredentials 로 설정된 경우 필요합니다. |
프록시 호스트 | ProxyHost | 아니오 | Foundry에 액세스하는 데 필요한 프록시 호스트입니다. http 를 앞에 붙이지 않고 myproxy.example.com 과 같이 지정해야 합니다. Windows에서는 드라이버가 기본 Windows 프록시로 설정된 프록시를 자동으로 사용하므로 이 파라미터를 사용할 필요가 없을 수 있습니다. |
프록시 포트 | ProxyPort | 아니오 | 프록시 포트입니다. 프록시 호스트가 설정된 경우 필요합니다. |
프록시 사용자 이름 | ProxyUsername | 아니오 | 프록시가 인증이 필요한 경우 프록시 사용자 이름입니다. HTTP 기본 인증만 지원됩니다. |
프록시 암호 | ProxyPassword | 아니오 | 프록시 암호입니다. 프록시 사용자 이름이 설정된 경우 필요합니다. |
프록시 자동 감지 | EnableProxyAutoDetect | 아니오 | 드라이버가 설정된 운영 체제 프록시를 자동으로 로드해야 하는지 여부입니다. 허용되는 값: true (기본값) 또는 false . 자격 증명이 필요한 경우 여전히 수동으로 지정해야 합니다. 직접 연결을 사용하려면 false 로 설정합니다. |
SSL 신뢰 저장소 경로 | TrustStorePath | 아니오 | .pem 파일 형식의 사용자 지정 SSL 인증서 신뢰 저장소 경로입니다. Foundry 인증서가 기본 운영 체제 신뢰 저장소에 없는 경우에만 필요합니다. |
SQL 방언 | Dialect | 아니오 | 연결에서 사용할 SQL 방언입니다. 허용되는 값: ODBC (기본값), ANSI , 또는 SPARK . |
UTC 타임스탬프 | ODBC UtcTimestamps / JDBC N/A | 아니오 | 타임스탬프가 UTC로 반환되어야 하는지 또는 로컬 시간대로 반환되어야 하는지 여부입니다. 허용되는 값: true 또는 false (기본값). BI 도구를 사용하고 보고서를 게시할 때 이 설정은 로컬 DSN에만 적용되며 게시 후에 다를 수 있습니다. 이 설정은 OBDC 타임스탬프에만 적용되며, JDBC 타임스탬프는 항상 UTC로 반환됩니다. |
다음 표는 Foundry 유형이 ODBC 및 JDBC 유형에 어떻게 매핑되는지 보여줍니다.
Foundry 유형 | ODBC 유형 | JDBC 유형 |
---|---|---|
배열 | JSON으로 인코딩되어 문자열(SQL_WVARCHAR )로 반환됩니다. | ODBC와 동일 |
바이너리 | 0x 를 앞에 두고 16진수 문자열(SQL_WVARCHAR )로 인코딩됩니다. | byte[] |
부울 | SQL_BIT | boolean |
바이트 | SQL_TINYINT | byte |
날짜 | SQL_DATE | java.sql.Date |
소수 | SQL_DECIMAL | java.math.BigDecimal |
더블 | SQL_DOUBLE | double |
부동 소수점 | SQL_DOUBLE | float |
정수 | SQL_INTEGER | int |
롱 | SQL_BIGINT | long |
맵 | JSON으로 인코딩되어 문자열(SQL_WVARCHAR )로 반환됩니다. | ODBC와 동일 |
짧은 | SQL_SMALLINT | short |
문자열 | SQL_WVARCHAR . 최대 문자열 열 길이 파라미터는 StringColumnLength 속성을 통해 설정할 수 있습니다. | java.lang.String |
구조체 | JSON으로 인코딩되어 문자열(SQL_WVARCHAR )로 반환됩니다. | ODBC와 동일 |
타임스탬프 | SQL_TIMESTAMP . 기본적으로 시간은 시스템의 로컬 시간대로 변환됩니다. 이것은 UtcTimestamps 속성을 통해 변경할 수 있습니다. | UTC 시간대의 java.sql.Timestamp . UtcTimestamps 속성은 영향을 주지 않습니다. |
다음 표는 사용 가능한 SQL 방언의 일부 SQL 구문 및 기능을 설명합니다( Configuration parameters의 Dialect
파라미터 참조).
스파크(추천) | ANSI, ODBC | |
---|---|---|
식별자 인용(열 이름, 테이블 이름) | 백틱:SELECT * FROM `/Namespace/Project/...` | 큰따옴표:SELECT * FROM "/Namespace/Project/..." |
문자열 리터럴 인용 | 작은따옴표 또는 큰따옴표:WHERE column = 'value' OR column = "value" | 작은따옴표:WHERE column = 'value' |
날짜 리터럴 | SELECT DATE 'yyyy-mm-dd' | 스파크와 동일 |
현재 날짜 | SELECT CURRENT_DATE | 스파크와 동일 |
추가 참조 | Spark SQL Guide: SQL Reference | 지원되는 함수: ODBC Reference |
데이터셋은 SQL 쿼리에서 경로 또는 RID로 참조할 수 있습니다. SQL 구문은 연결에 설정된 방언에 따라 다릅니다( Configuration parameters 참조).
-- 기본 SELECT
SELECT * FROM `/Path/To/Dataset`
-- '/Path/To/Dataset'에서 모든 행을 선택합니다.
-- WHERE 절을 사용한 필터링
SELECT * FROM `/Path/To/Dataset`
WHERE years < 13 AND category = 'Z';
-- '/Path/To/Dataset'에서 years가 13보다 작고, category가 'Z'인 모든 행을 선택합니다.
-- JOIN 사용
SELECT *
FROM `/Path/To/Dataset_A` a
JOIN `/Path/To/Dataset_B` b
ON a.id = b.fk_id;
-- 'Dataset_A'와 'Dataset_B'를 id와 fk_id를 기준으로 결합합니다.
-- 이 때, 'Dataset_A'는 a로, 'Dataset_B'는 b로 별명을 지정합니다.
-- 기본 SELECT
SELECT * FROM "/Path/To/Dataset";
-- WHERE 절을 사용한 필터링
SELECT * FROM "/Path/To/Dataset"
WHERE years < 13 AND category = 'Z'; -- 13년 미만이고 카테고리가 'Z'인 데이터만 선택
-- JOIN 사용
SELECT *
FROM "/Path/To/Dataset_A" a -- a라는 별칭으로 Dataset_A 선택
JOIN "/Path/To/Dataset_B" b -- b라는 별칭으로 Dataset_B 선택
ON a.id = b.fk_id; -- a의 id와 b의 fk_id가 같은 데이터끼리 결합
데이터셋 식별자 사용에 대한 안내를 참조하여 데이터셋 식별자를 사용하는 방법을 자세히 알아보십시오.
단일 Foundry 계정에 연결된 인증 토큰을 수동으로 생성하는 대신, ODBC & JDBC 드라이버는 추가적인 인증 옵션을 제공하는 OAuth 2.0 플로우를 지원합니다:
가능한 경우, 이들 OAuth 기반 옵션을 토큰 생성보다 선호하는 것이 좋습니다. 이는 보안이 더 강화되고, 개별 사용자의 토큰을 공유하지 않고도 임베디드 연결 문자열의 공유 사용을 허용하기 때문입니다.
ODBC 드라이버는 윈도우에서 실행될 때 자동 OAuth 로그인 및 인증 플로우를 지원합니다. 아래 단계를 따라 이 플로우를 설정하십시오:
http://127.0.0.1/foundrydriver/oauthredirect
로 설정합니다.AuthMethod
= OauthFlow
OauthClientId
= <YOUR_CLIENT_ID>
다음에 클라이언트 애플리케이션에서 드라이버를 사용할 때, 브라우저에서 Foundry에 로그인하라는 프롬프트가 나타납니다. 그 이후에는 드라이버를 사용할 때마다 로그인할 필요는 없지만, 가끔 다시 프롬프트를 받을 수 있습니다.
개별 사용자와 관련되지 않은 워크플로(예: 대시보드의 데이터를 일정에 따라 새로 고침)의 경우, OAuth Client Credentials grant 유형을 가진 서드파티 애플리케이션을 활용한 OAuth 기반 서비스 사용자를 권장합니다. 드라이버는 수동으로 생성된 서비스 계정과 생성된 토큰보다 관리하기 쉬운 장기적인 클라이언트 ID/비밀번호 쌍으로 Foundry에 인증합니다.
서비스 사용자를 위한 OAuth 설정을 위해 아래의 단계를 따르십시오:
AuthMethod
= ClientCredentials
OauthClientId
= <YOUR_CLIENT_ID>
OauthClientSecret
= <YOUR_CLIENT_SECRET>
드라이버는 이제 OAuth 앱의 서비스 사용자로 Foundry에 연결합니다.
애플리케이션 개발자는 ODBC와 JDBC 드라이버를 자체 OAuth 클라이언트를 관리하는 애플리케이션에 통합하여 서드파티 애플리케이션과 함께 OAuth 로그인 플로우를 관리할 수 있습니다. 이 옵션은 로그인 플로우의 전체 제어를 허용하며, 사용자를 Foundry 인증으로 리다이렉트하고 사용자가 인증 및 인가를 완료한 후의 인증 응답을 처리하는 것을 포함합니다. Foundry 사용자를 대신해 액세스 토큰을 가져오기 위한 Foundry를 위한 OAuth2 클라이언트 작성 문서를 참조하십시오.
애플리케이션이 사용자 대신 액세스 토큰을 획득하면, 이 토큰은 표준 비밀번호 속성을 통해 드라이버에 전달될 수 있습니다:
Pwd
/ JDBC Password
= <ACCESS_TOKEN_OBTAINED_FROM_TOKEN_ENDPOINT>
문제 해결을 위해 드라이버 로깅을 활성화해야 하는 경우 아래의 단계를 따르십시오. 이 단계들은 관리자 권한이 필요할 수 있습니다.
My Documents\Foundry Driver logs
.클라이언트 애플리케이션을 재시작하고 문제 해결하고자 하는 작업을 수행합니다. 로그는 선택한 폴더에 나타나야 합니다. Palantir이나 다른 지원 팀의 지원이 필요한 경우, 이 폴더를 압축 파일로 압축하여 공유할 수 있습니다.
문제 해결이 완료된 후에는 ODBC Data Sources 도구로 돌아가서 로그 레벨을 OFF
로 설정하여 로깅을 비활성화하십시오. 이 단계는 성능 향상을 위해 권장됩니다.
JDBC 드라이버는 Java 애플리케이션에서 제공하는 어떠한 SLF4J 로거도 발견할 수 있습니다. 구체적으로, 애플리케이션은 org.slf4j.impl.StaticLoggerBinder
및 org.slf4j.impl.StaticMDCBinder
클래스의 구현체를 제공해야 합니다. 프로젝트 의존성으로 slf4j-simple
(버전 1.X)을 추가함으로써 기본 구현을 사용할 수 있습니다.
SLF4J 로거를 구성하지 않았다면, 드라이버가 처음 로드될 때 다음 메시지가 출력됩니다:
SLF4J: "org.slf4j.impl.StaticLoggerBinder" 클래스를 로드하지 못했습니다. // SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: 기본적으로 작업 없음 (NOP) 로거 구현으로 설정됩니다. // SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: 추가 정보는 http://www.slf4j.org/codes.html#StaticLoggerBinder 에서 확인하세요. // SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: "org.slf4j.impl.StaticMDCBinder" 클래스를 로드하지 못했습니다. // SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: 기본적으로 작업 없음 MDCAdapter 구현으로 설정됩니다. // SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: 추가 정보는 http://www.slf4j.org/codes.html#no_static_mdc_binder 에서 확인하세요. // SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
foundry.ini
설정 파일을 사용하여 JDBC 드라이버 구성하기JDBC 드라이버는 연결 문자열을 사용하는 것 외에도 설정 파일을 통해 구성할 수 있습니다. 이를 위해 JDBC .jar 파일이 위치한 동일한 디렉터리에 foundry.ini
라는 파일을 생성합니다.
.ini 파일은 low-priority
와 high-priority
두 섹션으로 나뉩니다. low-priority
섹션에서 지정한 속성은 연결 문자열 속성보다 우선순위가 낮습니다. 즉, 같은 속성이 low-priority
섹션과 연결 문자열에 지정된 경우 연결 값이 사용됩니다. 반대로 high-priority
섹션에서 지정한 속성은 연결 속성보다 우선순위가 높습니다. 이는 개발 기계에서 서버로 보고서가 게시되는 상황에서 서버 속성이 개발 속성보다 우선해야 하는 경우에 유용할 수 있습니다.
예시 foundry.ini
파일:
[high-priority]
# 프록시 호스트
proxyHost=myproxy.abc
# 프록시 포트
proxyPort=1234
[low-priority]
# 브랜치
branch=production-branch
JDBC 드라이버는 기본적으로 Java 15까지의 최대 버젼을 지원합니다. Java 16 이상의 버전과 함께 드라이버를 사용하려면 애플리케이션 내에서 --add-opens
Java 런타임 옵션을 java.base/java.nio=ALL-UNNAMED
로 설정하세요.
Copied!1 2
// java --add-opens 옵션을 사용하여 java.base/java.nio 모듈을 ALL-UNNAMED 모듈에 열고, 애플리케이션 JAR 파일을 실행합니다. java --add-opens=java.base/java.nio=ALL-UNNAMED -jar your_application.jar
일부 경우에는 _JAVA_OPTIONS
환경 변수에서 옵션을 지정하는 것이 더 편리합니다. 이 변수는 일부 Java 환경에서 자동으로 감지 및 적용됩니다. Unix 기반 시스템에서는 export
명령을 사용하여 이를 설정할 수 있습니다:
# 자바 옵션을 설정하여 java.nio 패키지를 모든 이름없는 모듈에 열기 설정
export _JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"