【问题标题】:Firestore order of writesFirestore 写入顺序
【发布时间】:2018-04-04 08:43:44
【问题描述】:

我们一直在使用实时数据库来保存来自移动设备(ios、android + now web)的一些数据。我之前询问过其他客户查看数据的顺序是否保证与客户写入这些数据的顺序相同。 (这里Does Firebase guarantee that data set using updateValues or setValue is available in the backend as one atomic unit?,标题有点误导,但答案就在那里)

答案是肯定的,现在我们正在迁移到 Firestore,我想知道这是否也适用于 Firestore?

那么,如果我在客户端 A 文档 1、2 和 3 中写入,是否可以保证客户端 N 会按照客户端 A 写入的顺序观察写入(假设有合适的侦听器)?

这是否也适用于 Cloud Functions?我们将 3 段数据写入单独的文档,然后我们编写第四个文档作为触发函数进行某些处理的一种方式。那么是不是保证触发函数时前面写的3个文档都可用呢?

请注意,这 4 个文档不是写在同一个事务或批次中,而是作为单独的 document.create 调用。

【问题讨论】:

    标签: firebase google-cloud-functions google-cloud-firestore


    【解决方案1】:

    如果在单个客户端中不维护写入顺序,那将是灾难性的。在这样一系列写入之后,客户端不会对系统状态有深入的内部了解,并且必须将每个文档读回以验证写入的内容。

    因此,您可以预期订单会保持不变。但是,如果您不使用事务,则无法保证来自多个客户端的文档写入顺序。

    【讨论】:

    • 感谢您澄清这一点! (感谢您提供的出色产品:))
    • 顺便说一句,这已经过时了? stackoverflow.com/questions/29100656 讨论的是不保证事件的顺序,只是数据最终会一致?
    • 最终一致性与客户端感知彼此变化的方式有关,而不是客户端如何感知自己的变化。使用事务来防止一致性问题。
    • 整个问题是关于客户如何看待彼此的写作。所以我猜客户端 A 观察客户端 B 写入的顺序不能保证与客户端 C 观察到的顺序相同?
    • 您的问题专门要求一个作者和多个读者。应该没有问题。如果同一位置有多个写入者需要保持一致,则使用事务。
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2015-03-22
    • 2014-06-15
    • 2011-01-07
    • 2020-12-25
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多