gpt4 book ai didi

mysql - 实时统计 : MySQL(/Drizzle) or MongoDB?

转载 作者:IT老高 更新时间:2023-10-28 13:09:23 27 4
gpt4 key购买 nike

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

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

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

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

您对此有何看法?有什么理由比 MySQL/Drizzle 更喜欢 MongoDB 吗?还是无动于衷?如果你是我们,你会用哪一个?

谢谢你,亚历山德罗

最佳答案

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

我曾在社交媒体领域为一家大型在线广告商工作过,我可以证明实时报告确实很痛苦。尝试每天“累积”5 亿次展示已经是一项挑战,但尝试实时进行是可行的,但它存在一些重大限制。 (就像它实际上延迟了 5 分钟 :)

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

进行此类报告的真正关键是要了解数据结构与 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 } }。您可以自动更新整个文档。报告实际上是很自然的。您已经有了一个包含每小时或分钟级数据点的数组。

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

关于mysql - 实时统计 : MySQL(/Drizzle) or MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com