S3 Tables 복제는 어떻게 동작하나요
S3 Tables 복제는 어떻게 동작하나요 (How S3 Tables replication works)
S3 Tables 복제는 리전과 AWS 계정에 걸쳐 Apache Iceberg 테이블의 읽기 전용 복제본을 만들어요. 복제 테이블은 S3 Tables 서비스가 자동으로 유지 관리하며 소스 테이블의 전체 데이터, 메타데이터, 스냅샷 기록을 담아, 분석과 타임트래블 작업에 어떤 Iceberg 호환 엔진으로도 쿼리할 수 있게 해줘요.
출처: 문서
본문
테이블에 복제를 구성하면 S3 Tables는 다음을 수행해요.
- 소스 테이블과 같은 이름과 네임스페이스로 각 대상 테이블 버킷에 읽기 전용 복제 테이블을 만들어요.
- 소스 테이블의 최신 상태로 복제본을 백필(backfill)해요.
- 소스 테이블의 새 업데이트를 모니터링해요.
- 일관성을 유지하기 위해 모든 업데이트를 소스와 같은 순서로 복제본에 커밋해요.
무엇이 복제되나요
다음 테이블 구성 요소가 복제돼요.
- 테이블 스냅샷 – 압축된 스냅샷을 포함한 모든 스냅샷이 소스 테이블의 부모-자식 관계와 시퀀스 번호를 유지한 채 시간순으로 복제돼요. 이 덕분에 복제 테이블이 소스 테이블과 동일한 타임트래블 기능을 제공해요.
- 테이블 데이터 – 테이블 스냅샷이 참조하는 모든 데이터 파일이 대상 리전으로 복제돼요. 여기에는 다음이 포함돼요.
- 메타데이터 파일: 테이블
metadata.json파일, 매니페스트, 매니페스트 목록, 파티션 통계, 테이블 통계 - 삭제 파일: 복제 테이블의 데이터 정확성을 유지하기 위해 모든 삭제 파일이 복제돼요.
- 데이터 파일: 매니페스트가 참조하는 모든 데이터 파일이 복제돼요.
- 메타데이터 파일: 테이블
- 테이블 메타데이터 – 스키마 정보(현재 및 과거), 파티션 사양, 정렬 순서, 테이블 속성을 포함한 완전한 메타데이터 복제가 이뤄져요.
- 스키마 정보: 현재 스키마와 과거 스키마 버전을 포함한 모든 테이블 스키마가 복제돼요. 이 덕분에 복제 테이블에 대한 쿼리가 올바른 컬럼 정의, 데이터 타입, 필드 매핑을 사용해요. 복제 프로세스는 스키마 진화 기록을 유지해 복제 테이블에서 타임트래블 쿼리가 올바르게 동작하게 해요.
- 파티션 사양: 현재와 과거 파티션 사양이 복제되어 복제 테이블이 소스 테이블과 같은 파티셔닝 전략을 유지해요.
- 정렬 순서: 쿼리 성능 최적화를 유지하기 위해 테이블 정렬 순서가 복제돼요.
데이터는 어떻게 복제되나요
복제는 소스 테이블과 복제 테이블 간의 Apache Iceberg 테이블 메타데이터를 비교해 복제 테이블의 유효한 상태를 결정해요. 복제는 메타데이터를 세 가지 범주로 처리해 복제 테이블을 업데이트해요.
테이블 메타데이터
버전이 있는 메타데이터 필드의 경우 복제는 다음 필드에 대해 소스 테이블의 값을 복제 테이블의 배열로 병합해요.
snapshots– 소스 테이블의 모든 스냅샷을 snapshot-id 기준으로 복제 테이블의 스냅샷 배열로 병합해요.snapshot-log– 소스 테이블의 스냅샷 로그를 타임스탬프와 snapshot-id로 정렬해 복제 테이블의 snapshot-log 배열로 병합해요.sort-orders– 소스 테이블의 정렬 순서 정의를 order-id 기준으로 복제 테이블의 sort-orders 배열로 병합해요.partition-specs– 소스 테이블의 파티션 사양을 spec-id 기준으로 복제 테이블의 partition-specs 배열로 병합해요.schemas– 소스 테이블의 스키마 정의를 schema-id 기준으로 복제 테이블의 schemas 배열로 병합해요.
테이블 구성
테이블 구성을 나타내는 필드의 경우 복제는 소스 테이블에서 값을 직접 복사해요.
propertiespartition-statisticsstatistics
현재 테이블 상태도 소스 테이블에서 전달돼요.
current-snapshot-idcurrent-schema-idlast-column-idlast-partition-idlast-sequence-numberdefault-sort-order-idnext-row-id(Iceberg V3)encryption-keys(Iceberg V3)
복제본별 상태
다음 필드는 병합된 데이터에서 계산되어 복제 테이블용으로 업데이트돼요.
location은 복제 중 업데이트되어 복제 테이블 버킷의 올바른 파일 위치를 가리키며, 대상 환경에서 모든 파일 참조가 유효하도록 해요.metadata-log는 모든 대상 메타데이터 파일 이름을 담으며, 매번 성공적인 복제 후 현재 메타데이터 파일 이름으로 업데이트돼요.- 모든 파일 경로가 복제 테이블 위치를 가리키도록 수정돼요.
스냅샷 복제
S3 Tables 복제는 소스 테이블과 같은 커밋 순서로 모든 테이블 스냅샷을 복제해 리전에 걸쳐 완전한 스냅샷 기록을 유지해요. 소스 테이블의 부모-자식 관계가 복제 테이블에 보존돼요.
스냅샷 보존
복제 테이블에 소스의 보존 기간과 다른 커스텀 스냅샷 보존 기간을 구성할 수 있어요. 즉 스냅샷이 소스 테이블에서 만료되어 더 이상 사용할 수 없어도 복제본에서는 보존될 수 있어요.
예를 들어 소스 테이블의 스냅샷 보존 기간이 30일이지만 복제 테이블이 90일 보존 기간으로 구성되어 있다면, 복제본은 소스 테이블에서 더 이상 사용할 수 없는 지난 두 달의 스냅샷을 유지해요.
소스 테이블에서 수동으로 만료시킨 스냅샷도 복제 테이블에 보존돼요. 예를 들어 Spark 절차로 소스 테이블에서 2월의 스냅샷을 만료시켰다면, 복제 테이블에서는 그 스냅샷으로 여전히 타임트래블할 수 있어요.
고려 사항 및 제한 사항
복제 테이블에는 다음 고려 사항이 적용돼요.
- S3 Tables는 Iceberg V2와 V3 테이블을 모두 복제해요. 다만 업그레이드된(V2 → V3) 테이블의 복제는 지원되지 않아요.
- 500MB보다 큰 메타데이터 파일은 지원되지 않아요.
- 테이블 업데이트는 대개 수 분 내에 복제되지만, 복제할 테이블 업데이트 크기에 따라 복제가 더 오래 걸릴 수 있어요. 예를 들어 복제가 백필을 시작할 때요.
- 태그나 브랜치가 있는 테이블은 지원되지 않아요.
- Amazon S3 Metadata 테이블이나 다른 AWS 생성 시스템 테이블에는 복제가 지원되지 않아요.
- 압축된 스냅샷을 포함한 모든 테이블 스냅샷이 소스 테이블에서 복제돼요. 그 결과 복제 테이블에서는 압축이 지원되지 않아요.
더 알아보기 (Learn more)
- S3 테이블 복제하기 (Replicating S3 tables)
- S3 Tables 복제 설정하기 (Setting up S3 Tables replication)