在MongoDB中存储Click数据

时间:2014-09-09 12:48:25

标签: mysql mongodb redis nosql

我的应用会跟踪远程网站上显示的广告的点击次数,并将用户重定向到产品销售页面。

我目前正在使用MySQL存储点击信息(日期,使用的链接,IP地址,广告客户发送的自定义数据等)。该表变得如此之大,以至于它不再适合我们的需求,这些需求是:

  • 高吞吐量(该应用每天处理5-10万次点击,预计会增加)

  • 能够按日期范围报告数据(例如,按国家/地区分组的过去一个月内链接1的点击次数)

我最初的想法是将点击移动到Redis(我们只需将它们存储30天,如果它们没有导致销售,它们就会过期)然后创建一个新的MySQL表来存储生成的统计数据那天,我们只需在点击时更新每个链接的计数器。

当我们开始使用统计表时,由于对该表的查询量,数据库很快就会崩溃。

最好是保持Redis中的点击次数,并为报告设置单独的MongoDB(或其他noSQL DB)吗?或者Mongo可以用来存储整个点击(就像我们在MySQL中做的那样)或者音量是否过高?

我还记得读过MongoDB不擅长从已删除的记录中回收空间,这是否会引起我们的问题,因为90%的点击量会在30天后被删除?

由于

1 个答案:

答案 0 :(得分:0)

与在Radis中存储并迁移到MongoDB相比,MongoDB足以解决此问题。由于数据量非常大,因此您可以在时间戳或具有高度肉体性的字段上创建索引。这使您可以快速查询,MongoDB也提供有助于生成报告的聚合。我不认为,删除有任何问题。