2017-09-04 76 views
0

我很困惑如何使用DynamoDB表密鑰。該文檔提到HASH(似乎也被稱爲分區)鍵和RANGE(或SORT?)鍵。我試圖大致將這些與我以前對數據庫索引理論的理解結合起來。DynamoDB:密鑰及其含義

我目前主要基於猜測的理解是,HASH鍵實質上是一個主鍵 - 它必須是唯一的,並且自動索引以便快速閱讀 - 而RANGE鍵基本上是您應該應用於其他任何字段的東西你計劃查詢(或者在WHERE-like或排序上下文中)。

然後,這引起局部和全球二級索引的混淆。他們如何發揮作用?

如果有人能夠讓我朝正確的方向發展,考慮到我目前可能有缺陷的理解來自文檔,我會非常感激。

謝謝!

回答

0

基本上,DynamoDB表是基於分區鍵(也稱爲散列鍵)進行分區的。

1)如果表只有分區鍵,那麼它必須是唯一的。 DynamoDB表性能基於分區密鑰。良好的分區密鑰應該是一個分散的值(不應該像舊系統中的RDBMS主密鑰那樣具有序列號作爲分區密鑰)。 2)如果該表具有分區鍵和排序鍵(或者稱爲RANGE鍵),則它們的組合必須是唯一的。它是RDBMS術語中的一種級聯鍵。

但是,DynamoDB表中的用法不同。 DynamoDB在分區鍵之間沒有排序功能(即ORDER BY子句)。例如,如果您有10個具有相同分區鍵值和不同排序鍵值的項目,則可以根據排序鍵屬性對結果進行排序。您無法對任何其他屬性(包括分區鍵)應用排序。

分區鍵的所有排序鍵值將保持在相同的分區中以獲得更好的性能(即物理共存)。

LSI - 表中只能有一個LSI。它應該在您創建表格時進行定義。這是一種替代的排序鍵爲表

GSI - 爲了瞭解GSI,你需要了解掃描和DynamoDB查詢API之間的差異。

SCAN - 是用來當你不知道分區鍵(即全表掃描,以獲得該項目)

QUERY - 當你知道分區鍵被使用(即排序關鍵字可選)

由於DynamoDB成本覈算是根據讀取/寫入容量單位和更好的性能,掃描對於大多數用例的最佳選擇。因此,可以使用基於查詢訪問模式(QAP)的備用分區鍵創建GSI。

GSI Example

相關問題