MongoDB — это документно-ориентированная (хранящая иерархические структуры данных в виде объектов, содержащих пары ключ/значение) система управления базами данных (СУБД), которая использует формат JSON (JavaScript Object Notation) для описания структуры хранящихся в ней объектов (документов).
Что такое MongoDB: особенности архитектуры и основные свойства
MongoDB — это кроссплатформенная (работает с несколькими операционными системами, например, Windows, Linux, Mac) нереляционная СУБД, которая классифицирована как база данных NoSQL (not only SQL). NoSQL — это подход, направленный на реализацию СУБД, в которых решается проблема масштабируемости (увеличение производительности при увеличении нагрузки) за счет атомарности (выполнение операции целиком) и согласованности данных (целостность данных). MongoDB хранит данные в виде JSON-коллекций, когда каждый JSON-объект может содержать несколько атрибутов с разными типами данных [1].
В состав архитектуры МонгоДБ входят следующие элементы:
- mongo — интерактивная оболочка, отвечающая за чтение, вставку, обновление и удаление данных. Она также позволяет разработчику настраивать репликацию (копирование данных между узлами кластера) и сегментирование данных (разбиение больших массивов данных на части с целью обработки каждой части в отдельности);
- mongostat — это инструмент, позволяющий выводить статистику для исполняемого экземпляра МонгоДБ (например, подсчитать количество вставок, удалений, а также ресурсопотребление экземпляра);
- mongotop — инструмент, отвечающий за подсчет времени выполнения запросов на уровне каждой коллекции данных;
- mongosniff — это сервис, который обеспечивает перехват и сохранение команд запросов для автоматического их воспроизведения при повторном обращении к ним [1].
СУБД МонгоДБ имеет следующие свойства:
- Поддержка специальных запросов — МонгоДБ поддерживает запросы, которые включают различные виды поиска (например, поиск по области, поиск по диапазону значений, поиск регулярного выражения). В качестве результата эти запросы могут возвращать определенные поля JSON-документов или весь документ целиком.
- Индексация — разработчик может указать поля, которые необходимо проиндексировать для быстрого доступа к информации, содержащейся в них (при чтении).
- Балансировка нагрузки — для распределения нагрузки между узлами в распределенной среде используется прием шардинга, который позволяет разбить данные на несколько равных частей и распределить их между узлами в кластере.
- Механизм репликации — МонгоДБ обеспечивает безопасное хранение данных в распределенной среде путем их постоянного копирования и хранения копий на различных узлах в кластере. Таким образом, если какой-либо узел выйдет из строя, потери данных не произойдет, так как их копия уже существует на других узлах [2].
Как появилась MongoDB: краткая история
Разработка МонгоДБ началась в 2007 году компанией 10gen. В 2009 году компания перешла на модель разработки продуктов с открытым исходным кодом. 11 февраля 2009 года была выпущена первая версия МонгоДБ 1.0. 27 августа 2013 года компания 10gen изменила свое название на MongoDB, Inc. 20 октября 2017 года MongoDB стала публичной компанией, свободно существовавшей на фондовом рынке. 5 декабря 2019 года была выпущена МонгоДБ с версией 4.2.2. Спустя 8 месяцев, 21 апреля 2020 года, состоялся релиз последней на данный момент версии MongoDB 4.2.6 [2].
Таким образом, благодаря своей документно-ориентированной структуре, MongoDB может довольно быстро получать доступ к хранимой информации, так как в отличие от реляционных СУБД, для получения данных в MongoDB не используются сложные JOIN-запросы (для соединения таблиц). Это делает MongoDB весьма удобным средством для работы с Big Data.
Больше подробностей про применение MongoDB в проектах анализа больших данных вы узнаете на практических курсах по NoSQL в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
IMPA: CLOUDERA IMPALA DATA ANALYTICS
ADQM: ЭКСПЛУАТАЦИЯ ARENADATA QUICKMARTS
ADBR: Arenadata DB для разработчиков
ADB: Эксплуатация Arenadata DB
HBASE: Администрирование кластера HBase
HIVE: Hadoop SQL администратор Hive
NoSQL: Интеграция Hadoop и NoSQL
Источники