Amazon DynamoDB 全域表

為何使用 Amazon DynamoDB 全域表?

Amazon DynamoDB 全域表是一個全受管、無伺服器、多區域和多作用中資料庫。全域表為您提供 99.999% 的可用性、提升的應用程式彈性,以及改善業務持續性。由於全域表會在您選擇的 AWS 區域自動複寫 Amazon DynamoDB 資料表,因此您可以實現快速的本機讀取和寫入效能。

若鮮少發生單一區域失敗,則無需進行資料庫容錯移轉,因為全域表的多作用中架構可讓客戶讀取和寫入任何複本資料表。全域表也免除了在區域之間複寫資料的困難工作,並解決多作用中工作負載的更新衝突。另外,Global Tables 可讓您的應用程式維持高度可用性,即使是發生整個區域隔離或降級等鮮少情況亦同。

您可以使用 AWS Command Line Interface (AWS CLI) 或 AWS CloudFormation,在 AWS 管理主控台中設定全域表。讀取或寫入全域表時無需變更應用程式,因為全域表使用與單一區域表相同的 DynamoDB API。

使用全域表無須預付成本或簽訂合約,您只需依據使用的資源付費。請參閱 Amazon DynamoDB 開發人員指南,進一步了解如何設定全域表。如需全域表定價的詳細資訊,請參閱適用於隨需佈建的 Amazon DynamoDB 定價選項。

運作方式

DynamoDB 全域表由多個複本資料表組成。每個複本資料表都存在於不同的區域中,但所有複本都具有相同的名稱和主索引鍵。將資料寫入任何複本資料表時,DynamoDB 會自動將該資料複寫到全域表中的所有其他複本資料表。

例如,假設您的應用程式服務的客戶群遍及三個地理區域 – 美國東海岸、加拿大和西歐。不使用全域表,您必須在每個 AWS 區域建立資料表,並撰寫程式碼,以便在每個區域的每個資料表之間複寫資料變更。

使用全域表,您可以在最接近每個地理區域的三個區域建立具有複本資料表的全域表。DynamoDB 會自動將任何複本的變更複製到其他區域中的複本。

全域表可讓應用程式的使用者無論身在何處,都能以低延遲的方式存取資料。萬一某個 AWS 區域暫時無法使用,您的客戶仍然可以存取其他區域的複本資料表。

運作方式

Amazon DynamoDB 全域表的優勢

對任何複本資料表中任何項目做出的任何變更,都會複寫至同一全域表中的所有其他複本。在全域表中,通常會在一秒鐘內將新寫入的項目傳播至所有複本資料表。  透過全域表,每個複本資料表會存放相同的資料項目集。Amazon DynamoDB 不支援僅部分複寫某些項目。 若應用程式約同時更新不同區域中的同一項目,則可能會發生衝突。

為解決衝突,Amazon DynamoDB 全域表在並行更新間使用「最後寫入者優先」調整,這樣 DynamoDB 會儘可能確定最後寫入者。透過這種衝突解決機制,所有複本均同意最新更新,並交集為均具有相同資料的狀態。

全域表可讓您在本機讀取和寫入資料,為各種規模的全球分散式應用程式提供低於 10 毫秒的延遲。這可提升大規模擴展的全球應用程式的效能。

全域表的設計可提供 99.999% 的可用性。若單一區域隔離或降級,您的應用程式可以重新定向至其他區域,並對不同的複本資料表執行讀寫操作。您可以套用自訂業務邏輯,來確定何時將請求重新定向至其他區域。 

此外,Amazon DynamoDB 會追蹤已執行但尚未傳播至所有複本資料表的任何寫入操作。當該區域恢復聯機時,Amazon DynamoDB 將從該區域繼續傳播任何擱置中寫入至其他區域中的複本資料表,反之亦然。

多作用中、多區域複寫可確保在一個區域的複本資料表上執行的更新,會複製到其他區域中的複本資料表。跨區域的資料表複本之間的複寫最終一致。這意味著,在與應用程式相同區域內的複本資料表進行本機讀取和寫入可達到強大的一致性。而讀取位於區域內其他複本資料表中的項目最終是一致的。

