firebase - 云任务运行时 Firestore 并发限制
问题描述
我正在尝试使用云任务每分钟执行一次云功能。只是想象一下,firestore 中有一个包含 200 万份文档的集合。所以我要每分钟阅读这个集合。
Document 1-->
PerformAt: 3rd of September 2021 at 09:00AM
Status: Scheduled
Document 2-->
PerformAt: 3rd of September 2021 at 01:00PM
Status: Scheduled
Document 3-->
PerformAt: 2nd of September 2021 at 03:00PM
Status: Done
云功能--->
const query = db.collection('tasks').where('PerformAt', '<=', now).where('Status', '==', 'scheduled');
在这种情况下,它将读取 200 万个状态已调度的文档。我的问题是,
如果我每分钟运行一次,它会影响我的应用程序的性能吗?
每个数据库只允许 100 万并发用户,因此该云功能将考虑为 200 万并发用户还是仅一个用户?
阅读大约 200 万份文件需要多少时间?
另外,我现在需要在 PerformAt <= 时将状态更改为完成。在这种情况下,Firebase 仅允许每个数据库写入 10,000 个。我能做些什么来克服这种情况?
解决方案
请限制自己在以后的每个帖子中回答一个问题。
是的,您运行的任何代码都会影响您的应用程序的性能。但是如果不确切知道您的代码做了什么,就不可能说出它是如何受到影响的。
Cloud Functions 的每个实例仅计为一个连接。
查询的性能仅取决于查询返回的文档数量(及其大小),而不取决于集合中的文档数量。因此,如果每分钟只有几个任务满足
.where('PerformAt', '<=', now).where('Status', '==', 'scheduled')
条件,则只读取那些文档。每秒10,000 次写入的限制。你不太可能达到这个目标,但如果你这样做了,就没有办法绕过它(这是限制的本质)。
推荐阅读
- android - 如何在 Unity 中为 Android / OculusGo 平台修复“PlatformNotSupportedException:此平台不支持操作”
- snakemake - 结合 Snakemake 中不同规则的输出
- python - 使用python检测平面图图像的最外角
- python - 遍历命令中的字符串
- python - 使用 pyinstaller 时找不到 PyQt5 的 QtWebEngineProcess.exe 错误
- javascript - 如何在本机反应中将值从一个选项卡发送到另一个选项卡
- cloud - Informix 4gl 可以在 Azure 上运行吗?
- python - 在 python 中使用带有调试模式的 vscode 和多处理
- typescript - 在 Typescript 中,检查对象是否包含接口的所有属性以及接口中未定义的其他属性的最佳方法是什么?
- glib - 每个 GMainLoop 可以有多个 GMainContext 吗?