如何构建分析系统

How to structure an Analytics System

我想研究哪些设备向服务器发送请求 (PHP - Wordpress)。 因此,每次服务器收到请求时,都会存储一条新记录(包含用户代理字符串)。 我还需要能够通过 Google 表格读取记录。

我是新手,在开始编码之前,我正在研究以确定哪种“基础设施”更好,并且需要我付出更少的努力。 我在这里问是因为也许有人在过去做过这件事并且可以说出他的见解。

Note: I don't have access to the browser's javascript . Every request the server receives is redirected to an external website. I can use only the server to orchestrate all things.


这是我想到的一些路径:

  1. 基本

在 Wordpress 自定义中存储记录 table。

在 Wordpress 中创建一个 REST API 从 table 中读取数据。

当我想分析数据时,我通过 Google 应用程序脚本从 Google 表格中的 REST API 获取记录。

  1. Firebase 基础

在 Firebase 中存储记录 table。

当我想分析数据时,我通过 Google 应用程序脚本从 Google 表格中的 Firebase REST API 获取记录。

这里我很难理解如何在 Google 控制台中设置身份验证、客户端 ID、API 密钥等。(以前从未使用过)

  1. Google 工作表作为 DB.

当服务器收到请求时,服务器会使用 PHP.

中的某种 Google Sheets Client SDK 直接向 Google Sheets 发送另一个请求

这里我很难理解如何在 Google 控制台中设置身份验证、客户端 ID、API 密钥等。(以前从未使用过)

  1. Webhook方式.

当服务器收到请求时,服务器会向托管在 Netlify 或类似软件中的 Cloud Function 发送另一个请求。

Cloud Function 将记录发送到 Google Sheets,使用 Node.js.

中的某种 Google Sheets Client SDK

这里我很难理解如何在 Google 控制台中设置身份验证、客户端 ID、API 密钥等。(以前从未使用过)


你会选择哪条路? 你会做一些不同的事情吗?

有什么好的资源可以帮助您了解 Google 生态系统中的身份验证?

安全方面,现在我只存储User Agent字符串,但将来我可以存储更敏感的,所以使用这个项目学习一些可靠的东西是个好主意。

请注意,您极不可能在任何分析中只对设备信息感到满意,但在这个回答中,我假设您比我更了解您的情况。

您的选择:

  1. 听起来不错。原始,但确定。

  2. Firebase/GA 很大。你可能不想让事情复杂化。他们需要非常确定的数据结构,以便能够提供最全面的见解。但是稍后,当您想要取回数据时,就没那么简单了,因为那些 APIs 是为了非常严格的 ETL 过程,需要准确理解它们的所有内部定义。如果您的目标只是获得几个指标和几个维度,而不是其他任何东西,那将会很烦人。

  3. 当 sheet 未打开时,我从未使用过 Sheets APIs。我总是使用它的内部伪 JS 来移动数据。好吧,就看你的了。

  4. 这只是 3 的变体。

好的,现在我会怎么做。

您在后端有(或应该有)访问日志。如果您所描述的正是您所需要的,我建议将访问日志按原样提供给 G sheets 并完成它。这将是最稳固和最可靠的实现,如果正确完成,它甚至不依赖于您的后端语言,而只依赖于网络服务器日志记录。

好吧,如果您的设置通常会绕过网络服务器(这真的很烦人),那么您用于管理端点的框架可能会类似于登录。那我就用那个。

如果没有,我也会尝试在前端进行跟踪,但你提到那不是一个选项,所以我不会再考虑这个想法了。

最后,如果这些选项不是真正的选项,那么您应该考虑是否需要在您的脚本中或不在您的脚本中即时聚合数据。而且你不太可能想要那个,因为那会非常烦人。

到那时,未聚合的数据将占用大量 space。 G Sheets 无法处理那么多的原始数据。出于同样的原因,使用本地数据库也可能不是一个好主意。

因此,您最好使用 GA API 通过他们的测量协议(有多个库可用)来传输数据。 GA 能够将其数据提供给 BQ,并且从 BQ 可以更容易地将数据提供给任何地方。好吧,我相信 G sheets 已经有多个脚本和插件可以从 GA 中获取聚合数据并在其中制作类似半实时仪表板。