【问题标题】:Is there any limit for multiple writes to the Cloud Firestore?对 Cloud Firestore 的多次写入是否有任何限制?
【发布时间】:2019-11-23 22:31:58
【问题描述】:

我多次新建文档,但没有检查写入是否成功:

for element in data {
   val document = firestore.collection("test")
   document.set(element)
}

有时data 包含数百个元素,我发现在极少数情况下并非每个文档都上传到云端(例如,5% 没有成功上传,但只有最后一个元素)。

多次写入有限制吗?我应该将它包装到批处理中吗?

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore


    【解决方案1】:

    是的,对于大量写入,Firestore 的性能存在限制。

    • 单个文档有一个one update per second limit。在这种情况下,一次编写所有文档肯定比一次编写一个值更好(另外,它的成本会低得多)。文档指出,这个限制有点软,但强烈建议不要超过它。

    • 如果您在一个狭窄的文档范围内写作(或使用新集合),您也可能会遇到performance problems。确保您要么使用自动 ID,要么将它们分散在范围内。

    最后,还有一些 flat out limits 可以写入,包括每秒 500 次写入到集合中,其中文档包含索引字段上的顺序值。

    基于another recent question,批处理充其量是对并行写入的清洗,并且确实增加了复杂性,但它比执行顺序写入更快。该答案还建议不要使用客户端 SDK 进行批量写入(例如,使用 Admin SDK)。

    【讨论】:

    • 感谢您的回答,它解释了很多。我仍然想知道,如果您想根据设备上的用户数据创建超过 500 个文档,该怎么办?将它们分成包含 500 个元素的批次,并在提交下一批之前等待一秒钟?
    • 我实际上并没有尝试过这样做,但是是的,我会采用某种形式的节流阀——还要注意guidance on how to ramp up traffic。同样,如果可能的话,我想确保键是自动生成的(或至少不是顺序的),并避免顺序索引字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2020-01-30
    • 2012-07-03
    • 2021-05-05
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多