php - 日志文件与数据库在哪里保存用户事件数据以供分析?

标签 php database machine-learning bigdata

我目前正在开发一个具有登录功能的网站。我需要跟踪用户事件,例如登录-注销时间、浏览总持续时间、IP 地址、位置等。所有数据将用于分析和安全目的。

现在,有两个选项(至少我知道)可以将如此庞大的数据保存在数据库或日志文件中。

保存在数据库或日志中正确的做法是什么? 。

如果有人想知道,我正在使用PHP作为编程语言,使用MySQL作为数据库,并且没有任何数据分析经验。

最佳答案

值得回到这里并分析需求。

通常,业务用户需要了解网站以业务为中心的行为。昨天有多少人登录?他们在网站上花费了多少时间?他们买东西了吗?

满足此要求的常见方法是配置分析包(例如 Google Analytics )。分析包擅长理解网站上的行为,并且可以轻松配置以更改报告和分析结构。然而,他们通常不太擅长报告个人行为,并且他们的报告基于“网络行为” - 您必须将“点击添加到购物车按钮”翻译为“买了东西”的业务概念。

客户支持用户和应用程序逻辑需要了解个人的具体行为。当客户支持接到电话说“救命,我无法登录”时,他们可能想知道该用户最后一次登录是什么时候?如果应用逻辑模块想要知道这个用户是否对产品X感兴趣,就需要知道他们是否看过相关产品。

此数据通常作为关系数据包含在数据库中,因为它很容易查询。然而,关系模型很难修改,而且非技术用户无法编写SQL查询,因此显得更加僵化。

技术用户需要了解应用程序的运行状况,并能够调查事件。

此信息通常存储为日志文件。日志文件通常很大——一个中等繁忙的网站每天会创建数GB的apache日志——并且只能使用专用的日志解析工具进行查询;这些针对的是技术用户,而不是商业人士。日志文件通常会保留较短的时间(几周或几个月),并且每天轮换一次。因此,回答“用户 x 上次登录是什么时候”的问题可能需要解析一个月的日志文件,如果一个月后删除日志,则可能无法得到正确的答案。但是,日志语句很容易插入代码中,并且更改日志记录(例如,仅记录“错误”,而不记录“调试”消息)也很容易。

因此,对于“分析”(我假设这是由业务用户进行的) - 插入数据库或使用网络分析。出于“安全目的”(我假设这是为了技术用户进行事件分析)- 日志文件。

关于php - 日志文件与数据库在哪里保存用户事件数据以供分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824543/

相关文章:

php - 错误 : Transport config "Smtp" is missing in cakephp 3. x

php - 清理 PHP 密码字符串

MySQL 查询 - 更优雅的选择?在 SELECT 中的多个表中引用相同的列名

matlab - 异常检测

php - AWS SDK for PHP 可以在不禁用 osx 上的 SSL 验证的情况下工作吗?

php - 如何在XPath中注册PHP函数?

php - 避免电子商务场景中的竞争条件

php - 使用 MySQLi 时调用非对象的成员函数

machine-learning - Tensorflow - 权重噪声正则化

r - 获取 Tensorflow 占位符的形状