Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用项目的主键读取项目

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

SQL

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

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

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

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

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

请注意,此表的主键包含 ArtistSongTitle

DynamoDB

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

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

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

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

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

请注意,此表的主键包含 ArtistSongTitle

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

SQL SELECT 语句支持多种查询和表扫描。DynamoDB 通过其 QueryScan 操作提供相似功能,如查询表扫描表中所述。

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

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

注意

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

本页内容: