Firebase-从数据库/ firestore数据执行分析

5 firebase google-bigquery react-native firebase-analytics expo

我在我的React Native-Expo应用程序中将Firebase用作身份验证和数据库平台。我尚未决定是否要使用实时数据库或Firestore数据库。

我需要对从用户收集的每日数据进行统计分析,这些数据存储在数据库中。也就是说,用户输入他们每天的蛋白质摄入量,据此我想计算出他们的每周平均值,预期的每月平均值,并提供蛋白质摄入量过低等食物类型的建议等。

为了在我的特定情况下获得想要的结果,最好的方法是什么?

关于我如何实现这一点,我真的很陌生,并涉足未知领域。我已经读过Firebase Analytics会生成有关应用程序使用情况,无崩溃用户数量等的不同基本分析。但是它可以对自定义事件执行分析吗?我可以为Firebase分析创建自定义事件以跟踪数据库中的某个节点,并从中输出分析吗?然后,当然,如果可以,它是否可以与React Native-Expo一起使用,还是我需要与Expo分离?此外,我读过Firebase Analytics可以与Google BigQuery结合使用。这可以代替我的情况吗?

还有其他方法可以对我存储在Firebase数据库中的数据执行此类数据分析吗?例如,导出数据并使用Python和SciKit Learn

无论您有什么意见或建议,如果您能与我分享,我将不胜感激!

小智 10

您并不孤单 - 许多在 GCP 上构建网络应用程序的人都有这个问题,而且没有单一的答案。

我不太熟悉 Firebase Analytics,但可以回答 Firestore 和自定义分析的问题(例如每周平均蛋白质消耗量)

首先要指出的是,Firestore 与其他 NoSQL 数据库不同,它只是存储。您无法像使用 MongoDB 那样实时执行聚合,因此计算必须在其他地方完成。

在这种情况下,GCP 建议的最佳实践确实是定期将 Firestore 数据导出到 BQ (BigQuery),同时您可以在那里运行分析计算。您还可以,当用户输入一些数据时,将其发送到 Pub/Sub 并使用 GCP Dataflow 的流式传输模板之一将数据流式传输到 BQ,并使所有内容近乎实时。

然而,问题在于:虽然这个解决方案可以为您提供实时性,并且具有很强的可扩展性,但它很快就会变得昂贵,而且如果您更习惯使用 Python 而不是 SQL 来运行分析,那么学习曲线可能会很陡峭。这是我用于较小网络应用程序的替代方案,它可以很好地适应 <10 万用户,并且按 GCP 当前定价每月费用 <20 美元:

  1. 编写一个 Python 脚本,从 Firestore 获取数据(使用 Firestore Python SDK),生成所需的分析,并将结果写回 Firestore 集合
  2. 使用 Flask 或 Django 为该函数创建端点
  3. 在 Cloud Run 上部署该服务器应用程序,防止未经身份验证的调用(您只能从 GCP 内调用它) - 请仅参阅本文的步骤 1 和 2。如果您对此更满意,还可以将 Python 脚本部署到 GCP 的 Vertex AI 或托管 Jupyter 笔记本
  4. 使用 Cloud Scheduler 每 x 分钟调用该函数 - 请参阅这些文档以进行身份​​验证
  5. 让您的 React 应用程序查询“分析结果”集合以获取结果