DynamoDB中BatchGetItem和TransactionGetItems有什么区别?

5

我一直在Stack Overflow上搜索这个问题,但是没有找到答案。(我找到了BatchGetItem和Query的区别,但不是我想要的)。我知道基础知识:

BatchGetItem可以从一个或多个表中请求项目,如果结果集超过100个实体或16MB,则会返回UnprocessedKeys,您可以使用它来查询下一组结果。

"TransactionGetItems"可以从一个或多个表中请求最多25个实体或4MB的项目,如果聚合响应的大小超过4MB,则会出现错误。

那么TransactionGetItems相对于BatchGetItem有什么用途呢?通过查阅文档,我发现TransactionGetItems将在影响相同数据的底层写入发生时失败。这是TransactionGetItems相对于BatchGetItem的主要用途吗?我认为BatchGetItem在相同条件下不会失败?

1个回答

5

TransactGetItem允许您进行全有或全无交易。在交易中的所有GetItem操作都成功或者没有一个成功。如果其中一个失败,将不返回任何数据。此外,TransactGetItem使用 串行化隔离,而普通的BatchGetItem则不会。


啊,特别是可序列化隔离似乎与使用一致性读取的BatchGetItem有所不同?后者在写入之前仍然可以处理批处理中的一些获取操作,而其他获取操作则在之后进行? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接