适合这种项目使用的数据库结构?

时间:2012-06-11 15:18:29

标签: php database data-structures

我正在开展一个网站分析项目。用户可以使用我的API(如Google Analytics)记录/查看其网站流量报告。

问题是,我不确定如何设置数据库结构。

我已经为用户管理目的设置了一些表格:

用户表:|| userID || userName || datReg ||

帐户信息表:|| accountInfoID || userID || fName || lName || emailAddress ||

所以我觉得我可以这样做:

网站分析表:|| analyID || userID || visitorIP || visitorCountry || pageviewCount || pageviewData

但这会扩展吗?我的意思是,使用这种结构,每可能会插入数万行,所以几个月后不会导致非常缓慢?

根据上述想法,我会针对每次独特访问运行类似于此的查询:

INSERT INTO siteAnaly (userID,visitorIP,visitorCountry,pageviewCount,pageviewData) VALUES ("the accounts holders user ID","the visitors IP","the visitors country","the visitors apge view count","a JSON array of the visitors pageview URI's")

然后,在每个网页浏览中,将更新从上面的查询插入的那一行。增加pageviewCount并附加到pageviewData

我的另一个想法(你可能认为是愚蠢的)是为每个用户创建一个新表,用用户ID命名。

您认为采用此类项目的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

visitorIPvistorCountry可以移到不同的表格中。这些价值肯定会重复。您希望在pageViewData中保留哪种数据?

答案 1 :(得分:0)

它确实会有大量的数据输入,在这种情况下你需要做的是在一个点上将数据拆分到不同的表甚至数据库中,以确保不会使主数据源混乱。您很少需要查询未经处理的大部分数据,因此您的目标是:

  1. 创建一个存储未处理数据的数据库供以后参考
  2. 创建一个处理数据库,用于编译聚合表中的所有可能数据
  3. 创建将生成聚合数据的脚本
  4. 如果您确实需要,可以创建一个可以从今天的未处理数据中查找数据的应用程序。
  5. 我去看了一个很好的会议并对其进行了评论发布在我的博客上,您可能想要阅读它:

    http://crazycoders.net/2012/03/confoo-2012-continous-data-processing/

    祝你好运