Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

表的基本操作

创建表

使用 CreateTable 操作可以创建表。您必须提供以下信息:

  • 表名称。此名称必须遵循 DynamoDB 命名规则,并且对当前 AWS 账户和区域必须唯一。例如,您可以在美国东部(弗吉尼亚北部)中创建一个 People 表,并在欧洲(爱尔兰)中创建另一个 People 表 - 但这两个表彼此是完全不同的。有关更多信息,请参阅 命名规则和数据类型

  • 主键.主键可包含一个属性 (分区键) 或两个属性 (分区键和排序键)。您需要提供每个属性的属性名称、数据类型和角色:HASH (针对分区键) 和 RANGE (针对排序键)。有关更多信息,请参阅 主键

  • 吞吐量设置。您必须指定表的初始读取和写入吞吐量设置。您可以稍后修改这些设置,或启用 DynamoDB Auto Scaling 来为您管理这些设置。有关更多信息,请参阅 读取和写入的吞吐量设置使用 DynamoDB Auto Scaling 自动管理吞吐容量

以下 AWS CLI 示例说明如何创建表 (Music)。主键包含 Artist (分区键) 和 SongTitle (排序键),它们均具有字符串数据类型。此表的最大吞吐量为 10 个读取容量单位和 5 个写入容量单位。

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

CreateTable 操作返回表的元数据,如下所示:

{ "TableDescription": { "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "TableName": "Music", "KeySchema": [ { "AttributeName": "Artist", "KeyType": "HASH" }, { "AttributeName": "SongTitle", "KeyType": "RANGE" } ], "TableStatus": "CREATING", "CreationDateTime": 1491338657.039, "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 10, "WriteCapacityUnits": 5 }, "TableSizeBytes": 0, "ItemCount": 0, "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music" } }

TableStatus 元素指示表的当前状态 (CREATING)。创建表可能需要一段时间,具体取决于您为 ReadCapacityUnitsWriteCapacityUnits 指定的值。二者的值越大,DynamoDB 需要为表分配的资源就越多。

描述表

要查看有关表的详细信息,请使用 DescribeTable 操作。您必须提供表名称。来自 DescribeTable 的输出与来自 CreateTable 的输出的格式相同;它包括表创建时的时间戳、表的键架构、预置吞吐量设置、表的估计大小以及存在的所有二级索引。

aws dynamodb describe-table --table-name Music

TableStatusCREATING 更改为 ACTIVE 后,表即可供使用。

注意

如果您在 CreateTable 请求之后立即发出 DescribeTable 请求,则 DynamoDB 可能会返回错误 (ResourceNotFoundException)。这是因为,DescribeTable 使用最终一致性查询,而该表的元数据在这时可能不可用。请等待几秒钟,再尝试 DescribeTable 请求。

出于记账目的,您的 DynamoDB 存储成本包含 100 bytes 的每项目开销。(有关更多信息,请转到 DynamoDB 定价)。这个每项目的额外 100 bytes 不会用于容量单位计算或由 DescribeTable 操作使用。

更新表

利用 UpdateTable 操作,您可以执行下列操作之一:

此 AWS CLI 示例说明如何修改表的预置吞吐量设置:

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10

注意

在发出 UpdateTable 请求时,表的状态从 AVAILABLE 变为 UPDATING。当状态为 UPDATING 时,该表仍然完全可用。此过程完成后,表的状态从 UPDATING 变为 AVAILABLE

删除表

您可以使用 DeleteTable 操作删除未使用的表。请注意,表的删除操作是不可恢复的。

此 AWS CLI 示例说明如何删除表:

aws dynamodb delete-table --table-name Music

在您发出 DeleteTable 请求时,表的状态从 ACTIVE 变为 DELETING。删除表可能需要一段时间,具体取决于表使用的资源 (例如,表中存储的数据以及表上的任何流或索引)。

DeleteTable 操作结束时,该表在 DynamoDB 中不再存在。

列出表名

ListTables 操作返回当前 AWS 账户和区域的 DynamoDB 表的名称。

aws dynamodb list-tables

描述预置的吞吐量限制

DescribeLimits 操作返回当前 AWS 账户和区域的当前读取和写入容量限制。

aws dynamodb describe-limits

输出显示当前 AWS 账户和区域的读取和写入容量单位的上限。

有关这些限制以及如何请求提高限制的更多信息,请参阅预置吞吐量默认限制