Apache Iceberg™ 테이블에 카탈로그 연결 데이터베이스 사용¶
카탈로그 연결 데이터베이스를 사용하면 개별 :ref:`외부 관리형 테이블<label-tables_iceberg_catalog_integration>`을 생성하지 않고도 Snowflake에서 여러 원격 Iceberg 테이블에 액세스할 수 있습니다.
카탈로그 연결 데이터베이스는 외부 Iceberg REST 카탈로그에 연결된 Snowflake 데이터베이스입니다. Snowflake는 외부 카탈로그와 자동으로 동기화하여 네임스페이스 및 Iceberg 테이블을 감지하고 원격 테이블을 카탈로그 연결 데이터베이스에 등록합니다. 카탈로그 연결 데이터베이스는 스키마 또는 Iceberg 테이블 생성 및 삭제도 지원합니다.
Iceberg 테이블에 카탈로그 연결 데이터베이스 사용 시 고려 사항¶
중요
미리 보기 기간 동안 카탈로그 연결 데이터베이스는 읽기 전용 모드를 지원하지 않습니다. 테이블을 삭제하거나 데이터를 작성하면 원격 카탈로그에도 이러한 변경 사항이 적용됩니다.
카탈로그 연결 데이터베이스를 사용할 때 다음 사항을 고려합니다.
Iceberg REST용 카탈로그 통합을 사용하는 경우에만 지원됩니다(예: Snowflake Open Catalog).
청구: 미리 보기 기간 동안 Snowflake는 카탈로그 연결 데이터베이스에 대해 요금을 청구하지 않습니다. 청구는 Apache Iceberg™ 카탈로그 연결 데이터베이스가 일반 공급으로 제공되는 시점에 시작됩니다.
자동 테이블 검색을 특정 네임스페이스 세트로 제한하려면 ALLOWED_NAMESPACES 매개 변수를 사용합니다. BLOCKED_NAMESPACES 매개 변수를 사용하여 네임스페이스 세트를 차단할 수도 있습니다.
Snowflake는 원격 카탈로그 액세스 제어(사용자 또는 역할)를 동기화하지 않습니다.
카탈로그 연결 데이터베이스에서 스키마 또는 외부 관리형 Iceberg 테이블을 생성할 수 있습니다. 다른 Snowflake 오브젝트 생성은 현재 지원되지 않습니다.
대기 시간:
원격 카탈로그에서 7,500개의 네임스페이스에 연결된 데이터베이스의 경우 네임스페이스 및 테이블 검색에는 약 1시간이 걸립니다.
500,000개의 테이블이 있는 원격 카탈로그의 경우 자동 새로 고침 프로세스를 완료하는 데 약 1시간이 걸립니다. 대기 시간 요구 사항이 다른 네임스페이스의 경우 별도의 카탈로그 연결 데이터베이스를 만드는 것이 좋습니다. 각 데이터베이스는 적절한 자동 새로 고침 간격(REFRESH_INTERVAL_SECONDS)으로 카탈로그 통합을 참조해야 합니다.
카탈로그 연결 데이터베이스의 Iceberg 테이블의 경우:
Snowflake는 원격 카탈로그 테이블 속성(예: 보존 정책 또는 버퍼)을 복사하지 않으며, 현재 테이블 속성 변경을 지원하지 않습니다.
자동 새로 고침</user-guide/tables-iceberg-auto-refresh>`은 기본적으로 활성화됩니다. 외부 테이블의 ``table-uuid` 및 카탈로그 연결 데이터베이스 테이블이 일치하지 않으면 새로 고침이 실패하고 Snowflake가 카탈로그 연결 데이터베이스에서 테이블을 삭제합니다. Snowflake는 원격 테이블을 변경하지 않습니다.
원격 카탈로그에서 테이블을 삭제하면 Snowflake는 카탈로그 연결 데이터베이스에서 테이블을 삭제합니다. 이 작업은 비동기식이므로 원격 카탈로그에서 변경 사항을 바로 확인하지 못할 수도 있습니다.
원격 카탈로그에서 테이블의 이름을 바꾸면 Snowflake는 카탈로그 연결 데이터베이스에서 기존 테이블을 삭제하고 새 이름으로 테이블을 생성합니다.
마스킹 정책 및 태그가 지원됩니다. 복제, 공유를 포함한 기타 Snowflake 고유 기능은 지원되지 않습니다.
NAMESPACE_FLATTEN_DELIMITER 매개 변수에 대해 선택하는 문자는 원격 네임스페이스에 나타날 수 없습니다. 자동 검색 프로세스 중에 Snowflake는 구분 기호가 포함된 네임스페이스를 건너뛰고 카탈로그 연결 데이터베이스에 해당 스키마를 생성하지 않습니다.
NAMESPACE_FLATTEN_DELIMITER 매개 변수에
_
,$
, 대문자 또는 숫자 이외의 값을 지정하는 경우 테이블을 쿼리할 때 스키마 이름을 따옴표로 묶어야 합니다.AWS Glue에 연결된 데이터베이스의 경우 소문자를 사용해야 하며 스키마, 테이블 및 열 이름을 큰따옴표로 묶어야 합니다. 이는 소문자 식별자만 지원하는 다른 Iceberg REST 카탈로그에도 필요합니다.
다음 예제는 유효한 쿼리를 보여줍니다.
CREATE SCHEMA "s1";
다음 문은 대문자를 사용하거나 큰따옴표를 생략하므로 유효하지 않습니다.
CREATE SCHEMA s1; CREATE SCHEMA "Schema1";
UNDROP ICEBERG TABLE 사용은 지원되지 않습니다.
외부 볼륨을 사용하는 테이블에 대해 목록과의 공유가 지원됩니다. 직접 공유는 현재 지원되지 않습니다.
카탈로그 연결 데이터베이스의 테이블에 쓰는 경우:
발급된 자격 증명은 지원되지 않습니다.
중첩된 네임스페이스의 테이블에 쓰는 기능은 현재 지원되지 않습니다.
외부 카탈로그 및 테이블 저장소에 대한 액세스를 구성하는 워크플로¶
다음 단계에서는 카탈로그 연결 데이터베이스를 만들고, Snowflake와 카탈로그 간의 동기화 상태를 확인하고, 데이터베이스에서 테이블을 만들거나 쿼리하는 방법을 다룹니다.
외부 카탈로그 및 테이블 저장소에 대한 액세스 구성하기¶
카탈로그 연결 데이터베이스를 만들기 전에 다음 옵션 중 하나를 선택하여 외부 카탈로그 및 테이블 저장소에 대한 액세스를 구성합니다.
옵션 1: 외부 볼륨 및 카탈로그 통합 구성하기¶
이 옵션을 사용하여 외부 볼륨 및 :ref:`카탈로그 통합<label-tables_iceberg_catalog_integration_def>`을 구성합니다. 원격 Iceberg 카탈로그가 자격 증명 발급을 지원하지 않거나 원격 카탈로그의 Iceberg 테이블에 쓰려는 경우 이 옵션을 선택합니다.
먼저, 원격 Iceberg 테이블의 데이터와 메타데이터를 저장하는 클라우드 저장소 서비스의 외부 볼륨을 구성합니다.
그런 다음 원격 Iceberg 카탈로그에 대한 카탈로그 통합을 구성합니다.
옵션 2: 발급된 자격 증명을 사용하여 카탈로그 통합 구성하기¶
참고
이 기능은 Amazon S3에 데이터와 메타데이터를 저장하는 테이블에만 지원됩니다. 이 옵션은 현재 외부 쓰기에 지원되지 않습니다.
이 옵션을 사용하면 원격 Iceberg 카탈로그가 자격 증명 발급을 지원해야 합니다.
자세한 지침은 Apache Iceberg™ 테이블에 카탈로그 판매 자격 증명 사용 섹션을 참조하십시오.
카탈로그 연결 데이터베이스 만들기¶
CREATE DATABASE(카탈로그 연결) 명령을 사용하여 카탈로그 연결 데이터베이스 만들기:
다음 예제에서는 외부 볼륨을 사용하는 카탈로그 연결 데이터베이스를 생성합니다. 동기화 간격을 60초로 지정합니다(기본값은 30). 동기화 간격은 Snowflake에 원격 카탈로그를 폴링하는 빈도를 알려줍니다.
CREATE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_catalog_int',
BLOCKED_NAMESPACES = ('my_blocked_namespace'),
NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE,
NAMESPACE_FLATTEN_DELIMITER = '-'
SYNC_INTERVAL_SECONDS = 60
)
EXTERNAL_VOLUME = 'my_external_vol';
참고
이 예제에서는 :code:`NAMESPACE_MODE = FLATTEN_NESTED_NAMESPACE`를 지정하여 Snowflake가 카탈로그의 모든 네임스페이스 수준에서 테이블을 연결하도록 합니다. 중첩된 네임스페이스에 있는 테이블의 경우 Snowflake는 NAMESPACE_FLATTEN_DELIMITER 매개 변수를 사용하여 평면화된 네임스페이스를 구성합니다.
자세한 내용은 CREATE DATABASE(카탈로그 연결) 섹션을 참조하십시오.
또는 발급된 자격 증명을 사용하는 카탈로그 연결 데이터베이스를 생성합니다. 이 예제에서는 하나의 허용된 네임스페이스도 지정합니다.
CREATE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_catalog_int_vended_creds',
ALLOWED_NAMESPACES = ('my_namespace')
);
카탈로그 동기화 상태 확인하기¶
Snowflake가 원격 카탈로그를 데이터베이스에 연결했는지 확인하려면 SYSTEM$CATALOG_LINK_STATUS 기능을 사용합니다.
이 기능은 원격 카탈로그에서 동기화에 실패한 테이블을 식별하는 데 도움이 되는 정보도 제공합니다.
SELECT SYSTEM$CATALOG_LINK_STATUS('my_linked_db');
카탈로그 연결 데이터베이스에서 테이블 쿼리하기¶
카탈로그 연결 데이터베이스를 생성한 후 Snowflake는 테이블 검색 프로세스를 시작하고 SYNC_INTERVAL_SECONDS 매개 변수 값(기본 간격 30초)을 통해 연결된 카탈로그를 자동으로 폴링하여 변경 사항을 확인합니다.
데이터베이스에서 원격 카탈로그의 허용된 네임스페이스는 스키마로 나타나며, Iceberg 테이블은 해당 스키마 아래에 나타납니다.
SELECT 문을 사용하여 원격 테이블을 쿼리할 수 있습니다.
참고
Snowflake는 따옴표가 없는 식별자(테이블 및 열 이름)를 대문자로 자동 변환합니다. 외부 Iceberg 카탈로그에서 대문자와 소문자를 구분하는 식별자를 사용하는 경우 테이블 및 열 이름을 큰따옴표로 묶어야 합니다.
오브젝트 식별자에 대한 자세한 내용은 식별자 요구 사항 섹션을 참조하세요.
예:
USE DATABASE my_linked_db;
SELECT * FROM my_namespace.my_iceberg_table
LIMIT 20;
원격 카탈로그에 작성¶
Snowflake를 사용하여 연결된 카탈로그에 네임스페이스와 Iceberg 테이블을 생성할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오.