

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# S3 Tables 複寫的運作方式
<a name="s3-tables-replication-how-replication-works"></a>

S3 Tables 複寫會在區域 和 之間建立 Apache Iceberg 資料表的唯讀複本 AWS 帳戶。複本資料表由 S3 Tables 服務自動維護，並包含來自來源資料表的完整資料、中繼資料和快照歷史記錄，使其可使用任何 Iceberg 相容引擎進行分析和時間歷程操作來查詢。

當您設定資料表的複寫時，S3 資料表：
+ 在與來源資料表相同的名稱和命名空間的每個目的地資料表儲存貯體中建立唯讀複本資料表。
+ 以來源資料表的最新狀態回填複本
+ 監控來源資料表是否有新的更新
+ 以與來源相同的順序遞交複本的所有更新，以維持一致性

如需詳細資訊，請參閱下列區段。

**Topics**
+ [複寫的內容](#s3-tables-replication-what-is-replicated)
+ [如何複寫資料](#s3-tables-replication-how-data-replicated)
+ [快照複寫](#s3-tables-replication-snapshot-replication)
+ [考量和限制](#s3-tables-replication-considerations-limitations)

## 複寫的內容
<a name="s3-tables-replication-what-is-replicated"></a>

已複寫下列資料表元件：
+ **資料表快照** – 所有快照，包括壓縮快照，都會依時間順序複寫，以維護來源資料表中的父子關係和序號。這可確保複本資料表提供與來源資料表相同的時間行程功能。
+ **資料表資料** – 資料表快照參考的所有資料檔案都會複寫至目的地區域。其中包含：
  + **中繼資料檔案** – 資料表中繼資料.json 檔案、資訊清單、資訊清單清單、分割區統計資料和資料表統計資料。
  + **刪除檔案** – 複寫所有刪除檔案，以維護複本資料表中的資料準確性。
  + **資料檔案** – 複寫資訊清單參考的所有資料檔案。
+ **資料表中繼資料** – 完成中繼資料複寫，包括結構描述資訊 （目前和歷史）、分割區規格、排序順序和資料表屬性。
  + **結構描述資訊** – 複寫所有資料表結構描述，包括目前的結構描述和歷史結構描述版本。這可確保針對複本資料表的查詢使用正確的資料欄定義、資料類型和欄位映射。複寫程序會維護結構描述演變歷史記錄，允許時間歷程查詢在複本資料表上正常運作。
  + **分割區規格** – 複寫目前和歷史分割區規格，確保複本資料表維持與來源資料表相同的分割區策略。
  + **排序順序** – 複寫資料表排序順序，以維持查詢效能最佳化。

## 如何複寫資料
<a name="s3-tables-replication-how-data-replicated"></a>

複寫會比較來源和複本資料表之間的 Apache Iceberg 資料表中繼資料，以判斷複本資料表的有效狀態。複寫會處理三個類別中的中繼資料，以更新您的複本資料表。

### 對於資料表中繼資料
<a name="s3-tables-replication-table-metadata"></a>

對於版本控制的中繼資料欄位，複寫會將來源資料表的值合併到複本資料表的陣列中，用於下列欄位：
+ `snapshots` – 透過 snapshot-id 將所有快照從來源資料表合併到複本資料表的快照陣列。
+ `snapshot-log` – 將快照日誌從來源資料表合併到複本資料表的快照日誌陣列，依時間戳記和快照 ID 排序。
+ `sort-orders` – 依 order-id 將來源資料表的排序順序定義合併至複本資料表的排序順序陣列。
+ `partition-specs` – 依 spec-id 將來源資料表的分割區規格合併至複本資料表的分割區規格陣列。

### 對於資料表組態
<a name="s3-tables-replication-table-configuration"></a>

對於代表資料表組態的欄位，複寫會直接從來源資料表複製值：
+ `properties`
+ `partition-statistics`
+ `statistics`

目前資料表狀態也會從來源資料表傳輸：
+ `current-snapshot-id`
+ `current-schema-id`
+ `last-column-id`
+ `last-partition-id`
+ `last-sequence-number`
+ `default-sort-order-id`
+ `next-row-id` (Iceberg V3)
+ `encryption-keys` (Iceberg V3)

### 複本特定狀態
<a name="s3-tables-replication-replica-specific-state"></a>

下列欄位是根據合併的資料計算，並針對複本資料表更新：
+ `location` 會在複寫期間更新，以指向複本資料表儲存貯體中的正確檔案位置，確保所有檔案參考在目的地環境中都有效。
+ `metadata-log` 包含所有目的地中繼資料檔案名稱，並在每次使用目前中繼資料檔案名稱成功複寫後更新。
+ 所有檔案路徑都會修改，以指向複本資料表位置。

## 快照複寫
<a name="s3-tables-replication-snapshot-replication"></a>

S3 Tables 複寫會以與來源資料表相同的遞交順序複寫所有資料表快照，以維護跨區域的完整快照歷史記錄。來源資料表的父子關係會保留在複本資料表中。

### 快照保留
<a name="s3-tables-replication-snapshot-retention"></a>

您可以為複寫的資料表設定與來源的保留期不同的自訂快照保留期。這表示即使快照已過期且無法在來源資料表中使用，也可以保留在複本中。

例如，如果您的來源資料表具有 30 天的快照保留期，但您的複本資料表已設定 90 天的保留期，則複本會保留來源資料表中不再可用的前兩個月的快照。

您在來源資料表中手動過期的快照也會保留在複本資料表中。例如，如果您使用 Spark 程序從來源資料表的 2 月過期快照，您仍然可以前往複本資料表中的快照。

## 考量和限制
<a name="s3-tables-replication-considerations-limitations"></a>

下列考量適用於複寫的資料表：
+ S3 Tables 會複寫 Iceberg V2 和 V3 資料表。不過，不支援複寫升級的資料表 (V2 → V3)。
+ 不支援大於 500MB 的中繼資料檔案。
+ 雖然資料表更新通常會在幾分鐘內複寫，但複寫可能需要更長的時間，取決於要複寫的資料表更新大小，例如，當複寫開始回填時。
+ 不支援具有標籤或分支的資料表。
+ Amazon S3 中繼資料資料表或其他 AWS產生的系統資料表不支援複寫。
+ 所有資料表快照，包括壓縮的快照，都會從來源資料表複寫。因此，複本資料表上不支援壓縮。