Что такое предварительно дистиллированные данные или данные, агрегированные во время выполнения, и почему MongoDB не очень хорош в этом? - PullRequest
1 голос
/ 14 июля 2011

Что представляет собой пример данных, которые «предистиллированы или агрегированы во время выполнения»?(И почему MongoDB не очень хорош в этом?)

Это цитата из документов MongoDB:

Традиционный бизнес-анализ.Хранилища данных больше подходят для новых, специфичных для проблем баз данных BI.Тем не менее, обратите внимание, что MongoDB может очень хорошо работать для решения нескольких проблем с отчетностью и аналитикой, когда данные предварительно перегоняются или агрегируются во время выполнения, но классическая бизнес-аналитика с ночной пакетной загрузкой, хотя и возможна, не обязательно является подходящим местом.

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

Давайте возьмем что-то простое, например, подсчет кликов.Есть несколько способов сообщить о кликах.

  1. Храните клики в одном месте.(файл, таблица базы данных, коллекция) Когда кому-то нужна статистика, вы запускаете запрос к этой таблице и агрегируете результаты.Конечно, это не очень хорошо масштабируется, поэтому обычно вы используете ...
  2. Пакетные задания.Сохраняйте свои клики, как в # 1, но суммируйте их каждые 5 минут или около того.Когда люди хотят запросить сводную таблицу.Обратите внимание, что у «кликов» могут быть миллионы строк, но у «сводки» может быть только несколько тысяч строк, поэтому выполнять запросы намного быстрее.
  3. Подсчет кликов в режиме реального времени.Каждый раз, когда есть щелчок, вы увеличиваете счетчик где-то.Обычно это означает увеличение «сводных» таблиц.

В настоящее время большинство крупных систем используют # 2.Есть несколько систем, которые особенно хороши для этого (см. Hadoop).

# 3 трудно сделать с базами данных SQL (например, MySQL), потому что происходит много блокировок диска.Однако MongoDB не постоянно блокирует диск и имеет гораздо лучшую пропускную способность записи.

Таким образом, MongoDB очень хорош для таких «счетчиков реального времени».Это то, что они подразумевают под predistilled or aggregated in runtime.

Но если MongoDB имеет большую пропускную способность записи, разве это не должно быть хорошо при выполнении пакетных заданий?

Теоретически,это может быть правдой, и MongoDB поддерживает Map / Reduce.Тем не менее, MongoDB Map / Reduce в настоящее время работает довольно медленно и не наравне с другими механизмами Map / Reduce, такими как Hadoop.Кроме того, поле Business Intelligence (BI) заполнено многими другими инструментами, которые очень специфичны и, вероятно, лучше подходят, чем MongoDB.

0 голосов
/ 14 июля 2011

Что представляет собой пример данных, которые «предварительно дистиллированы или агрегированы во время выполнения»?

Примером этого может быть любой отчет, для которого требуются данные из нескольких коллекций.

А почему MongoDB не очень хорошо с ним работает?

В базах данных документов нельзя объединить, и из-за этого сложно создавать отчеты.Обычно сообщает, что данные собираются из многих таблиц / коллекций.

А так как mongodb (и база данных документов в целом) хорошо подходят для распределения и денормализации данных, лучше заранее создавать отчеты, когда это возможно, и просто отображать данные из этой коллекции во время выполнения.

Для некоторых задач / отчетов предварительная сборка данных невозможна, в этом случае mongodb предоставляет вам карту / уменьшение, группировку и т. Д.

...