Wiki
Web / стек

MongoDB — что это простыми словами

MongoDB — популярная document-store БД (JSON/BSON). Sharding, replica set, aggregation pipeline. Стандарт для JS-стека (Node + Mongo), геймдева, MEAN/MERN.

MongoDB — NoSQL document-store, разработан 10gen (сейчас MongoDB Inc.) с 2009. Хранит документы (BSON — бинарный JSON) в коллекциях. В отличие от реляционных БД, схема гибкая: разные документы в коллекции могут иметь разные поля. Основа MEAN/MERN-стека (JavaScript-fullstack).

Ключевые концепции: (1) replica set — primary + secondary для HA, автоматический failover, (2) sharding — горизонтальное разделение коллекции по shard key на N нод, (3) aggregation pipeline — SQL-like queries: `$match → $group → $sort → $project`, (4) indexes (btree, geospatial, text), (5) change streams — стриминг изменений (event-driven).

Сильные стороны: (1) удобно хранить полу-структурированные документы (пользовательские профили, каталоги товаров с разными атрибутами), (2) быстрая денормализация — embedded documents вместо JOIN, (3) sharding из коробки. Слабые: (1) не ACID до v4.0 (сейчас с transactions, но overhead), (2) high-write workload часто уступает Postgres, (3) SSPL-лицензия с 2018 (не OSI-approved).

У нас MongoDB ставится cloud-init'ом на VPS. Для стартапа single-node VPS-M €12/мес + replica set из 3 VPS €30/мес — production-ready. Managed alternative — MongoDB Atlas. См. `/vps/for-mongodb`.

Частые вопросы

MongoDB или Postgres JSONB?
Postgres JSONB — реляционная база + JSON. Если 20 % данных документные, остальное реляционное — Postgres. Если 90 % документное с гибкой схемой — Mongo.
Что за SSPL?
MongoDB перешёл с AGPL на SSPL в 2018 — SaaS-провайдер должен открыть код всей инфры вокруг. Из-за этого AWS/Google не предоставляют managed Mongo, а форкнули (Amazon DocumentDB).

Смотрите также