【问题标题】:Does a heavy document take much time in load from Firestore?从 Firestore 加载繁重的文档是否需要很长时间?
【发布时间】:2026-02-07 00:35:01
【问题描述】:

我在我的应用程序中同时使用Firebase DatabaseFirestore。我将用户数据(如姓名、电子邮件、uid 等小细节)作为 Users 存储在 firestore 中的集合文档中。它完美地工作。我在 firebase 数据库中创建了一个节点作为 Friends 来存储用户的好友列表。因此,每当用户打开应用程序时,它都会从 firestore 中的 Users 中调用他的信息,并从 firebase 数据库中的 Friends 中调用他的朋友列表。

现在事情是通过这种方式从FirestoreFirebase database 调用数据。所以这意味着它们是 2 个请求/读取,一个到 Friends 节点,另一个到 Users 集合中的一个文档。我认为如果我将好友列表作为Array 存储在用户文档中会更好。所以我只会在 Firestore 中读取 1。但我认为当他的朋友列表的数组增加 100 多个元素时。还有一两个类似的数组列表。那么从用户集合中检索文档会花费很多时间吗?或不?哪种方法更好?

这是我当前数据库结构的图像UsersFriends

【问题讨论】:

  • 请不要将实时数据库作为链接或图像。如果链接断开,它将使问题无效。将问题中的内容作为一小段文字包含在内。要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON,然后复制并粘贴您的结构的 sn-p。
  • 您似乎在询问我们对什么最适合您的应用的意见。如果不了解整个用例,就无法回答。如果您在处理某段代码时遇到困难,那我们可以提供帮助的。请花点时间查看How do I ask a good question?How to create a Minimal, Complete, and Verifiable example
  • 也不清楚你为什么使用两个不同的数据库;使用一个将使应用程序更易于维护和控制。所有 Firebase 产品的速度都非常快,从 Firebase 获取信息取决于您的互联网和数据量。但是,这很重要,一般来说,无论您的数据库有 10 个还是 10,000 个文档/节点,如果您检索 10 个,无论数据总量如何,速度都差不多。例如您获取数据的速度并不取决于存储数据的总量,而是取决于您从中获取了多少数据。
  • 不清楚要问什么 - 让我解释一下原因。如答案中所述,Firestore 文档的最大大小为 1 MiB。这是可以在文档中的数据量,无论配置如何。例如,这种大小的文档通过快速的互联网连接在 0.083 秒内加载。因此,如果数据较少,它可以缩短 0.002 秒。如您所见,这并不是一个真正具有任何影响的数字。此外,具有 100 个字段的文档什么都不是。请记住 1MiB 的限制。那么真正的问题是什么?你能澄清并提供一个具体的例子吗?
  • 哦哦 - 如果您还没有阅读它,请查看来自@dougstevenson top 10 things to know about Firestore 的精彩 Firestore 概述。这与问题有点无关,但您提到了大尺寸数组,并且有一些关于在 Firestore 中组织数据的奇妙指针。

标签: firebase firebase-realtime-database google-cloud-firestore


【解决方案1】:

根据Firestore usage and limits,文档的最大大小为 1 MiB。

这意味着只要你的user文档不超过大小限制,你就可以毫无问题地将friends数据存储在数组中。

如果您打算超过阈值,您可能需要寻找其他选项,例如创建 子集合 以更好地扩展,因为子集合的大小不会以任何方式影响父文档的大小。

【讨论】:

  • 嘿@Farid,我不怕文档的大小。我说的是速度。如果我的文档变得更大,那么它会以相同的速度检索吗?较小的文档检索得更快吗?或者,如果我制作了一个文档的子集,难道不是 2 读取一个用于父文档,另一个用于子文档?如果没有,那么检索父文档不会很重吗?