我有下表:
- 属性 1
- 属性 2
- 属性 3
- 属性 4 -> 重复数据删除密钥
- 属性 5 -> 状态
- UUID。
以及在此之上为 CRUD 构建的服务。
项目的初始状态是“活动”。如果调用了 CRUD API createItem
,我需要检查是否已经存在具有相同de-dupe key
和'active'
状态的项目,如果是,我需要修改此项目,否则为具有“活动”状态的相同重复数据删除密钥创建一个新项目。
我不能在重复数据删除密钥上使用 GSI 并确保单例性质。当应用程序写入或删除表中的项目时,该表上的任何全局二级索引都会使用最终一致的模型异步更新。
但是,还有其他方法可以实现这一点:
有一个不同的表以将重复数据删除键(作为主键)和活动项目 UUID 作为唯一属性。因此,DAO 与两个表进行交互以进行交互。这很痛苦,因为 DAO 必须处理 2 个表(处理原子性可能很困难)。
将重复数据删除作为 PK,将时间戳作为排序键。除活动项目外,保持时间戳为 0。并对其执行条件更新,直到其状态发生变化。但是,使用这种方法,我将失去在 UUID 上执行 batchLoad/batchGet 的能力,因为重复数据删除密钥是 PK。
任何想法,将不胜感激。谢谢。