创建全局表 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建全局表

重要

本文档适用于版本 2017.11.29(旧版)的全局表,对于新的全局表,应避免使用该版本。客户应尽可能使用全局表格版本 2019.11.21(当前),因为它比 2017.11.29(旧版)提供了更大的灵活性、更高的效率和更少的写入容量。

要确定正在使用的版本,请参阅确定您正在使用的全局表版本。要将现有全局表从版本 2017.11.29(旧版)更新到版本 2019.11.21(当前版),请参阅升级全局表

本节介绍如何使用 Amazon DynamoDB 控制台或 Amazon Command Line Interface (Amazon CLI) 创建全局表。

创建全局表(控制台)

按照以下步骤,使用控制台创建全局表。以下示例创建一个全局表,其副本表位于美国和欧洲。

  1. 打开 DynamoDB 控制台:https://console.aws.amazon.com/dynamodb/home。对于本示例,请选择 us-east-2(美国东部俄亥俄州)区域。

  2. 在控制台左侧的导航窗格中,选择 Tables (表)

  3. 选择 Create Table (创建表)

    对于 表名称,输入 Music

    对于 Primary key (主键),输入 Artist。选择 Add sort key (添加排序键),然后输入 SongTitle。(ArtistSongTitle 均应为字符串。)

    要创建表,请选择 Create (创建)。此表在新全局表中用作第一个副本表。这是您稍后添加的其他副本表的原型。

  4. 选择全局表选项卡,然后选择创建版本 2017.11.29(旧版)副本

    
                        显示“创建版本 2017.11.29(旧版)副本”按钮的控制台屏幕截图。
  5. Available replication Regions (可用复制区域) 下拉菜单,选择 US West (Oregon) (美国西部(俄勒冈))

    控制台将进行检查,以确保所选区域中不存在同名的表。如果有同名的表,则必须删除现有表,然后才能在该区域创建新的副本表。

  6. 选择 Create Replica (创建副本)。这将启动美国西部(俄勒冈)的表创建过程。

    选定表(以及任何其他副本表)的全局表选项卡将显示该表已在多个区域中复制。

  7. 现在,添加另一个区域,以便您跨美国和欧洲复制并同步您的全局表。为此,请重复步骤 5,不过这次指定 Europe (Frankfurt) (欧洲(法兰克福)) 而非 US West (Oregon) (美国西部(俄勒冈))

  8. 在美国东部(俄亥俄)区域,您应仍使用 Amazon Web Services Management Console。选择左侧导航菜单中的 Items (项目),选择 Music 表,然后选择 Create Item (创建项目)

    1. 对于 Artist,输入 item_1

    2. 对于 SongTitle,输入 Song Value 1

    3. 要写入该项目,请选择 Create item (创建项目)

  9. 稍后,该项目将跨您的全局表的所有三个区域复制。要验证这一点,请在控制台中,转到右上角的区域选择器,并选择欧洲(法兰克福)。欧洲(法兰克福)的 Music 表应包含新的项目。

  10. 重复步骤 9,然后选择 US West (Oregon) [美国西部(俄勒冈)] 以验证该区域中的复制。

创建全局表(Amazon CLI)

按照以下步骤,使用 Amazon 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