Firestore 定价模型案例
Posted
技术标签:
【中文标题】Firestore 定价模型案例【英文标题】:Firestore pricing model case 【发布时间】:2021-06-13 12:53:17 【问题描述】:我试图了解 Firebase 定价模型,但我偶然发现了这一点。 https://firebase.google.com/docs/firestore/pricing
文档读取以外的查询
对于文档读取以外的查询,例如对集合 ID 列表的请求,您需要为一个文档读取付费。如果获取完整的结果集需要多个请求(例如,如果您使用分页),则您需要为每个请求支付一次费用。*
假设我从profiles
集合(10.000 个文档)中随机获取 10 个配置文件limit(10)
,这将花费我 10 次读取。
return FirebaseFirestore.instance
.collection('profiles')
.limit(10)
.get()
.then(...)
现在我想在 UI 中显示我的 10 个结果,并且我还想向客户显示一个心形图标,如果客户喜欢或不喜欢个人资料,该图标就会被填充。我会获取用户数据并检查用户是否喜欢 10 个配置文件之一。我已经学会了将用户特定数据存储在同一个集合profiles
中没有意义,假设我们将其保存在一个名为profilelikes
的users
集合子集合中:
return FirebaseFirestore.instance
.collection('users')
.doc('userId')
.collection('profilelikes')
.get()
.then((QuerySnapshot querySnapshot) =>
querySnapshot.docs.forEach((doc)
if ()
// check if profiles from list matches userprofile document
)
);
这对这个案例究竟意味着什么?假设用户在profilelikes
中有 5000 个文档,如果其中 10 个匹配或不匹配,我将在 5000 个文档中搜索。假设其中 2 个匹配:
我们这里有多少成本?
First Query:10 次读取,因为我们这里有 10 个结果 第二次查询:???
【问题讨论】:
只是一个建议,如果您不想担心读/写计数,请坚持使用实时数据库,因为它具有更简单的计费结构。 感谢您的回答。我认为在我的情况下,实时数据库对我来说没有意义,因为它很深而不是平坦的,因为我有很多分层数据,并且实时数据会根据带宽量进行计费,即使我不需要它也会读取整个树。实时数据库适用于简单的数据结构。无论如何,如果有人能指出所提供的案例会发生什么,那将会很有趣:) 【参考方案1】:您在问题中指出的章节实际上涵盖了“除了文档读取之外的查询”。例如,使用 Firestore REST API,您可以列出集合 ID,请参阅 API 文档中的 here。与 Admin SDK 相同,请参见 listCollections()
方法。
就您而言,您实际上是在阅读文档。
所以第一个查询将花费 10 次读取,“因为我们有 10 个结果”,如您所说。
第二个查询 (collection('users').doc('userId').collection('profilelikes').get()
) 将花费 5000 次读取,因为您要查询包含 5000 个文档的整个(子)集合。
结论:您很可能应该调整您的数据模型(非规范化?)以避免获取整个子集合。
PS:值得注意的是minimum charge 用于文档读取的概念:“对于您执行的每个查询,即使查询没有返回任何结果,读取一个文档的最低费用也是如此。”
【讨论】:
感谢您清理问题。如果我对 10 个文档运行查询,从中获取 id 并添加一个 .where("id", "==", true);我的第二个查询包含我的 profilelikes 子集合中的信息? 然后你将读取的数量减少到与 where 过滤器对应的文档数量。如果没有与过滤器匹配的文档,它将计为一次阅读。 太好了,我想你让我终于明白什么时候阅读确实算作阅读。作为结论,这意味着如果我们在具有 5 或 500.000 个文档的任何集合或子集合中进行搜索,则没有区别,如果结果为 0,则只有查询的最终结果被计为一次读取或至少一次读取,对吗? 是的,就是这样。我建议您观看定价文档顶部的视频。此外,如果它解决了您的问题,请点赞我的回答,请参阅***.com/help/someone-answers。谢谢 我当然做到了! ***.com/questions/66456544/…也许你也有一个显示排行榜的智能解决方案?以上是关于Firestore 定价模型案例的主要内容,如果未能解决你的问题,请参考以下文章