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

📖 Теория

📁 Блок: MongoDB / Atlas и индексы ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя

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

MongoDB Atlas — облачный сервис для размещения и управления MongoDB.

На занятии создаётся бесплатный Atlas account, проект и sample dataset.

Sample dataset нужен для экспериментов без ручного наполнения больших коллекций.

Индекс хранит часть данных в форме, удобной для быстрого поиска.

Без индекса MongoDB часто делает COLLSCAN, то есть просматривает коллекцию.

С индексом в плане появляется IXSCAN.

Для географического запроса по coordinates создаётся 2dsphere индекс.

Уникальный индекс по email защищает от дублей и даёт duplicate key error при повторе.

Разбор темы

MongoDB Atlas

Atlas — облачный сервис MongoDB для размещения, управления и масштабирования баз данных. В источнике акцент на бесплатном аккаунте, проекте, доступе по IP, пароле и sample dataset.

Sample dataset

Add Sample Dataset загружает готовые базы вроде sample_airbnb, sample_mflix и sample_geospatial. Это удобно для индексов: данных достаточно, чтобы увидеть разницу в плане выполнения.

Что такое индекс

Индекс хранит значения выбранных полей в форме, пригодной для быстрого поиска. Без индекса MongoDB сканирует документы коллекции один за другим.

db.listingsAndReviews.find({
  price: { $gte: 60, $lte: 90 }
})

COLLSCAN и IXSCAN

В explain-плане COLLSCAN означает сканирование коллекции без индекса. IXSCAN означает, что MongoDB использует индекс. FETCH читает документы из коллекции, SORT может указывать на сортировку в памяти.

Геоиндекс 2dsphere

Для запроса $geoWithin по координатам создаётся специальный индекс. Без него такой запрос может быть тяжелым на большой коллекции.

db.shipwrecks.createIndex({ coordinates: "2dsphere" })

Уникальный индекс

Уникальный индекс по email делает поле ограничением уникальности: повторный email не вставится и вернёт duplicate key error.

db.customers.createIndex({ email: 1 }, { unique: true })