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 — на уровне понимания концепций.
Вопросы с собеседований
В чём основная разница между SQL и NoSQL? — SQL хранит данные в таблицах со строгой схемой и поддерживает JOIN. NoSQL использует гибкие модели (документы, ключи, графы) и масштабируется горизонтально.
Почему аналитику нужен именно SQL? — потому что аналитические запросы (агрегации, оконные функции, JOIN нескольких таблиц) — это сила реляционных баз. В NoSQL таких возможностей нет или они ограничены.
Что такое eventual consistency? — модель, при которой после записи данные не сразу доступны на всех узлах. Через какое-то время система придёт в консистентное состояние. Допустимо для лайков и просмотров, недопустимо для банковских переводов.
Когда MongoDB лучше PostgreSQL? — когда данные неструктурированные, схема часто меняется, нужна горизонтальная масштабируемость. Пример: каталог товаров с разными атрибутами у каждой категории. Но для аналитики PostgreSQL удобнее.
Можно ли делать аналитику на 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.