[英]AWS Dynamo db, choosing key
我正在使用dynamo db存儲客戶發票,其中每個發票都有自己的唯一標識符,稱為invoiceId
。
我的閱讀操作主要是為某個客戶獲取發票。
1-如果我將invoiceId
用作分區鍵,則同一客戶端的發票可能會寫入不同的分區。 這個假設是正確的嗎?如果是,我應該擔心嗎?
2-另一種情況是使用客戶端ID作為分配密鑰(盡可能將分區中同一客戶端的發票分組),並使用invoiceId作為排序關鍵字。 這是正確的方法還是有更好的方法來處理這種情況?
我來自關系數據庫的背景,使用一個組件是多余的復合主鍵似乎很奇怪。
第一點:假設是正確的
要點2:這不是最佳方法,因為Dynamodb僅允許對分區鍵進行查詢操作。 如果您不知道分區鍵,則需要掃描(昂貴的操作-不推薦)表或創建GSI。
我建議的解決方案:-
由於您的用例需要按發票ID獲取數據,因此最好將Invoice id
作為分區鍵。
發票編號-分區鍵
如果您還有另一個用例來獲取client id
所有發票,則可以使用以下命令創建GSI(全局二級索引):
客戶端ID-分區密鑰
發票編號-排序鍵
重要的提示:-
在DynamoDB表中,每個鍵值必須唯一。 但是,全局二級索引中的鍵值不必唯一。
您可以針對您的用例分別查詢主表和GSI。 有關更多詳細信息,請閱讀有關GSI的信息。
另一個重要的一點,GSI將花費您。 僅在有用例的情況下創建GSI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.