DynamoDB 中的 BatchGetItem 和 TransactionGetItems 之间有什么区别?

Dor*_*ter 6 amazon-dynamodb

我一直在寻找这个问题,但没有找到答案。(BatchGetItem 与 Query 我确实找到了,但不是我要找的)。我确实知道基础知识:-

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

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

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

Kir*_*irk 5

TransactGetItem 允许您进行全有或全无交易。事务中的所有 GetItem 操作要么成功,要么都不成功。如果失败,则不会返回任何数据。此外,TransactGetItem 使用可序列化隔离,而普通的 BatchGetItem 则不使用。