全域表免除在 Amazon DynamoDB 中部署和管理多作用中、多區域複寫時的複雜性和操作重擔。您只需選擇要複寫資料的區域,剩下的就交給 DynamoDB 處理。應用程式透過使用現有 DynamoDB API 和端點來存取全域表。

頁面主題

一般問題

一般問題

全域表是一個或多個複本資料表的集合,均由單一 AWS 帳戶擁有。對於單一 Amazon DynamoDB 全域表,每個 AWS 區域只能有一個複本資料表。

複本資料表是單一 DynamoDB 資料表。每個複本資料表會存放相同的資料項目集、具有相同的資料表名稱,以及相同的主索引鍵結構描述。當應用程式將資料寫入一個區域中的複本資料表時,Amazon DynamoDB 會自動將寫入的內容複寫到其他 AWS 區域中的其他複本資料表。

是,Amazon Dynamo 全球資料表可增強業務持續性,因為它可增加應用程式的彈性,並為單一區域提供強大的一致性。由於全域表為多作用中,因此應用程式可以讀取或寫入任何複本資料表。在計畫外區域事件等鮮少情況下,應用程式仍可重新導向至另一個複本。

您可以使用本逐步指南,透過 Amazon DynamoDB 主控台、AWS CLI 或 AWS CloudFormation 建立全域表。

將不同區域中的其他複本新增至 Amazon DynamoDB 全域表之前,資料表必須啟用 DynamoDB Streams、具有與所有其他複本相同的名稱、具有與所有其他複本相同的分區索引鍵,且指定相同的寫入容量設定。

Amazon DynamoDB 全域表中的所有複本資料表都必須具有相同的名稱。

與其他資料庫類似,Amazon DynamoDB 會將資料存放在資料表中。資料表是項目的集合,每個項目都是屬性的集合。Amazon DynamoDB 使用主索引鍵,不重複識別資料表中的每個項目,並具有次要索引,以提供更大的查詢彈性。

相較之下,Amazon DynamoDB 全域表是單一 AWS 帳戶擁有的一個或多個複本資料表的集合。在結構上,每個複本資料表與一般 Amazon DynamoDB 資料表相同。

是,您可以在全域表的每個複本上啟用時間點復原。

  • Zoom

    當新冠疫情爆發時,人們對我們的語音和視訊服務有巨大的需求。在 2020 年初,我們看到來自需要虛擬連線的新客戶和現有客戶的每日會議參與者從 1,000 萬增長到 3 億,這是前所未有的用量增長。在後端,我們可以使用 Amazon DynamoDB for Zoom Meetings 管理此激增情況。將 DynamoDB 全域表與隨需模式結合使用,讓我們幾乎無限地擴展,而不會出現效能問題,即使用量突然飆升。

    Zoom Video Communications, Inc. 雲端操作工程經理 Yasin Mohammed
  • Disney

    Disney + 使用 Amazon DynamoDB 每天擷取內容、中繼資料和數十億客戶的動作,這可讓觀眾將內容新增至他們的觀賞清單中,然後開始觀賞視訊並在其他裝置上收看,或者就接下來觀看的內容提出建議。

    每天有數十億個書籤透過 Amazon Kinesis 擷取到 Amazon DynamoDB 中。

    Attilio Giue,Disney+ 內容探索總監
    閱讀此新聞稿 »
  • Snap Inc.

    Snap Inc. 藉助 Amazon DynamoDB,大幅節省了年度基礎設施成本,並為多媒體傳訊應用程式 Snapchat 提供了快速、可靠的基礎設施。

    Amazon DynamoDB 提供的功能及其持續創新,讓我們相信我們可以繼續依賴它,並在此基礎上進行創新。

    Snap Inc. 工程總監兼基礎設施主管 Saral Jain
    閱讀案例研究 »