全域資料表核心概念 - Amazon DynamoDB

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

全域資料表核心概念

下列各節說明 Amazon DynamoDB 中全域資料表的概念和行為

概念

全域資料表是一種 DynamoDB 功能,可跨 AWS 區域複寫資料表資料。

複本資料表 (或複本) 是一種 DynamoDB 資料表,也是全域資料表的一部分。全域資料表包含兩個或多個不同 AWS 區域的複本資料表。單一全域資料表的每個 AWS 區域只能有一個複本。全域資料表中的所有複本共用相同的資料表名稱、主索引鍵結構描述和項目資料。

當應用程式將資料寫入某個區域的複本時,DynamoDB 會自動將該寫入作業複寫到另一個全域資料表的所有其他複本。如需如何開始使用全域資料表的詳細資訊,請參閱 教學課程:建立全域資料表教學課程:建立多帳戶全域資料表

版本

DynamoDB 全域資料表有兩種版本可用:2019.11.21 版全域資料表 (目前版本)全域資料表 2017.11.29 版 (舊版)。您應該盡可能使用 Global Tables 2019.11.21 版 (目前)。本文件章節資訊適用於 2019.11.21 版 (目前版本)。如需詳細資訊,請參閱判斷全域資料表的版本判斷全域資料表版本

可用性

全域資料表可讓您更輕鬆實作多區域的高可用性架構,進而提升業務持續性。如果單一區域中的工作負載 AWS 受損,您可以將應用程式流量轉移到不同的區域,並對相同全域資料表中的不同複本資料表執行讀取和寫入。

全域資料表中的每個複本資料表,其提供的耐用性和可用性與單一區域 DynamoDB 資料表相同。全域資料表提供 99.999% 的可用性服務水準協議 (SLA);單一區域資料表則為 99.99%。

故障注入測試

MREC 和 MRSC 全域資料表都與 AWS Fault Injection Service (AWS FIS) 整合,這是一種全受管服務,用於執行受控故障注入實驗,以改善應用程式的彈性。使用 AWS FIS,您可以:

  • 建立可定義特定失敗案例的實驗範本。

  • 透過模擬區域隔離 (即暫停複寫往返所選複本) 驗證應用程式彈性失敗,以在某個 AWS 區域發生中斷時測試錯誤處理、復原機制和多區域流量轉移行為。

例如,在美國東部 (維吉尼亞北部)、美國東部 (俄亥俄) 和美國西部 (奧勒岡) 具有複本的全域資料表中,您可以在美國東部 (俄亥俄) 執行實驗來測試區域隔離,而美國東部 (維吉尼亞北部) 和美國西部 (奧勒岡) 繼續正常操作。此項受控測試可協助您事先識別和解決潛在問題,以免影響正式作業工作負載。

如需 AWS FIS 支援動作的完整清單和跨區域連線,以暫停區域之間的 DynamoDB 複寫,請參閱 FIS 使用者指南中的動作目標AWS

如需 AWS FIS 中可用 Amazon DynamoDB 全域資料表動作的相關資訊,請參閱 AWS FIS 使用者指南中的 DynamoDB 全域資料表動作參考

若要開始執行故障注入實驗,請參閱 AWS FIS 使用者指南中的規劃您的 FIS 實驗。 AWS

注意

在 MRSC 中的 AWS FIS 實驗期間,允許最終一致讀取,但不允許資料表設定更新,例如變更帳單模式或設定資料表輸送量,類似於 MREC。請檢查 CloudWatch 指標FaultInjectionServiceInducedErrors,以取得有關錯誤碼的其他詳細資訊。

存留時間 (TTL)

針對已設定 MREC 的全域資料表,您可以設定存留時間 (TTL) 刪除。系統會自動同步全域資料表中所有複本的 TTL 設定。當 TTL 從區域中的複本刪除項目時,此刪除作業會複寫至全域資料表中的所有其他複本。TTL 不會消耗寫入容量,因此如果某個區域發生刪除作業,您不需要為該區域的 TTL 刪除付費。不過,若是在全域資料表中具有複本的區域間彼此複寫刪除,則需要支付費用。

針對要複寫刪除的複本,TTL 刪除複寫會耗用該複本的寫入容量。如果寫入輸送量和 TTL 刪除輸送量的組合高於佈建寫入容量,則已設定佈建容量的複本可能會對這些請求限流。

針對已設定多區域強一致性 (MRSC) 的全域資料表,您無法設定存留時間 (TTL) 刪除。

