원문: Delta Lake 4.0 Preview우리는 Apache Spark™ 4.0 Preview 기반의 Delta Lake 4.0 Preview 릴리스를 발표하게 되어 기쁩니다. 개별 기능들을 여기서 모두 열거하기엔 너무 많지만, 주요 추가 사항들과 Delta Lake 커뮤니티의 다른 소식들을 중점적으로 소개하겠습니다.
Delta Lake 4.0의 새로운 기능
Delta Lake 4.0은 지금까지 중 가장 큰 릴리스로, 신뢰성, 성능, 사용 편의성을 위한 기능들을 포함하고 있습니다. 신뢰성 및 성능 기능: Delta Lake는 데이터 레이크하우스를 위한 가장 빠른 스토리지 포맷으로, Fortune 500 기업의 60% 이상이 신뢰하고 사용합니다. 애플리케이션 디버깅, 데이터 시스템 전반의 트랜잭션 관리, 다양한 종류의 데이터 처리를 더 쉽게 할 수 있도록 Delta에 추가 기능이 추가되고 있습니다.- Delta Connect (Preview): Spark의 새로운 클라이언트-서버 아키텍처에 대한 Delta Lake 지원
- Coordinated Commits (Preview): 파일시스템에 의존하지 않고 커밋을 조율하는 멀티 클라우드 및 멀티 엔진 쓰기
- Open Variant 타입 (Preview): 스키마 변경에 유연하고 고성능을 제공하는 반정형 데이터 지원
- Type Widening (Preview): 테이블을 재작성하지 않고 변화하는 데이터 크기에 대응
- Identity Columns (출시 예정): 참조 키로 사용하기 위한 자동 생성 고유 컬럼 ID
- Collations (출시 예정): 테이블 내 값의 정렬 및 비교 방식 지정
- Delta Lake UniForm: Spark 3.5의 Delta 3.2에서 UniForm이 Apache XTable™ 커뮤니티의 기여 덕분에 Apache Hudi를 지원합니다.
- Delta Kernel: 프로젝트가 DuckDB, Apache Druid, Apache Flink, Delta Sharing을 포함한 Kernel 기반의 최신 커넥터들로 Delta Lake 커넥터 에코시스템을 크게 확장했습니다.
- delta-rs 1.0: Delta Lake의 커뮤니티 기반 Rust 구현체
신뢰성 및 성능
Delta Lake는 레이크하우스를 위한 가장 빠른 테이블 포맷이며, 이제 더욱 신뢰할 수 있게 개선되고 있습니다. Delta Lake의 Spark Connect 지원으로 데이터 애플리케이션에서 메모리 사용량과 버전 불일치를 더 쉽게 제어할 수 있습니다. 클라이언트/서버 아키텍처는 디버깅이 용이하고 성능 관측성을 제공합니다.Delta Connect (Preview)
Delta Connect는 Apache Spark를 위한 Delta Lake에 Spark Connect 지원을 추가합니다. Spark Connect는 어디서나 Spark에 원격 연결할 수 있도록 분리된 클라이언트-서버 인프라를 추가하는 새로운 이니셔티브입니다. Delta Connect를 통해 모든 Delta Lake 작업이 Spark 서버에 연결된 클라이언트로 실행되는 애플리케이션에서 동작할 수 있습니다. Preview에서는 사용자가 Spark Connect를 통해 Delta 테이블 스캔을 수행할 수 있습니다. Delta Connect는 Spark Connect와 동일한 이점을 제공할 것으로 기대됩니다:- 클라이언트 인터페이스가 서버와 완전히 분리되어 있어 더 최신 버전의 Spark 및 Delta로 업그레이드하기가 더 쉽습니다.
- Spark 및 Delta와 개발자 도구와의 더 간단한 통합이 가능합니다.
- IDE가 더 이상 전체 Spark 및 Delta 구현과 통합할 필요 없이 경량 클라이언트와만 통합하면 됩니다. Java/Scala 및 Python 외의 언어도 지원합니다.
- 클라이언트는 Protocol Buffers만 생성하면 되므로 구현이 단순해집니다. 사용자 코드가 더 이상 Spark 드라이버와 동일한 JVM에서 실행되지 않으므로 Spark 및 Delta가 더 안정적이 됩니다.
- 원격 연결성. 사용자 인터페이스와 드라이버 사이에 gRPC 레이어가 있으므로 코드를 이제 어디서나 실행할 수 있습니다.
Coordinated Commits (Preview)
또한 Delta Lake는 중앙화된 커밋 서비스인 Coordinated Commits를 통해 멀티 구문 및 멀티 테이블 트랜잭션을 지원하는 방향으로 나아가고 있습니다. 업데이트된 Delta Lake 커밋 프로토콜은 파일시스템에 커밋 원자성을 의존하지 않는 안정적인 멀티 클라우드 및 멀티 엔진 쓰기를 가능하게 합니다. 사용자는 Delta 테이블에 대한 모든 쓰기를 관리하는 “Commit Coordinator”를 지정할 수 있습니다. “Commit Coordinator”는 서로 다른 클러스터에서 오는 동시 쓰기를 조율하고 독자가 가장 최신 테이블 버전을 얻을 수 있도록 보장합니다. 이번 릴리스에는 DynamoDB Commit Coordinator가 포함됩니다. 이 변경 사항은 또한 Delta 테이블에 대한 쓰기를 위한 중앙화된 코디네이터를 도입함으로써 멀티 구문 및 멀티 테이블 트랜잭션을 위한 길을 열어줍니다. 앞으로 몇 달 안에 더욱 흥미로운 업데이트를 기대해 주세요!Variant 타입 (Preview)
Delta Lake는 추가적인 사용 사례를 지원하기 위해 더 많은 데이터 타입을 갖추게 됩니다. 많은 레이크하우스 사용 사례에서 IoT 원격 측정 데이터, 마케팅 분석 등 반정형 데이터를 사용합니다. VARIANT 이전에는 반정형 데이터를 저장하는 방법에 제약이 있었습니다. 가장 유연한 옵션은 단일 컬럼에 JSON을 문자열로 저장하는 것이었지만, 이는 읽기 성능 저하를 야기했습니다. 역사적으로 성능을 유지하려면 struct를 사용해 엄격한 스키마를 적용하고 스키마 업데이트 처리를 위한 추가 처리 단계를 개발해야 했습니다. 일부 독점 데이터 웨어하우스들은 이러한 사용 사례를 위한 variant 데이터 타입 지원을 개발해왔으며, 이제 우리는 Delta Lake에 VARIANT를 도입합니다. Variant는 유연하여 명시적인 스키마를 정의할 필요가 없으며, 문자열 기반 솔루션보다 성능이 크게 향상됩니다.사용 편의성
레이크하우스는 변화하는 데이터와 타입에 적응해야 합니다. Delta Lake는 유연하여 반정형 데이터와 시간이 지남에 따라 확장되는 컬럼 데이터 타입을 수용할 수 있습니다. Delta Lake는 또한 변화하는 쿼리 패턴에 적응하는 유연한 데이터 레이아웃을 제공하며, 시간 소모적이고 비용이 많이 드는 재작성 없이 클러스터링 키를 제자리에서 변경하는 것을 지원합니다.Type Widening (Preview)
Delta 3.2에서 도입된 Type Widening의 Preview는 이제 Delta 4.0에서 더 많은 타입 변경을 지원합니다. 이 기능은 데이터를 재작성하지 않고 INT에서 LONG으로 컬럼을 변환하는 것과 같이 데이터 타입을 확장하는 것을 허용합니다. 타입 변경은ALTER TABLE CHANGE COLUMN TYPE 명령을 사용하여 수동으로 적용하거나 INSERT 및 MERGE 작업의 스키마 진화를 사용하여 자동으로 적용할 수 있습니다. 이를 통해 Delta Lake는 스키마 진화에 따른 데이터 타입 변경을 지원할 뿐만 아니라 읽기 중 자동으로 데이터 타입을 업캐스팅하여 원활한 데이터 수집 및 처리를 보장합니다.
Identity Columns (출시 예정)
Identity 컬럼은 테이블의 각 새 행에 대해 자동으로 고유 ID를 생성하는 컬럼입니다. 데이터 웨어하우징 워크로드의 오랜 기둥으로서, 데이터 모델링 시 primary key와 foreign key로 일반적으로 사용됩니다. 곧 출시될 Delta Lake 4.0은 각 새 행에 대해 고유하고 자동 증가하는 ID 번호를 가진 Identity 컬럼을 자동으로 생성하는 기능을 지원할 것입니다. 이는 데이터 모델링을 극적으로 단순화하고, 수동으로 구현하는 취약한 솔루션의 필요성을 없애줍니다.Collations (출시 예정)
Collation은 테이블 내에서 값이 정렬되고 비교되는 방식을 지정합니다. 비교가 대소문자를 구분해야 하는지 지정하거나 언어 또는 문화적 맥락에서 올바른 정렬 및 검색을 정의하는 등 광범위한 사례에서 사용됩니다. 곧 Delta Lake 테이블의 컬럼에 대해 collation을 지정할 수 있게 되어, Spark와 같은 쿼리 엔진이 올바른 정렬 및 비교 동작을 수행할 수 있게 됩니다.Delta 에코시스템 업데이트
UniForm GA
Delta Lake Universal Format, 즉 UniForm은 Delta Lake 3.0에서 처음 발표된 이후 활발하게 사용되고 있습니다. Delta 3.2의 UniForm 릴리스에는 Apache XTable™ 커뮤니티의 기여 덕분에 Apache Hudi 지원이 포함됩니다. 이제 사용자는 UniForm을 통해 모든 포맷에서 데이터를 한 번만 작성할 수 있습니다.Delta Kernel
Kernel 프로젝트의 배경에 대해서는 프로젝트 배경에 관한 최근 블로그 포스트를 참조하세요. 최근 몇 주 동안 Delta Kernel을 사용하는 커넥터 수가 증가하고 있으며, DuckDB, StarTree, Apache Druid, Apache Flink, Delta Sharing이 포함됩니다.delta-rs 1.0
Delta Rust는 Delta Lake의 커뮤니티 주도 구현체로, 지난 한 해 동안 새로운 기능과 확장된 지원에서 놀라운 성장을 보였습니다. delta-rs의 1.0 릴리스에는 데이터 신뢰성, 성능, 사용 편의성을 위한 다음 기능들이 포함됩니다:- Change Data Feed 지원
- Constraints (제약 조건)
- 모든 Rust/Python 라이터를 위한 스키마 진화
- Deletion vector 지원
- Python의 기본 Rust 기반 라이터 엔진
- DataFusion 통합을 위한 안정화된 API
- 오브젝트 스토어에 대한 환경 변수를 통한 구성을 위한 안정화된 API
감사의 말
Delta Lake 4.0 릴리스에 참여한 모든 분들께 감사드립니다: Abhishek Radhakrishnan, Allison Portis, Ami Oka, Andreas Chatzistergiou, Anish, Carmen Kwan, Chirag Singh, Christos Stavrakakis, Dhruv Arya, Felipe Pessoto, Fred Storage Liu, Hyukjin Kwon, James DeLoye, Jiaheng Tang, Johan Lasperas, Jun, Kaiqi Jin, Krishnan Paranji Ravi, Lin Zhou, Lukas Rupprecht, Ole Sasse, Paddy Xu, Prakhar Jain, Qianru Lao, Richard Chen, Sabir Akhadov, Scott Sandre, Sergiu Pocol, Sumeet Varma, Tai Le Manh, Tathagata Das, Thang Long Vu, Tom van Bussel, Venki Korukanti, Wenchen Fan, Yan Zhao, zzl-7 릴리스를 성공시키는 데 기여한 Allison Portis에게도 특별한 감사의 말씀을 전합니다. 그리고 언제나처럼, 오픈 소스 커뮤니티의 기여에 진심으로 감사드립니다.참고 커뮤니티에 참여하세요!현재의 기여자 커뮤니티와 함께 일하고 새로운 구성원을 환영합니다. Delta Lake 프로젝트에 기여하는 데 관심이 있다면, 프로젝트 로드맵을 살펴보고 GitHub, Slack, X, LinkedIn, YouTube, Google Groups를 포함한 다양한 포럼을 통해 커뮤니티에 참여하세요.