如何让我的应用快速读取上传到 Firebase 的 20,000 个文档?

问题描述 投票:0回答:1

我创建了一个测验应用程序,涉及从 Firebase 读取大约 20,000 个文档(其中包含其他字段),其中有需要在应用程序的各种活动中通过搜索栏搜索的名称。我尝试创建一个主要活动(应用程序启动后立即执行),该活动将允许我第一次加载并保存设备缓存中的所有这些文档,以便随后不必重新加载所有这些文档划痕。对大约 3,000 个文档执行此操作是有效的,但现在应用程序无法再处理它并崩溃,因为缓存容量不足。

这是我尝试实现的活动,我也尝试过设置20,000个文档的限制,但仍然不起作用。

https://gist.github.com/quizballinfo/38d5f7a25d2d1256b65da7088ee1460b

https://gist.github.com/quizballinfo/38d5f7a25d2d1256b65da7088ee1460b

我想创建一种更有效的方法,仅在第一次加载所有文档,以便后续启动更快。

firebase indexing document
1个回答
0
投票

对大约 3,000 个文档执行此操作是有效的,但现在应用程序无法再处理它并崩溃,因为缓存容量不足。

这是预期的行为。一次读取 3k 个文档可以说是一个非常大的数据量。

这是我尝试实现的活动,我也尝试设置20,000个文档的限制,但仍然不起作用。

如果你在读取 3k 文档时发生崩溃,那么你将永远无法读取 20k 文档。

我想创建一种更有效的方法来仅在第一次加载所有文档。

您无法加载如此大量的数据,因为它永远无法装入内存。

我创建了一个测验应用程序,涉及从 Firebase 读取大约 20,000 个文档(其中包含其他字段),其中有需要在应用程序的各种活动中通过搜索栏搜索的名称。

如果您需要下载所有可以创建搜索功能的文档,那么我建议您使用以下选项之一。

第一个解决方案是实现一个第三方库来为您进行搜索。它可以是AlgoliaElastic SearchTypesense。如果您不想自己实现,那么您可以使用相应的 Firebase 扩展:

如果您不想实现第三方库,那么我建议您对数据进行非规范化,并“仅”将要搜索的名称存储到单个文档中。如果由于 1 MiB 限制,这些名称不适合单个文档,则将这些名称存储到多个文档中。通过这种方式,您将始终只下载您想要搜索的必要数据。

© www.soinside.com 2019 - 2024. All rights reserved.