繁体   English   中英

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

[英]How to improve performance in Firebase real time database

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

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

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

如果我打破两个集合中的数据但将其保存在同一个 JSON 文件中,这会有帮助吗?

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

我们尝试在 1 Key 字段的“规则”部分创建索引,但这并没有太大帮助。 我们有什么办法可以改善这一点吗?

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

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

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

改善性能的最好方法是仅加载要立即显示给用户的数据。 在任何客户端应用程序中,用户不太可能查看5万个项目,更不用说在应用程序启动时直接看它们了。

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

有关更多数据建模技巧,请阅读NoSQL数据建模,并观看SQL开发人员的Firebase 我还建议您观看“ 了解Cloud Firestore” (适用于Cloud Firestore),但其中包含许多适用于所有NoSQL数据库的重要技巧。

将您用于查询的field添加到实时数据库规则。

例如

{
  "rules": {
    "v1": {
            "history": {
                ".indexOn": "refresh_at"
            }   
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM