테이블 유지 관리 - Amazon Simple Storage Service

테이블 유지 관리

S3 Tables은 유지 관리 작업을 제공하여 개별 테이블의 관리 및 성능을 향상합니다. 다음 옵션은 기본적으로 테이블 버킷의 모든 테이블에 대해 활성화됩니다. S3 테이블에 대한 유지 관리 구성 파일을 지정하여 이러한 옵션을 편집하거나 비활성화할 수 있습니다.

이 구성을 편집하려면 s3tables:GetTableMaintenanceConfigurations3tables:PutTableMaintenanceConfiguration 권한이 필요합니다.

압축

압축은 테이블 수준에서 구성되며 여러 개의 작은 객체를 더 적고 큰 객체로 결합하여 Apache Iceberg 쿼리 성능을 개선합니다. 객체를 결합할 때 압축은 테이블에서 행 수준 삭제의 영향도 적용합니다.

모든 테이블에 대해 기본적으로 압축이 활성화되며, 기본 대상 파일 크기는 512MB이고, 64MB에서 512MB까지 직접 값을 지정할 수 있습니다. 압축된 파일은 테이블의 최신 스냅샷으로 기록됩니다.

압축 전략

여러 압축 전략 중에서 선택할 수 있으며, 압축 전략을 선택하면 쿼리 패턴 및 테이블 정렬 순서에 따라 쿼리 성능을 더욱 높일 수 있습니다.

S3 Tables은 테이블에 대해 다음과 같은 압축 전략을 지원합니다.

  • Auto(기본값)

    • Amazon S3는 테이블 정렬 순서에 따라 최적의 압축 전략을 선택합니다. 이는 모든 테이블에 대한 기본 압축 전략입니다.

    • 메타데이터에 정렬 순서가 정의된 테이블의 경우 autosort 압축을 자동으로 적용합니다.

    • 정렬 순서가 없는 테이블의 경우 auto는 기본적으로 binpack 압축을 사용합니다.

  • Binpack

    • 작은 파일을 더 큰 파일로 결합합니다. 일반적으로 100MB 이상의 크기를 대상으로 하며 보류 중인 삭제를 적용합니다. 이는 정렬되지 않은 테이블의 기본 압축 전략입니다.

  • 정렬

    • 압축 중에 계층 구조별로 자동으로 정렬되는 지정된 열을 기반으로 데이터를 정리하여 필터링된 작업에 대한 쿼리 성능을 개선합니다. 이 전략은 쿼리가 특정 열을 자주 필터링할 때 권장됩니다. 이 전략을 사용하면 sort_order가 테이블 속성에 정의되어 있을 때 S3 Tables이 열에 계층적 정렬을 자동으로 적용합니다.

  • Z-order

    • 여러 속성을 정렬에 사용할 수 있는 단일 스칼라 값으로 블렌딩하여 데이터 정리를 최적화하므로 여러 차원에 걸쳐 효율적인 쿼리가 가능합니다. 이 전략은 여러 차원에서 동시에 데이터를 쿼리해야 하는 경우에 권장됩니다. 이 전략을 사용하려면 sort_order 테이블 속성을 사용하여 Iceberg 테이블 속성에서 정렬 순서를 정의해야 합니다.

압축에는 추가 비용이 발생합니다. 자세한 내용은 Amazon S3 요금의 요금 정보를 참조하세요.

압축 예시

다음 예시는 테이블 압축을 위한 구성을 보여줍니다.

AWS CLI를 사용하여 압축 대상 파일 크기를 구성하는 방법

최소 대상 압축 파일 크기는 64MB이고 최대 크기는 512MB입니다.

다음 예시에서는 PutTableMaintenanceConfiguration API를 사용하여 대상 파일 크기를 256MB로 변경합니다.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

자세한 정보는 AWS CLI 명령 참조put-table-maintenance-configuration 섹션을 참조하세요.

AWS CLI를 사용하여 압축 전략을 구성하는 방법

다음 예시에서는 PutTableMaintenanceConfiguration API를 사용하여 압축 전략을 sort로 변경합니다. 압축을 설정할 때 auto, binpack, sort 또는 z-order 압축 전략 중에서 선택할 수 있습니다.

