建立全域資料表 - Amazon DynamoDB

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

建立全域資料表

重要

本文件適用於全域資料表 2017.11.29 版 (舊版),新的全域資料表應避免使用此文件。客戶應盡可能使用全域表版本 2019.11.21 (目前版本),因為它比 2017.11.29 (舊版) 提供更大的彈性、更高的效率以及更少的寫入容量。

若要判斷您使用的是哪個版本,請參閱 判斷您正在使用的全域資料表版本。若要將現有全域資料表從 2017.11.29 版更新至 2019.11.21 版 (目前),請參閱 升級全域資料表

本節說明如何使用 Amazon DynamoDB 主控台或 AWS Command Line Interface (AWS CLI) 建立全域資料表。

建立全域資料表 (主控台)

請遵循下列步驟,使用主控台建立全域資料表。下列範例使用美國及歐洲的複本列表,建立全域資料表。

  1. https://console.aws.amazon.com/dynamodb/home 開啟 DynamoDB 主控台。針對此範例,請選擇 us-east-2 (美國東部俄亥俄州) 區域。

  2. 在主控台左側的導覽窗格中,選擇 Tables (資料表)。

  3. 選擇 Create Table (建立資料表)。

    對於 Table name (資料表名稱),請輸入 Music

    針對 Primary key (主索引鍵),輸入 Artist。選擇 Add sort key (新增排序索引鍵),然後輸入 SongTitle。(ArtistSongTitle 都必須是字串。)

    若要建立資料表,請選擇 Create (建立)。此資料表會做為新全域資料表中的第一個複本資料表。這是您稍後新增其他複本資料表的原型。

  4. 選擇 Global Tables (全域資料表) 索引標籤,然後選擇 Create a version 2017.11.29 (Legacy) replica (建立版本 2017.11.29 (舊版) 複本)。

    顯示「建立版本 2017.11.29 (舊版) 複本」按鈕的主控台螢幕擷取畫面。
  5. Available replication Regions (可用的複製區域) 下拉式清單,選擇 US West (Oregon) (美國西部 (奧勒岡))。

    主控台會檢查,確認所選取的區域中沒有同名的資料表。若有同名的資料表,您必須先刪除現有的資料表,才可在該區域中建立新的複本資料表。

  6. 選擇 Create replica (建立複本)。這會啟動在美國西部 (奧勒岡) 建立資料表的程序。

    所選資料表的 Global Table (全域資料表) 標籤 (及所有其他複本資料表),會顯示該資料表已複寫到多個區域。

  7. 您現在可以新增其他區域,複寫及同步美國與歐洲的全域資料表。若要執行此作業,請重複步驟 5,但這次請改為指定 Europe (Frankfurt) (歐洲 (法蘭克福)),而非 US West (Oregon) (美國西部 (奧勒岡))。

  8. 您應該仍會在美國東部 (俄亥俄) 區域使用 AWS Management Console。選取左側導覽功能表中的 Items (項目),選取 Music (音樂) 資料表,然後選擇 Create Item (建立項目)。

    1. 針對 Artist (藝人),輸入 item_1

    2. 針對 SongTitle,請輸入 Song Value 1

    3. 若要寫入該項目,請選擇 Create item (建立項目)。

  9. 稍待片刻之後,該項目將會複寫到您全域資料表中的所有三個區域。若要確認,請在主控台中移至右上角的區域選擇器,然後選擇 Europe (Frankfurt) (歐洲 (法蘭克福))。歐洲 (法蘭克福) 中的 Music 資料表此時應已包含新的項目。

  10. 重複步驟 9,然後選擇 US West (Oregon) (美國西部 (奧勒岡)) 以驗證該區域中的複寫。

建立全域資料表 (AWS CLI)

​請遵循下列步驟,使用 AWS CLI​ 建立全域資料表 Music​。以下範例會建立全域資料表,並在美國及歐洲皆擁有複本資料表。

  1. 在美國東部 (俄亥俄) 建立新的資料表 (Music),並啟用 DynamoDB Streams (NEW_AND_OLD_IMAGES)。

    aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-2
  2. 在美國東部 (維吉尼亞北部) 建立相同的 Music 資料表。

    aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-1
  3. 建立全域資料表 (Music),其中包含 us-east-2us-east-1 區域中的複本列表。

    aws dynamodb create-global-table \ --global-table-name Music \ --replication-group RegionName=us-east-2 RegionName=us-east-1 \ --region us-east-2
    注意

    全域資料表名稱 (Music) 必須與每個複本列表 (Music) 的名稱相符。如需詳細資訊,請參閱 管理全域資料表的最佳實務和要求

  4. 在歐洲 (愛爾蘭) 中建立另一個資料表,其設定與您在步驟 1 和步驟 2 中建立的資料表設定相同。

    aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region eu-west-1

    完成此步驟後,將新資料表新增至 Music 全域資料表。

    aws dynamodb update-global-table \ --global-table-name Music \ --replica-updates 'Create={RegionName=eu-west-1}' \ --region us-east-2
  5. 若要確認複寫正常運作,請將項目新增到美國東部 (俄亥俄) 中的 Music 資料表。

    aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
  6. 稍待幾秒鐘,然後檢查該項目是否已成功複寫到美國東部 (維吉尼亞北部) 與歐洲 (愛爾蘭)。

    aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1
    aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region eu-west-1