我有一个竞标网站,每个用户都可以为自己的产品出价。 架构:
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"
最好的方法是什么?
答案 0 :(得分:0)
以上是用例的设计。
哈希键:用户ID
范围键:产品ID
每个用户都可以对产品ID进行出价。
此设计允许用户同时对多个产品ID进行出价。
在产品ID和日期上创建全局二级索引(GSI): -
您可以使用GSI使用产品ID和日期查询数据库。在创建GSI时,可以选择仅包含少数属性或主表中的所有属性。
<强>限制: - 强>
产品ID的用户出价历史记录将不可用。例如,如果用户多次更改产品ID的出价,则该数据模型将无法使用该出价。