适合用于此类项目的数据库结构


A suitable database structure to use with this kind of project?

我正在做一个网站分析项目。用户将能够使用我的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 命名。

您认为这样的项目的最佳方法是什么?

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

  1. 创建一个数据库,用于存储未处理的数据以供以后参考
  2. 创建一个已处理的数据库,该数据库编译聚合表中的所有可能数据
  3. 创建将生成聚合数据的脚本
  4. 创建一个应用程序,如果您绝对需要实时数据,该应用程序可以从当前未处理的数据中查找数据。

我去看了一个很好的会议,并对其进行了评论,发布在我的博客上,您可能想阅读它:

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

祝你好运

visitorIPvistorCountry可以移动到不同的表。这些价值观肯定会重复。您想在pageViewData中保留什么样的数据?