Firebase / Firestore交易会创建内部队列吗?

时间:2019-09-09 18:47:51

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

我想知道交易(https://firebase.google.com/docs/firestore/manage-data/transactions)是否是可行的工具,可在票务系统等中使用,在该系统中,用户可能试图读取/写入相同的集合/文档,而首先提出请求的人将是首先处理,第二将处理,等等。

如果没有,那么满足Firestore需求的良好结构是什么?

1 个答案:

答案 0 :(得分:1)

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

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

在Firestore和其他Google Cloud产品运行的规模上进行任何形式的订购 都是really difficult problem to solve(请阅读该链接以了解具体情况)。没有简单的数据库结构会强加进行更改的顺序。我建议您仔细考虑订购需求,并提出其他解决方案。

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