MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++. Документо-ориентированная СУБД — СУБД, специально предназначенная для хранения иерархических структур данных (документов) и обычно реализуемая с помощью подхода . Документы могут быть организованы (сгруппированы) в коллекции. Их можно считать отдалённым аналогом таблиц реляционных СУБД. СУБД управляет наборами () -подобных документов, хранимых в двоичном виде в формате . Хранение и поиск файлов в происходит благодаря вызовам протокола . Отличия от традиционных реляционных СУБД:
- нереляционная модель данных;
- открытый исходный код;
- хорошая горизонтальная масштпбируемость;
- Отсутствует оператор «join». Обычно данные могут быть организованы более денормализованным способом, но на разработчиков ложится дополнительная нагрузка по обеспечению непротиворечивости данных.
- Нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может.
- Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.
Основные возможности данной СУБД:
- Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных)
- У каждого документа(строки) мб своя структура
- Возможность создавать коллекцию в коллекции
- Динамические запросы
- Полная поддержка индексов
- Профилирование запросов
- Быстрые обновления «на месте»
- Эффективное хранение двоичных данных больших объёмов, напр., фото и видео
- Репликация и поддержка отказоустойчивости
- MapReduce
На Map-шаге происходит предварительная обработка входных данных. Для этого один из компьютеров (называемый главным узлом — master node) получает входные данные задачи, разделяет их на части и передает другим компьютерам (рабочим узлам — worker node) для предварительной обработки. Название данный шаг получил от одноименной функции высшего порядка.
На Reduce-шаге происходит свёртка предварительно обработанных данных. Главный узел получает ответы от рабочих узлов и на их основе формирует результат — решение задачи, которая изначально формулировалась.
Преимущество MapReduce заключается в том, что он позволяет распределенно производить операции предварительной обработки и свертки.
т.о. - быстрая, легко масштабируемая бд, понятный синтаксис, адаптирована для высоконагруженных систем.