📜  AWS DynamoDB – 使用查询

📅  最后修改于: 2022-05-13 01:57:09.793000             🧑  作者: Mango

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参数,我们可以获得此信息或在表的容量选项卡中更改读取容量单位。见下图:

读取一致性:

默认情况下,扫描操作执行最终一致的读取。这意味着,由于最近完成的PutItemUpdateItem请求,扫描结果可能不包括更改。如果需要强一致性读取,则在 Scan 开始时,在 Scan 请求中将ConsistentRead参数设置为 true。通过这样做,它可以确保在 Scan 开始之前完成的所有写入操作都包含在 Scan 结果集中。