首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是预先提取的数据或在运行时聚合的数据,为什么MongoDB不擅长它?

什么是预先提取的数据或在运行时聚合的数据,为什么MongoDB不擅长它?
EN

Stack Overflow用户
提问于 2011-07-14 14:19:24
回答 2查看 179关注 0票数 1

下面是一个“在运行时预提或聚合”的数据的例子?(为什么MongoDB不能很好地使用它?)

这是从MongoDB文档中引用的内容:

传统商业智能。数据仓库更适合于新的、特定于问题的BI数据库。但是,请注意,MongoDB可以很好地处理一些报告和分析问题,在这些问题中,数据是在运行时预先提取或聚合的--但经典的夜间批处理加载业务智能虽然可能,但不一定是最佳选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-14 18:17:25

让我们来做一些简单的事情,比如计算点击量。有几种方法可以报告点击情况。

  1. 将点击存储在单个位置。(文件、数据库表、集合)当有人想要统计数据时,您可以在该表上运行查询并聚合结果。当然,这不能很好地扩展,所以通常使用...
  2. 批处理作业。按照#1的方式存储点击次数,但每隔5分钟左右汇总一次。当人们想要查询汇总表时。请注意,“点击”可能有数百万行,但“汇总”可能只有几千行,因此查询起来要快得多。
  3. 实时计算点击量。每点击一次,你就会在某处增加一个计数器。通常这意味着递增“摘要”表。

现在大多数大型系统都使用#2。有几个系统特别适合这一点(参见Hadoop)。

#3对于SQL数据库(如MySQL)来说是很难做到的,因为有很多磁盘锁定发生。但是,MongoDB不会经常锁定磁盘,并且往往具有更好的写入吞吐量。

因此,MongoDB最终成为了非常好的“实时计数器”。这就是他们所说的predistilled or aggregated in runtime

但是如果MongoDB有很大的写吞吐量,它不是应该擅长做批处理作业吗?

从理论上讲,这可能是真的,MongoDB确实支持映射/减少。然而,MongoDB的Map/Reduce目前相当慢,无法与Hadoop等其他Map/Reduce引擎相提并论。最重要的是,商业智能(BI)领域充满了许多其他工具,这些工具非常具体,可能比MongoDB更适合。

票数 2
EN

Stack Overflow用户

发布于 2011-07-14 16:14:13

哪一个数据是“在运行时预蒸馏或聚合”的?

这种情况的示例可以是需要来自多个集合的数据的任何报表。

为什么MongoDB不能很好地使用

在文档数据库中,您不能进行连接,因此很难构建报告。通常报告它从许多表/集合中聚合的数据。

而且,由于mongodb (以及一般的文档数据库)非常适合数据分发和反规范化,因此只要有可能,就应该预先构建报告,并在运行时仅显示来自此集合的数据。

对于某些任务/报告,不可能预先构建数据,在这种情况下,mongodb会为您提供map/reduce、分组等。

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

https://stackoverflow.com/questions/6689181

复制
相关文章

相似问题

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