【问题标题】:Storing Click Data in MongoDB在 MongoDB 中存储点击数据
【发布时间】:2014-11-02 21:39:22
【问题描述】:

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

我目前正在使用 MySQL 来存储点击信息(日期、使用的链接、IP 地址、广告商发送的自定义数据等)。表格变得如此之大,以至于不再符合我们的需求,即:

  • 高吞吐量(该应用每天处理 5 到 1000 万次点击,预计还会增长)

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

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

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

最好将点击保留在 Redis 中,并使用单独的 MongoDB(或其他 noSQL DB)进行报告?还是可以使用 Mongo 来存储整个点击(就像我们在 MySQL 中所做的那样)或者音量是否太高?

我还记得读过 MongoDB 不擅长从已删除记录中回收空间,这是否会给我们带来问题,因为无论如何 90% 的点击都会在 30 天后被删除?

谢谢

【问题讨论】:

    标签: mysql mongodb redis nosql


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。澄清一下,我没有考虑在 Redis 中单击然后将其移至 Mongo。我想知道是否最好将点击存储在 Redis 中并将生成的统计信息存储在 Mongo 中 - 类似于此处:link Vs 将整个点击存储在 Mongo 中,可能将相关信息作为子文档。作为背景,这里是提到 Mongo 空间效率差的文章link。谢谢。
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多