mysql - 配置文件页面 View 的数据模型

标签 mysql database database-design relational-database

假设我有一个网站,其用户配置文件具有可公开访问的页面(每个配置文件各有多个页面)。我想向用户显示页面查看统计信息(例如,每页、特定时间段等)。什么是存储页面浏览量的好方法?

这是我的想法:

Table Page Views
================
- Id (PK)
- Profile Id (FK)
- Page Id (FK)
- Timestamp

恐怕此解决方案无法扩展。有什么建议吗?

最佳答案

您的直觉是正确的,写入数据库的扩展性不是特别好。您希望避免针对每个页面请求的数据库事务。

请注意,扩展真的是您关心的问题吗?如果是这样,假设是一个 Internet 站点(而不是内部站点),请跳过自己的滚动并使用 Google Analytics 或类似工具收集命中数据。然后获取该数据并对其进行处理以生成每个配置文件的总数。

但是,如果您真的执意要自己动手,请考虑改用日志解析。如果您可以枚举每个配置文件的 URL,请使用该信息和您的 Web 服务器日志来生成点击总数。 Microsoft's Log Parser等工具,它可以处理很多不同的格式,或者像 sed 和 grep 这样的 *nix 命令行工具是你的 friend 。

如果枚举不可能更改代码以记录您需要的信息并处理该日志文件。

有了日志,使用批处理生成结果并使用 MySQL 的 LOAD DATA 将这些结果插入数据库.

关于我推荐的你自己的方法的最后说明 - 如果你有一个集群环境,这将比每个请求的数据库事务更好地扩展很多

关于mysql - 配置文件页面 View 的数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241553/

相关文章:

PHP - 按 MySQL 字段值过滤

php - 我试图创建一个后端,但出现 "HTTP error 500 "这个错误。我如何解决这个错误

database-design - Facebook墙的数据库结构

mysql - 根据类型合并或分离表格

mysql - 单表继承和字段列表中的未知列

mysql - 使用不同的参数重复 SQL 查询

database - 如何从行偏移量中选择最近 24 小时的行

database - 一张大 table 或许多小 table

mysql - 数据库设计问题——内容的可见性

database - 表中的功能依赖和多值依赖