[英]Flutter & Firebase: reduce the number of reads with StreamBuilder
[英]Firebase and cartesian public reads
我正在开发一种显示跑步比赛结果的产品。 比赛可能有成千上万的参与者。 因此,在中型活动之后的几天内,可能有 3000 个未经身份验证的用户想要浏览 3000 个结果。
虽然不是每个访问者都会查看所有结果,但 3000 * 3000 的最大损坏将是 9,000,000 次读取,按 0.06 美元(谷歌云定价)将花费 540,000 美元(更新:我是个傻瓜,我错过了“每 100,000 个文档” " 部分,所以这只会是 540 美元)。
显然,我不会为每次访问提供所有 3000 个结果 - 会有分页和限制。 不过,这些成本的可能性本身就有些可怕。
问题:
我读过的每一篇关于这些主题的文章都假定开发人员正在为经过身份验证的用户构建应用程序。
9,000,000 次读取,0.06 美元(谷歌云定价)将花费 540,000 美元
0.06 美元的Firestore 定价适用于 100,000 次文档读取,因此 900 万次文档读取的成本为 540 美元。
除此之外:您应该以确保您读取用户实际看到的数据的方式对数据进行建模。 例如,如果所有用户都将阅读全部 3,000 个文档,请考虑使用数据包将其分发给他们。
实际上,每个用户更有可能只阅读文档的一个子集,而不是全部 3,000 个文档。 因此,请考虑是否可以将他们将阅读的部分组合成更具成本效益的结构。 如果这些是新闻文章:您可以将前 100 篇文章的标题和介绍段落存储在一个文档中,然后在每个客户端启动时将该文档(我们称之为frontpage
)读入。
根据您的应用程序的用例,还有更多方法可以对数据进行建模。 要了解有关如何考虑此类数据建模的更多信息,我建议阅读NoSQL 数据建模并观看优秀的了解 Cloud Firestore视频系列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.