Firebase:对大型数据集的查询

2023-12-04

我正在使用 Firebase 来存储用户个人资料。我尝试在每个用户配置文件中放入最少量的数据(遵循有关结构化数据的文档中建议的良好实践),但由于我有超过 220K 个用户配置文件,因此在以 JSON 格式下载所有用户配置文件时,它仍然代表 150MB。 当然,随着我打算拥有更多用户,它会变得越来越大:)

我无法再对这些用户配置文件进行查询,因为每次这样做时,我都会达到 100% 的数据库 I/O 容量,因此当前使用该应用程序的用户执行的一些其他请求最终会出错。

据我所知,在使用查询时,Firebase 需要考虑列表中的所有数据,从而从磁盘读取所有数据。而且150MB的数据似乎太多了。

那么在达到 100% 数据库 I/O 容量之前是否存在实际限制?在这种情况下,Firebase 查询到底有什么用处? 如果我只有少量数据,我实际上不需要查询,我可以轻松下载所有数据。但现在我有很多数据,当我最需要它们时,我不能再使用查询了......


这里的核心问题不是查询或数据的大小,而是当不经常查询数据时将数据预热到内存(即从磁盘加载数据)所需的时间。这可能只是一个开发问题,因为在生产中此查询可能是更常用的资产。

但如果目标是提高初始负载的性能,那么这里唯一合理的答案是查询更少的数据。 150MB 是很重要的。尝试通过无线网络在计算机之间复制 150MB 文件,您就会了解通过互联网发送该文件或从文件服务器将其加载到内存中的感觉。

这里很多取决于用例,您没有包括在内。

假设您有相当标准的搜索条件(例如,您搜索电子邮件地址),您可以使用索引单独存储电子邮件地址以减少查询的数据集。

/search_by_email/$user_id/<email address>

现在,您只有字节来存储每条记录的电子邮件地址,而不是每条记录 50k,这是一个要小得多的有效负载以预热到内存中。

假设您正在寻找强大的搜索功能,最好的答案是使用真正的搜索引擎。例如,启用私人备份并导出到 BigQuery,或使用 ElasticSearch(请参阅手电筒举个例子)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase:对大型数据集的查询 的相关文章

