

# テーブルのメンテナンス
<a name="s3-tables-maintenance"></a>

S3 Tables は、個別のテーブルの管理とパフォーマンスを向上させるためのメンテナンスオペレーションを提供します。次のオプションは、テーブルバケットのすべてのテーブルでデフォルトで有効になっています。オプションを編集または無効化するには、S3 テーブルのメンテナンス設定ファイルを指定します。

この設定を編集するには、`s3tables:GetTableMaintenanceConfiguration` および `s3tables:PutTableMaintenanceConfiguration` アクセス許可が必要です。

**注記**  
CloudTrail ログを使用してテーブルの S3 Tables 自動メンテナンスオペレーションを追跡できます。詳細については、「[S3 Tables メンテナンスの CloudTrail 管理イベント](s3-tables-logging.md#s3-tables-maintenance-events)」を参照してください。

**Topics**
+ [圧縮](#s3-tables-maintenance-compaction)
+ [スナップショットの管理](#s3-tables-maintenance-snapshot)
+ [考慮事項と制限事項](#s3-tables-considerations-see-more)

## 圧縮
<a name="s3-tables-maintenance-compaction"></a>

圧縮はテーブルレベルで設定され、複数の小さなオブジェクトを少数の大きなオブジェクトに結合して Apache Iceberg クエリパフォーマンスを向上させます。オブジェクトを組み合わせると、圧縮はテーブル内の行レベル削除の効果も適用します。

圧縮はすべてのテーブルでデフォルトで有効になっており、デフォルトのターゲットファイルサイズは 512MB、または 64MB から 512MB の間で指定したカスタム値です。圧縮されたファイルは、テーブルの最新のスナップショットとして書き込まれます。

**注記**  
圧縮は Apache Parquet、Avro、および ORC ファイルタイプでサポートされています。

### 圧縮戦略
<a name="s3-tables-maintenance-compaction-strategies"></a>

複数の圧縮戦略から選択でき、クエリパターンとテーブルのソート順序に応じて、クエリのパフォーマンスをさらに向上させることができます。

S3 Tables は、テーブルに対して次の圧縮戦略をサポートしています。
+ **自動 (デフォルト)**
  + Amazon S3 は、テーブルのソート順序に基づいて最適な圧縮戦略を選択します。これは、すべてのテーブルのデフォルトの圧縮戦略です。
  + メタデータにソート順序が定義されているテーブルの場合、`auto` は自動的に `sort` 圧縮を適用します。
  + ソート順のないテーブルの場合、`auto` はデフォルトで `binpack` 圧縮を使用します。
+ **ビンパック**
  + 小さなファイルをより大きなファイルに結合します。通常は 100MB を超えるサイズをターゲットにしながら、保留中の削除を適用します。これは、ソートされていないテーブルのデフォルトの圧縮戦略です。
+ **並べ替え**
  + 圧縮中に階層によって自動的にソートされる指定された列に基づいてデータを整理し、フィルタリングされたオペレーションのクエリパフォーマンスを向上させます。この戦略は、クエリが特定の列を頻繁にフィルタリングする場合に推奨されます。この戦略を使用すると、テーブルプロパティで `sort_order` が定義されている場合、S3 Tables は列に階層ソートを自動的に適用します。
+ **Z オーダー**
  + ソートに使用できる単一のスカラー値に複数の属性を統合することでデータ整理を最適化し、複数のディメンションにまたがって効率的なクエリを実行できるようにします。この戦略は、複数のディメンションにまたがるデータを同時にクエリする必要がある場合に推奨されます。この戦略では、`sort_order` テーブルプロパティを使用して Iceberg テーブルプロパティでソート順序を定義する必要があります。

圧縮には追加料金が発生します。`z-order` および `sort` 圧縮戦略では、`binpack` よりも高いコストが発生する可能性があります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」で料金情報を参照してください。

### 圧縮の例
<a name="tables-compaction-examples"></a>

次の例は、テーブル圧縮の設定を示しています。

**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 コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

**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 コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

**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 コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

## スナップショットの管理
<a name="s3-tables-maintenance-snapshot"></a>

スナップショット管理は、テーブルのアクティブなスナップショットの数を決定します。これは、`MinimumSnapshots` (デフォルトでは 1) と `MaximumSnapshotAge` (デフォルトでは 120 時間) に基づいています。スナップショット管理は、これらの設定に基づいてテーブルスナップショットを有効期限切れにし、削除します。

スナップショットの有効期限が切れると、Amazon S3 はそのスナップショットによってのみ参照されるすべてのオブジェクトを最新でないものとしてマークします。これらの最新でないオブジェクトは、参照されていないファイル削除ポリシーの `NoncurrentDays` プロパティで指定された日数が経過した後に削除されます。

**注記**  
以前のオブジェクトの削除は永続的であり、これらのオブジェクトを復元する方法はありません。

最新でないとマークされたオブジェクトを表示または復旧するには、AWS サポート に連絡する必要があります。AWS サポート へのお問い合わせの詳細については、[AWS サポート ドキュメント](https://aws.amazon.com/documentation/aws-support/)の「[AWS へのお問い合わせ](https://aws.amazon.com/contact-us/)」を参照してください。

スナップショット管理は、そのテーブルのみを参照して、テーブルから削除するオブジェクトを決定します。テーブルの外からこれらのオブジェクトを参照しても、スナップショット管理によるオブジェクトの削除は妨げられません。

**注記**  
スナップショット管理では、ブランチやタグベースの保持を含め、`metadata.json` ファイル内の Iceberg テーブルプロパティとして、または `ALTER TABLE SET TBLPROPERTIES` SQL コマンドを介して設定した保持値はサポートされていません。ブランチまたはタグベースの保持ポリシーを設定する場合、または `PutTableMaintenanceConfiguration` API で設定された値よりも長い保持ポリシーを `metadata.json` ファイルに設定する場合、スナップショット管理は無効になります。このような場合、S3 はスナップショットの有効期限が切れたり削除されたりしないため、ストレージ料金が発生しないように、スナップショットを手動で削除するか、Iceberg テーブルからプロパティを削除する必要があります。

スナップショット管理は、テーブルレベルでのみ設定できます。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」で料金情報を参照してください。

### スナップショット管理の例
<a name="tables-snapshot-examples"></a>

次の例は、テーブルスナップショット管理の設定を示しています。

**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 コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

## 考慮事項と制限事項
<a name="s3-tables-considerations-see-more"></a>

圧縮とスナップショット管理に関するその他の考慮事項と制限の詳細については、「[メンテナンスジョブに関する考慮事項と制限事項](s3-tables-considerations.md)」を参照してください。

**注記**  
S3 Tables は、parquet の row-group-default サイズである 128 MB を適用します。