什么是Firebase根集合与集合中的子集合的性能/计费折衷

时间:2020-01-18 00:08:37

标签: firebase google-cloud-firestore

我知道根级Firebase集合是最灵活和可扩展的,并且子集合无法轻松删除。就计费而言,我知道在使用Firestore时,它大约存储的数据总量,数据库操作以及结果集返回的数据量。但是,假设我要针对包含消息和对话的应用在不同数据库架构方法之间进行辩论:

仅使用根级别的收藏夹:

  • 对话收集字段
    • 成员(用户参考数组)
    • lastReceivedTime
  • 邮件收集字段
    • conversationId(会话文档参考)
    • 收件人(用户参考)
    • 来自(用户参考)
    • 内容
    • 日期时间

使用根集合进行对话和消息子集合

  • 对话收集字段
    • 成员(用户参考数组)
    • lastReceivedTime
    • 邮件子集合
      • 内容
      • dateTime
      • 来自(用户参考)

收集和子收集路线似乎更简单,但是每种方法的Firebase性能/计费/操作专家/缺点是什么?

1 个答案:

答案 0 :(得分:2)

根据Firestore billing的文档:

使用Cloud Firestore时,需要支付以下费用:

  • 您执行的读取,写入和删除的次数。
  • 数据库使用的存储量,包括元数据和索引的开销。
  • 您使用的网络带宽量。

除非您能证明自己的结构变化对这些事物的测量方式有任何变化,否则您的帐单不会有重大变化。

如果您的所有查询仍然读取,写入和删除相同数量的文档,则第1点的帐单将保持不变。

如果您的所有文档仍然包含相同的数据,则第2点的开票将保持不变。

如果前面的两个假设仍然成立,则传输所有内容的网络带宽基本相同,这意味着第2点的计费将保持不变。

由于文档路径的存储和传输方式不同,此处可能会有一些差异。假设更长的文档路径将导致更多的存储和带宽字节,那么更深层次的收集可能会更加昂贵。但是我认为,如果您要优化每个文档的几个字节的数据,则应表明成本差异确实值得您花时间。如果您还没有计算出节省的金额,那么这是过早的优化,可能不值得花时间。做任何事情都可以节省的时间,以便您可以完成更多工作。