← К оглавлению занятия

✅ Решения

📁 Блок: MongoDB / повторение репликации и CAP ⏱️ Время изучения: ~60 мин 🎯 Сложность: Повторение

⚡ Кратко: суть занятия

Summary session 18 повторяет репликацию, цели репликации, синхронный и асинхронный подходы, CAP и ACID.

Репликация нужна для надёжности, отказоустойчивости и распределения нагрузки чтения.

Синхронная репликация держит копии актуальными, но добавляет задержку.

Асинхронная репликация быстрее для записи, но допускает отставание копии.

CAP описывает ограничение распределённых систем: Consistency, Availability, Partition Tolerance.

ACID описывает свойства транзакций: Atomicity, Consistency, Isolation, Durability.

В домашке 18 разбираются Hawaii в sample_airbnb и фильмы imdb > 8 за 2015–2023.

Топ-3 ошибки: путать Consistency CAP и ACID, считать $out индексом, забывать $match перед $group.

Разбор решений

Синхронизация данных

Правильный ответ: репликация.

Именно репликация поддерживает копии данных на разных серверах.

Создание индекса

Правильный ответ: createIndex().

Это команда создания индекса в современных примерах MongoDB курса.

Hawaii

db.listingsAndReviews.aggregate([
  { $match: { "address.market": { $in: ["Oahu", "Maui", "Kauai", "The Big Island"] } } },
  { $group: { _id: null, avgPrice: { $avg: "$price" } } }
])

Источник подсказывает два этапа: $match и $group.

imdb > 8

db.movies.aggregate([
  { $match: { "imdb.rating": { $gt: 8 }, year: { $gte: 2015, $lte: 2023 } } },
  { $sort: { "imdb.rating": -1 } },
  { $group: { _id: null, count: { $sum: 1 }, maxRating: { $first: "$imdb.rating" }, title: { $first: "$title" } } }
])

Так одновременно получаем количество и верхний рейтинг.

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