MongoDB

MongoDB — документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON-подобные документы и схему базы данных. Написана на языке C++

Описание

MongoDB — это кросс-платформенная, документо-ориентированная база данных, которая обеспечаивает высокую производительность и лёгкую масштабируемость. В основе данной БД лежит  концепция коллекций и документов.

MongoDB  — кроссплатформенная документо-ориентированная система управления базами данных. Классифицированная как база данных NoSQL, MongoDB отходит от традиционных основ реляционной структуры базы данных в пользу JSON-подобных документов с динамическими схемами (MongoDB называет этот формат BSON), что делает интеграцию данных в определенных видах приложений проще и быстрее. Выпущено под комбинацией GNU Affero General Public License и лицензией Apache, MongoDB является бесплатным программным обеспечением с открытым исходным кодом.

Особенности MongoDB

  • MongoDB — это документо-ориентированная СУБД. Данные в MongoDB хранятся в документах, которые объединяются в коллекции. Каждый документ представляет собой JSON-подобную структуру. Проведя аналогию с реляционными СУБД, можно сказать, что коллекциям соответствуют таблицы, а документам — строки в таблицах. Максимальный размер документа в MongoDB 2.x составляет 16 Мб (в более ранних версиях — лишь 4 Мб).
  • В отличие от РСУБД MongoDB не требует какого-либо описания схемы базы данных — она может постепенно меняться по мере развития приложения, что есть удобно.
  • Поддерживаются индексы, в том числе по массивам и вложенным документам, а также геопространственные индексы. Поддерживаются уникальные и составные индексы.
  • MongoDB есть атомарные операции, compare-and-swap, курсоры, запись без подтверждения и даже MapReduce (но я бы не спешил переходить с Hadoop на MongoDB).
  • Размер коллекции в MongoDB может быть ограничен числом документов или мегабайтами. Если коллекция слишком разрастется, старые документы будут удалены.
  • Интерфейс MongoDB сильно напоминают работу с DBIx::Class. В запросах могут использоваться функции на языке JavaScript.
  • В MongoDB поддерживается журналирование, а также асинхронная репликация двух видов — master-slave репликация и наборы реплик. Разработчики MongoDB рекомендуют использовать последние. Набор реплик представляет собой тот же master-slave, но в случае падения мастера среди реплик автоматически выбирается новый мастер. После возобновления своей работы бывший мастер становится репликой.
  • Документы могут быть автоматически сегментированы по нескольким наборам реплик. Сегментирование производится по диапазону; чтобы отнести документ к конкретному диапазону, используется сегментный ключ (shard key). Данные распределяются между наборами реплик так, чтобы каждый набор содержал примерно одинаковый объем данных. Если кластер перестает справляться с нагрузкой, можно просто добавить в него еще один набор реплик — перераспределение данных произойдет автоматически.
  • В документах MongoDB можно хранить бинарные данные — картинки, mp3 и так далее. Однако для данных размером более 1 Мб рекомендуется использовать GridFS. GridFS — это соглашение о хранении файлов произвольного размера в MongoDB, поддерживаемое всеми официальными драйверами.
  • MongoDB используют GitHub, SourceForge, Foursquare, Bit.ly, About.me, MTV, CNN, New York Times, Forbes, Disney, EA и многие другие.
  • OLAP БД

    Ключевые особенности OLAP сценария работы

    • Подавляющее большинство запросов - на чтение;
    • Данные обновляются достаточно большими пачками (> 1000 строк), а не по одной строке, или не обновляются вообще;
    • Данные добавляются в БД, но не изменяются;
    • При чтении, вынимается достаточно большое количество строк из БД, но только небольшое подмножество столбцов;
    • Таблицы являются «широкими», то есть, содержат большое количество столбцов;
    • Запросы идут сравнительно редко (обычно не более сотни в секунду на сервер);
    • При выполнении простых запросов, допустимы задержки в районе 50 мс;
    • Значения в столбцах достаточно мелкие - числа и небольшие строки (пример - 60 байт на URL);
    • Требуется высокая пропускная способность при обработке одного запроса (до миллиардов строк в секунду на один сервер);
    • Транзакции отсутствуют;
    • Низкие требования к консистентности данных;
    • В запросе одна большая таблица, все таблицы кроме одной маленькие;
    • Результат выполнения запроса существенно меньше исходных данных - то есть, данные фильтруются или агрегируются; результат выполнения помещается в оперативку на одном сервере.
    ...

Аналоги и альтернативы для MongoDB

MongoDB - похожие продукты (инструменты, решения, сервисы)

Amazon Athena

Amazon Athena – это интерактивный сервис запросов, позволяющий просто анализировать данные в...

Apache Pinot

Apache Pinot (Incubating) - распределенное хранилище данных OLAP в реальном времени

Apache Druid

Druid - это ориентированное на столбцы распределенное хранилище данных с открытым исходным...

ClickHouse

ClickHouse - столбцовая система управления базами данных (СУБД) для онлайн обработки аналитических...

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “MongoDB”

Ваш адрес email не будет опубликован. Обязательные поля помечены *