Amazon DynamoDB
开发人员指南 (API 版本 2012-08-10)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用排序键整理数据的最佳实践

在 DynamoDB 表中,唯一标识表中的每个项目的主键不仅包含分区键,还包含排序键。

精心设计的排序键具有两个主要好处:

  • 它们将相关信息聚集在一个位置,以便进行高效查询。利用精心设计的排序键,您可以使用带运算符 (如 starts-withbetween>< 等) 的范围查询检索通常需要的相关项目组。

  • 利用组合排序键,可以在数据中定义可在任何层次结构级别查询的层次 (一对多) 关系。

    例如,在列出地理位置的表中,可按如下所示构建排序键:

    [country]#[region]#[state]#[county]#[city]#[neighborhood]

    这使您能够在这些聚合级别 (从 country 一直到 neighborhood 以及二者之间的所有内容) 中的任一级别对位置列表进行有效的范围查询。

使用排序键进行版本控制

许多应用程序需要维护项目级修订的历史记录以实现审计或遵从性目的,并且需要能够轻松地检索最新版本。有一种高效设计模式,此模式使用排序键前缀来实现上述目的:

  • 请为每个新项目创建两个副本:一个副本在排序键的开头应具有版本号前缀零 (如 v0_),一个应具有版本号前缀 1 (如 v001_)。

  • 每次更新项目时,请在已更新版本的排序键中使用下一个更高的版本前缀,并将更新后的内容复制到版本前缀为零的项目中。这意味着,可使用前缀零轻松找到所有项目的最新版本。

例如,部件制造商可使用如下所示的架构。


        版本控制示例,其中显示了包含主键和数据项属性的表。

Equipment_1 项目将由各个审计员进行的一系列的审核。将在表中的新项目中捕获每次新审计的结果,从版本号 1 开始,然后对每次后续修订递增此数字。

在添加新修订时,应用程序层会将零版本项目的内容 (让排序键等于 v0_Audit) 替换为新修订的内容。

只要应用程序需要检索最新的审核状态,就可以查询排序键前缀 v0_

如果应用程序需要检索完整修订历史记录,它可以查询项目的分区键下的所有项目并筛选出 v0_ 项目。

如果在排序键中将单个部件 ID 置于排序键前缀后,则此设计还适用于对一个设备的多个部件进行审核。

本页内容: