全域資料表常見問答集 - AWS 規定指引

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

全域資料表常見問答集

此區段提供有關 DynamoDB 全域資料表的常見問答集解答。

全域資料表的定價為何?

  • 傳統 DynamoDB 資料表的寫入作業是以適用於佈建資料表的寫入容量單位 (WCU) 或適用於隨需資料表的寫入請求單位 (WRU) 來定價。如果您寫入一個 5 KB 的項目,則會產生 5 個單位的費用。全域資料表的寫入是以複寫寫入容量單位 (rWCU,適用於佈建資料表) 或複寫寫入請求單位 (rWRU,適用於隨需資料表) 定價。

  • rWCU 和 rWRU 包含管理複寫所需的串流媒體基礎設施成本。因此,它們的價格比 WCU 和 WRU 高出 50%。需支付跨區域資料傳輸費用。

  • 在直接寫入項目或透過複寫寫入項目的每個區域,都會產生 RWCU 和 RWRu 費用。

  • 寫入全域次要索引 (GSI) 會視為本機寫入作業,並使用常規寫入單位。

  • rWCU 目前沒有可用的預留容量。對於 GSI 消耗寫入單元的資料表而言,購買 WCU 的預留容量可能仍然有所幫助。

  • 當您將新區域加入全域資料表時,DynamoDB 會自動啟動新區域,並根據資料表的 GB 大小向您收費,就像是資料表還原一樣。此外,需支付跨區域資料傳輸費用。

全域資料表支援哪些區域?

全域資料表支援所有 AWS 區域。

GSI 如何處理全域資料表?

在全域資料表 (目前,版本 2019) 中,當您在某個區域中建立 GSI 時,它會在其他參與的區域中自動建立並自動回填。

如何停止全域資料表的複寫?

刪除複本資料表的方式,與刪除其他資料表相同。刪除全域資料表將停止複寫到該區域,並刪除保留在該區域中的資料表複本。不過,您不能在將表的複本作為獨立實體保留的同時停止複制,也無法暫停複寫。

Amazon DynamoDB Streams 如何與全域資料表互動?

每個全域資料表都會根據其所有的寫入作業產生獨立串流,無論從何處開始皆然。您可以選擇在一個區域或所有區域中 (獨立) 使用此 DynamoDB 串流。如果您想要處理本機寫入,而不是複寫的寫入操作,可以將自己的區域屬性新增至每個項目。然後,您可以使用 AWS Lambda 事件篩選條件,呼叫 Lambda 函數在本機區域中進行寫入。這有助於插入和更新操作,但不能用於刪除操作。

全域資料表如何處理交易?

交易操作在最初寫入發生的區域內提供原子性、一致性、隔離性、耐久性 (ACID) 保證。全域資料表不支援跨區域交易。例如,如果您有一個全域資料表,其在美國東部 (俄亥俄) 和美國西部 (奧勒岡) 區域有複本,並且在美國東部 (俄亥俄) 區域執行 TransactWriteItems 操作,在這些變更進行複寫之後,您可能會在美國西部 (奧勒岡) 區域看到部分完成的交易。當變更已在來源區域遞交後,這些變更才會複寫至其他區域。

全域資料表如何與 DynamoDB Accelerator (DAX) 快取互動?

全域資料表會透過直接更新 DynamoDB 來略過 DAX,因此 DAX 不會察覺其持有過時資料。當快取的 TTL 到期時,才會重新整理 DAX 快取。

是否會傳播資料表上的標籤?

否,標籤不會自動傳播。

我應該備份所有區域中的資料表還是只備份一個?

答案是取決於備份的目的。

  • 如果您想要確保資料耐久性,則 DynamoDB 已適當提供該保護。該服務確保的就是耐久性。

  • 如果您想要保留歷史記錄的快照 (例如,為了符合法規要求),則在一個區域中進行備份應該就足夠了。您可以使用 AWS Backup 將備份複製到其他區域。

  • 如果您想要復原錯誤刪除或修改的資料,請在一個區域中使用 DynamoDB point-in-time 復原 (PITR)。

如何使用 AWS CloudFormation 來部署全域資料表?

  • CloudFormation 將 DynamoDB 資料表和全域資料表代表為兩個獨立的資源:AWS::DynamoDB::Table和。AWS::DynamoDB::GlobalTable其中一種方法是使用 GlobalTable 建構模組來建立可能是全域資料表的所有資料表,並在需要時在稍後新增區域。

  • 在中 CloudFormation,無論複本數目為何,每個全域表都由單一區域中的單一堆疊控制。部署範本時, CloudFormation 會建立並更新所有複本,做為單一堆疊作業的一部分。您不應該在多個區域中部署相同的 AWS::DynamoDB::GlobalTable 資源。這會導致錯誤且不支援。如果您在多個區域中部署應用程式範本,則可以使用條件在單一區域中建立 AWS::DynamoDB::GlobalTable 資源。您也可以選擇在與應用程式分開的堆疊中定義 AWS::DynamoDB::GlobalTable 資源,並確保其部署到單一區域。

  • 如果您有一個常規表,並且想要將其轉換為全局表,同時保持其管理 CloudFormation:將刪除策略設置為Retain,從堆棧中刪除表,將表轉換為控制台中的全局表,然後將全局表作為新資源導入堆棧。如需詳細資訊,請參閱AWS GitHub 儲存庫 amazon-dynamodb-table-to-global-table-cdk

  • 目前不支援跨帳戶複寫。