首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时统计: MySQL(/Drizzle)还是MongoDB?

实时统计: MySQL(/Drizzle)还是MongoDB?
EN

Stack Overflow用户
提问于 2011-04-29 18:30:48
回答 2查看 6.6K关注 0票数 14

我们正在开发一个项目,该项目将实时统计一些动作(例如点击)。在每次点击时,我们将记录日期、年龄和性别(这些信息来自Facebook)、位置等信息。

我们正在讨论存储这些信息并将其用于实时统计的最佳位置。我们将显示聚合统计数据:例如,点击量、男性/女性的点击量、按年龄段划分的点击量(例如18-24,24-30...)。

由于我们在网站上到处都在使用MongoDB,我的同事认为我们也应该在它里面存储统计数据。然而,我更倾向于使用基于SQL的数据库来完成这项任务,比如MySQL (或者可能是Drizzle),因为我认为SQL在执行诸如数据聚合之类的操作时更好。虽然有解析SQL的开销,但我认为MySQL/Drizzle实际上可能比No-SQL数据库更快。当使用INSERT延迟查询时,INSERT也不慢。

请注意,我们不需要执行连接或从多个表/集合中收集数据。因此,我们并不关心数据库是否不同。但是,我们确实关心可伸缩性和可靠性。我们正在构建的东西将(希望)变得非常大,并且我们在设计每一行代码时都考虑到了可伸缩性。

你觉得这个怎么样?对于这一点,有没有理由更喜欢MongoDB而不是MySQL/Drizzle?还是无动于衷?如果你是我们,你会用哪一个?

谢谢你,Alessandro

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-01 07:31:47

因此,BuddyMedia正在使用其中的一部分。Gilt Groupe用Hummingbird (node.js + MongoDB)做了一些很酷的事情。

我曾在社交媒体领域为一家大型在线广告商工作过,我可以证明,实时报道真的很痛苦。尝试每天“汇总”5亿次印象已经是一个挑战,但尝试实时地做到这一点是有效的,但它有一些明显的限制。(就像它实际上延迟了5分钟:)

坦率地说,这类问题是我开始使用MongoDB的原因之一。我不是唯一一个。人们正在使用MongoDB进行各种实时分析:server monitoringcentralized logging以及仪表板报告。

在进行这种类型的报告时,真正的关键是要了解MongoDB的数据结构完全不同,您将避免“聚合”查询,因此查询和输出图表将是不同的。在客户端有一些额外的编码工作。

以下是使用MongoDB完成此操作的关键,它可以为您指明正确的方向。看看下面的数据结构:

代码语言:javascript
复制
{
  date: "20110430",
  gender: "M",
  age: 1, // 1 is probably a bucket
  impression_hour: [ 100, 50, ...], // 24 of these
  impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
  clicks_hour: [ 10, 2, ... ],
  ...
}

显然,这里有一些调整,适当的索引,可能会将data+gender+age混入到_id中。但这是MongoDB点击分析的一种基本结构。更新impression和点击{ $inc : { clicks_hour.0 : 1 } }真的很容易。您可以自动更新整个文档。实际上,这是很自然的报道。您已经有了一个包含小时或分钟级别数据点的数组。

希望这能为您指明正确的方向。

票数 13
EN

Stack Overflow用户

发布于 2011-04-30 09:29:58

尽管不要低估了MySQL的强大功能--许多公司已经用它构建了分析工具,但MongoDB在这方面做得很好,而且肯定会比MySQL快。

看看BuddyMedia的Patrick Stokes关于他们如何将MongoDB用于分析系统的演示文稿。

http://www.slideshare.net/pstokes2/social-analytics-with-mongodb

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5830914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档