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 для построения надежных и масштабируемых систем.

You can take a test to reveal missed lore before start a training.

Test Your Might

You can start studying this pack. You'll receive 220 messages to help you review each card multiple times, following the principles of the forgetting curve.

Learn more about the spaced repetition method.

Schedule daily card reviews to quickly memorize or solidify the knowledge until it becomes second nature.

Learn more about daily practices.
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
WitSlice © 2026