【问题标题】:MongoDB: If MapReduce is set to non atomic, what happens to newly written data?MongoDB:如果 MapReduce 设置为非原子,那么新写入的数据会怎样?
【发布时间】:2014-12-11 00:04:57
【问题描述】:

我计划构建一个应用程序如下:

  • 节点服务器从移动设备接收日志,并在它们到来时插入到 Mongo。
  • 运行增量 MapReduce 作业以根据数据计算新字段。
  • 然后按分钟、小时、天等预先汇总数据。
  • 一直以来,mongo 中的数据都是由前端可视化应用程序查询的。

我有几个问题:

  • 如果我将 nonAtomic 标志设置为 true,如果在 MapReduce 作业运行时将新数据写入数据库会发生什么情况?
    • 是否写入数据库?如果是这样,我假设这些数据不会包含在当前的增量 MapReduce 作业中。
    • 或者,是数据库被锁定,写入丢失了?
  • 随着 MapReduce 作业和时间聚合的运行,是否可以将数据库中已有的现有数据提供给我的前端?

谢谢!

【问题讨论】:

    标签: mongodb mapreduce schema atomic


    【解决方案1】:

    下面介绍 MongoDB 2.6。 nonAtomic 是 map/reduce 的 out 部分的一个选项。它与 map/reduce 如何从源集合中摄取文档无关,只与它如何将文档输出到目标集合有关。

    Map/reduce 在输入文档(从querysortlimit 创建)上使用光标,因此光标规则适用于要映射/缩减的输入文档。

    nonAtomicfalse 时,在map/reduce 的out 阶段,输出数据库被锁定,因此对该数据库的写入将不得不等待,并且可能由于客户端故障而超时.

    如果nonAtomictrue,当map/reduce 的out 阶段正在运行时,可以从数据库中读取数据并提供给前端,但是由于读取可以与来自的输出交错map/reduce,服务的数据可能处于中间状态。

    【讨论】:

    • “提供的数据可能处于中间状态”是什么意思?
    • 尚未完全缩小
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2019-05-23
    • 2021-06-17
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多