如何在dynamodb上设计产品报价历史表?

时间:2016-09-18 07:49:17

标签: amazon-dynamodb

我有一个竞标网站,每个用户都可以为自己的产品出价。 架构:

productId: S // the product, probably the Hash key
day: S // for example: "2016-08-05"
userId: S // the user id that offer his bid for this day
bidPrice: N

我不知道如何设计表格,我需要能够进行这样的查询:

SELECT userId, bidPrice FROM product-history WHERE productId = "sony-tv" AND day between "2016-01-05" AND "2016-05-05"

但是,字段不能是范围键,因为我无法按 productId + day存储多行

我还需要能够为用户更新出价......例如:

UPDATE product-history SET price = 12 WHERE productId = "sony-tv" and day="2016-01-05" and userId = "steve"

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

以上是用例的设计。

哈希键:用户ID

范围键:产品ID

每个用户都可以对产品ID进行出价。

此设计允许用户同时对多个产品ID进行出价。

在产品ID和日期上创建全局二级索引(GSI): -

您可以使用GSI使用产品ID和日期查询数据库。在创建GSI时,可以选择仅包含少数属性或主表中的所有属性。

GSI Link

<强>限制: -

产品ID的用户出价历史记录将不可用。例如,如果用户多次更改产品ID的出价,则该数据模型将无法使用该出价。