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

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

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

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

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

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

  • 複合排序金鑰可讓您定義資料中的階層 (one-to-many) 關係,您可以在階層的任何層級查詢。

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

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

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

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

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

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

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

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

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

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

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

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

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

如果您將個別部分IDs包含在排序索引鍵字首之後的排序索引鍵中,則此設計也適用於跨設備多個部分的稽核。