【问题标题】:Looking for which NoSQL db appropriate in our case [closed]寻找适合我们案例的 NoSQL 数据库 [关闭]
【发布时间】:2014-02-26 11:42:09
【问题描述】:

我们有一个在 PHP + MySQL 中运行的跟踪系统。 我们每天收到大约 8 到 1000 万个条目,这表示在与 clickid 键链接的 3 个表上平均每秒插入约 100 次。 同时,我们可以在这些表上进行选择以搜索 clickid 或在转换后更新一个等... 我们正在寻找一种更好的解决方案,以便能够使用后台并实时获取统计数据,因为现在显示结果大约需要 150 秒。 我们使用 cronjobs 来填写统计表并使用它,这使我们能够非常快速地获得结果,但是这个 cronjob 每小时运行两次,所以我们离实时统计数据还很远......

所以,我们正在考虑改用 NoSQL 解决方案,但我们不确定哪个 nosql 数据库最适合我们的具体情况? 我们应该能够通过大约 8 个不同的键(例如campaignid、publisherid、advertiserid、date,...

我们正在考虑测试 Mongodb 和 Redis,您认为哪一个最合适?在你看来,为什么?我们现在确实有大约 500.000.000 个条目应该作为文档插入,并且每秒钟将插入大约 100 个文档……所以它会快速增加,我们需要保留数据。 您认为使用这么多数据显示结果的时间是什么时候?

另外,您认为拆分成不同的集合更好还是将所有内容保存在一个大集合中更好?

【问题讨论】:

  • SO 不倾向于做推荐,因为他们主观和固执己见的内容和观点。他们往往会制造冗长而徒劳的长期辩论,通常只会导致一场激烈的战争

标签: php mysql mongodb redis tracking


【解决方案1】:

我在 Redis 方面没有丰富的经验,但我可以告诉你一些关于 MongoDB 的事情。

NOSQL 运动更多的是关于可扩展性。因此,如果您想将其保存在一个集合中,则选择非常有限。大多数 NOSQL DB 会将其分解为分片副本集。您可以阅读它here。如果您计划使用 MongoDB,写入速度可能很快,因为它是分片和复制的。如果您不介意数据有点陈旧(取决于分片中主要和次要之间的延迟),MongoDB 可能是一个不错的选择。

通常情况下,您可以写入主数据库并从辅助数据库读取,这与您当前的情况相反,我猜所有事情都发生在一个数据库上。这对你的操作来说应该是显着的性能提升,但具体多少取决于细节。

【讨论】:

  • 感谢 Scrooj 的回答。
  • 如果有帮助,请您接受或点赞吗?
  • 对不起,评论未完成。关于MongoDB,以我们将拥有的文档数量,您认为它目前可以在单台机器上运行吗?另外,您如何推荐索引的结构?有没有更好的单一索引或复合索引?
  • 从技术上讲,您可以在单台机器上运行它..但这不是标准的操作方式。请在docs.mongodb.org/manual/core/… 阅读有关它的信息..按照这些建议,您需要有一个令人难以置信的强大的机器,以满足您的需求..
【解决方案2】:

您实际上可以,both 或两者都不是除了实时获取统计数据。如果您打算完全替换 MySQL,或者您是否打算在它的顶部/旁边构建,我也不太清楚。

我绝对同意 150 秒对于您的仪表板来说是不可接受的响应时间,但在开始进行叉车操作之前,我建议您或许应该考虑一种更简单的方法,例如将实时统计计数器保存在合适的数据存储中(例如 Redis ;))。

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 2012-05-18
    • 2012-07-21
    相关资源
    最近更新 更多