Firebase功能与Firestore SDK的性能差异

时间:2018-09-05 00:54:30

标签: firebase google-cloud-firestore

我们的团队正在开发一个移动应用,目前正在将(Firebase)Firestore用于我们的后端。我们使用Firebase Functions封装了每个数据库访问权限,以清理返回给客户端应用程序的对象。

与直接访问Firestore相比,这种方法是否会带来任何(额外的)不可忽略的开销?

3 个答案:

答案 0 :(得分:1)

是,但不是,具体取决于您的用例。

如果您的用户数量较少,且使用量较低(根据给定的配额),则建议应用云功能。如documentation中所述,Firebase Cloud Function在资源限制,时间限制和费率限制方面提供了很大的配额,并且价格合理,尤其是对于Spark计划(FREE)。

Firebase Pricing

使用Cloud Functions的优势是它具有高速可扩展计算/处理单元,可缩短处理时间。与使用手机CPU相比具有特定功能,在某些情况下,手机具有较低的计算能力(必须考虑各种用户,因为不是每个人都拥有高规格手机),以便提供更好的用户体验(UX),麻烦可以通过Cloud Function来解决!

注意:我确实同意道格(Doug)的观点,其中成本是其中一个因素,但我们还应该考虑性能和其他角度。

答案 1 :(得分:0)

是的,至少现在,您获取数据的路径有两跳而不是一跳。以前,您是使用为返回查询结果而优化的通道直接访问数据库的。现在,您必须支付额外的跳至Cloud Functions的费用,这将使查询成为可能。返回给客户端的结果可能比直接查询的结果还要大。

也许最大的损失就是客户端自动对文档进行客户端缓存(默认情况下在Android和iOS上启用)。如果重复查询,但所有文档均未更改,则可以从缓存中获得立即结果,而不必等待服务器。而且您不必为高速缓存命中而支付文档读取费用。因此,如果您还不缓存结果,那么您还要为每个请求将Cloud Functions 查询的货币成本支付给Firestore。

答案 2 :(得分:0)

是的,但是根据情况,答案可能会有所不同。

如果客户端希望完全按照数据库中的记录来获取记录,则Firebase SDK可能会更快,因为调用Firebase函数没有开销。

如果获取记录后处理繁重,则Firebase Functions + Firebase Admin SDK可能会更快,因为Firebase Functions中的处理单元可能比移动CPU更快。但是,如果请求的响应速度更快,则客户端应用可能会显示一条额外的消息,说明在繁重的处理过程中某些内容已被提取并正在处理中,用户体验是可以接受的。

我能提出的Firebase Functions唯一能赢得胜利的唯一情况是服务器减少了数据大小,因此Firebase Functions引入的开销(包括处理时间)可以通过较短的网络延迟得到补偿。这还具有节省客户数据计划的优势。