Map-Reduce — применимо только к моделям данных NoSql с ключом и значением?

(У меня есть только концептуальные знания NoSQL, нет опыта работы)

Мне известны следующие типы баз данных NoSQL:

  • ключ-значение, семейство столбцов, базы данных документов (агрегаты)
  • графовые базы данных

Применима ли ко всем парадигма Map-Reduce? Я предполагаю, что нет, так как Map-Reduce часто обсуждается с точки зрения ключей и значений, но поскольку различие между различными хранилищами NoSQL не столь четкое, мне интересно, где Map-Reduce применим, а где нет. И поскольку я нахожусь в процессе оценки того, какую БД использовать для нескольких идей приложений, которые у меня есть, я должен подумать, возможно ли добиться крупномасштабной обработки независимо от того, какое хранилище я использую.


person Sridhar Sarnobat    schedule 06.06.2013    source источник


Ответы (1)


Поддержка уменьшения карты, вероятно, не должна быть тем, на чем следует основывать свой выбор хранилища данных.

Во-первых, уменьшение карты — не единственный способ обработки крупномасштабных данных. Например, MongoDB рано реализовала поддержку уменьшения карты (в версии 1), но позже добавила свою Aggregation Framework, которая была гораздо более общей и включала в себя множество задач, которые могли бы использовать уменьшение карты.

Сокращение карты — это всего лишь одна из парадигм обработки больших наборов данных. Используйте его только, если вашему приложению необходимо обработать большое количество записей данных с помощью преобразователя, а затем объединить результаты вместе с преобразователем. Это все, что он действительно делает. Что касается того, когда парадигма применима, а когда нет, просто посмотрите на свой вариант использования. Вам нужно последовательно манипулировать всеми своими записями, а затем объединять результаты? Или есть другой способ сформулировать вашу проблему?

Взгляните на структуру агрегации Mongo, где приведены примеры использования агрегации как более простого альтернатива многим проблемам, для которых принуждение их к проблеме уменьшения карты было бы излишним.

Это также должно помочь вам понять ваш вопрос о том, можете ли вы выполнять крупномасштабную обработку данных без уменьшения карты, на что ответ положительный. Очевидно, что map-reduce хорош для создания поисковых индексов, но многие проблемы с большими наборами данных выигрывают от других парадигм.

Также будет полезен веб-поиск «альтернативы уменьшению карты».

person Ray Toal    schedule 06.06.2013
comment
Это очень полезно, Рэй. Я оставлю вопрос открытым немного дольше, прежде чем отметить ваш правильный. - person Sridhar Sarnobat; 07.06.2013
comment
(Наивная) причина, по которой я хочу, чтобы Map-Reduce была частью моего арсенала, заключается в том, что это делают большие мальчики (если сомневаетесь, следуйте за толпой). Я знаю, что не пытаюсь быть Google или Amazon, поэтому я не должен слепо следовать (это все равно, что сказать, что я должен выбрать хранилище ключей и значений, потому что они так делают), но когда о решениях не говорят так часто (я никогда не слышал о Mongo Aggregation Framework) есть тенденция убегать. Но ты прав. - person Sridhar Sarnobat; 07.06.2013
comment
Сокращение карты это потрясающе и мощно, и оно отлично подходит для многих задач. Будут случаи, когда вы этого захотите. Но иногда это излишне, а иногда и неуместно, потому что вам нужна связь между элементами, а фаза map в map-reduce не делает этого. Вы уже видели этот ТАК вопрос? - person Ray Toal; 07.06.2013
comment
Спасибо за ссылку. Мне нужно пройти через это более тщательно. Я согласен, Map Reduce — это излишество, особенно если учесть, что реляционные базы данных предоставляют это бесплатно и могут значительно масштабироваться. - person Sridhar Sarnobat; 07.06.2013