Database 在网站上收集用户活动数据
我目前正在开发一个web应用程序,客户端希望在站点上存储有关用户活动的数据。这超出了谷歌分析所能提供的范围 我目前有一个很好的简单的数据库结构,有最少数量的表,这些表都与网站的核心功能有关 我对在数据库模式中添加大量表来记录用户活动有点不满。此外,还通过添加服务来记录用户在网站上的活动,从而搅乱了代码库 他们想要录制的内容示例如下:Database 在网站上收集用户活动数据,database,design-patterns,analytics,Database,Design Patterns,Analytics,我目前正在开发一个web应用程序,客户端希望在站点上存储有关用户活动的数据。这超出了谷歌分析所能提供的范围 我目前有一个很好的简单的数据库结构,有最少数量的表,这些表都与网站的核心功能有关 我对在数据库模式中添加大量表来记录用户活动有点不满。此外,还通过添加服务来记录用户在网站上的活动,从而搅乱了代码库 他们想要录制的内容示例如下: 现有用户的登录 用户显式注销 密码由管理员重置 用户重置/更改密码 更改用户帐户(例如授予/删除管理员权限或 配置文件更改(如果我们有配置文件) 他们可能还想录
- 现有用户的登录
- 用户显式注销
- 密码由管理员重置
- 用户重置/更改密码
- 更改用户帐户(例如授予/删除管理员权限或 配置文件更改(如果我们有配置文件)
- 输入到搜索表单中的搜索参数
- 访问任何(内容)页面
- 选择任何(内容)链接
- 语言选择
- 我是否应该将此功能添加到数据库和项目中
- 我是否应该尽可能多地分离这个,可能存储这个 分析数据在单独的数据库中,或者可能在不同的数据库中 架构,为analytical services创建单独的项目
- 还有其他选择吗
<>我觉得记录这些数据会占用大量的代码库和数据库,而且收益很小。 < p>我至少应该考虑制作一个通用表来记录任何活动。比如:
event_id int,
event_name nvarchar(100),
event_date smalldatetime,
user_id int,
source_page nvarchar(100),
additional_info nvarchar(5000)
你可以让它涵盖我想象中的大多数用例。只是在末尾抛出一个大的文本字段,在这里您可以编写一些序列化的JSON。它只是一个可以存储一些结构化文本的blob
按照同样的思路,您可以创建一个单独的数据库来存储无模式的数据,这将更容易写入,并且如果您以后想要删除登录,就不必修改现有的数据库
还可以查看用于输入日志调用的面向方面编程。这可以保持方法非常干净,同时允许记录日志和事件。对于Java,可能是Aspect J(),对于.NET,可能是PostSharp()之类的东西
不管怎样,就像你说的,我都会实现一些占地面积小、易于删除的功能。将此功能添加到你的项目中。但不是进入你的数据库。 相反,将其存储为日志 我从不喜欢将其放入数据库(尤其是生产数据库)中,因为对该数据库的任何查询都会影响系统性能 但是,您还需要创建一个批处理作业来读取此日志,并从中生成任何必要的数据 如果圆木变得这么大,你应该去走近。使用Hadoop、Hive或任何类似产品