串流

如果全域資料表已設定多區域最終一致性 (MREC),其會從複本資料表的 DynamoDB Stream 讀取變更,並將變更套用至所有其他複本資料表,藉此複寫這些變更。因此,MREC 全域資料表中的所有複本預設會啟用 Streams,您無法在這些複本上將其停用。MREC 複寫程序可能會將短時間內多個變更合併為單一複寫寫入,導致每個複本的 Stream 包含略微不同的記錄。MREC 複本上的串流記錄會維持相同項目所有變更的順序,但不同項目變更的相對順序可能因複本而異。

如果您要撰寫應用程式來處理 Streams 記錄,藉此掌握全域資料表中特定區域而非其他區域發生的變更,您可以為每個項目新增一個屬性,以定義該項目發生變更所在的區域。您可以使用此屬性來篩選 Streams 記錄,以找出其他區域發生的變更,包括使用 Lambda 事件篩選條件,以僅調用 Lambda 函式找出特定區域的變更。

如果全域資料表已設定多區域強一致性 (MRSC),其不會使用 DynamoDB Streams 進行複寫,因此 MRSC 複本預設不會啟用 Streams。您可以在 MRSC 複本上啟用 Streams。每個複本的 MRSC 複本 Stream 記錄都是相同的,包括 Stream 記錄排序。

交易

若是已設定 MREC 的全域資料表,DynamoDB 交易操作 ( TransactWriteItemsTransactGetItems) 僅在調用操作的區域中為不可分割。交易寫入不會以一個單位形式跨區域複寫,亦即,在指定時間點,其他複本中的讀取操作可能只會傳回交易中的部分寫入。

例如,如果您有一個全域資料表,其在美國東部 (俄亥俄) 和美國西部 (奧勒岡) 區域有複本,並且在美國東部 (俄亥俄) 區域執行 TransactWriteItems 操作,在這些變更進行複寫之後,您可能會在美國西部 (奧勒岡) 區域看到部分完成的交易。只有當變更已在來源區域遞交的情況下,這些變更才會複寫至其他區域。

如果全域資料表已設定多區域強一致性 (MRSC),則不支援交易操作,且在 MRSC 複本上調用這些操作時會傳回錯誤。

讀取和寫入輸送量

佈建模式

複寫會耗用寫入容量。如果應用程式寫入輸送量和複寫寫入輸送量的組合超過佈建寫入容量,針對佈建容量設定的複本可能會調節請求。對於使用佈建模式的全域資料表,複本之間會同步讀取和寫入容量的自動擴展設定。

您可以在複本層級使用 ProvisionedThroughputOverride 參數,獨立設定全域資料表中每個複本的讀取容量設定。根據預設,佈建讀取容量的變更會套用至全域資料表中的所有複本。將新複本新增至全域資料表時,除非明確指定複本層級覆寫,否則來源資料表或複本的讀取容量會用作初始值。

隨需模式

對於針對隨需模式設定的全域資料表,寫入容量會自動同步至所有複本。DynamoDB 會根據流量自動調整容量,而且沒有要管理的複本特定讀取或寫入容量設定。

監控全域資料表

如果全域資料表已設定多區域最終一致性 (MREC),其會將 ReplicationLatency 指標發布至 CloudWatch。假設某個項目寫入複本資料表,此指標可追蹤該項目出現在全域資料表中其他複本時經過的時間。ReplicationLatency 會以毫秒表示,並會針對全域資料表中每對來源及目的地區域對發送。

典型ReplicationLatency值取決於所選 AWS 區域之間的距離,以及其他變數,例如工作負載類型和輸送量。例如,相較於非洲 (開普敦) (af-south-1) 區域,美國西部 (加利佛尼亞北部) (us-west-1) 區域的來源複本到美國西部 (奧勒岡) (us-west-2) 區域的 ReplicationLatency 較低。

ReplicationLatency 值上升可能表示,某個複本的更新未及時傳播到其他複本資料表。在這種情況下,您可以暫時將應用程式的讀取和寫入活動重新導向至不同的 AWS 區域。

如果全域資料表已設定多區域強一致性 (MRSC),其不會發布 ReplicationLatency 指標。

管理全域資料表的考量

如果新複本建立未超過 24 小時,您就無法刪除用來新增全域資料表複本的資料表。

如果您停用包含全域資料表複本 AWS 的區域,這些複本會在區域停用後 20 小時永久轉換為單一區域資料表。