SQL vs NoSQL — в чём разница и когда что использовать

Коротко

SQL-базы хранят данные в таблицах со строгой схемой. NoSQL — в документах, ключах, графах или колонках без жёсткой структуры. Аналитику данных нужен в первую очередь SQL, но понимать NoSQL тоже стоит — на собеседованиях спрашивают про разницу, а в продуктовых компаниях вы столкнётесь с обоими подходами.

Что такое SQL (реляционные базы данных)

SQL-базы данных — это реляционные СУБД. Данные хранятся в таблицах с заранее определённой схемой: столбцы, типы данных, связи между таблицами через внешние ключи.

Главная сила — язык SQL. Один и тот же синтаксис работает в PostgreSQL, MySQL, ClickHouse (с нюансами). Если вы умеете писать SELECT, JOIN, GROUP BY — вы работаете с любой реляционной базой.

Популярные SQL-базы:

  • PostgreSQL — стандарт для стартапов и собеседований. Поддерживает сложные запросы, оконные функции, CTE
  • MySQL — широко используется в веб-приложениях, особенно в legacy-проектах
  • ClickHouse — колоночная OLAP-база для аналитики. Яндекс, VK, Ozon, Тинькофф используют для дашбордов и ad-hoc запросов

Реляционные базы поддерживают ACID-транзакции: данные всегда консистентны. Если перевод денег между счетами упал на середине — откатится вся операция.

Что такое NoSQL

NoSQL (Not Only SQL) — общий термин для баз данных, которые не используют реляционную модель. Схема гибкая или отсутствует: можно добавить поле в один документ, не трогая остальные.

Четыре типа NoSQL:

  • Документные (MongoDB, CouchDB) — данные хранятся в JSON-подобных документах. Каждый документ может иметь свою структуру. Подходят для каталогов, профилей, контента
  • Ключ-значение (Redis, DynamoDB) — простейшая модель: ключ → значение. Молниеносная скорость. Кэши, сессии, счётчики
  • Колоночные без SQL (Cassandra, HBase) — данные хранятся по колонкам, но без SQL-интерфейса. Не путать с ClickHouse — он тоже колоночный, но с полноценным SQL. Подходят для временных рядов и IoT-данных с огромными объёмами записи
  • Графовые (Neo4j, ArangoDB) — данные как узлы и связи. Социальные сети, рекомендации, fraud detection

NoSQL-базы обычно жертвуют строгой консистентностью ради масштабирования и скорости (eventual consistency вместо ACID).

Ключевые отличия

Критерий SQL NoSQL
Модель данных таблицы, строки, столбцы документы, ключи, графы, колонки
Схема строгая, определяется заранее гибкая или отсутствует
Язык запросов SQL (стандартизирован) у каждой базы свой API
Связи между данными JOIN, внешние ключи встраивание (embedding) или ссылки на уровне приложения
Масштабирование вертикальное (мощнее сервер) горизонтальное (больше серверов)
Транзакции ACID обычно eventual consistency
Аналитика оконные функции, агрегации, CTE ограниченные возможности аналитических запросов

Когда выбирают SQL

  • Данные структурированы и связаны между собой (заказы → товары → клиенты)
  • Нужны сложные аналитические запросы с JOIN, GROUP BY, оконными функциями
  • Важна консистентность — финансы, платежи, инвентарь
  • Схема данных стабильна и меняется редко
  • Команда аналитиков должна работать с данными через SQL

Большинство продуктовых компаний хранят основные данные в PostgreSQL или MySQL. Аналитические витрины — в ClickHouse или Greenplum. Всё это SQL.

Когда выбирают NoSQL

  • Данные неструктурированные или полуструктурированные (логи, события, пользовательские профили с разными полями)
  • Нужна горизонтальная масштабируемость на миллионы запросов в секунду
  • Высокая скорость записи важнее консистентности (метрики, IoT, телеметрия)
  • Схема данных часто меняется — MVP, быстрые эксперименты
  • Кэширование и сессии (Redis)

Что нужно аналитику данных

Спойлер: SQL. Это ваш основной рабочий инструмент.

Аналитик пишет запросы к реляционным базам: строит отчёты, считает метрики, исследует воронки. PostgreSQL и ClickHouse покрывают 90% задач аналитика в российских компаниях.

Но знать про NoSQL полезно:

  • На собеседованиях спрашивают разницу — это показывает широту кругозора
  • В реальной работе вы столкнётесь с MongoDB (хранит события, логи), Redis (кэши), Elasticsearch (поиск)
  • Понимание trade-off между консистентностью и масштабируемостью помогает в общении с бэкенд-командой

Итог: учите SQL глубоко (основы, нормализация, индексы), а NoSQL — на уровне понимания концепций.

Вопросы с собеседований

  1. В чём основная разница между SQL и NoSQL? — SQL хранит данные в таблицах со строгой схемой и поддерживает JOIN. NoSQL использует гибкие модели (документы, ключи, графы) и масштабируется горизонтально.

  2. Почему аналитику нужен именно SQL? — потому что аналитические запросы (агрегации, оконные функции, JOIN нескольких таблиц) — это сила реляционных баз. В NoSQL таких возможностей нет или они ограничены.

  3. Что такое eventual consistency? — модель, при которой после записи данные не сразу доступны на всех узлах. Через какое-то время система придёт в консистентное состояние. Допустимо для лайков и просмотров, недопустимо для банковских переводов.

  4. Когда MongoDB лучше PostgreSQL? — когда данные неструктурированные, схема часто меняется, нужна горизонтальная масштабируемость. Пример: каталог товаров с разными атрибутами у каждой категории. Но для аналитики PostgreSQL удобнее.

  5. Можно ли делать аналитику на NoSQL-данных? — данные из NoSQL обычно выгружают в SQL-хранилище (data warehouse) для анализа. Аналитик работает с SQL-слоем, даже если исходные данные лежат в MongoDB или DynamoDB.


Потренируйтесь отвечать на вопросы по SQL для собеседований — откройте тренажёр с 200+ задачами и 1500+ примерами вопросов.

FAQ

Нужно ли аналитику учить MongoDB?

Нет, если вы не бэкенд-разработчик. Достаточно понимать, что это документная NoSQL-база с гибкой схемой. На собеседованиях на аналитика MongoDB не спрашивают, но могут спросить, чем она отличается от PostgreSQL.

Может ли PostgreSQL заменить NoSQL?

Частично — да. PostgreSQL поддерживает JSONB-тип, который позволяет хранить документы внутри реляционной таблицы. Для небольших объёмов это рабочее решение. Но при миллионах запросов в секунду специализированные NoSQL-базы масштабируются лучше.

Какую базу данных учить первой?

PostgreSQL. Его синтаксис близок к стандарту SQL, он принимается на всех собеседованиях, и в нём есть всё для аналитики: оконные функции, CTE, подзапросы. После уверенного владения PostgreSQL можно изучить отличия ClickHouse и познакомиться с концепциями NoSQL.

Redis — это NoSQL?

Да, Redis — key-value NoSQL-база. Хранит данные в оперативной памяти, поэтому работает очень быстро. Используется для кэширования, сессий, очередей. Аналитику Redis напрямую не нужен, но полезно знать, что «горячие» данные часто кэшируются именно в нём.


Подготовьтесь к собеседованию на аналитика — SQL-тренажёр с задачами по PostgreSQL.