当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《实时统计:MySQL(/Drizzle)还是MongoDB?》经验,为你挑选了1个好方法。

我们正在开发一个项目,该项目将包含某些操作(例如点击次数)的实时统计信息.每次点击,我们都会记录日期,年龄和性别(这些来自Facebook),位置等信息.

我们正在讨论存储这些信息的最佳位置,并将它们用于实时统计.我们将显示汇总统计信息:例如,点击次数,男性/女性点击次数,点击次数除以年龄组(例如18-24岁,24-30岁......).

由于我们在网站上使用的是MongoDB,我的同事认为我们也应该在其中存储统计信息.但是,我更喜欢基于SQL的数据库来完成这项任务,比如MySQL(或者可能是Drizzle),因为我认为在进行数据聚合等操作时,SQL会更好.虽然解析SQL的开销很大,但我认为MySQL/Drizzle实际上可能比No-SQL数据库更快.使用INSERT DELAYED查询时插入也不慢.

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

你怎么看待这件事?有没有理由比MySQL/Drizzle更喜欢MongoDB呢?还是无动于衷?如果你是我们,你会使用哪一个?

谢谢,亚历山德罗



1> Gates VP..:

所以BuddyMedia正在使用其中一些.Gilt Groupe用Hummingbird(node.js + MongoDB)做了很酷的事.

在社交媒体领域为一家大型在线广告客户工作,我可以证明实时报道真的很痛苦.试图每天"累积"500万次展示已经是一项挑战,但尝试实时工作,但它带来了一些重大限制.(就像它实际上延迟了5分钟:)

坦率地说,这类问题是我开始使用MongoDB的原因之一.而且我不是唯一一个.人们正在使用MongoDB进行各种实时分析:服务器监控,集中式日志记录以及仪表板报告.

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

这是关键,可能会指出您使用MongoDB执行此操作的正确方向.看看以下数据结构:

{
  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, ... ],
  ...
}

这里显然有一些调整,适当的指数,可能是数据+性别+年龄_id.但这是MongoDB点击分析的基本结构.更新展示次数和点击次数非常简单{ $inc : { clicks_hour.0 : 1 } }.您可以自动更新整个文档.报告实际上非常自然.您已经拥有一个包含每小时或每分钟数据点的数组.

希望这能指出你正确的方向.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有