本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
针对 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
创建表可能需要一段时间,具体取决于您为 ReadCapacityUnits
和 WriteCapacityUnits
指定的值。 较大的此类值需要 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
当 TableStatus
从 CREATING
更改为 ACTIVE
后,表即可供使用。
如果您在 DescribeTable
请求后立即发出 CreateTable
请求,则 DynamoDB 可能会返回错误 (ResourceNotFoundException
)。这是因为 DescribeTable
使用最终一致性查询,并且表的元数据此时可能不可用。请等待几秒钟,再尝试 DescribeTable
请求。
出于记账目的,您的 DynamoDB 存储成本包含 100 bytes的每项目开销。(有关更多信息,请转到 DynamoDB 定价DescribeTable
操作。
更新表
利用 UpdateTable
操作,您可以执行下列操作之一:
-
修改表的预置吞吐量设置(对于预置模式表)。
-
更改表的读/写容量模式。
-
在表上操作全局二级索引(请参阅在 DynamoDB 中使用全局二级索引)。
-
在表上启用或禁用 DynamoDB 流(请参阅流的更改数据捕获DynamoDB)。
例
下面的 AWS CLI 示例说明如何修改表的预置吞吐量设置。
aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
当您发出 UpdateTable
请求时,表的状态会从 AVAILABLE
变为 UPDATING
。 该表在处于 UPDATING
状态时保持完全可用。 此过程完成后,表状态将从 UPDATING
变为 AVAILABLE
。
例
下面的 AWS CLI 示例说明如何将表的读/写容量模式修改为按需模式。
aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST
删除表
您可以使用 DeleteTable
操作删除未使用的表。表的删除操作是不可恢复的。
例
以下 AWS CLI 示例说明如何删除表。
aws dynamodb delete-table --table-name Music
当您发出 DeleteTable
请求时,表的状态会从 ACTIVE
变为 DELETING
。 删除表可能需要一段时间,具体取决于其使用的资源(例如,存储在表中的数据以及表上的任何流或索引)。
在 DeleteTable
操作结束时,该表在 DynamoDB 中不再存在。
列出表名
操作返回当前 AWS 账户和区域的 ListTables
表的名称。DynamoDB
例
下面的 AWS CLI 示例演示如何列出 DynamoDB 表名称。
aws dynamodb list-tables
描述预置的吞吐量配额
DescribeLimits
操作会返回当前 AWS 账户和区域的当前读入容量配额。
例
下面的 AWS CLI 示例说明了如何描述当前的预置吞吐量配额。
aws dynamodb describe-limits
输出显示当前 AWS 账户和区域的读入容量单位配额。
有关这些配额以及如何请求增加配额的更多信息,请参阅吞吐量默认配额。