Mar*_*rcG 5 transactions firebase google-cloud-firestore
我知道Firestore对服务器中的事务使用锁定(云功能),如以下视频所述:https : //www.youtube.com/watch?v=dOVSr0OsAoU
该视频详细说明了事务如何在CLIENT中工作(并且未在其中使用锁),但是对于SERVER事务却做得不好。
以下哪项是正确的(关于SERVER事务)?:
1)文档被get服务器事务中的s 锁定,因此其他服务器事务无法get在第一个事务完成之前将其锁定。
2)文档get在服务器事务中被s 锁定,但仅用于写操作,因此其他服务器事务可以获取它,但不能在第一个事务完成之前对其进行修改。
3)get在服务器事务中,文件不会被s 锁定,只能写入。
编辑:我需要权威资源(Firebase团队中某人的文档或视频或博客中的一些参考文献)。
服务器端事务通常像客户端库一样工作,但不是以该视频中提到的并发模型tehnique而是以锁定数据的传统方式工作。因此,即使您在单个文档或查询上使用事务,这些文档也将被锁定,直到事务完成为止。
要回答您的问题,因为来自云功能的事务是在内部进行的(可能需要几毫秒),因此文档会锁定该时间。这意味着这些文件不能被任何其他交易获取或更改。
1)文档被获取到服务器事务中而被锁定,因此其他服务器事务无法在第一个事务完成之前获取它。
正确。
2)文档被获取到服务器事务中而被锁定,但仅用于写入,因此其他服务器事务可以获取它,但不能在第一个事务完成之前对其进行修改。
另一个事务获取锁定的文档没有任何意义。由于无法更改,为什么要尝试获取此类文档?而且,在交易完成时,锁定的文档可能具有不同的值。在事务开始到完成之间,文档中的某些属性会更改。
3)文件没有被服务器事务锁住,只能写。
一旦云功能运行了事务,该文档即被锁定,并在事务完成时释放该锁定。
编辑:
另一个事务获取锁定的文档确实有意义。它无法更改,但是如果可以读取
我是严格按照写作来指称的。可以读取所有文档,无论文档是否被锁定。
如果您只想读取值
如果您只想读取该值,则无需担心。阅读时没有锁定文件。
也许您需要读取一些值才能做出有关更改另一个文档的决定,甚至只是向用户显示一些信息。
它将工作正常。
另外,根据交易的不同,您不必担心文档是否在下一秒内发生更改。例如,如果用户想知道其银行帐户中的金额,则可以显示一秒钟之前的值,这没问题。
对,那是正确的。读操作没有任何限制,关于您的示例,是的,很好。这也在我的项目之一中进行。
您能指出我的消息来源吗?
那里有许多资源说明了锁定数据的传统方式是如何工作的。正如Todd Kerpelman在喜欢的视频中确认的那样,服务器端事务以这种方式工作。此锁定的目的是服务和保护共享资源(文档)。
我确实需要绝对确定这一点,因此我需要消息来源,或者由Firebase团队的人员进行确认。
我们还希望Firebase团队中的人能花些时间来研究一下,但是我不确定我是否理解您的担忧?您是否认为在进行交易时不会笨拙地阅读文档?要么?
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |