【问题标题】:firebase realtime database download pricing vs firestore readfirebase 实时数据库下载定价与 firestore 读取
【发布时间】:2023-03-12 10:14:01
【问题描述】:

众所周知,firebase rtdb 的读/写成本是免费的。通过更多的挖掘,我可以发现读/写实际上可以以非直接方式花费。好的,所以我一直在搜索文档和 SO 问题,以弄清楚“FIRESTORE 阅读成本(每 100,000 个文档 0.06 美元)和实时数据库下载(1 美元/GB)成本之间的确切区别是什么”,但遗憾的是我不能没能完成。

RTDB 的存储数据成本(5 美元/GB)非常明确,而且我了解按月计费的价格(这个价格是真的,对吗?)。但究竟什么是下载成本?通过一些 SO 问题和官方文档,我可以发现 rtdb 下载成本与 Firestore 读取成本非常相似,并且通过深入了解最终路径来明确指定 db.ref 路径很重要。但是,如果下载成本都与这些操作有关,例如读取特定字段或路径中的 json 数据,那么 firestore 读取的概念与这些 rtdb 下载操作的概念有什么区别?

如果所有这些事情都已经在地球上发生,那么 RTDB 在“概念阅读”方面的成本永远不会免费,即使我们以直接的方式说话。那为什么有些社区成员和articles 总是说“RTDB 的读/写成本是免费的”?我正在考虑将某些功能从 firestore 迁移到 RTDB,因为众所周知 rtdb 可以免费读写。该功能每月更新数百次 500B 大小的单个路径(firestore 文档)。但是这个问题让我很困惑。

假设 Firestore 的 100,000 次读取是 0.04 美元,RTDB 的下载(看起来像是读取)是 1 美元/GB。在我的计算中,从 firestore 读取 2,500,000 个文档等于从 RTDB 下载一个 GB。这意味着如果单个操作读取大于 400B(大约)的数据,firestore 读取成本甚至比 RTDB 读取成本更便宜。如果单个操作需要每次操作检索大于 400B 的数据,我没有理由使用 RTDB 读取数据。感觉好像被错误的概念给困住了,但要走出这个沼泽并不容易..]:

所以我希望弄清楚RTDB的读/写成本(如果它本身真的是免费的),以及为什么使用RTDB比使用firestore更好的原因,当应用程序必须做很多事情时读取操作数(对我来说,例如,每个用户每月大约有 1,000 次操作检索 400B 大小的数据)。我知道一些 firebase 大师正在为 SO 的 firebase 标签做出贡献.我试图尽可能清楚地写出问题,但认为问题中会有一些不清楚的部分。因此,cmets 将不胜感激!希望这个问题能引起你的注意..提前感谢[:

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    我创建了一个非常方便的spreadsheet calculator,它计算负载的粗略大小和每个用户的缩放比例,同时还考虑了免费层的使用情况。您可以在顶部输入您的值并获得不错的结果。

    但总而言之,Realtime DB 读取每 KB 的成本非常高,而 Firestore 的额定每次读取高达 1mb(潜在),而写入 Realtime 非常便宜,我已经确认除了开销之外,它可以免费写入实时数据库。

    与 Firestore 相比,Realtime db 并不经济,旨在涵盖 Firestore 的一些注意事项。读取(下载)的实时计费是(数据 + 开销)四舍五入到最接近的 kb

    TLDR:

    • Firestore 是高读取、低写入、静态信息的理想选择。
    • 实时更适合低读取、高写入、易失性信息。

    【讨论】:

    • 很棒的答案@DIGIByte。也喜欢计算器。 ?
    • 两个答案都很棒!!感谢你们所有人提供了一个很棒的实用的和很酷的概念性的[:
    【解决方案2】:

    从 Firestore 读取文档时,您需要付费:

    1. Document reads - 在服务器上读取文档的成本。
    2. Network egress - 将数据下载到客户端的成本。

    在大多数情况下,我们发现开发人员使用 Firestore 的成本更多来自文档读取,因为每 GB 的成本相对较低。


    从实时数据库读取数据时,您只需支付:

    1. GB downloaded - 将数据下载到客户端的成本。

    这里的成本主要来自您下载的数据的大小。它与 Firestore 中的 Network egress 非常相似,但每字节读取的成本更高(当然,您无需为服务器本身的读取操作付费)。


    虽然计算器(例如来自 DIGI Byte 的计算器,或 pricing page 上的计算器)会是最好的,但粗略的指导是,如果您执行许多小读写操作,RTDB 会更好选择,而如果您执行更少的写入和/或更多的读取,那么 Firestore 通常是更好的选择。

    【讨论】:

    • 为了让事情更清楚,如果我说下面的列表是真的吗? [: 1. 如果授予客户端用户向 Firestore 发送读取请求,应用程序应为读取和网络出口付费(写入、删除相同) 2. 如果是 rtdb,最好将 rtdb 扩展为具有云功能在服务器端处理大量的rtdb数据,然后将少量的关键数据传回客户端(看起来云功能的数据下载比rtdb便宜得多:0.12美元/GB vs $1/GB),因为来自云功能的出站网络在概念上等于 rtdb 的数据下载!
    • 希望这条评论也能传达给你..!!
    • 1) 当您从 Firestore 服务器读取文档到客户端时,您需要为文档读取操作和出口带宽付费。写入没有出口带宽,写入和删除也没有文档读取费用。 2) 这里没有一概而论的建议,但提到的计算器应该可以为您提供一个比较价格部分的好起点。
    • 谢谢!!我实际上一直在等待你的回答..向大师学习[:
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 2019-08-07
    • 1970-01-01
    • 2018-04-15
    • 2022-08-23
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多