【发布时间】:2014-11-02 21:39:22
【问题描述】:
我的应用程序跟踪来自远程站点上显示的广告的点击,并将用户重定向到产品销售页面。
我目前正在使用 MySQL 来存储点击信息(日期、使用的链接、IP 地址、广告商发送的自定义数据等)。表格变得如此之大,以至于不再符合我们的需求,即:
高吞吐量(该应用每天处理 5 到 1000 万次点击,预计还会增长)
能够按日期范围报告数据(例如,按国家/地区分组的过去一个月内链接 1 的点击次数)
我最初的想法是将点击转移到 Redis 中(我们只需要将它们存储 30 天,如果它们没有导致销售,它们就会过期)然后创建一个新的 MySQL 表来存储生成的统计信息天,我们只是在每个链接被点击时更新一个计数器。
当我们开始使用统计表时,由于对该表的查询量很大,数据库很快就崩溃了。
最好将点击保留在 Redis 中,并使用单独的 MongoDB(或其他 noSQL DB)进行报告?还是可以使用 Mongo 来存储整个点击(就像我们在 MySQL 中所做的那样)或者音量是否太高?
我还记得读过 MongoDB 不擅长从已删除记录中回收空间,这是否会给我们带来问题,因为无论如何 90% 的点击都会在 30 天后被删除?
谢谢
【问题讨论】: