
Apache Iceberg 테이블이란?
ACID 트랜잭션을 지원하는 Apache Iceberg와 같은 테이블 형식은 대규모 데이터 쿼리 처리를 위한
빠르고 효과적인 솔루션인 데이터 레이크 및 데이터 메시 전략의 핵심 요소입니다.
- 개요
- 테이블 형식으로 데이터 레이크를 간소화하는 방법
- Apache Iceberg란?
- Apache Iceberg의 이점
- 리소스
개요
ACID 트랜잭션을 지원하는 Apache Iceberg와 같은 테이블 형식은 대규모 데이터 쿼리 처리를 위한 빠르고 효과적인 솔루션인 데이터 레이크 및 데이터 메시 전략의 핵심 요소입니다. 조직은 적절한 테이블 형식을 선택함으로써 성능, 상호운용성 및 사용 편의성을 개선하여 데이터의 잠재력을 최대한 발휘할 수 있습니다. 오픈소스 대안 중에서도 독보적인 Iceberg 테이블 형식은 엔진 및 파일 형식 독립성을 제공하며, 긴밀하고 투명한 협업으로 운영되는 오픈소스 프로젝트로 제공됩니다. 다음 섹션에서는 오픈 테이블 형식을 사용하여 대규모 데이터 세트를 분석할 때의 이점과 함께, Iceberg가 가장 인기 있는 오픈소스 테이블 형식 중 하나로 빠르게 자리 잡은 이유를 살펴봅니다.
테이블 형식으로 데이터 레이크를 간소화하는 방법
데이터 레이크는 대규모의 정형, 반정형 및 비정형 데이터를 네이티브 파일 형식으로 저장하는 데 적합합니다. 또한, 데이터 레이크는 조직이 여러 데이터 소스에서 끊임없이 유입되는 페타바이트 규모의 정보를 탐색, 정제 및 분석할 수 있는 포괄적인 방법을 제공합니다.
하지만 데이터 레이크의 개별 파일에는 쿼리 엔진 및 기타 애플리케이션에서 프루닝(pruning), Time Travel, 스키마 진화 등을 효과적으로 수행하는 데 필요한 정보가 충분히 포함되어 있지 않습니다. 따라서 이러한 관리 태스크를 수행하는 것은 어렵고 시간이 많이 소요됩니다. 테이블 형식은 기존 관계형 데이터베이스의 SQL 테이블과 유사한 기능을 구현하는 메타데이터를 제공함으로써 이러한 문제를 해소합니다. 테이블 형식은 테이블, 스키마, 이력, 그리고 테이블을 구성하는 각 파일을 명시적으로 정의합니다. 또한, Iceberg와 같은 테이블 형식은 ACID 준수를 보장하여 여러 애플리케이션이 동시에 동일한 데이터에 대한 작업을 안전하게 수행할 수 있도록 합니다.
Apache Iceberg란?
Iceberg는 Apache의 Hive Hadoop 프로젝트 내에서 발생하는 다양한 문제를 해결하기 위해 Netflix에서 개발한 오픈소스 테이블 형식입니다. Netflix는 2018년 최초 개발 이후, Iceberg를 공개적으로 관리되는 완전한 오픈소스 프로젝트로 Apache Software Foundation에 이관했습니다. Iceberg는 기존 버전의 단점을 많이 보완했으며, 가장 인기 있는 오픈소스 테이블 형식 중 하나로 빠르게 자리 잡았습니다.
Apache Iceberg의 이점
Iceberg 테이블 형식은 데이터 레이크 아키텍처 강화에 도움이 되는 다양한 기능을 제공합니다.
- 탁월한 표현력을 갖춘 SQL: Iceberg는 SQL의 유연한 구문을 완벽하게 지원하므로, 기존 행 업데이트, 새로운 데이터 병합, 특정 데이터 삭제 등의 작업을 원활하게 실행할 수 있습니다. Iceberg를 사용하면 데이터 파일을 재작성하여 읽기 성능을 향상시키고, 델타 삭제를 통해 업데이트 속도를 높일 수 있습니다.
- 스키마 진화: Iceberg는 완전한 스키마 진화를 지원합니다. Iceberg 테이블의 스키마 업데이트에서는 메타데이터만 변경하고 데이터 파일 자체는 그대로 유지합니다. 스키마 진화 변경에는 추가, 삭제, 이름 변경, 재정렬, 유형 승격이 포함됩니다.
- 파티션 진화: 파티셔닝은 유사한 행을 그룹화하여 큰 테이블을 작은 테이블로 나눕니다. 이를 통해 일부 데이터에만 액세스하는 쿼리의 읽기 및 로드 시간이 단축됩니다. 파티션 사양은 이전 사양에 따라 작성된 기존 데이터를 변경하지 않고도 진화할 수 있으며, 각 파티션 버전과 관련된 메타데이터는 별도로 저장됩니다.
- Time Travel 및 롤백: Iceberg의 Time Travel 기능을 사용하면 동일한 테이블 스냅샷에서 재현 가능한 쿼리를 실행하고 이전 변경 사항을 검토할 수 있습니다. 이러한 롤백 기능을 통해 사용자는 테이블을 이전 상태로 재설정하여 오류를 손쉽게 복구할 수 있습니다.
- 트랜잭션 일관성: 데이터 레이크 또는 데이터 메시 아키텍처에 저장된 데이터는 조직 내의 여러 독립적인 애플리케이션에서 동시에 사용할 수 있습니다. 이는 뛰어난 이점이지만, 특히 여러 사용자가 동시에 동일한 데이터에 쓰기 작업을 수행하는 경우 상당한 위험을 초래할 수 있습니다. 하지만 Iceberg는 대규모 ACID 트랜잭션을 지원하여 여러 작성자가 동시에 협력하여 쓰기 작업을 수행하도록 합니다. 이뿐만 아니라, ACID 지원은 쓰기 작업의 부분적 변경 사항이나 커밋되지 않은 변경 사항으로 인해 읽기 작업이 영향을 받지 않도록 보장합니다. 작성자가 변경 사항을 커밋하면 Iceberg는 테이블의 데이터 파일과 메타데이터를 변경 불가능한 새 버전으로 생성합니다.
- 더 빠른 쿼리 처리: Iceberg는 대규모 분석 데이터 세트와 함께 사용하도록 설계되었습니다. 또한, 빠른 스캔 계획, 불필요한 메타데이터 파일 프루닝, 일치 데이터가 없는 데이터 파일 필터링 등 쿼리 속도와 효율성을 높이기 위해 설계된 여러 가지 기능을 제공합니다.
- 적극적인 Apache ORC 참여자와 기여자로 구성된 활발한 커뮤니티: Iceberg는 Apache Software Foundation의 주력 프로젝트 중 하나로, Apache Parquet, Apache Avro, Apache ORC 등 여러 처리 엔진 및 파일 형식을 지원함으로써 지속적인 성장에 기여하고자 하는 다양한 분야의 유능한 상업적 사용자들의 관심을 끌고 있습니다.