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'
请注意,此表的主键包含 Artist 和 SongTitle。
在 DynamoDB 中使用项目的主键读取项目
在 Amazon DynamoDB 中,您可以使用 DynamoDB API 或 PartiQL(一种与 SQL 兼容的查询语言)读取表中的项目。
- DynamoDB API
-
使用 DynamoDB API,您可以使用 PutItem
操作向表添加项目。
DynamoDB 提供 GetItem
操作来按项目的主键检索项目。GetItem
非常高效,因为它提供对项目物理位置的直接访问。(有关更多信息,请参阅 DynamoDB 中的分区和数据分布。)
默认情况下,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"
}
请注意,此表的主键包含 Artist 和 SongTitle。
DynamoDB GetItem
操作非常高效。此操作使用主键值确定相关项目的确切存储位置,并直接从此位置检索该项目。在按主键值检索项目时,SQL SELECT
语句同样高效。
SQL SELECT
语句支持多种类型的查询和表扫描。DynamoDB 的 Query
和 Scan
操作功能类似,这两个操作在 查询表方面的差异 和 扫描表方面的差异 中介绍。
SQL SELECT
语句可执行表联接,这允许您同时从多个表中检索数据。在标准化数据库表的情况下,联接是最高效的,并且各个表之间的关系很明确。不过,如果您在一个 SELECT
语句中联接的表过多,则会影响应用程序性能。可使用数据库复制、具体化的视图或查询重写来解决此类问题。
DynamoDB 是一个非关系数据库且不支持表联接。如果您将现有应用程序从关系数据库迁移到 DynamoDB,则需要非规范化数据模型以消除联接需要。
- PartiQL for DynamoDB
-
使用 PartiQL,您可以通过使用 PartiQL ExecuteStatement
语句来使用 Select
操作读取表中的项目。
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
请注意,此表的主键包含 Artist 和 SongTitle。
选择 PartiSQL 语句也可用于查询或扫描 DynamoDB 表
有关使用 Select
和 ExecuteStatement
的代码示例,请参阅 PartiQL for DynamoDB 的 Select 语句。