Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 配置文件页面视图的数据模型_Mysql_Database_Database Design_Relational Database - Fatal编程技术网

Mysql 配置文件页面视图的数据模型

Mysql 配置文件页面视图的数据模型,mysql,database,database-design,relational-database,Mysql,Database,Database Design,Relational Database,假设我有一个站点,其中包含可公开访问的页面的用户配置文件(每个配置文件都有几个页面)。我想向用户显示页面查看统计信息(例如,每页、特定时间段等)。存储页面浏览量的好方法是什么 我是这么想的: Table Page Views ================ - Id (PK) - Profile Id (FK) - Page Id (FK) - Timestamp 恐怕这个解决方案无法扩展。建议?这取决于您希望提供哪种报告 如果你想说“这是在这两个日期之间浏览你页面的人的列表”,那么你必须存

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

我是这么想的:

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

恐怕这个解决方案无法扩展。建议?

这取决于您希望提供哪种报告

如果你想说“这是在这两个日期之间浏览你页面的人的列表”,那么你必须存储你提议的所有数据

如果您只需要说“您的页面在这两个日期之间被浏览了X次”,那么您只需要一个带有页面ID、日期和计数器的表。使用单个更新查询更新每个页面视图上的计数器列。

我想您可以

tblPerson

personid(pk)
activeProfileID(fk)    -- the active profile to use.
timestamp
tblPage

pageid(pk)
data
profileID(pk)
timestamp
tblPersonProfile

pageid(pk)
data
profileID(pk)
timestamp
tblProfilePages

profilePageID(pk)
profileid(pk)
pageid(pk)
isActive

您的直觉是正确的,向数据库写入数据的伸缩性不是特别好。您希望为每个页面请求避免数据库事务

请注意,缩放真的是您关心的问题吗?如果是这样的话,假设你是一个互联网站点(而不是intra),那么就不要滚动你自己的站点,用Google Analytics或类似的工具收集点击数据。然后获取数据并对其进行处理,以生成每个配置文件的总计

<>但是,如果你真的想自己去做,那就考虑日志解析吧。如果可以枚举每个配置文件的URL,请使用该信息和web服务器日志生成命中总数。可以处理许多不同格式的工具,例如,sed和grep等*nix命令行工具,都是您的朋友

如果无法进行枚举,请更改代码以记录所需信息并处理该日志文件

日志就绪后,使用批处理生成结果,并使用MySQL将这些结果插入数据库


关于我推荐的roll your own方法的最后一点,如果您有一个集群环境,这将比每个请求的数据库事务扩展得更好

我没有想到使用谷歌分析。它是否公开了可用于查询的API(我假设是通过URL,这意味着我需要以某种方式设计URL)。此外,这是一个LAMP应用程序,我如何访问Apache日志以进行报告?Google Analytics有一个用于导出数据的API:您将根据URL从中获取数据。Apache日志位置取决于*nix版本:我将使用任何应用程序服务器向grep抛出并解析日志,然后通过sed运行它以获得所需的值。您将如何为这样的场景建模?更新配置文件视图设置counter=counter+1,其中page\u id=X和date=CURRENT\u date多个表是一个好主意吗?一张桌子不是更好吗?