Google cloud firestore Firebase/Firestore事务是否创建内部队列?

Google cloud firestore Firebase/Firestore事务是否创建内部队列?,google-cloud-firestore,queue,google-cloud-functions,Google Cloud Firestore,Queue,Google Cloud Functions,我想知道事务()是否是在票务系统中使用的可行工具,在票务系统中,用户可能试图读/写同一个集合/文档,谁先提出请求,谁就先处理谁,谁就第二个,等等 如果没有,firestore的这种需求的良好结构是什么?事务只需保证事务中涉及的文档之间的原子一致性更新即可。它不能保证这些事务的完成顺序,因为事务处理程序可能会在遇到争用时重试 由于您用google云函数标记了这个问题(但在您的问题中没有提到),所以听起来您可能正在考虑编写一个数据库触发器来处理传入的写入。云函数触发器在加载时也不能保证任何顺序 以F

我想知道事务()是否是在票务系统中使用的可行工具,在票务系统中,用户可能试图读/写同一个集合/文档,谁先提出请求,谁就先处理谁,谁就第二个,等等


如果没有,firestore的这种需求的良好结构是什么?

事务只需保证事务中涉及的文档之间的原子一致性更新即可。它不能保证这些事务的完成顺序,因为事务处理程序可能会在遇到争用时重试

由于您用google云函数标记了这个问题(但在您的问题中没有提到),所以听起来您可能正在考虑编写一个数据库触发器来处理传入的写入。云函数触发器在加载时也不能保证任何顺序

以Firestore和其他谷歌云产品的运营规模订购任何类型的产品都是一种挑战(请阅读该链接了解这一点)。没有一个简单的数据库结构会在进行更改时强加一个顺序。我建议您仔细考虑您的订购需求,并提出不同的解决方案


最好的顺序指示可能是在单个文档中添加一个服务器时间戳,但您仍然需要弄清楚如何处理它们。最简单的方法可能是让后端定期查询按该时间戳排序的集合,并按该顺序成批处理。

感谢您提供了不同的思路。我认为firestore的规模远不及firestore。也许有1000个,但我还是觉得有必要采取不同的方法,所以谢谢你的确认。谢谢道格的澄清。所以现在我明白了,我不能依靠触发器来更新我为去规范化所做的重复副本。由于订单无法保证,我可能会在副本中得到错误的数据。您认为保持副本一致性的最佳方法是什么?