我们正在一个 MySQL 数据库上运行一个自定义 OpenX 广告服务器,该服务器大约为 . 100 万次点击/天。我们需要存储所有这些点击信息并根据它显示统计信息。
目前,所有点击信息每 2 天汇总一次,并删除特定点击信息。但是我们希望为我们的附属公司提供一项新功能,该功能将允许他们设置动态跟踪 ID (TID),并且基本上可以基于此跟踪他们的点击和转化。
所以,问题是我们的点击表每天至少会增长 100 万个条目,我们需要能够搜索这个表并显示一个用户在特定时间段内的所有点击,按 TID 分组我上面提到的,还是按TID搜索的。
我查看了 MySQL 分区,它似乎是一个很好的解决方案,但是,我不确定它是否仍能在巨大的数据库(可能有数十亿个条目)上正常工作。
您认为解决此问题的正确方法是什么?
编辑:
根据您的回答,我现在正在考虑一个混合解决方案。
我们已经有一个“LIVE”表,当在维护时聚合点击时,条目会从该表中删除,如下所示:
表:点击次数
查看器_id | ... | 日期时间 | 附属ID | ... | 时间
(我跳过了此时不重要的列)
在维护时,我可以将所有内容移到另一个看起来几乎相同的月度表中,例如Table: clicks_2012_11,它具有date_time、affiliate_id和tid的索引,并由affiliate_id分区。
所以现在,当一个会员想要查看他过去 2 个月的统计数据时,我知道我必须查看表格:clicks_2012_10和表格:clicks_2012_11(我将时间范围限制为最多 2 个月)。因为我有按affiliate_id分区的表,所以只会从2 个表中搜索所需的分区,我现在可以列出过去2 个月内有任何活动的所有TID。
您如何看待这种方法?有什么明显的问题吗?我是否在没有充分理由的情况下过度复杂化了事情?