我已经寻找了一段时间,找不到任何确定是否在DeleteItem和PutItem请求中包含ReturnValue.ALL_OLD的确定性内容。
一方面,这是有道理的,因为我可以轻松地想象它必须执行单独的读取(这会打到您的RCU)。
另一方面,响应JSON似乎无法指定消耗的READ容量和消耗的WRITE容量。 DeleteItem和PutItem都消耗写入容量,但是我假设如果指定ReturnValue.ALL_OLD确实消耗了额外的容量,它将被读取,而且我看不到AWS会将两者合而为一。
另一方面,针对UpdateItem的AWS文档特别指出,由于ReturnValue的使用,没有消耗额外的容量,而UpdateItem是基于写入的操作,例如DeleteItem和PutItem。
如果要获取在更新之前或之后显示的项目属性,请使用ReturnValues。对于UpdateItem,有效值为:
无-如果未指定ReturnValues,或者其值为NONE,则不返回任何内容。 (此设置是ReturnValues的默认设置。)
ALL_OLD-返回该项目的所有属性,就像它们在UpdateItem操作之前一样。
UPDATED_OLD-仅返回更新的属性,如它们在UpdateItem操作之前一样。
ALL_NEW-返回该项目的所有属性,它们在UpdateItem操作之后显示。
UPDATED_NEW-仅返回在UpdateItem操作之后显示的更新属性。
除了小型网络外,没有其他与请求返回值相关的开销,也没有接收较大响应的处理开销。不会消耗读取容量单位。
有人从AWS获得任何信息或知道此问题的确切来源吗?
答案 0 :(得分:0)
根据我的经验,我知道这是对的,但是我已经给出了详尽的答案,以便您对此有信心。这是文档的一些相关部分,在此我将对其进行一些评论。
UpdateItem (documentation)
您还可以使用ReturnValues参数在同一UpdateItem操作中返回项目的属性值。
...
除了小型网络外,没有其他与请求返回值相关的开销,也没有接收较大响应的处理开销。没有消耗读取容量单位。
返回的值非常一致。
PutItem (documentation)
您可以使用ReturnValues参数以相同的操作返回项目的属性值。
...
ReturnValues参数由多个DynamoDB操作使用。但是,PutItem无法识别NONE或ALL_OLD之外的任何其他值。
DeleteItem ((documentation)
)除了删除项目外,还可以使用ReturnValues参数在同一操作中返回项目的属性值。
...
ReturnValues参数由多个DynamoDB操作使用。但是,DeleteItem不能识别NONE或ALL_OLD之外的任何其他值。
我认为这里需要注意几件事。
ReturnValues
始终是同一操作的一部分。 / li>
ReturnValues
被多个API方法使用的事实,并且当存在差异时也明确指出了差异。文档没有提到ReturnValues
如何影响消耗的容量。您还可以自己运行一个简单的实验,看看是否正确。
更新:我进行了一些手动测试,并确认带有返回值的写操作不会消耗任何RCU。