AWS DynamoDB – 使用查询
Amazon DynamoDB 是 Amazon 提供的 NoSQL 托管数据库服务,用于存储键值对等半结构化数据。 DynamoDB 表由项目组成。每个项目由一个分区键和一个或多个属性组成。下面给出了一个项目的示例:
Example:
{
"MovieID": 101,
"Name": "The Shawshank Redemption",
"Rating": 9.2,
"Year": 1994
}
在上面的示例中, MovieID是分区键。
分区键用于区分项目。 DynamoDB 中的查询操作根据主键值查找项目。必须提供分区键属性的名称和该属性的单个值。该查询返回针对该分区键值搜索的所有项目。
创建一个表并添加值:
已经创建了一个表,即 Movies,其分区键为MovieID 。没有两个项目可以具有相同的分区键。添加一些要查询的项目。已经创建了一个包含项目的表。见下图:
查询表:
要查询表中的项目,请从项目选项卡的下拉列表中选择查询。默认情况下,查询将始终将分区键作为搜索过滤器之一。我们可以添加一个或多个属性来细化搜索。见下图:
在上图中,我们看到当我们为主键MovieID输入 50 时,我们获得了 1 条记录,如上图所示。
向查询添加过滤器:
为了优化我们的搜索,我们可以添加一个或多个过滤器。在过滤器中,我们选择一个属性并针对它提供值。返回的查询结果由过滤器表达式确定。所有其他结果都被丢弃。在返回结果之前应用过滤器表达式,但在 Query 完成之后。因此,无论是否存在过滤器表达式,查询都会消耗相同数量的读取容量。见下图:
在上图中,我们看到在过滤器中,提供了 Rating 并且条件是它应该大于或等于 8。因此,我们得到了一个搜索结果。
限制 ResultSet 中的项目数:
Query 操作允许您限制它读取的项目数。为此,请将 Limit 参数设置为所需的项目数。例如,假设您查询一个限制值为 8 且没有筛选表达式的表。查询结果包含表中与请求中的关键条件表达式匹配的前八项。该限制只能在 Amazon 命令行界面 (CLI) 中使用。
分页:
此功能在 Amazon CLI(命令行界面)上可用。当检索到的数据在结果集中大于 1 MB 时,则将结果集划分为多个页面,每个页面最多包含 1 MB。例如,如果检索到 3 MB 数据,则至少有 3 页。
计数结果集中的项目:
如果 Query 结果集的大小大于 1 MB,则 ScannedCount和 Count 仅代表项目总数的部分计数。您需要执行多个查询操作来检索结果集中的所有项目。
消耗的容量单位:
对于大小不超过 4 KB 的项目,读取容量单位表示每秒一次强一致性读取或每秒两次最终一致读取。扫描操作不会返回有关读取容量单位消耗量的任何数据。但是,通过在 Scan 请求中指定ReturnConsumedCapacity参数,我们可以获得此信息或在表的容量选项卡中更改读取容量单位。见下图:
读取一致性:
默认情况下,扫描操作执行最终一致的读取。这意味着,由于最近完成的PutItem或UpdateItem请求,扫描结果可能不包括更改。如果需要强一致性读取,则在 Scan 开始时,在 Scan 请求中将ConsistentRead参数设置为 true。通过这样做,它可以确保在 Scan 开始之前完成的所有写入操作都包含在 Scan 结果集中。