Раздел 10 · Databases

Модели NoSQL: ключ-значение, документы, колонки, графы

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке мы увидели, где реляционной модели тяжело: масштаб, гибкая схема, длинные цепочки связей. В ответ появились базы, которые объединяют общим словом NoSQL. Слово говорит только о том, чего эти базы не делают, а не о том, что они умеют. На деле это четыре разных семейства с разными сильными сторонами. Две из этих моделей ты уже встречал в уроке про модели данных, теперь разберём все четыре.

Инструменты в мастерской

Аналогия: мастерская. Молоток, отвёртка, пила и дрель. Любым из них можно в крайнем случае забить гвоздь, но каждый хорош для своей работы. Реляционная база это хороший универсальный набор инструментов. NoSQL-базы это специализированные инструменты: каждая делает одну работу быстрее и проще, а на чужой работе неуклюжа.

Для каждого семейства ответим на три вопроса: как устроены данные, какой запрос модель делает лучше всех, и где ей больно.

Ключ-значение

Хранилище ключ-значение устроено как гардероб: сдаёшь пальто, получаешь номерок. По номерку пальто выдают мгновенно. Спросить «дайте все синие пальто» нельзя: гардеробщик знает только номерки.

session:9f2a   →  {"user_id": 42, "expires": "2026-10-09T18:00"}
cart:42        →  ["sku-1", "sku-7"]
rate:ip:1.2.3.4 → 17

Пример: Redis. Он держит данные в оперативной памяти и отвечает за доли миллисекунды.

  • Сильный запрос: получить или записать значение по точному ключу.
  • Где больно: поиск по содержимому, связи между записями, отчёты.
  • Типичная работа: кэш, сессии, счётчики, очереди, ограничение частоты запросов.

Подробнее про Redis и его структуры данных в уроке о Redis и ClickHouse.

Документы

Документная база хранит карточку целиком, со всем вложенным внутри. Мы встречали её в уроке о моделях данных.

{
  "_id": "sku-7",
  "title": "Ноутбук",
  "specs": { "cpu": "M4", "screen": 14 },
  "reviews": [{ "author": "Аня", "stars": 5 }]
}

Пример: MongoDB. У ноутбука поля cpu и screen, у футболки size и color, и обе карточки спокойно живут в одной коллекции без сотни пустых колонок.

  • Сильный запрос: прочитать или записать объект целиком за одно обращение; искать по полям внутри документа.
  • Где больно: связи «многие ко многим» и данные, которые нужно менять в нескольких документах сразу. Общие данные легко задублировать, и они разъедутся.
  • Типичная работа: каталоги с разнородными товарами, профили, контент, события.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.