针对 DynamoDB 表的基本操作 - Amazon DynamoDB

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

针对 DynamoDB 表的基本操作

与其他数据库系统相似,Amazon DynamoDB 将数据存储在表中。您可以使用一些基本操作来管理表。

创建表

使用CreateTable操作在 Amazon DynamoDB 中创建表。要创建表,您必须提供以下信息:

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

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

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

示例 1:创建预置表

以下AWS CLI示例显示了如何创建一个表 (Music)。主键包含 Artist(分区键)和 SongTitle(排序键),它们均具有 String 数据类型。此表的最大吞吐量为 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": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

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

示例 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 \ --billing-mode=PAY_PER_REQUEST

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

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
重要

当对按需表调用 DescribeTable 时,读取容量单位和写入容量单位设置为 0。

描述表

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

重要

当对按需表调用 DescribeTable 时,读取容量单位和写入容量单位设置为 0。

aws dynamodb describe-table --table-name Music

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

注意

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

出于记账目的,DynamoDB 存储成本包含 100 字节的每项目开销。(有关更多信息,请转到DynamoDB 定价。) 每项目的此额外 100 字节不会用于容量单位计算或用于DescribeTableoperation.

更新表

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

下面的 AWS CLI 示例说明如何修改表的预置吞吐量设置。

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

在发出 UpdateTable 请求时,表的状态从 AVAILABLE 变为 UPDATING。表格仍然完全可供使用,同时UPDATING。完成此过程后,表状态将从UPDATINGAVAILABLE

下面的 AWS CLI 示例说明如何将表的读/写容量模式修改为按需模式。

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

删除表

您可以使用DeleteTableoperation. 表的删除操作是不可恢复的。

以下AWS CLI示例显示了如何删除表。

aws dynamodb delete-table --table-name Music

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

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

列出表名

这些区域有:ListTables操作返回当前AWS账户和区域。

以下AWS CLI示例演示如何列出 DynamoDB 表名称。

aws dynamodb list-tables

描述预置的吞吐量配额

这些区域有:DescribeLimits操作返回当前AWS账户和区域。

下面的 AWS CLI 示例说明了如何描述当前的预置吞吐量配额。

aws dynamodb describe-limits

输出显示当前AWS账户和区域。

有关这些配额以及如何请求增加配额的更多信息,请参阅吞吐量默认配额