基本上,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