使用排序索引鍵以組織資料的最佳實務 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用排序索引鍵以組織資料的最佳實務

在 Amazon DynamoDB 表格中,唯一識別表格中每個項目的主索引鍵可由分區索引鍵和排序索引鍵組成。

精心設計的排序索引鍵有兩個主要優點:

  • 它們將相關資訊集中在一個可以有效率查詢的地方。仔細設計的排序索引鍵,讓您可以透過例如 begins_withbetween>< 等運算子,使用範圍查詢來擷取經常需要的相關項目群組。

  • 透過組合排序索引鍵,可讓您在資料中定義階層式 (一對多) 關係,您可以在階層中的任何層級查詢這些關係。

    例如,在列出地理位置的表中,您可以按以下方式建構排序索引鍵。

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

    這可以讓您在任何一種此彙整層級的位置列表進行有效率的範圍查詢,從 country 到一個 neighborhood,以及其之間的所有內容。

使用排序索引鍵進行版本控制

許多應用程式需要維護項目層級修訂的歷史記錄,以用於稽核或合規目的,並能輕鬆擷取最新版本。有一種有效的設計模式,是使用排序索引鍵字首來完成此操作:

  • 在每個新項目建立該項目的兩個複本:一個複本在排序索引鍵字首應有版本號的字首為零 (例如v0_),並且應有一個版本號的字首為一 (v1_)。

  • 每次更新項目時,都使用更新版本的排序索引鍵中更高版本的字首,並將更新的內容複製到版本字首為零的項目中。這代表任何項目的最新版本都可以使用零字首輕鬆定位。

例如,零件製造商可能會使用如下圖所示的結構描述。

版本控制範例顯示具有主索引鍵和資料項目屬性的資料表。

Equipment_1 項目會經過各種稽核人員的一系列稽核。每個新稽核的結果都會在資料表中的新項目中擷取,從第一號版本開始,然後遞增每個連續修訂的編號。

增加每個新修訂版本時,應用程式層會將零版本項目 (具有等於 v0_Audit 的排序索引鍵) 的內容替換為新版本的內容。

無論應用程式何時需要擷取最近的稽核狀態,都可以查詢排序索引鍵開頭的 v0_

如果應用程式需要擷取整個修訂歷史記錄,可查詢該項目分割區索引鍵下的所有項目並篩選掉 v0_ 項目。

如果您在排序索引鍵開頭之後的排序索引鍵中包括個別部分 ID,此設計也適用於跨設備多個部分的稽核。