随机推荐

  • 如何观察数组变化并查看添加了哪些新元素?

    onArrayChanged function obj keyName value What is value here exactly property array each 当一个元素被添加到数组中时 我如何知道添加了哪个值 同样 当从
  • 使用自定义 IEqualityComparer 对字典进行 XML 序列化

    我想序列化一个具有自定义的字典IEqualityComparer 我尝试过使用DataContractSerializer但我无法得到Comparer进行序列化 我不能使用BinaryFormatter因为this 我总是可以做这样的事情
  • 线程共享 Perl

    我写了一段代码 我需要使它成为多线程 一切正常 但每个循环重复 4 次 use LWP UserAgent use HTTP Cookies use threads use threads shared 1 threads 4 my gro
  • MSDN 文档错误? “如果该过程是共享的,则其所有局部变量都会自动共享。这包括静态变量。”

    我正在查看有关 VB Net 很少使用的 MSDN 文档Static局部变量的关键字 我的问题是not关于静态的工作原理 我个人计划避免使用它 因为它似乎会给未来没有注意到副作用的程序员带来悲伤 我的问题是关于文档中的这个声明 任何局部变量
  • 将 Bootstrap 类名添加到 Typo3 表

    是否可以将 Bootstrap 表类添加到 Typo3 v6 1 中创建的表中 我在创建 Table 类型的页面时注意到设置 Additional CSS Class 但是 它不会向我的表添加任何类 它不支持添加多个类 逗号 空格等在保存时
  • 如何使用新的 Material Design 图标主题:轮廓、圆形、双色调和锐利?

    谷歌已经对其进行了改造材料设计图标有 4 个新的预设主题 轮廓 圆形 双色调和锐利 除了常规的填充 基线 theme 但不幸的是 它没有说明如何使用新主题 我去过通过 Google Web Fonts 使用它通过包含链接 然后使用所需的图标
  • 关闭 docker-compose 后 Docker 卷不保留数据

    我正在使用 docker compose 组合 2 个图像 tomcat 与我的应用程序和数据库 postgres 我的撰写文件如下所示 version 3 services tomcat build tomcat img ports 80
  • as_bytes 函数的精确定义

    我在阅读时发现了这个函数 但找不到它的定义CPP参考 Bjarne stroustrup 的编程原理 它的使用方式如下 ifs read as bytes x sizeof int 我明白如何read有效 但你仍然可以帮助我to bytes
  • 在 webkit 浏览器中使用 标签时,带有嵌入位图的 SVG 不显示位图

    我正在尝试使用带有嵌入位图的 SVG 作为导航元素 这个想法是让它更加适合移动设备 我已经为 IE8 及更低版本设置了 PNG 后备 不知何故 嵌入的位图不会在基于 webkit 的浏览器中显示 没有嵌入位图的 SVG 显示就可以了 我可以
  • 动态更改 Highstock 中的范围

    我想动态更改图表中的范围 如果我从大值变为小值 一切都会正常 但如果我想再去更大的地方 就什么也不会发生 你可以在这里尝试一下 http jsfiddle net Charissima wkBwW 15 单击按钮 Range 50 然后单击
  • 使用 python 进行敏感性分析

    我正在尝试执行敏感性分析 并且我开始学习 python 所以我想在 python 中完成此任务 我发现了一个名为SALib但我真的不知道如何实现我自己的方程 例如 这是我的等式 ET 0 0031 C R 209 t t 15 1 首先我必
  • 使用 jQuery 从子域获取 JSON

    I have user1 mydomain com and user2 mydomain com域 我用api mydomain com通过 AJAX JSON 处理我的 Web 应用程序 所以 我想发出一个 POST 请求user1 my
  • 拨打号码时启动我的应用程序

    我想在拨打新号码或联系人号码时将我的应用程序显示为一个选项 我已关注这个话题 我有一个具有单一活动的应用程序 这是清单文件
  • 如何在 MySQL 中搜索 Soundex() 子字符串?

    我的 Joomla 有问题 3 集成搜索引擎 该引擎的索引器在索引内容时创建所谓的 soundex values 例如 测试对象 测试对象1 测试对象2239923 文本对象 它们都具有相同的 soundex 值 T23123 现在我的问题
  • 使用 C# 更改文件扩展名

    我有很多文件类型 pdf tiff jpeg bmp ETC 我的问题是如何更改文件扩展名 我试过这个 my file c my documents my images cars a jpg string extension Path Ge
  • PHP 脚本(嵌入式或其他形式)的安全性

    我对嵌入 PHP 代码的 HTML 网页 以 webpage php 形式存在于服务器上的网页 或可能被 HTML 页面引用的 PHP 脚本 即 PHP 脚本实际上不是网页的一部分 以 something php 形式存在于服务器上 并由
  • 使用 crontab 运行 PHP 脚本

    我知道 SO 是针对问题的 但无论我查了多少教程 我都无法得到我的crontab工作 我正在建立一个网站 该网站将依赖于crontab每天晚上重置我的数据库中的特定设置 这是我的crontab file Edit this file to
  • 如何在结构体字段中表示不透明类型

    我正在使用 genawater 箱来实现生成器函数 单线程 多任务 我有这段代码来创建一个新线程 并向其传递一个生成器 但我正在努力 找到如何表示impl Future输入那个gen 返回 use genawaiter rc gen Gen
  • getView 中的自定义 ArrayAdapter setBackground

    我正在开发一个 ListActivity 它将显示一堆数字 权重 我想更改 ListView 中特定行的背景 为此 我创建了 ArrayAdapter 类的自定义实现 并重写了 getView 方法 该适配器接受数字列表 并将数字 20 的
  • Firebase:对大型数据集的查询

    我正在使用 Firebase 来存储用户个人资料 我尝试在每个用户配置文件中放入最少量的数据 遵循有关结构化数据的文档中建议的良好实践 但由于我有超过 220K 个用户配置文件 因此在以 JSON 格式下载所有用户配置文件时 它仍然代表 1