【发布时间】:2022-01-12 21:19:34
【问题描述】:
如果我在Transactions中只使用set()、update()和delete(),在我看来这与使用Batched-Writes完全一样强>.
有技术上的区别吗?
【问题讨论】:
如果我在Transactions中只使用set()、update()和delete(),在我看来这与使用Batched-Writes完全一样强>.
有技术上的区别吗?
【问题讨论】:
批量写入要么在所有操作中成功,要么全部失败,如果失败则没有机会恢复。您不能在此处应用任何条件逻辑。
一个事务,就像一个批处理,要么完全成功,要么完全失败,所有文档都在事务中发生变化。不同之处在于,您可以在决定要对它们做什么之前,将逻辑应用到要以原子方式与之交互的文档的内容。这就是事务处理程序的用途。您的事务处理程序回调可以获取每个文档并对其进行检查,以便在您做任何事情之前决定您想要做什么。读取和写入都是原子的,如果与同样处理相同文档的其他客户端发生冲突,则会重试该事务。
如果您不需要在更改之前检查文档,则无需进行交易。只需使用批量写入。但是,如果您愿意,您当然可以使用交易。如果您使用事务,则会产生与数据库的额外往返成本以满足事务,这需要额外的时间和带宽。这是主要区别。
【讨论】: