我正在做一个网站分析项目。用户将能够使用我的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 命名。
您认为这样的项目的最佳方法是什么?
它确实会有很多数据输入,在这种情况下,您需要做的是将数据拆分到不同的表甚至数据库中,以确保您不会弄乱您的主数据源。您很少需要查询尚未处理的大部分数据,因此您的目标是:
- 创建一个数据库,用于存储未处理的数据以供以后参考
- 创建一个已处理的数据库,该数据库编译聚合表中的所有可能数据
- 创建将生成聚合数据的脚本
- 创建一个应用程序,如果您绝对需要实时数据,该应用程序可以从当前未处理的数据中查找数据。
我去看了一个很好的会议,并对其进行了评论,发布在我的博客上,您可能想阅读它:
http://crazycoders.net/2012/03/confoo-2012-continous-data-processing/
祝你好运
visitorIP
和vistorCountry
可以移动到不同的表。这些价值观肯定会重复。您想在pageViewData
中保留什么样的数据?