我得到了下表,我用一组减少的属性进行了快速模拟
我现在必须在没有 GSI 的情况下解决这两种访问模式,因为我需要表中的当前真实数据。 GSI 需要一些时间来反映表中的当前值。
我的第一个访问模式是获取特定日期范围内的所有约会
我的第二个访问模式是按来源和 originId 获取所有约会
我无法使用 GSI,因为我需要通过发言者 ID 检测约会的冲突。
我使用 electro-db 作为 ORM,这就是为什么 sk 中有 $...它是集合名称。这意味着我无法像 2024-02-02T08:00:00.000Z 那样将其存储在 SK 中。
我可以进行查询并获取演讲者的所有预约,然后过滤预约。我认为这不是一个很好的解决方案,因为这意味着我会加载多年来的约会,即使它们不需要检测是否发生冲突。
对于我想要按 origin 和 originId 加载所有约会的访问模式,查询特定项目集的所有约会对我来说似乎不太正确(我可以使用 batchGetItem 或 getItem 循环来解决这个问题) .
我的问题是冲突的访问模式,我需要加载一定范围内的所有约会。
有什么提示我可以解决这个问题吗?
我可以使用batchGet 结合退避算法通过originId 获取约会的所有项目。 由于 dynamodb 使用字典顺序,因此仅使用复合键开始作为开始范围和结束范围,将复合开始键增加 1 天。 我仍然不确定这是否是最好的方法。也许有人有更好的答案