本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用排序键整理数据的最佳实践
在 Amazon DynamoDB 表中,唯一标识表中的每个项目的主键不仅包含分区键,还包含排序键。
精心设计的排序键具有两个主要好处:
-
它们将相关信息聚集在一个位置,以便进行高效查询。利用精心设计的排序键,您可以使用带运算符 (如
begins_with
、between
、>
、<
等) 的范围查询检索通常需要的相关项目组。 -
利用组合排序键,可以在数据中定义可在任何层次结构级别查询的层次 (一对多) 关系。
例如,在列出地理位置的表中,可按如下所示构建排序键。
[country]#[region]#[state]#[county]#[city]#[neighborhood]
这使您能够在这些聚合级别(从
country
到neighborhood
以及二者之间的所有内容)中的任一级别对位置列表进行有效的范围查询。
使用排序键进行版本控制
许多应用程序需要维护项目级修订的历史记录以实现审计或遵从性目的,并且需要能够轻松地检索最新版本。有一种高效设计模式,此模式使用排序键前缀来实现上述目的:
-
对于每个新项目,创建该项目的两个副本:一个副本在排序键的开头应具有版本号前缀零 (例如
v0_
),并且一个副本应具有版本号前缀 1 (例如v1_
)。 -
每次更新项目时,请在已更新版本的排序键中使用下一个更高的版本前缀,并将更新后的内容复制到版本前缀为零的项目中。这意味着,可使用前缀零轻松找到所有项目的最新版本。
例如,部件制造商可使用如下所示的架构。

Equipment_1
项目将由各个审计员进行的一系列的审核。将在表中的新项目中捕获每次新审计的结果,从版本号 1 开始,然后对每次后续修订递增此数字。
在添加新修订时,应用程序层会将零版本项目的内容(让排序键等于 v0_Audit
)替换为新修订的内容。
只要应用程序需要检索最新的审计状态,就可以查询排序键前缀 v0_
。
如果应用程序需要检索完整修订历史记录,它可以查询项目的分区键下的所有项目并筛选出 v0_
项目。
如果在排序键中将单个部件 ID 置于排序键前缀后,则此设计还适用于对一个设备的多个部件进行审核。