MongoDB для разработчиков: от основ до продакшена

Этот набор карточек охватывает MongoDB от базовых концепций до продвинутых тем, необходимых для работы в продакшене и успешного прохождения технических интервью. Вы разберетесь, как устроена документная модель данных, что означает schema-less подход и чем MongoDB отличается от реляционных баз данных. Особое внимание уделено проектированию схемы: когда использовать embedding или referencing, как моделировать связи и избегать проблем с денормализацией и консистентностью. В наборе подробно раскрываются CRUD-операции, update operators, upsert и ключевые особенности query engine. Вы изучите индексы (single, compound, multikey, text, TTL), научитесь анализировать запросы через explain() и понимать, как оптимизировать производительность. Отдельный блок посвящен aggregation pipeline — мощному инструменту для аналитики и сложных выборок. Также рассматриваются вопросы консистентности, транзакций, write/read concern и особенности работы с replica set и sharding. Вы поймете, как правильно выбирать shard key, масштабировать систему и избегать типичных ошибок, таких как excessive joins или неправильная денормализация. Набор будет полезен как для начинающих разработчиков, так и для опытных инженеров, которые хотят систематизировать знания и глубже понять внутренние механизмы MongoDB для построения надежных и масштабируемых систем.

Проверка знаний

Пройдите тест перед обучением, чтобы увидеть знакомые темы и найти пробелы.

Как работает проверка знанийПройти тест

Интервальное повторение

Получайте отдельные карточки для повторения через интервалы, которые помогают дольше помнить материал.

Как работает повторение
MongoDB — документная база данных

Коротко: MongoDB — это документно-ориентированная NoSQL база данных, где данные хранятся в виде документов, похожих на JSON. Документы группируются в коллекции; схема гибкая (schema-less), что упрощает итеративную разработку и моделирование сложных объектов.

1/55
MongoDB: когда подходит и когда не подходит

В каких сценариях MongoDB подходит лучше всего, а в каких её использование нецелесообразно?

2/55
MongoDB vs реляционные базы данных

Чем MongoDB отличается от реляционных баз данных, включая структуру данных, JOIN-операции и подход к моделированию?

3/55
Проектирование схемы данных в MongoDB: embedding vs referencing

Как проектировать схему данных в MongoDB, включая выбор между embedding и referencing?

4/55
Embedding (вложение) vs Referencing (ссылки)

В каких случаях стоит использовать embedding (вложенные документы), а в каких — referencing (ссылки)?

5/55
schema-less в MongoDB

Что означает schema-less в MongoDB, и какие плюсы и риски это даёт в реальных системах?

6/55
Глубокая вложенность документов

Какие ограничения и проблемы возникают при глубокой вложенности документов?

7/55
Отношения в MongoDB: one-to-one, one-to-many, many-to-many

Как моделировать one-to-one, one-to-many и many-to-many отношения в MongoDB?

8/55
Избегание избыточной денормализации данных

Как избежать избыточной денормализации данных и связанных с этим проблем консистентности?

9/55
CRUD в MongoDB

MongoDB выполняет стандартные CRUD-операции: Create — insertOne/insertMany, Read — find/findOne/aggregate, Update — updateOne/updateMany/replaceOne/findOneAndUpdate, Delete — deleteOne/deleteMany/findOneAndDelete. Важные особенности: атомарность на уровне отдельного документа, поддержка транзакций для multi-doc операций, поведение upsert и различие между операторами обновления и заменой документа.

10/55
Разница между update-операторами: $set, $push, $inc

Чем отличаются операторы обновления MongoDB $set, $push и $inc и как они работают?

11/55
Индексы в MongoDB

Какие типы индексов существуют в MongoDB (single, compound, multikey, text, TTL) и когда их использовать?

12/55
Compound (составные) индексы и порядок полей

Как работают compound индексы и как порядок полей влияет на производительность?

13/55
Upsert

Что такое upsert и когда его применяют?

14/55
Multikey index — индекс по массивам

Что такое multikey index и как он работает с массивами?

15/55
Отсутствие индексов: проблемы и диагностика

Какие проблемы возникают при отсутствии индексов и как их диагностировать?

16/55
TTL‑индексы (автоматическое удаление в MongoDB)

Как использовать TTL‑индексы для автоматического удаления данных?

17/55
Query engine в MongoDB — как это работает и чем отличается от SQL

Краткое объяснение принципов работы движка запросов в MongoDB и ключевые отличия от реляционных SQL-систем.

18/55
text index — как работает текстовый поиск и ограничения

Краткое объяснение принципа работы текстового поиска через text index и его ограничений.

19/55
MongoDB: модель консистентности и eventual consistency

