hostprofi.ru
Подобрать хостинг
Термин·буква M

MongoDB

краткое определение

MongoDB — документоориентированная NoSQL СУБД с открытым исходным кодом. Хранит данные в формате BSON (бинарный JSON) без фиксированной схемы. Горизонтально масштабируется через шардирование. Разработана MongoDB Inc., первый релиз в 2009 году.

MongoDB — нереляционная (NoSQL) база данных, в которой единицей хранения является документ в формате BSON (Binary JSON). Документы группируются в коллекции (аналог таблиц в SQL). Схема документов не фиксирована: разные документы в одной коллекции могут иметь разный набор полей. Это упрощает работу с неоднородными данными и быстрое итерирование схемы.

Как работает

MongoDB хранит данные на диске в формате WiredTiger (с версии 3.2). Запрос к MongoDB использует собственный синтаксис в формате JSON:

db.users.find({ age: { $gte: 18 }, city: "Moscow" }).sort({ name: 1 }).limit(10)

Индексы работают аналогично SQL-СУБД: B-tree, hash, текстовые, геопространственные (2dsphere). Без индекса на поле условия — полный scan коллекции.

Горизонтальное масштабирование достигается через шардирование (sharding): данные разбиваются по ключу шарда между несколькими серверами. Репликация обеспечивается Replica Set: primary принимает запись, secondary реплицируют асинхронно, при сбое primary происходит автовыборы нового.

История

MongoDB разработана компанией 10gen (ныне MongoDB Inc.) в 2007–2008 годах как часть PaaS-платформы. В 2009 году стала самостоятельным продуктом с открытым кодом. MongoDB версии 3.x (2015) принесла WiredTiger-движок с компрессией. MongoDB 4.0 (2018) добавила multi-document ACID-транзакции. В 2018 году MongoDB сменила лицензию с AGPL на SSPL.

Связь с хостингом

MongoDB работает на VPS как самостоятельная установка (mongo daemon, порт 27017) или как managed service: MongoDB Atlas (облачный), AWS DocumentDB (совместимый). На managed хостинге MongoDB требует выделенного экземпляра — на обычном виртуальном хостинге недоступна. Мониторинг: встроенный mongostat, mongotop, интеграция с Prometheus через mongodb-exporter.

Ключевые отличия от похожих терминов

MongoDB vs PostgreSQL: PostgreSQL с JSONB-полями покрывает многие сценарии MongoDB, но MongoDB нативнее для документоориентированных моделей и горизонтального шардирования. MongoDB vs Redis: Redis — in-memory key-value для кэша и очередей, MongoDB — персистентное хранилище документов.

Модель данных MongoDB

Документы в BSON (Binary JSON): вложенные объекты, массивы, без фиксированной схемы. Коллекции ≈ таблицы, документы ≈ строки. Максимальный размер документа — 16 МБ. GridFS — для файлов более 16 МБ.

Индексирование и агрегация

Индексы: Single field, Compound, Multikey (для массивов), Text, 2dsphere (геоданные), TTL (автоудаление по времени). Aggregation Pipeline — обработка данных через цепочку операций: $match, $group, $sort, $lookup (JOIN). explain("executionStats") — анализ запроса.

MongoDB в хостинге

MongoDB Atlas — managed облачный сервис. Self-hosted на VPS: минимум 2 ГБ RAM для production. Replica Set: первичный + 2 вторичных узла для отказоустойчивости. WiredTiger — движок хранения по умолчанию с компрессией данных Snappy/zstd.

Опасные операции MongoDB

Отсутствие транзакций в некоторых операциях: multi-document update без транзакции не атомарен. MongoDB 4.0+ поддерживает ACID-транзакции для replica set. $unset на индексированных полях требует переиндексирования. Большие $in-запросы (>100 значений) медленнее — заменить на $lookup.

Другие термины