Node.js 如果单个集合的写入操作速率超过1000次/秒,会发生什么情况?
目前,我想建立一个通知系统,我有一个名为Node.js 如果单个集合的写入操作速率超过1000次/秒,会发生什么情况?,node.js,firebase,google-cloud-firestore,google-cloud-functions,firebase-admin,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,Firebase Admin,目前,我想建立一个通知系统,我有一个名为notifications的根集合,在每个通知文档中我将有receivers子集合 我将在我的callable cloud函数中使用如下批处理操作在receivers子集合中编写一些用户标识 let batch = db.batch() querySnapshot.docs.forEach( snapshot => { const data = snapshot.data() const userI
notifications
的根集合,在每个通知文档中我将有receivers
子集合
我将在我的callable cloud函数中使用如下批处理操作在receivers
子集合中编写一些用户标识
let batch = db.batch()
querySnapshot.docs.forEach( snapshot => {
const data = snapshot.data()
const userID = data.userID
let notificationReceiverRef = db.doc(`notifications/${notificationID}/receivers/${ID}`)
batch.set(notificationReceiverRef, {
userID: userID,
createdAt: now
})
})
await batch.commit()
但我刚刚阅读了firestore中的一些限制,据说我应该将单个集合的写入操作速率保持在1000次操作/秒以下
在我的应用程序中,我可能会在receivers
子集合中写入大约10.000-50.000个文档,以保留接收通知的记录
但我不知道,如果使用像我上面写的代码那样的批处理操作,我是否会超过1000次操作/秒。云计算功能会自动管理这一点吗?如果没有,如果我超过这个限制会发生什么
我不知道如何保存大量记录,但也要遵守限制。如果超过任何写入限制,写入将失败。您应该检查错误,如果出现错误,请重试
您必须仔细考虑如何实际重试。几乎可以肯定的是,它不会按照您想要的方式自动为您管理。您可以将云函数配置为启用重试,但这仅适用于由事件驱动的后台函数,它将重试整个事件。HTTP触发器没有重试配置-必须从客户端重试这些触发器。如果我将
用户
作为根集合,则在其拥有的每个用户文档的收件箱
子集合中,如果我将10.000个文档写入10.000个不同的用户收件箱
子集合中。我是否会达到每秒1000次写入操作的限制,因为它位于同一个根用户
集合中?否,子集合与父集合不相关,仅按路径名相关。每个都有各自不同的索引。