Amazon web services 确保dynamodb中的单个激活项

Amazon web services 确保dynamodb中的单个激活项,amazon-web-services,amazon-dynamodb,dynamodb-queries,amazon-dynamodb-index,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,Amazon Dynamodb Index,我有下表: 属性1 属性2 属性3 属性4->重复数据消除键 属性5->状态 乌伊德 在这个基础上为CRUD建立了一个服务 项目的初始状态为“活动”。如果调用CRUD APIcreateItem,我需要检查是否已经存在具有相同的dedupe key和'active'状态的项,如果已经存在,我需要修改此项,否则需要为具有'active'状态的相同dedupe key创建一个新项 我不能在重复数据消除键上使用GSI并确保单例特性。当应用程序写入或删除表中的项时,该表上的所有全局辅助索引都将使用最

我有下表:

  • 属性1
  • 属性2
  • 属性3
  • 属性4->重复数据消除键
  • 属性5->状态
  • 乌伊德
在这个基础上为CRUD建立了一个服务

项目的初始状态为“活动”。如果调用CRUD API
createItem
,我需要检查是否已经存在具有相同的
dedupe key
'active'
状态的项,如果已经存在,我需要修改此项,否则需要为具有'active'状态的相同dedupe key创建一个新项

我不能在重复数据消除键上使用GSI并确保单例特性。当应用程序写入或删除表中的项时,该表上的所有全局辅助索引都将使用最终一致的模型进行异步更新。”

但是,还有其他方法可以实现这一点:

  • 使用不同的表以将重复数据消除键(作为主键)和活动项UUID作为唯一属性。因此,DAO与这两个表进行交互。这很痛苦,因为DAO必须处理2个表(处理原子性可能很困难)

  • 将重复数据消除作为主键,时间戳作为排序键。除活动项外,保留时间戳0。并对其执行条件更新,直到其状态更改。 但是,使用这种方法,我将失去在UUID上执行batchLoad/batchGet的能力,因为重复数据消除键是PK

  • 任何想法都将不胜感激。
    谢谢。

    该表的当前主键是什么?UUID和重复数据消除密钥之间的关系是什么?如果没有gsi,您如何使用“通过重复数据消除”密钥?埃文陶的一致性有问题吗?我现在还没有桌子。UUID和重复数据消除密钥之间没有关系。GSIs最终的一致性将是一个问题,因为并发执行createItem将创建多个状态为“active”的项。对此有何想法?