当前位置: 首页 > 知识库问答 >
问题:

如何提高Firebase实时数据库的性能

蓬意致
2023-03-14

我们正在快速开发一个应用程序,其中我们需要一次获取超过50K行(在应用程序加载时执行),然后数据将用于应用程序的其他部分进行进一步计算。我们正在使用Firebase实时数据库,我们面临一些严重的性能问题。

它目前需要大约40秒才能加载50K行(目前使用的是免费数据库版本,不确定这是否是原因),但我们也观察到,当多个用户使用该应用程序时,加载50K行开始需要大约1分20秒,Peak达到100%。

您能建议我们如何提高firebase实时数据库的性能吗?

如果我将数据分解为两个集合,但将其保留在同一个 JSON 文件中,这会有帮助吗?

这可能是因为我们正在使用当前免费的数据库版本进行测试吗?

我们已经尝试在1个关键字段的“规则”部分创建索引,但没有太大帮助。我们有什么方法可以改进这一点吗?

共有1个答案

蒋泰
2023-03-14

可能是因为我们正在使用当前免费的数据库版本进行测试吗?

所有Firebase实时数据库实例都在相同的基础结构上运行。基于您的项目所基于的计划,没有任何区别。

你能建议我们如何提高firebase实时数据库的性能吗?

提高性能的最佳方法是只加载要立即显示给用户的数据。在任何客户端应用程序中,用户都不太可能看到50K项,更不用说在应用程序启动时直接查看它们了。

如果您需要50K个条目来向用户显示初始数据,这通常意味着您正在以某种方式聚合这些数据,并向用户显示该聚合。考虑在将数据写入数据库时进行聚合,并将聚合结果存储在数据库中。然后,您可以在每个客户端中只加载结果,而不是让每个客户端自己进行聚合。

要了解更多数据建模技巧,请阅读NoSQL数据建模和观看面向SQL开发人员的Firebase。我还推荐观看《了解云火石》,这是为云火石准备的,但是包含了许多适用于所有NoSQL数据库的好技巧。

 类似资料:
  • 问题内容: 我在公司中多次设计数据库。为了提高数据库的性能,我只寻找标准化和索引。 如果要求您提高数据库的性能,该数据库包含大约250个表以及一些具有数百万个记录的表,那么您将寻找什么不同的东西? 提前致谢。 问题答案: 优化逻辑设计 逻辑级别是关于查询和表本身的结构。首先尝试最大程度地发挥这一作用。目标是在逻辑级别上访问尽可能少的数据。 拥有最高效的SQL查询 设计支持应用程序需求的逻辑架构(例

  • 我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 我一直在努力弄清楚为什么会出现错误:java.lang.NullPointerException:试图对空对象引用调用虚拟方法“java.lang.String java.lang.object.ToString()” 以下是错误的完整描述: 2021-03-15 14:15:49.906 244 47-24447/com.goldencrestit.Quicky2 D/AndroidRuntim

  • firebase数据库最近的更新似乎有一些变化。我的项目在firebase\u数据库:^7.0.0版本下运行良好,但在firebase数据库的更新版本中,我无法更新项目代码。 以下是v7的工作版本 firebase\u数据库^9.0.12上的同一代码出现错误。我收到的错误在`(DataSnapShot snap)async{…}上错误是 无法将参数类型“Future Function(DataSn

  • 我从一个开发人员那里得到了一个基于Firabase Realtime DB的Ionic应用程序的代码。当尝试启动应用程序时,im会收到此错误消息。 [ng]src/app/data-service.service.ts(14,36)中出现错误:错误TS2339:类型“{apikey:String;authDomain:String;databaseUrl:String;ProjectId:Stri