

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

# 使用排序索引鍵組織 DynamoDB 資料的最佳實務
<a name="bp-sort-keys"></a>

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

精心設計的排序索引鍵有兩個主要優點：
+ 它們將相關資訊集中在一個可以有效率查詢的地方。仔細設計的排序索引鍵，讓您可以透過例如 `begins_with`、`between`、`>`、`<` 等運算子，使用範圍查詢來擷取經常需要的相關項目群組。
+ 透過組合排序索引鍵，可讓您在資料中定義階層式 (一對多) 關係，您可以在階層中的任何層級查詢這些關係。

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

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

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

## 使用排序索引鍵進行版本控制
<a name="bp-sort-keys-version-control"></a>

許多應用程式需要維護項目層級修訂的歷史記錄，以用於稽核或合規目的，並能輕鬆擷取最新版本。有一種有效的設計模式，是使用排序索引鍵字首來完成此操作：
+ 在每個新項目建立該項目的兩個複本：一個複本在排序索引鍵字首應有版本號的字首為零 (例如`v0_`)，並且應有一個版本號的字首為一 (`v1_`)。
+ 每次更新項目時，都使用更新版本的排序索引鍵中更高版本的字首，並將更新的內容複製到版本字首為零的項目中。這代表任何項目的最新版本都可以使用零字首輕鬆定位。

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

![\[版本控制範例顯示具有主索引鍵和資料項目屬性的資料表。\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/VersionControl.png)


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

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

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

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

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