[英]Storing Data With Same Primary Key Dynamodb
我正在嘗試以如下方式存儲數據:
他們有 100 種不同類型的水果,每種水果都有一個“水果”類型的主鍵,因此當我查詢“水果”時,所有水果都會返回。
但是,Dynamodb 要求主鍵是唯一的。
所以我想知道我將如何設計我的數據庫方案以實現這些結果,或者我應該在 AWS 中使用其他解決方案嗎?
有兩種類型的主鍵:
無法在一個 DynamoDB 表中以單個分區鍵的格式存儲相同的主鍵。
為了實現您的需求,您需要在該表上創建一個復合主鍵。
讓我們創建一個新表OganicProduct ,然后我們在這個表上創建一個復合主鍵。 主鍵的屬性名稱是type和subType 。 現在您需要將type的值分別設置為 'fruit' 並將subType 的值分別設置為它們的水果類型。
(請注意,type 和 subType 的組合應該能夠唯一標識此表中的項目。)
因此,現在要列出所有水果,您只需執行查詢即可獲得結果:
aws dynamodb query \
--table-name OganicProduct \
--key-condition-expression "type = :type" \
--expression-attribute-values '{":type":{"S":"fruit"}}'
要獲得具有特定水果類型的單個水果,您可以做的是在關鍵條件表達式中指定一個排序鍵。 現在查詢看起來像:
aws dynamodb query \
--table-name OganicProduct \
--key-condition-expression "type = :type and subType=:fruitType" \
--expression-attribute-values '{":type":{"S":"fruit"}, ":fruitType":{"S":"apple"}}'
請注意,您也可以將蔬菜存儲在同一個表中,因為主鍵的屬性名稱是通用的。 要存儲蔬菜記錄,您只需將type的值設置為蔬菜。
查詢列出所有蔬菜:
aws dynamodb query \
--table-name OganicProduct \
--key-condition-expression "type = :type" \
--expression-attribute-values '{":type":{"S":"vegetable"}}'
查詢獲取給定類型的單個蔬菜
aws dynamodb query \
--table-name OganicProduct \
--key-condition-expression "type = :type and subType=:vegeType" \
--expression-attribute-values '{":type":{"S":"vegetable"}, ":vegeType":{"S":"broccoli"}}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.