Data & DataOps

[Data LakeHouse] Apache Iceberg

데이터 세상 2023. 8. 1. 15:45

Apache Iceberg

a high-performance format for huge analytic tables

Iceberg는 대규모 분석 테이블을 위한 고성능 형식입니다.

Iceberg는 SQL 테이블의 신뢰성과 단순성을 빅 데이터에 제공하는 동시에 Spark, Trino, Flink, Presto, Hive 및 Impala와 같은 엔진이 동시에 동일한 테이블에서 안전하게 작업할 수 있도록 합니다.

 

 

대형 페타바이트(PB) 규모의 테이블용으로 설계
ACID 준수 트랜잭션 지원

  • Atomicity : 원자성. 트랜잭션과 관련된 일은 모두 실행되던지 모두 실행되지 않도록 하던지를 보장하는 특성
  • Consistency : 일관성. 트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지해야 한다. 일관성은 특정한 조건을 두고, 그 조건을 만족하는지를 확인하는 방식으로 검사할 수 있다.
  • Isolation : 독립성. 트랜잭션을 수행하는 도중에 다른 연산작업이 끼어들지 못하도록 한다. 임계영역을 두는 것으로 달성할 수 있다.
  • Durability : 성공적으로 트랜잭션이 수행되었다면, 그 결과는 완전히 반영이 되어야 한다. 완전히 반영되면 로그를 남기게 되는데, 후에 이 로그를 이용해서 트랜잭션 수행전 상태로 되돌릴 수 있어야 한다. 때문에 트랜잭션은 로그저장이 완료된 시점에서 종료가 되어야 한다.

 

스키마 진화, 파티션 진화 및 테이블 버전 롤백을 포함하여 다른 테이블 형식에서는 일반적으로 사용할 수 없는 기능을 제공(모두 데이터를 다시 쓰지 않고)
고급 데이터 필터링
시간 여행 쿼리를 통해 과거 시점의 데이터를 볼 수 있음.


Expressive SQL (표현 SQL)

Iceberg는 새로운 데이터를 병합하고, 기존 행을 업데이트하고, 대상이 지정된 삭제를 수행하는 유연한 SQL 명령을 지원합니다.

Iceberg는 읽기 성능을 위해 열심히 데이터 파일을 다시 쓰거나 더 빠른 업데이트를 위해 델타 삭제를 사용할 수 있습니다.

 

Full Schema Evolution (전체 스키마 진화)

스키마 진화는 제대로 작동합니다. 열을 추가해도 '좀비' 데이터는 다시 가져오지 않습니다. 열의 이름을 바꾸고 재정렬할 수 있습니다. 무엇보다도 스키마를 변경할 때 테이블을 다시 작성할 필요가 없습니다.

 

Hidden Partitioning

Iceberg는 테이블의 행에 대한 파티션 값을 생성하는 지루하고 오류가 발생하기 쉬운 작업을 처리하고 불필요한 파티션과 파일을 자동으로 건너뜁니다. 빠른 쿼리를 위해 추가 필터가 필요하지 않으며 데이터 또는 쿼리가 변경되면 테이블 레이아웃을 업데이트할 수 있습니다.

 

Time Travel and Rollback

시간 이동을 통해 정확히 동일한 테이블 스냅샷을 사용하는 재현 가능한 쿼리를 사용하거나 사용자가 변경 사항을 쉽게 검토할 수 있습니다. 버전 롤백을 사용하면 테이블을 양호한 상태로 재설정하여 사용자가 문제를 신속하게 수정할 수 있습니다.

 

Data Compaction (데이터 압축)

데이터 압축은 기본적으로 지원되며 bin-packing 또는 정렬과 같은 다양한 재작성 전략 중에서 선택하여 파일 레이아웃 및 크기를 최적화할 수 있습니다.

 


References

반응형

'Data & DataOps' 카테고리의 다른 글

Data Warehouse vs Data Lake vs Data Lakehouse  (0) 2023.06.14