중요합니다
이 기능은 공개 미리보기 단계에 있습니다.
중요합니다
단순 클론 지원은 Unity 카탈로그 관리 테이블과 외부 테이블에 대해 다릅니다. 관리되는 테이블의 경우 Databricks Runtime 13.3 이상을 사용하고 외부 테이블의 경우 Databricks Runtime 14.2 이상을 사용합니다.
Unity 카탈로그에서 관리하는 테이블은 Unity 카탈로그에서 관리하는 테이블로만 복제할 수 있고, Unity 카탈로그 외부 테이블은 Unity 카탈로그 외부 테이블로만 복제할 수 있습니다.
VACUUM 동작은 관리 테이블과 외부 테이블 간에 다릅니다.
Unity 카탈로그 단순 클론과 함께 사용을 VACUUM 참조하세요.
단순 클론을 사용하여 기존 Unity 카탈로그 테이블에서 새 Unity 카탈로그 테이블을 만들 수 있습니다. Unity 카탈로그에 대한 단순 복제 지원을 사용하면 기본 데이터 파일을 복사할 필요 없이 부모 테이블과 독립적으로 액세스 제어 권한이 있는 테이블을 만들 수 있습니다.
테이블을 복제하는 방법에 대한 자세한 내용은 Azure Databricks에서 테이블 복제를 참조하세요.
Unity 카탈로그 관리되는 단순 복제본 만들기
Unity 카탈로그에서 관리되는 테이블의 단순 복제본을 만듭니다.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Unity 카탈로그에서 관리되는 단순 클론을 만들려면 원본 및 대상 리소스에 대해 다음과 같은 권한이 있어야 합니다.
| 리소스 | 필수 사용 권한 |
|---|---|
| 원본 스키마 | USE SCHEMA |
| 원본 카탈로그 | USE CATALOG |
| 대상 스키마 |
USE SCHEMA, CREATE TABLE |
| 대상 카탈로그 | USE CATALOG |
다른 create table 문과 마찬가지로 단순 클론을 만드는 사용자는 대상 테이블을 소유합니다. 복제된 대상 테이블의 소유자는 원본 테이블과 독립적으로 해당 테이블에 대한 액세스 권한을 제어합니다. 즉, 복제된 테이블의 소유자가 원본 테이블의 소유자와 다를 수 있습니다.
Unity 카탈로그 외부 단순 복제본 만들기
외부 위치를 지정하여 Unity 카탈로그 외부 단순 복제본을 만듭니다.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'
Unity 카탈로그에서 외부 단순 클론을 만들려면 원본 및 대상 리소스에 대해 다음과 같은 권한이 있어야 합니다.
| 리소스 | 필수 사용 권한 |
|---|---|
| 원본 스키마 | USE SCHEMA |
| 원본 카탈로그 | USE CATALOG |
| 대상 스키마 |
USE SCHEMA, CREATE TABLE |
| 대상 카탈로그 | USE CATALOG |
| 대상 외부 위치 | CREATE EXTERNAL TABLE |
표준 액세스 모드에서 단순 복제 테이블 작업
표준 액세스 모드(이전의 공유 액세스 모드)에서 얕은 클론을 쿼리하려면 테이블 및 포함 리소스에 대한 다음 권한이 필요합니다.
| 리소스 | 필수 사용 권한 |
|---|---|
| 카탈로그 | USE CATALOG |
| 스키마 | USE SCHEMA |
| 테이블 | SELECT |
다음 작업을 완료하려면 복제 작업의 대상에 대한 권한도 MODIFY 있어야 합니다.
- 레코드 삽입
- 레코드 삭제
- 레코드 업데이트
MERGECREATE TABLEDROP TABLE
전용 액세스 모드에서 단순 복제 테이블 작업
전용 액세스 모드(이전의 단일 사용자 액세스 모드)에서 Unity 카탈로그 단순 클론을 사용하는 경우 복제된 테이블 원본 및 대상 테이블에 대한 리소스에 대한 권한이 있어야 합니다.
즉, 대상 테이블에 필요한 권한 외에도 간단한 쿼리의 경우 원본 카탈로그 및 스키마에 대한 사용 권한과 USE 원본 테이블에 대한 사용 권한이 있어야 합니다SELECT. 대상 테이블에 레코드를 업데이트하거나 삽입하는 쿼리의 경우 원본 테이블에 대한 권한도 있어야 MODIFY 합니다.
Databricks는 Unity 카탈로그의 얇은 클론 대상과 원본 테이블의 권한이 독립적으로 진화할 수 있도록 표준 액세스 모드를 사용하는 컴퓨팅 환경에서 Unity 카탈로그 클론을 사용할 것을 권장합니다.
Unity 카탈로그 단순 클론과 함께 사용 VACUUM
단순 복제 작업의 원본 및 대상에 Unity 카탈로그 테이블을 사용하는 경우 Unity 카탈로그는 원본 및 복제 작업의 대상에 대한 안정성을 향상시키기 위해 기본 데이터 파일을 관리합니다. 얕은 클론의 원본에서 VACUUM을 실행해도 복제된 테이블이 깨지지 않습니다.
일반적으로 지정된 보존 임계값에 대한 유효한 파일을 식별하는 경우 VACUUM 현재 테이블에 대한 메타데이터만 고려됩니다. 그러나 Unity 카탈로그에 대한 단순 복제 지원은 복제된 모든 테이블과 원본 데이터 파일 간의 관계를 추적하므로 원본 테이블뿐만 아니라 단순 복제된 테이블에 대한 쿼리를 반환하는 데 필요한 데이터 파일을 포함하도록 유효한 파일이 확장됩니다.
즉, Unity 카탈로그 단순 복제 VACUUM 의미 체계의 경우 유효한 데이터 파일은 원본 테이블 또는 복제된 테이블에 대해 지정된 보존 임계값 내의 모든 파일입니다. 관리되는 테이블과 외부 테이블의 의미 체계는 약간 다릅니다.
이 강화된 메타데이터 추적은 VACUUM 작업이 델타 테이블의 기본 데이터 파일에 미치는 영향을 변경하며, 다음의 의미 체계를 따릅니다.
- 관리되는 테이블
VACUUM의 경우 단순 복제 작업의 원본 또는 대상에 대한 작업은 원본 테이블에서 데이터 파일을 삭제할 수 있습니다. - 외부 테이블
VACUUM의 경우 작업은 원본 테이블에 대해 실행할 때만 원본 테이블에서 데이터 파일을 제거합니다. - 원본 테이블에 유효하지 않은 데이터 파일 또는 원본에 대한 단순 클론만 제거됩니다.
- 단일 원본 테이블에 대해 여러 단순 클론이 정의된 경우 복제된 테이블에서 실행
VACUUM해도 다른 복제된 테이블에 대한 유효한 데이터 파일이 제거되지 않습니다.
참고
Databricks는 지속 중인 장기 실행 트랜잭션이 손상되지 않도록, 절대 7일 미만의 보존 설정으로 VACUUM을 실행하지 말 것을 권장합니다. 더 낮은 보존 임계값으로 VACUUM를 실행해야 하는 경우, Unity Catalog의 얕은 클론이 Azure Databricks의 다른 복제된 테이블과 어떻게 다르게 상호 작용하는지 VACUUM 및 VACUUM를 이해해야 합니다. 자세한 내용은 Azure Databricks에서 테이블 복제를 참조하세요.
또한 단순 복제된 테이블이 삭제되더라도, 기본 테이블에서 SELECT을 실행하기 위해 해당 단순 복제된 테이블에 액세스해야 할 수도 있습니다. Databricks는 얕은 클론의 Delta 로그를 읽어 진공 청소하기 전에 클론에서 여전히 참조하는 기본 테이블 데이터 파일을 확인합니다. Databricks는 작업을 지원하기 UNDROP 위해 단순 복제 테이블을 삭제한 후 7일 동안 이 링크를 유지 관리합니다. 그러나 표준 액세스 모드에서는 이 권한이 필요하지 않습니다.
얕은 클론에 대한 기본 테이블 삭제
얕은 클론의 기본 테이블이 삭제되면 클론을 사용할 수 없게 됩니다. 기본적으로 Databricks는 기본 테이블을 참조하는 단순 클론이 여전히 있는 경우 기본 테이블을 삭제하지 못하도록 차단합니다.
이 보호를 재정의하려면 DROP TABLE ... FORCE 구문을 사용합니다. 다음과 같은 경우 FORCE를 사용하세요:
- 기본 테이블은 즉시 삭제됩니다.
- 참조하는 모든 얕은 클론이 끊어지고 다음이 수행됩니다.
- 데이터 또는 메타데이터(예
SELECT: , ,INSERTUPDATE,DESCRIBE HISTORYCLONE)를 읽어야 하는 작업에 실패합니다. - 메타데이터 수준 작업(예:
SHOW TABLES,DROP TABLE)을 통해 정리를 허용하기 위해 계속 표시됩니다.
- 데이터 또는 메타데이터(예
이 동작은 Unity 카탈로그 관리 테이블에만 적용됩니다. 자세한 내용은 DROP TABLE를 참조하세요.
제한 사항
- 외부 테이블의 단순 복제본은 외부 테이블이어야 합니다. 관리되는 테이블의 단순 클론은 관리되는 테이블이어야 합니다.
-
REPLACE또는CREATE OR REPLACE사용하여 기존 단순 클론을 덮어쓸 수 없습니다. 대신 단순 클론을DROP새CREATE문을 실행합니다. - 델타 공유를 사용하여 얕은 클론을 공유할 수 없습니다.
- 얕은 클론은 중첩될 수 없습니다. 즉, 얕은 클론을 기반으로 또 다른 얕은 클론을 만들 수 없습니다.
- 관리 테이블에서 원본 테이블을 드롭하면 얕은 클론의 경우 대상 테이블이 손상됩니다. 외부 테이블의 기본 데이터 파일은 작업에 의해
DROP TABLE제거되지 않으므로 외부 테이블의 단순 클론이 원본을 삭제해도 영향을 받지 않습니다. - Unity 카탈로그를 사용하면 명령
UNDROP후 약 7일 동안 테이블을 관리할 수 있습니다DROP TABLE. Databricks Runtime 13.3 LTS 이상에서는 삭제된 원본 테이블의 관리되는 단순 클론이 Unity 카탈로그가 지원하는 7일 동안 계속 작동합니다UNDROP. 원본 테이블이 해당 창 내에서 복원되지 않으면 가비지 수집 중에 원본 데이터 파일이 삭제될 때 단순 클론의 작동이 중지됩니다.