Открыть сервис

MongoDB

MongoDB — это документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц (NoSQL). Относится к классу NoSQL-баз данных, использует JSON-подобный формат документов (BSON) и поддерживает гибкую схему данных. Разработана компанией MongoDB Inc. (США).

История

MongoDB была создана в 2007 году компанией 10gen (позднее переименована в MongoDB Inc.) как платформа для облачных вычислений. Первая стабильная версия (1.0) вышла в феврале 2009 года. Название происходит от слова «humongous» (огромный), что отражает ориентацию на работу с большими объёмами данных.

В 2013 году компания изменила модель лицензирования: с версии 2.6 распространяется под лицензией AGPLv3 (для сообщества) и коммерческой лицензией (для корпоративных клиентов). В 2017 году MongoDB Inc. провела первичное публичное размещение акций (IPO) на NASDAQ.

Ключевые версии:

Архитектура и принципы работы

Документная модель данных

MongoDB хранит данные в виде документов — наборов пар «ключ-значение» в бинарном формате BSON (Binary JSON). Документы объединяются в коллекции (аналог таблиц в реляционных СУБД). Схема данных не фиксирована: документы в одной коллекции могут иметь разный набор полей.

Пример документа: `` { "_id": ObjectId("507f1f77bcf86cd799439011"), "name": "Иван Петров", "age": 30, "address": { "city": "Москва", "street": "Тверская" }, "hobbies": ["чтение", "спорт"] } ``

Индексы

MongoDB поддерживает различные типы индексов для ускорения запросов:

Репликация

Репликация реализуется через реплика-сеты (replica sets) — группы серверов, где один узел является первичным (primary), остальные — вторичными (secondary). Первичный узел принимает все операции записи, вторичные синхронизируются с ним. При отказе первичного узла автоматически выбирается новый первичный.

Шардирование

Горизонтальное масштабирование (шардирование) позволяет распределять данные по нескольким серверам (шардам). Ключ шардирования (shard key) определяет, на каком шарде будет храниться документ. Маршрутизатор (mongos) направляет запросы к соответствующим шардам.

Движки хранения

Классификация

MongoDB относится к категории NoSQL-баз данных (Not Only SQL), точнее — к подкатегории документоориентированных СУБД. В отличие от реляционных баз данных (например, PostgreSQL, MySQL), MongoDB не использует таблицы и SQL-запросы, а оперирует документами и методами CRUD (Create, Read, Update, Delete).

Применение

MongoDB широко используется в следующих областях:

Веб-приложения и мобильные приложения

Благодаря гибкой схеме данных и высокой производительности MongoDB подходит для проектов с быстро меняющимися требованиями к структуре данных. Примеры: CMS, системы управления контентом, социальные сети.

Интернет вещей (IoT)

Временные ряды (Time Series) и работа с большими потоками данных от датчиков и устройств — одна из сильных сторон MongoDB (поддержка Time Series Collections с версии 5.0).

Аналитика и Big Data

MongoDB используется для хранения и анализа больших объёмов неструктурированных данных, часто в связке с Apache Spark или Hadoop.

Игровая индустрия

Многие онлайн-игры используют MongoDB для хранения профилей игроков, игровых предметов и логов событий.

Примеры компаний-пользователей

Критика и ограничения

Отсутствие поддержки SQL

MongoDB использует собственный язык запросов (MQL). Для разработчиков, привыкших к SQL, это создаёт дополнительный порог входа. Существуют сторонние инструменты (например, MongoSQL), но они не дают полной совместимости.

Проблемы с ACID-транзакциями

До версии 4.0 MongoDB поддерживала только атомарные операции над одним документом. Полноценная поддержка ACID-транзакций появилась лишь в версии 4.2, и она менее эффективна, чем в реляционных СУБД.

Использование памяти

MongoDB активно использует оперативную память для кэширования данных. При недостатке памяти производительность может резко падать.

Отсутствие строгих схем

Гибкость схемы данных может приводить к проблемам с целостностью данных, особенно в больших проектах с множеством разработчиков.

Лицензионные споры

С 2018 года MongoDB перешла на лицензию SSPL (Server Side Public License), которая не признаётся Open Source Initiative (OSI) как открытая. Это вызвало критику сообщества и привело к форку базы данных — FerretDB, который стремится сохранить совместимость с MongoDB под лицензией Apache 2.0.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →