【问题标题】:What is storage size limitation of an array in Firestore?Firestore 中数组的存储大小限制是多少?
【发布时间】:2018-12-01 07:07:06
【问题描述】:

我想知道 Firestore 中数组的存储大小限制。我想在数组中创建数百万个索引,并将数据存储为 JSON 对象。 数组将如下所示:

   [{id:1,name:'shakti',userdata:2122},
   {id:0.55,name:'shakti',userdata:2122},
   {id:1.58,name:'shakti',userdata:2122},
   {id:2.58,name:'shakti',userdata:2122},
   {id:1.5,name:'shakti',userdata:2122}];

我浏览了文档,但没有得到任何合适的指南there

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    编辑:

    对于 Android,有一个名为 FirestoreDocument-Android 的库,可帮助您检查最大 1 MiB(1,048,576 字节)配额。


    Firestore 阵列没有具体限制。限制出现在文档的情况下,因为在 Firestore 中,文档有限制。因此,在您可以将多少数据放入文档时存在一些限制。根据usage and limits的官方文档:

    文档的最大大小:1 MiB(1,048,576 字节)

    如您所见,单个文档中的数据总量限制为 1 MiB。当我们谈论存储文本时,您可以存储几乎所有内容,但随着您的数组变得越来越大,请注意这个限制。

    因此,只要您在此限制范围内存储数据,就没有问题。如果您认为您可能会克服此限制,我建议您将该数据存储在一个集合中。在这种情况下,没有限制。您可以存储任意数量的文档。

    【讨论】:

    • 如果文档在向数组中添加 30000 个项目后达到其 1MB 配额会发生什么?如果我再次更新数组,应用程序是否会崩溃,或者只是数组更新不起作用但应用程序会顺利运行?
    • @JayeshBabu 在这种情况下,将无法写入超出限制。不会发生崩溃。
    • 嗨@AlexMamo,假设我的数组有 30000 个项目,但我的文档有 100kb。这样就可以了吧?
    • @RegisZanandrea 只要文档的总大小小于 1 MiB,就可以。
    • 20k 字段/索引限制在此处与数组长度无关吗?
    【解决方案2】:

    每个 Firestore 文档可以包含 1,048,576 字节的数据,这个限制不仅包括每个字段名称中的字符数,还包括文档本身的名称。因此,单个文档不可能包含包含数百万个项目的数组,因为文档中几乎没有一百万个可用字节。一个名为fruits 的字符串数组有两个项目"kiwi""orange" 消耗19 字节,如果该数组中的每个项目都是一个大约那么长的字符串,则该数组将最大为大约25 万个项目。

    此时,您可以分发该数组,它只是其他文档中分散负载的其他数组(如 Firestore 文档中描述的分布式计数器)。您可以在写入之前随机选择一个数组/文档,或者保留一个计数器来确定您接下来要写入哪个数组/文档。

    但在这一点上,您最好重新考虑您的数据架构,因为 Firestore 专为包含小型文档的大型集合而构建。而且——就这个答案的写作而言——集合的大小没有已知的限制。

    无论您选择什么,请注意 Firestore 对每个文档的读取和写入收费 ($),因此获取包含 1,000 个项目的数组将花费您 1 次读取,而获取 1,000 个文档将花费您 1,000 次读取。

    【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    相关资源
    最近更新 更多