首页 > 解决方案 > Firebase - 从数据库/firestore 数据执行分析

问题描述

我在我的React Native-Expo 应用程序中使用 Firebase 作为我的身份验证和数据库平台。我还没有决定是使用实时数据库还是 Firestore 数据库。

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

为了在我的具体情况下达到想要的结果,最好的方法是什么?

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

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

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

标签: firebasereact-nativegoogle-bigqueryexpofirebase-analytics

解决方案


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

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

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

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

然而,问题在于:虽然此解决方案为您提供实时性,并且非常可扩展,但它会很快变得昂贵,而且如果您更习惯于 Python 而不是 SQL 来运行分析,那么它可能是一个陡峭的学习曲线。这是我用于较小的 web 应用程序的替代方案,它适用于 <100k 的用户,并且按 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 应用程序查询“分析结果”集合以获取结果

推荐阅读