【问题标题】:What is the difference between "Transactions" and "Batched-Writes" if only perform a mutation operation in Firestore?如果仅在 Firestore 中执行突变操作,“事务”和“批量写入”有什么区别?
【发布时间】:2022-01-12 21:19:34
【问题描述】:

如果我在Transactions中只使用set()update()delete(),在我看来这与使用Batched-Writes完全一样强>.
有技术上的区别吗?

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    批量写入要么在所有操作中成功,要么全部失败,如果失败则没有机会恢复。您不能在此处应用任何条件逻辑。

    一个事务,就像一个批处理,要么完全成功,要么完全失败,所有文档都在事务中发生变化。不同之处在于,您可以在决定要对它们做什么之前,将逻辑应用到要以原子方式与之交互的文档的内容。这就是事务处理程序的用途。您的事务处理程序回调可以获取每个文档并对其进行检查,以便在您做任何事情之前决定您想要做什么。读取和写入都是原子的,如果与同样处理相同文档的其他客户端发生冲突,则会重试该事务。

    如果您不需要在更改之前检查文档,则无需进行交易。只需使用批量写入。但是,如果您愿意,您当然可以使用交易。如果您使用事务,则会产生与数据库的额外往返成本以满足事务,这需要额外的时间和带宽。这是主要区别。

    【讨论】:

    • 谢谢,这比文档解释得更好。
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 2019-10-26
    • 2019-08-23
    • 2021-08-21
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多