Firebase 读写速度

标签 firebase firebase-realtime-database nosql

假设我正在创建一个交易应用程序。

  • 我将如何存储交易?

    我知道我需要非规范化。

  • 我是否首先将交易保存在交易节点中 分贝级别?或者我会将交易节点保存在每个用户的节点下吗?或者我会将其保存在第一级的事务节点和 每个用户节点下的交易节点?

  • 如果用户更改了姓名,我将如何反射(reflect)这些信息 用户和商家的交易历史都发生变化吗?

    我觉得最好的方法是将其放在数据库的第一级,并让用户查询整个列表以查看他们的交易历史记录。

  • 但是,如果我有很多用户,这不是会非常慢吗?

    或者 firebase 是否足够智能、足够快来处理此类查询。

  • 用户的互联网速度是否会影响此查询,尤其是在 移动设备?

  • 您能否在加载交易时在屏幕上显示交易?

  • Firebase 索引可以让我轻松执行这些非常大的数据集查询吗?也许对每个交易中包含的用户用户名建立索引?

最佳答案

首先,我建议使用永远不会改变且始终唯一的userId,而不是使用用户名过滤交易数据的历史记录。

其次,我认为全局保存交易(不使用'/userId')更好。因为:

  1. 出于会计原因,我们需要能够汇总所有交易
  2. 如果您认为使用索引后查询也会很慢,您可以考虑使用 limitToFirst() 加载部分查询结果,就像 web 中的分页(android 中的无限滚动)一样。有很棒的教程here

关于Firebase 读写速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46713598/

相关文章:

arrays - $firebaseArray 中的 For 循环

javascript - 按日期分隔符对邮件进行排序

php - 需要一个带有 php 的 DynamoDB 的完整示例

java - Hbase方案设计-最佳实践

javascript 将谷歌云存储桶公开给特定的 URL 或网站

firebase - 如何将图像添加到 Firestore

android - SHA 证书 firebase 调试/发布

java - 如何以编程方式使用 JSON 文件中的数据填充 Firebase?

mysql - 存储大量日志数据的最佳方式

android - 每次应用程序重新启动时避免登录屏幕