使用项目的主键读取项目 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用项目的主键读取项目

数据库的一个常见访问模式是从表中读取一个项目。您必须指定所需项目的主键。

通过 SQL 使用项目的主键读取项目

在 SQL 中,您将使用 SELECT 语句从表中检索数据。您可以在结果中请求一个或多个列 (或所有列,如果您使用 * 运算符)。WHERE 子句确定要返回的行。

以下是 SELECT 语句,它从 Music 表中检索单个行。WHERE 子句指定主键值。

SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

您可以修改此查询以仅检索一部分列。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

请注意,此表的主键由艺术家和组成SongTitle

在 DynamoDB 中使用项目的主键读取项目

在 Amazon DynamoDB 中,您可以使用 DynamoDB API 或 PartiQL(一种与 SQL 兼容的查询语言)读取表中的项目。

DynamoDB API

使用 DynamoDB API,您可以使用 PutItem 操作向表添加项目。

DynamoDB 提供 GetItem 操作来按项目的主键检索项目。GetItem 非常高效,因为它提供对项目物理位置的直接访问。(有关更多信息,请参阅 分区和数据分布。)

默认情况下,GetItem 将返回整个项目及其所有属性。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" } }

您可以添加 ProjectionExpression 参数以仅返回一些属性。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" }, "ProjectionExpression": "AlbumTitle, Year, Price" }

请注意,此表的主键由艺术家和组成SongTitle

DynamoDB GetItem 操作非常高效。此操作使用主键值确定相关项目的确切存储位置,并直接从此位置检索该项目。在按主键值检索项目时,SQL SELECT 语句同样高效。

SQL SELECT 语句支持多种类型的查询和表扫描。DynamoDB 的 QueryScan 操作功能类似,这两个操作在 查询表扫描表 中介绍。

SQL SELECT 语句可执行表联接,这允许您同时从多个表中检索数据。在标准化数据库表的情况下,联接是最高效的,并且各个表之间的关系很明确。不过,如果您在一个 SELECT 语句中联接的表过多,则会影响应用程序性能。可使用数据库复制、具体化的视图或查询重写来解决此类问题。

DynamoDB 是一个非关系数据库且不支持表联接。如果您将现有应用程序从关系数据库迁移到 DynamoDB,则需要非规范化数据模型以消除联接需要。

注意

有关使用 GetItem 的代码示例,请参阅 DynamoDB 和 Amazon SDK 入门

PartiQL for DynamoDB

使用 PartiQL,您可以通过使用 PartiQL ExecuteStatement 语句来使用 Select 操作读取表中的项目。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

请注意,此表的主键由艺术家和组成 SongTitle。

注意

选择 PartiSQL 语句也可用于查询或扫描 DynamoDB 表

有关使用 SelectExecuteStatement 的代码示例,请参阅 PartiQL for DynamoDB 的 Select 语句