0

我正在做一个网站分析项目。用户可以使用我的 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 命名的新表。

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

4

2 回答 2

0

visitorIP并且vistorCountry可以移动到不同的表。这些值肯定会重复。你想保存什么样的数据pageViewData

于 2012-06-11T15:21:48.393 回答
0

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

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

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

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

祝你好运

于 2012-06-11T15:24:57.090 回答