创建全局表
重要
本文档适用于版本 2017.11.29(旧版)的全局表,对于新的全局表,应避免使用该版本。客户应尽可能使用全局表版本 2019.11.21(当前版),因为相比 2017.11.29(旧版),它提供了更大的灵活性、更高的效率并且消耗的写入容量更少。
要确定正在使用的版本,请参阅确定您正在使用的 DynamoDB 全局表版本。要将现有全局表从版本 2017.11.29(旧版)更新到版本 2019.11.21(当前版),请参阅升级全局表。
本节介绍如何使用 Amazon DynamoDB 控制台或 AWS Command Line Interface (AWS CLI) 创建全局表。
创建全局表(控制台)
按照以下步骤,使用控制台创建全局表。以下示例创建一个全局表,其副本表位于美国和欧洲。
-
打开 DynamoDB 控制台:https://console.aws.amazon.com/dynamodb/home
。对于本示例,请选择 us-east-2(美国东部俄亥俄州)区域。 -
在控制台左侧的导航窗格中,选择表。
-
选择创建表。
对于 表名称,输入
Music
。对于主键,输入
Artist
。选择添加排序键,然后输入SongTitle
。(Artist
和SongTitle
均应为字符串。)要创建表,请选择创建。此表在新全局表中用作第一个副本表。这是您稍后添加的其他副本表的原型。
-
选择全局表选项卡,然后选择创建版本 2017.11.29(旧版)副本。
-
从可用复制区域下拉菜单,选择美国西部(俄勒冈州)。
控制台将进行检查,以确保所选区域中不存在同名的表。如果有同名的表,则必须删除现有表,然后才能在该区域创建新的副本表。
-
选择创建副本。这将启动美国西部(俄勒冈州)的表创建过程。
选定表(以及任何其他副本表)的全局表选项卡将显示该表已在多个区域中复制。
-
现在,添加另一个区域,以便您跨美国和欧洲复制并同步您的全局表。为此,请重复步骤 5,不过这次指定欧洲地区(法兰克福)而非美国西部(俄勒冈州)。
-
在美国东部(俄亥俄)区域,您应仍使用 AWS Management Console。选择左侧导航菜单中的项目,选择 Music 表,然后选择创建项目。
-
对于 Artist,输入
item_1
。 -
对于 SongTitle,输入
Song Value 1
。 -
要写入该项目,请选择创建项目。
-
-
稍后,该项目将跨您的全局表的所有三个区域复制。要验证这一点,请在控制台中,转到右上角的区域选择器,并选择欧洲地区(法兰克福)。欧洲地区(法兰克福)的
Music
表应包含新的项目。 -
重复步骤 9,然后选择美国西部(俄勒冈州)以验证该区域中的复制。
创建全局表(AWS CLI)
按照以下步骤,使用 AWS CLI 创建全局表 Music
。以下示例创建一个全局表,其副本表位于美国和欧洲。
-
创建新表 (
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
-
在美国东部(弗吉尼亚州北部)创建相同
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
-
创建全局表 (
Music
),由副本表组成us-east-2
和us-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
)。有关更多信息,请参阅 管理全局表的最佳实践和要求。 -
在欧洲地区(爱尔兰)中创建另一个表,其设置与您在步骤 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
-
要验证复制是否正常工作,请将一个新项添加到美国东部(俄亥俄)的
Music
表。aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
-
等待几秒钟,然后检查该项目是否已成功复制到美国东部(弗吉尼亚州北部)和欧洲地区(爱尔兰)。
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