簡體   English   中英

AWS Dynamo db,選擇密鑰

[英]AWS Dynamo db, choosing key

我正在使用dynamo db存儲客戶發票,其中每個發票都有自己的唯一標識符,稱為invoiceId

我的閱讀操作主要是為某個客戶獲取發票。

1-如果我將invoiceId用作分區鍵,則同一客戶端的發票可能會寫入不同的分區。 這個假設是正確的嗎?如果是,我應該擔心嗎?

2-另一種情況是使用客戶端ID作為分配密鑰(盡可能將分區中同一客戶端的發票分組),並使用invoiceId作為排序關鍵字。 這是正確的方法還是有更好的方法來處理這種情況?

我來自關系數據庫的背景,使用一個組件是多余的復合主鍵似乎很奇怪。

第一點:假設是正確的

要點2:這不是最佳方法,因為Dynamodb僅允許對分區鍵進行查詢操作。 如果您不知道分區鍵,則需要掃描(昂貴的操作-不推薦)表或創建GSI。

我建議的解決方案:-

由於您的用例需要按發票ID獲取數據,因此最好將Invoice id作為分區鍵。

發票編號-分區鍵

如果您還有另一個用例來獲取client id所有發票,則可以使用以下命令創建GSI(全局二級索引):

客戶端ID-分區密鑰
發票編號-排序鍵

GSI

重要的提示:-

在DynamoDB表中,每個鍵值必須唯一。 但是,全局二級索引中的鍵值不必唯一。

您可以針對您的用例分別查詢主表和GSI。 有關更多詳細信息,請閱讀有關GSI的信息。

另一個重要的一點,GSI將花費您。 僅在有用例的情況下創建GSI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM