我正在尝试存储三个主要列以保存用户的分数
User DateTime Score
1 2018-01-01-09-00 5
1 2015-11-24-11-32 2
2 2014-11-24-11-32 1
3 2016-11-24-11-32 3
我需要/更容易的功能:
UpdateExpression: "ADD #C :num"
以原子方式递增(他们可以在一分钟内得分5次,而不是得分为5分)当我需要时,复杂的位得到:
由于以下原因导致并发症:
我能看到这样做的唯一方法就是有两个表:
User DateTime compound
(partition) (range key)
1 2018-01-01-09-00 1#2018-01-01-09-00
1 2015-11-24-11-32 1#2015-11-24-11-32
2 2018-01-01-09-00 2#2018-01-01-09-00
3 2016-11-24-11-32 3#2018-01-01-09-00
表2:
user#DateTime Score
(partition key) (range key)
1#2018-01-01-09-00 5
1#2015-11-24-11-32 2
2#2014-11-24-11-32 1
3#2016-11-24-11-32 3
在哪里做两个查询 1.获取以(2018-01 *)开头的DateTimes列表 2.获取所有返回日期时间的分数。
然而,这似乎过多,因为有多个查询。
是否有一些明显的错过,因为它似乎是dynamodb作为简单查找的主要候选者。
我不想单独保存日期的每个阶段,例如2018,2018-01,2018-01-01,2018-01-09因为这看起来非常过分重复并且需要写入更新。
理想情况下,我会有一个复合范围键 得分#dateTime,但由于得分必须以原子方式更新,我无法做到这一点。