Какая модель консистентности используется в MongoDB и что означает eventual consistency?

20/55
Aggregation pipeline — основные стадии ($match, $group, $project, $lookup)

Какие основные стадии aggregation pipeline ($match, $group, $project, $lookup) и их назначение?

21/55
Aggregation pipeline (MongoDB)

Что такое aggregation pipeline и как он используется для сложных запросов?

22/55
Как работает $lookup и его ограничения по сравнению с JOIN

Как работает $lookup и какие у него ограничения по сравнению с SQL JOIN?

23/55
Aggregation pipeline: когда возникает узкое место и как оптимизировать

Когда aggregation pipeline становится узким местом и как это оптимизировать?

24/55
Транзакции в MongoDB

Кратко: транзакции в MongoDB обеспечивают ACID-поведение для нескольких операций/документов в пределах одной сессии. Поддерживаются многодокументные транзакции в replica set (с 4.0) и в sharded cluster (с 4.2).

25/55
Транзакции: когда использовать и когда нет

Когда стоит использовать транзакции, а когда лучше обойтись без них?

26/55
Факторы производительности MongoDB

Какие факторы влияют на производительность MongoDB (индексы, размер документов, запросы)?

27/55
write concern и read concern

Что такое write concern и read concern, и как они влияют на консистентность?

28/55
Тяжёлые операции (full collection scan и другие)

Какие операции считаются «тяжёлыми» в базах данных и при выполнении запросов (например, full collection scan)?

29/55
explain() — анализ запросов

Как использовать explain() для анализа запросов?

30/55
Почему большие документы проблемны и какие есть ограничения по размеру?

Почему большие документы могут быть проблемой и какие есть ограничения по размеру?

31/55
Проблемы консистентности при чтении с secondary

Коротко: чтение с реплики (secondary / read-replica) часто возвращает устаревшие или частично-реплицированные данные из‑за задержки репликации и особенностей модели согласованности.

32/55
Failover и выбор нового primary

Что происходит при failover и как выбирается новый primary?

33/55
Replica set в MongoDB

Как работает replica set в MongoDB, включая primary и secondary ноды?

34/55
Sharding в MongoDB

Что такое sharding в MongoDB и какую проблему он решает?

35/55
Hot partitions — проблемы при плохом выборе shard key

Какие проблемы возникают при плохом выборе shard key (hot partitions)?

36/55
Балансировка данных между шардами

Как происходит балансировка данных между шардами?

37/55
Shard key: range и hashed

Какие типы shard key существуют (range, hashed) и их особенности?

38/55
Shard key: как это работает и почему выбор критичен

Как работает shard key и почему его выбор критичен?

39/55
Масштабирование MongoDB

Как масштабируется MongoDB вертикально и горизонтально?

40/55
Горизонтальное масштабирование

Какие ограничения есть у горизонтального масштабирования?

41/55
MongoDB: хранение профилей с гибкой схемой

Как использовать MongoDB для хранения пользовательских профилей с гибкой схемой?

42/55
Компрессия данных и её влияние на производительность

Как работает компрессия данных и какое влияние она оказывает на производительность приложений и сетей.

43/55
Как MongoDB управляет памятью и кешем (WiredTiger)

Как MongoDB управляет памятью и кешем (WiredTiger)?

44/55
MongoDB: механизмы аутентификации и авторизации

Какие механизмы аутентификации и авторизации есть в MongoDB?

45/55
MongoDB — аналитика и отчетность

Как использовать MongoDB для аналитики и отчетности?

46/55
Защита данных: TLS и шифрование на диске

Как защищать данные (TLS, encryption at rest)?

47/55
Моделирование event storage в MongoDB

Как моделировать систему логирования или хранения событий (event storage) в MongoDB?

48/55
Проблемы excessive $lookup

Почему excessive joins через $lookup могут быть проблемой?

49/55
Анти-паттерны при использовании MongoDB

Какие основные анти-паттерны при использовании MongoDB (например, использование как реляционной БД)?

50/55
Риски чрезмерной денормализации

Какие риски у чрезмерной денормализации?

51/55
Когда MongoDB — правильный выбор

Когда MongoDB — правильный выбор (гибкая схема, быстрые изменения, JSON-like данные)?

52/55
Диагностика медленных запросов и узких мест

Как диагностировать медленные запросы и узкие места?

53/55
Когда MongoDB — плохой выбор (строгая консистентность, сложные JOIN)

Когда MongoDB — плохой выбор (строгая консистентность, сложные JOIN)?

54/55
Метрики MongoDB: latency, query time, index usage

Какие метрики важны для MongoDB (latency, query time, index usage)?

55/55