DynamoDB - 索引



DynamoDB 使用索引來訪問主鍵屬性以提高訪問速度。它們可以加速應用程式訪問和資料檢索,並透過減少應用程式延遲來支援更好的效能。

二級索引

二級索引包含屬性子集和備用鍵。您可以透過針對索引的查詢或掃描操作來使用它。

其內容包括您要投影或複製的屬性。在建立過程中,您為索引定義一個備用鍵,以及您希望在索引中投影的任何屬性。然後,DynamoDB 將屬性的副本複製到索引中,包括來自表的源主鍵屬性。執行這些任務後,您只需像在表上執行操作一樣使用查詢/掃描。

DynamoDB 自動維護所有二級索引。在項操作(例如新增或刪除)上,它會更新目標表上的任何索引。

DynamoDB 提供兩種型別的二級索引 -

  • 全域性二級索引 - 此索引包含一個分割槽鍵和一個排序鍵,它們可能與源表不同。它使用“全域性”標籤是因為索引上的查詢/掃描能夠跨越所有表資料和所有分割槽。

  • 本地二級索引 - 此索引與表共享分割槽鍵,但使用不同的排序鍵。它的“本地”特性源於其所有分割槽都作用於具有相同分割槽鍵值的表分割槽。

要使用的最佳索引型別取決於應用程式的需求。請考慮下表中列出的兩者之間的差異 -

質量 全域性二級索引 本地二級索引
鍵模式 它使用簡單或複合主鍵。 它始終使用複合主鍵。
鍵屬性 索引分割槽鍵和排序鍵可以由字串、數字或二進位制表屬性組成。 索引的分割槽鍵是與表分割槽鍵共享的屬性。排序鍵可以是字串、數字或二進位制表屬性。
每個分割槽鍵值的大小限制 它們沒有大小限制。 它對與分割槽鍵值關聯的已索引項的總大小施加 10GB 的最大限制。
線上索引操作 您可以在建立表時生成它們,將它們新增到現有表中,或刪除現有的索引。 您必須在建立表時建立它們,但不能刪除它們或將它們新增到現有表中。
查詢 它允許覆蓋整個表和每個分割槽的查詢。 它們透過查詢中提供的分割槽鍵值來處理單個分割槽。
一致性 這些索引的查詢僅提供最終一致選項。 這些查詢提供最終一致或強一致選項。
吞吐量成本 它包括讀取和寫入的吞吐量設定。查詢/掃描會消耗索引的容量,而不是表的容量,這也適用於表寫入更新。 查詢/掃描會消耗表讀取容量。表寫入會更新本地索引,並消耗表容量單元。
投影 查詢/掃描只能請求投影到索引中的屬性,不能檢索表屬性。 查詢/掃描可以請求未投影的那些屬性;此外,還會自動獲取它們。

在建立具有二級索引的多個表時,請依次進行;這意味著建立一個表並等待它達到 ACTIVE 狀態,然後再建立另一個表並再次等待。DynamoDB 不允許併發建立。

每個二級索引都需要某些規範 -

  • 型別 - 指定本地或全域性。

  • 名稱 - 它使用與表格相同的命名規則。

  • 鍵模式 - 僅允許頂級字串、數字或二進位制型別,索引型別決定其他要求。

  • 投影屬性 - DynamoDB 會自動投影它們,並允許任何資料型別。

  • 吞吐量 - 為全域性二級索引指定讀取/寫入容量。

每個表的索引限制仍然是 5 個全域性索引和 5 個本地索引。

您可以使用DescribeTable訪問有關索引的詳細資訊。它返回名稱、大小和項數。

注意 - 這些值每 6 小時更新一次。

在用於訪問索引資料的查詢或掃描中,提供表和索引名稱、結果所需的屬性以及任何條件語句。DynamoDB 提供了以升序或降序返回結果的選項。

注意 - 刪除表也會刪除所有索引。

廣告