簡體   English   中英

使用相同的主鍵 Dynamodb 存儲數據

[英]Storing Data With Same Primary Key Dynamodb

我正在嘗試以如下方式存儲數據:

他們有 100 種不同類型的水果,每種水果都有一個“水果”類型的主鍵,因此當我查詢“水果”時,所有水果都會返回。

但是,Dynamodb 要求主鍵是唯一的。

所以我想知道我將如何設計我的數據庫方案以實現這些結果,或者我應該在 AWS 中使用其他解決方案嗎?

來自https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey

有兩種類型的主鍵:

  • 分區鍵 – 一個簡單的主鍵,由一個稱為分區鍵的屬性組成。
  • 分區鍵和排序鍵 – 稱為復合主鍵,這種類型的鍵由兩個屬性組成。 第一個屬性是分區鍵,第二個屬性是排序鍵。

無法在一個 DynamoDB 表中以單個分區鍵的格式存儲相同的主鍵。

為了實現您的需求,您需要在該表上創建一個復合主鍵。

讓我們創建一個新表OganicProduct ,然后我們在這個表上創建一個復合主鍵。 主鍵的屬性名稱是typesubType 現在您需要將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.

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