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

时间:2019-01-30 21:57:49

标签: firebase react-native google-bigquery expo firebase-analytics

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

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

要达到我特定情况下想要的结果,最好的方法是什么?

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

在这种情况下,GCP 推荐的最佳做法确实是将 Firestore 数据定期导出到 BQ (BigQuery),同时您可以在那里运行分析计算。您还可以在用户输入一些数据时,将其发送到 Pub/Sub 并使用 GCP Dataflow 的 streaming templates 之一将数据流式传输到 BQ,并以近乎实时的方式获得所有数据。

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

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