참고

압축 전략을 sort 또는 z-order로 설정하려면 다음 사전 조건을 충족해야 합니다.

  • Iceberg 테이블 속성에 정렬 순서가 정의되어 있어야 합니다.

  • s3tables:GetTableData 권한

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'

자세한 정보는 AWS CLI 명령 참조put-table-maintenance-configuration 섹션을 참조하세요.

AWS CLI를 사용하여 압축을 비활성화하는 방법

다음 예시에서는 PutTableMaintenanceConfiguration API를 사용하여 압축을 비활성화합니다.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespace mynamespace \ --name testtable \ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

자세한 정보는 AWS CLI 명령 참조put-table-maintenance-configuration 섹션을 참조하세요.

스냅샷 관리

스냅샷 관리는 테이블의 활성 스냅샷 수를 결정합니다. 이는 MinimumSnapshots(기본값 1) 및 MaximumSnapshotAge(기본값 120시간)을 기반으로 합니다. 스냅샷 관리는 이러한 구성을 기반으로 테이블 스냅샷을 만료하고 제거합니다.

스냅샷이 만료되면 Amazon S3는 해당 스냅샷에서만 참조하는 객체를 비최신으로 표시합니다. 이러한 비최신 객체는 참조되지 않은 파일 제거 정책의 NoncurrentDays 속성에 지정된 일수 후에 삭제됩니다.

참고

비최신 객체의 삭제는 영구적이며 이러한 객체를 복구할 방법이 없습니다.

비최신으로 표시된 객체를 보거나 복구하려면 AWS Support에 문의해야 합니다. AWS Support에 문의하는 방법에 대한 자세한 내용은 AWS 문의 또는 AWS Support 설명서를 참조하세요.

스냅샷 관리는 해당 테이블만 참조하여 테이블에서 삭제할 객체를 결정합니다. 테이블 외부에서 이러한 객체를 참조해도 스냅샷 관리가 객체를 삭제하는 것을 막을 수 없습니다.

참고

스냅샷 관리는 metadata.json 파일에서 또는 브랜치 또는 태그 기반 보존을 포함한 ALTER TABLE SET TBLPROPERTIES SQL 명령을 통해 Iceberg 테이블 속성으로 구성한 보존 값을 지원하지 않습니다. 스냅샷 관리는 브랜치 또는 태그 기반 보존 정책을 구성하거나 metadata.json 파일에 PutTableMaintenanceConfiguration API를 통해 구성된 값보다 긴 보존 정책을 구성할 때 비활성화됩니다. 이러한 경우 S3는 스냅샷을 만료하거나 제거하지 않으므로 스토리지 요금을 피하려면 스냅샷을 수동으로 삭제하거나 Iceberg 테이블에서 속성을 제거해야 합니다.

스냅샷 관리는 테이블 수준에서만 구성할 수 있습니다. 자세한 내용은 Amazon S3 요금의 요금 정보를 참조하세요.

스냅샷 관리 예시

다음 예시는 테이블 스냅샷 관리를 위한 구성을 보여줍니다.

AWS CLI를 사용하여 스냅샷 관리를 구성하는 방법

다음 예시에서는 PutTableMaintenanceConfiguration API를 사용하여 MinimumSnapshots을 10개로 설정하고, MaximumSnapshotAge를 2,500시간으로 설정합니다.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
AWS CLI를 사용하여 스냅샷 관리를 비활성화하는 방법

다음 예시에서는 PutTableMaintenanceConfiguration API를 사용하여 스냅샷 관리를 비활성화합니다.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'

자세한 정보는 AWS CLI 명령 참조put-table-maintenance-configuration 섹션을 참조하세요.

고려 사항 및 제한

압축 및 스냅샷 관리에 대한 추가 고려 사항 및 한계에 대한 자세한 내용은 유지 관리 작업에 대한 고려 사항 및 제한 사항 섹션을 참조하세요.

참고

S3 Tables는 128MB의 parquets row-group-default 크기를 적용합니다.