DynamoDB - 返回哪个 ConditionExpression 为假

sur*_*kal 6 amazon-dynamodb

我正在使用如下所示的 PutItem 调用ConditionExpression

attribute_exists(id) AND object_version = :x

换句话说,如果满足以下条件,我只想更新一个项目:

  1. 对象需要存在
  2. 我的更新必须是最新版本的对象

现在,如果检查失败,我不知道哪个条件是错误的。有没有办法获取有关哪些条件为假的信息?可能不是,但谁知道...

Jar*_*eld 5

DynamoDB 中的条件表达式允许对 DynamoDB 对象进行原子写操作,这对于单个对象是高度一致的,即使在分布式系统中,由于 paxos。

一种标准方法是先简单地读取对象,然后在客户端应用程序代码中执行上述检查。如果其中一个条件不匹配,您可以直接知道哪一个无效,而不会发生写入操作失败。让 DynamoDB 也执行此检查的原因是另一个应用程序或线程可能在检查和写入之间修改了此对象。如果写入失败,则您将再次读取该对象并再次执行检查。

另一种方法是在写入之前跳过读取,并在写入失败后读取对象,以检查您的代码以确定实际失败的条件。

需要对表进行一两次额外的读取,因为您想知道哪个特定条件失败。DynamoDB 不提供此功能,因此您必须自己进行检查。

  • 这并没有解决OP的问题。 (2认同)