이 문서에서는 읽기 및 쓰기에 대한 Delta Lake 클라이언트와의 Delta Lake 프로토콜, 테이블 기능 및 호환성에 대한 개요를 제공합니다.
델타 테이블에 대한 트랜잭션 로그에는 프로토콜 버전 관리 정보가 포함되어 있습니다. Delta Lake 테이블 세부 정보를 "자세히 설명"을 사용하여 검토한 내용을에서 확인하세요.
테이블 프로토콜은 읽기 및 쓰기 호환성을 어떻게 지정하나요?
모든 델타 테이블에는 테이블을 읽고 쓰는 데 필요한 기능 집합을 나타내는 프로토콜 사양이 있습니다. 프로토콜 사양은 테이블에서 읽거나 테이블에 쓰는 애플리케이션에서 테이블이 지원하는 모든 기능을 처리할 수 있는지 여부를 결정하는 데 사용됩니다. 애플리케이션이 테이블의 프로토콜에서 지원되는 것으로 나열된 기능을 처리하는 방법을 모르는 경우 해당 애플리케이션은 해당 테이블을 읽거나 쓸 수 없습니다.
Delta Lake에 추가된 대부분의 새로운 기능과 기능을 사용하려면 테이블 프로토콜을 업그레이드해야 합니다.
다음 표에서는 Delta Lake 프로토콜을 설명하는 데 사용되는 주요 용어에 대한 개요를 제공합니다.
기간 | 설명 |
---|---|
Delta Lake 클라이언트 | 델타 테이블을 읽거나 쓰는 모든 시스템입니다. |
프로토콜 읽기 | Delta Lake 클라이언트가 테이블을 읽는 데 필요한 지원을 지정합니다. |
프로토콜 작성 | Delta Lake 클라이언트가 테이블에 쓰는 데 필요한 지원을 지정합니다. |
minReaderVersion |
판독기 프로토콜의 구성 요소입니다. 유효한 값은 1 , 2 또는 3 입니다. |
minWriterVersion |
기록기 프로토콜의 구성 요소입니다. 유효한 값은 정수 2~7입니다. |
테이블 기능 | 프로토콜 버전에 대한 세분화된 대안입니다. 테이블 기능은 선택적으로 사용하도록 설정된 Delta Lake 기능에 매핑됩니다. |
기록기 기능 | 쓰기 프로토콜에 연결된 테이블 기능입니다. |
판독기 기능 | 읽기 프로토콜에 연결된 테이블 기능입니다. |
쓰기 프로토콜 및 기록기 기능은 기록기 클라이언트와의 호환성에만 영향을 줍니다. 즉, 레거시 워크로드에서 테이블에 대한 읽기 전용 액세스가 계속 지원됩니다. 읽기 프로토콜 및 판독기 기능은 읽기 및 쓰기 호환성에 모두 영향을 줍니다.
모든 Delta Lake 기능이 서로 호환되는 것은 아닙니다.
일부 테이블 기능은 사용하도록 설정한 후에는 삭제할 수 없습니다. Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드를 참조하세요.
프로토콜 호환성을 위한 테이블 기능
Databricks Runtime 12.2 LTS 이상에서는 Databricks가 테이블 기능을 사용하여 기능 지원 및 읽기 및 쓰기 프로그램과의 호환성을 나타냅니다. 테이블 기능은 세분화된 플래그를 사용하여 지정된 테이블에서 지원되는 기능을 지정합니다. 테이블 기능은 Delta Lake 프로토콜에 새로운 기능을 도입하여 레거시 프로토콜 버전 관리 체계를 대체합니다.
테이블 작성기 기능은 데이터 작성 방식에 영향을 주는 기능을 나타냅니다. 테이블 작성기 기능에는 == 7이 필요합니다 minWriterVersion
. 기록기 기능으로 구현된 기능은 판독기 클라이언트를 차단하지 않습니다.
테이블 판독기 기능은 데이터를 읽는 방식에 영향을 주는 기능을 나타냅니다. 모든 테이블 판독기 기능은 테이블 작성기 기능이기도 합니다. 테이블 판독기 기능에는 minReaderVersion
== 3 및 minWriterVersion
== 7이 필요합니다. 클라이언트는 읽을 수 없는 테이블에 쓸 수 없습니다.
테이블 기능을 사용하도록 설정하면 테이블에 대한 프로토콜에서 지원하는 모든 기능이 각 목록에 다음과 같이 readerFeatures
표시됩니다 writerFeatures
. 테이블에서 기능을 삭제할 때, 테이블이 가능한 가장 낮은 프로토콜로 설정될 수 있도록 이 동작을 제거할 수 있습니다.
가능한 가장 낮은 프로토콜을 참조하세요.
정수 기반 프로토콜 버전 및 레거시 호환성
모든 테이블에는 다음으로 표시되는 정수 기반 프로토콜 버전이 포함됩니다 minReaderVersion
minWriterVersion
. 테이블 기능을 사용하여 구현된 기능은 이러한 프로토콜 버전을 기반으로 하지만 많은 레거시 판독기 및 기록기 클라이언트는 계속해서 프로토콜 버전을 사용하여 호환성을 관리합니다. Delta Lake는 최신 및 레거시 Delta 클라이언트와의 최대 호환성을 유지하기 위해 테이블 프로토콜을 가능한 가장 낮은 버전으로 확인하려고 시도합니다.
가능한 가장 낮은 프로토콜을 참조하세요.
정수 기반 프로토콜 버전 관리 체계에서 각 버전 번호는 여러 기능을 번들로 묶고 버전 번호의 기능은 누적됩니다. 즉, 델타 프로토콜을 준수하려면 클라이언트가 이전에 릴리스된 모든 기능을 포함하여 지정된 버전에 있는 모든 판독기 또는 기록기 기능에 대한 지원을 구현해야 합니다.
비고
Databricks에는 지원되는 모든 Databricks 런타임 버전에서 테이블 기능에 대한 호환성이 손상되지 않는 부분 지원이 포함되어 있습니다. OSS 델타 클라이언트는 지정된 기능에 대한 지원을 구현하는 방법을 선택합니다.
테이블 프로토콜은 언제 변경되나요?
테이블에 대한 프로토콜은 다음 조건에서 변경됩니다.
- 새 기능을 사용하도록 설정하면 프로토콜이 업그레이드됩니다.
- 테이블 기능이 삭제되면 프로토콜이 다운그레이드됩니다.
테이블 기능을 사용하지 않도록 설정해도 프로토콜이 다운그레이드 되지 는 않습니다. 테이블 프로토콜에서 완전히 제거하려면 기능을 삭제해야 합니다. 모든 테이블 기능을 삭제할 수 있는 것은 아닙니다. Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드를 참조하세요.
모든 프로토콜 변경 작업은 모든 동시 쓰기와 충돌합니다.
스트리밍 읽기는 테이블 메타데이터를 변경하는 커밋이 발생하면 실패합니다. 스트림을 계속하려면 다시 시작해야 합니다. 권장 방법은 구조적 스트리밍에 대한 프로덕션 고려 사항을 참조하세요.
경고
대부분의 프로토콜 버전 업그레이드는 되돌릴 수 없으며 프로토콜 버전을 업그레이드하면 기존 Delta Lake 테이블 판독기, 기록기 또는 둘 다 중단될 수 있습니다. Databricks는 Delta Lake의 새 기능에 옵트인하는 등 필요한 경우에만 특정 테이블을 업그레이드하는 것이 좋습니다. 또한 현재 및 미래의 모든 프로덕션 도구가 새 프로토콜 버전으로 Delta Lake 테이블을 지원하는지 확인해야 합니다.
프로토콜 다운그레이드는 일부 기능에 사용할 수 있습니다. Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드를 참조하세요.
테이블 프로토콜은 언제 업그레이드되나요?
테이블에서 기능을 사용하도록 설정하면 테이블 프로토콜이 자동으로 업그레이드됩니다. 일부 기능은 CREATE
또는 ALTER
테이블 문에 사용된 구문에 따라 사용이 자동으로 활성화되는 반면, 다른 기능은 테이블 속성을 설정하여 명시적으로 활성화해야 합니다. 원하는 기능을 지원하려면 여러 테이블 기능을 명시적으로 사용하도록 설정해야 하는 경우가 있습니다. 다른 경우에는 기능을 사용하도록 설정하면 다른 테이블 기능이 자동으로 활성화될 수 있습니다. 필요한 테이블 기능을 결정하는 데 사용하는 기능 및 구문은 Azure Databricks 설명서를 참조하세요.
판독기 기능을 사용하려면 읽기 프로토콜과 쓰기 프로토콜을 모두 업그레이드해야 합니다. 기록기 기능은 쓰기 프로토콜만 업그레이드해야 합니다.
예를 들어 제약 조건에 대한 CHECK
지원은 작성기 기능입니다. 즉, 애플리케이션을 작성하기만 하면 제약 조건에 대해 CHECK
알고 적용할 수 있습니다.
반면 열 매핑을 사용하려면 읽기 및 쓰기 프로토콜을 모두 업그레이드해야 합니다. 데이터는 테이블에 다르게 저장되므로 판독기 애플리케이션은 데이터를 올바르게 읽을 수 있도록 열 매핑을 이해해야 합니다.
비고
Databricks는 minReaderVersion
및 minWriterVersion
테이블 속성을 변경하지 말 것을 권장합니다. 이러한 테이블 속성을 변경해도 프로토콜 업그레이드가 방지되지는 않습니다. 이러한 값을 더 낮은 값으로 설정해도 테이블이 다운그레이드되지는 않습니다.
Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드를 참조하세요.
가능한 가장 낮은 프로토콜
기본적으로 Delta Lake는 테이블에서 지원하는 것으로 표시된 모든 기능을 나타내기 위해 가능한 가장 낮은 프로토콜을 사용하려고 합니다.
이 동작은 테이블 프로토콜을 낮추는 결과만을 초래할 수 있습니다. 즉, 테이블의 minReaderVersion
또는 minWriterVersion
값이 낮아질 수 있습니다.
테이블 프로토콜에서 DROP FEATURE
지원되는 기능 목록에서 테이블 기능을 제거하려면 명령을 실행해야 합니다. 테이블 기능은 자동으로 삭제되지 않습니다.
테이블에 있는 모든 Delta Lake 기능이 낮은 프로토콜 버전에서 완전히 지원되는 경우 테이블은 테이블 기능을 사용하여 판독기 및 기록기 호환성을 나타내지 않는 프로토콜 버전으로 되돌아갈 수 있습니다. 이 프로토콜 다운그레이드가 발생하면, 테이블 프로토콜에서 readerFeatures
또는 readerFeatures
와 writerFeatures
둘 다 삭제될 수 있습니다. 이로 인해 Delta Lake 기능이 비활성화되는 것은 아니며 테이블 프로토콜에서 테이블 기능이 필요하지 않은 경우에만 발생합니다.
테이블 프로토콜을 낮추는 모든 변경 내용은 판독기 및 기록기 클라이언트와의 호환성을 높입니다. 판독기 및 기록기 클라이언트는 더 높은 프로토콜 버전을 지원하는 경우에도 낮은 프로토콜 버전을 준수해야 하기 때문입니다.
테이블 기능이 Delta Lake 기능의 사용 방식을 변경합니까?
Azure Databricks를 통해서만 델타 테이블과 상호 작용하는 경우 최소 Databricks 런타임 요구 사항을 사용하여 Delta Lake 기능에 대한 지원을 계속 추적할 수 있습니다. Azure Databricks는 테이블에서 사용하는 모든 기능이 해당 릴리스에서 지원되는 한 모든 Databricks Runtime LTS 릴리스에서 테이블 기능으로 업그레이드된 델타 테이블 읽기를 지원합니다.
다른 시스템을 사용하여 델타 테이블에서 읽고 쓰는 경우 시스템이 업그레이드된 프로토콜 버전을 이해할 수 없는 위험이 있으므로 테이블 기능이 호환성에 미치는 영향을 고려해야 할 수 있습니다.
중요
테이블 기능은 기록기 버전 7 및 판독기 버전 3에 대한 Delta Lake 형식에 도입되었습니다. Azure Databricks는 테이블 기능에 대한 지원을 추가하기 위해 지원되는 모든 Databricks 런타임 LTS 버전에 대한 코드를 백포트했지만 해당 Databricks 런타임에서 이미 지원되는 기능에 대해서만 지원됩니다. 즉, 테이블 기능을 사용하여 생성된 열을 사용하도록 설정하고 Databricks Runtime 9.1 LTS에서 이러한 테이블로 계속 작업할 수 있지만 ID 열이 활성화된 테이블(Databricks Runtime 10.4 LTS 필요)은 해당 Databricks 런타임에서 여전히 지원되지 않습니다.
Azure Databricks는 Delta Lake 기능 호환성을 어떻게 관리하나요?
Databricks는 Databricks 런타임 릴리스에서 Delta Lake를 기반으로 하는 새로운 Delta Lake 기능 및 최적화를 지원합니다. Delta Lake 기능을 활용하는 Azure Databricks 최적화는 호환성을 위해 OSS Delta Lake에서 사용되는 프로토콜을 준수합니다. 많은 Azure Databricks 최적화를 사용하려면 테이블에서 Delta Lake 기능을 사용하도록 설정해야 하며 Lakeflow 선언적 파이프라인과 같은 일부 Azure Databricks 제품은 많은 테이블 기능에 따라 달라집니다.
- 하위 Databricks 런타임 버전으로 작성된 모든 테이블은 더 높은 Databricks 런타임 버전에서 전체 읽기 및 쓰기 지원을 제공합니다.
- 더 높은 Databricks 런타임 버전으로 작성된 테이블은 하위 Databricks 런타임 버전에서 지원되지 않는 테이블 기능을 사용할 수 있습니다.
- 일부 기능은 사용 가능한 테이블 기능과 관련된 모든 최적화를 완전히 적용하지 않고 하위 Databricks 런타임 버전의 쓰기를 허용할 수 있습니다.
Databricks 런타임 버전을 낮추도록 지원되는 테이블 기능을 사용하는 경우 지정된 Databricks 런타임 버전에서 실행되는 일부 작업은 해당 OSS 델타 버전에서 실행되지 않을 수 있습니다. 개발 주기 또는 데이터 아키텍처에 OSS Delta Lake가 포함된 경우 프로덕션 테이블에서 테이블 기능을 사용하도록 설정하기 전에 항상 OSS Delta 클라이언트에서 호환성을 테스트해야 합니다.
Delta Lake 기능 및 필수 Databricks 런타임 버전
기능은 테이블 단위로 활성화됩니다. 다음 표에서는 표시된 기능을 완전히 지원하는 가장 낮은 Databricks 런타임 버전을 나열합니다. 전체 지원은 읽기 및 쓰기 모두에 대해 일반적으로 사용할 수 있는 모든 기능이 지원됨을 의미합니다.
특징 | Databricks 런타임 버전 이상이 필요합니다. | 설명서 |
---|---|---|
CHECK 제약 조건 |
지원되는 모든 Databricks 런타임 버전 |
CHECK Azure Databricks에서 제약 조건 설정 |
데이터 피드 변경 | 지원되는 모든 Databricks 런타임 버전 | Azure Databricks에서 Delta Lake 변경 데이터 피드 사용 |
생성된 컬럼 | 지원되는 모든 Databricks 런타임 버전 | Delta Lake에서 생성된 열 |
컬럼 매핑 | 지원되는 모든 Databricks 런타임 버전 | Delta Lake 열 매핑을 사용하여 열 이름 바꾸기 및 삭제 |
식별자 열 | 지원되는 모든 Databricks 런타임 버전 | Delta Lake에서 ID 열 사용 |
테이블의 기능 | Databricks Runtime 12.2 LTS (데이터브릭스 런타임 12.2 LTS) | 프로토콜 호환성을 위한 테이블 기능 |
삭제 벡터 | Databricks Runtime 12.2 LTS (데이터브릭스 런타임 12.2 LTS) | 삭제 벡터란? |
TimestampNTZ (타임스탬프 NTZ) | Databricks Runtime 13.3 LTS |
TIMESTAMP_NTZ 유형 |
유니폼 | Databricks Runtime 13.3 LTS | Iceberg 클라이언트를 사용하여 델타 테이블 읽기 |
액체 집단화 | Databricks Runtime 13.3 LTS | 테이블에 액체 클러스터링 사용 |
행 추적 | Databricks Runtime 14.3 LTS | 델타 테이블에 행 추적 사용 |
타입 범위 확장 | Databricks Runtime 15.4 LTS | 타입 확장 |
변종 | Databricks Runtime 15.4 LTS | Delta Lake의 Variant 지원 |
문자열 대조 | Databricks Runtime 16.1 | Delta Lake에 대한 정렬 지원 |
보호된 검사점 | Databricks Runtime 16.3 | Delta Lake 테이블 기능 삭제 및 테이블 프로토콜 다운그레이드 |
Databricks Runtime 릴리스 정보 버전 및 호환성을 참조하세요.
비고
Lakeflow 선언적 파이프라인 및 Databricks SQL은 새로운 기능을 지원하기 위해 정규 릴리스로 런타임 환경을 자동으로 업그레이드합니다. Lakeflow 선언적 파이프라인 릴리스 정보 및 릴리스 업그레이드 프로세스 및 Databricks SQL 릴리스 정보를 참조하세요.
프로토콜 버전별 기능
OSS Delta Lake 프로토콜은 테이블 기능에 대해 표준화되었지만 일부 판독기 및 기록기 클라이언트는 테이블 기능에 대한 지원을 구현하지 않았으며 레거시 minWriterVersion
및 minReaderVersion
프로토콜을 계속 사용합니다.
일부 클라이언트는 레거시 프로토콜 버전 관리 기능을 사용하는 기능을 포함하여 모든 Delta Lake 기능을 지원하지 않을 수 있습니다. 기능에 대한 지원을 확인하려면 Delta Lake 클라이언트에 대한 설명서를 참조하세요. 프로덕션 테이블에서 새 기능을 사용하도록 설정하기 전에 항상 호환성을 테스트합니다.
다음 표에서는 Delta Lake 기능에 필요한 최소 판독기 및 기록기 프로토콜 버전과 쓰기 전용 또는 읽기 및 쓰기 모두에 대해 테이블 기능을 준수해야 하는지 여부를 보여 줍니다.
비고
Databricks 런타임 호환성에만 관심이 있는 경우 Azure Databricks에서 Delta Lake 기능 호환성을 관리하는 방법을 참조하세요.
특징 | minWriterVersion |
minReaderVersion |
테이블 기능 |
---|---|---|---|
기본 기능 | 2 | 1 | 작가 |
CHECK 제약 조건 |
3 | 1 | 작가 |
데이터 피드 변경 | 4 | 1 | 작가 |
생성된 열 | 4 | 1 | 작가 |
열 매핑 | 5 | 2 | 독자 및 작성자 |
식별자 열 | 6 | 1 | 작가 |
행 추적 | 7 | 1 | 작가 |
삭제 벡터 | 7 | 3 | 독자 및 작성자 |
TimestampNTZ | 7 | 3 | 독자 및 작성자 |
액체 클러스터링 | 7 | 3 | 독자 및 작성자 |
빙산 독자들(UniForm) | 7 | 2 | 작가 (1) |
타입 확장 | 7 | 3 | 독자 및 작성자 |
변형 | 7 | 3 | 독자 및 작성자 |
문자 정렬 | 7 | 3 | 독자 및 작성자 |
보호된 검사점 | 7 | 1 | 작가 |
(1): 열 매핑을 사용하도록 설정해야 합니다.