AWS는 Amazon S3 Tables 서비스가 Apache Iceberg V3 사양에 포함된 모든 데이터 유형을 지원하게 되었다고 발표했습니다. 이에 따라 V3 버전으로 새 테이블을 생성하거나 V2 기반의 기존 테이블을 업그레이드할 수 있습니다. 이번 업데이트에는 삭제 벡터(Deletion Vectors), 행 계보(Row Lineage), 그리고 variant, nanosecond timestamp, geometry, geography, unknown 데이터 유형이 포함됩니다.
이 기능은 데이터 레이크에서 대규모 테이블을 관리하는 분석 팀을 대상으로 합니다. 반구조화 데이터, 지리 좌표 또는 초고정밀 타임스탬프를 문자열이나 정수로 표현하는 대신, Iceberg 테이블 내부에 네이티브 유형으로 저장할 수 있으며 Amazon S3에서 Parquet 파일을 계속 사용할 수 있습니다.
실제로 무엇이 바뀌는가?
삭제 벡터는 Iceberg V2에서 사용되던 위치 기반 삭제 파일을 압축된 바이너리 표현으로 대체합니다. AWS가 제시한 예에 따르면, 20억 개의 행이 있는 테이블에서 5만 개의 레코드를 삭제할 때 수천 개의 작은 파일 대신 삭제 벡터 파일 하나가 생성될 수 있어 파일 부담과 이후 압축에 걸리는 시간을 줄일 수 있습니다.
행 계보는 _row_id와 _last_updated_sequence_number라는 두 필드를 자동으로 추가합니다. 후속 데이터 파이프라인은 매번 전체 테이블을 검사하는 대신 시퀀스 번호를 사용해 이전 체크포인트 이후 변경된 행을 추출할 수 있습니다.
variant 유형은 반구조화 데이터를 열 형식으로 저장하므로, 쿼리 엔진이 필요한 필드를 직접 읽고 통계를 활용해 입출력 작업을 줄일 수 있습니다. 매 쿼리마다 JSON 텍스트를 분석할 필요가 없는 것입니다. 또한 Iceberg V3는 지리 데이터와 나노초 정밀도의 타임스탬프를 위한 네이티브 유형을 제공합니다.
Iceberg V2에서 업그레이드
format-version 속성을 3으로 변경하면 데이터를 다시 작성하지 않고 기존 테이블을 원자적으로 업그레이드할 수 있습니다. 환경에서 V3 지원이 완료될 때까지 V2 리더는 업그레이드된 테이블에서도 계속 작동합니다. 한편 S3 Tables는 다음 압축 주기 동안 기존 삭제 파일을 제거하며, 이후 데이터가 처음 수정될 때 행 계보 데이터의 초기화를 시작합니다.
그러나 이 업그레이드는 단방향입니다. Apache Iceberg 사양은 V3에서 V2로 되돌리는 것을 지원하지 않습니다. 따라서 테이블에 액세스하는 모든 엔진이 새 버전을 지원하는지 사전에 확인해야 합니다.
호환성과 제한 사항
새 데이터 유형을 사용하려면 Apache Spark 4.0 이상을 기반으로 하는 엔진이 필요합니다. 예를 들어 AWS Glue 6.0 이상 또는 Amazon EMR 버전 8.1 이상이 이에 해당합니다. 또한 이러한 유형은 Parquet를 사용하는 테이블로 제한되며 ORC 또는 Avro에서는 사용할 수 없습니다.
variant, geometry, geography 열 또는 나노초 정밀도의 타임스탬프는 압축을 위한 테이블 정렬에 사용할 수 없습니다. 다만 이러한 열을 포함한 테이블도 다른 유형의 열을 기준으로 정렬하면 계속 압축할 수 있습니다. S3 Tables는 압축과 유지 관리를 계속 자동으로 관리하며, Amazon S3 콘솔, AWS CLI 또는 Iceberg REST Catalog 인터페이스를 지원하는 모든 엔진에서 테이블을 생성할 수 있도록 지원합니다.
이번 업데이트가 중요한 이유
이번 업데이트는 대규모 삭제, 비정형 데이터 및 점진적 업데이트를 처리할 때 데이터 팀이 맞춤형 변환에 덜 의존할 수 있는 경로를 제공합니다. 그러나 실제 이점은 조직의 쿼리 및 쓰기 엔진이 준비되어 있는지에 달려 있습니다. 업그레이드가 모든 도구의 즉각적인 호환성을 의미하는 것은 아니며, 새 유형을 사용하면 저장 형식이 제한되고 특정 버전의 Spark 및 관련 서비스가 필요합니다.
Apache Iceberg V3 지원은 S3 Tables를 지원하는 모든 AWS 리전에서 제공되며, 이번 업데이트에 대한 별도의 추가 요금은 없습니다. S3 Tables의 일반 요금은 계속 적용됩니다.