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

标签 google-cloud-firestore queue google-cloud-functions

我想知道事务( https://firebase.google.com/docs/firestore/manage-data/transactions )是否是在票务系统之类的系统中使用的可行工具,在该系统中,用户可能会尝试读取/写入同一个集合/文档,并且首先发出请求的人将首先得到处理第二个将被处理第二个等等。

如果不是,对于 firestore 的这种需求来说,什么是一个好的结构?

最佳答案

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

由于您用 google-cloud-functions 标记了这个问题(但在您的问题中没有提及),听起来您可能正在考虑编写一个数据库触发器来处理传入的写入。 Cloud Functions 触发器也不保证负载下的任何排序。

按照 Firestore 和其他 Google Cloud 产品运行的规模进行的任何类型的订购都是 really difficult problem to solve (请阅读该链接以了解这一点)。没有一个简单的数据库结构可以强加更改的顺序。我建议您仔细考虑一下您的订购需求,并提出不同的解决方案。

您可以获得的最好的顺序指示可能是通过向各个文档添加服务器时间戳,但您仍然需要弄清楚如何处理它们。最简单的事情可能是让后端定期查询集合,按时间戳排序,并按该顺序批量处理事物。

关于google-cloud-firestore - Firebase/Firestore 事务是否会创建内部队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859663/

相关文章:

firebase - 仅对使用 Firebase Auth 注册的 "admin"用户进行身份验证

ios - 过滤唯一值以在消息收件箱中显示唯一用户名

firebase - Firestore 附加到数组(字段类型)一个带有服务器时间戳的对象

firebase - 如何在 Flutter 中从 firebase 存储读取和写入文本文件?

java - 在后台线程中运行的可编辑任务队列

node.js - 错误 : The default Firebase app already exists. 真的吗?

javascript - Firebase:Cloud Firestore 触发器不适用于 FCM

php - Laravel 中的异步队列

python - 我不明白这个 Django 文档。我该如何使用这个模块?

firebase - Google Firebase和Flutter公司的电子邮件仅在注册时使用