Ответ
SQL (Реляционные БД) используют таблицы со строгой, предопределенной схемой данных и язык SQL для запросов. Они основаны на принципах ACID (атомарность, согласованность, изоляция, долговечность).
NoSQL (Нереляционные БД) — это общий термин для различных моделей данных (документные, ключ-значение, графовые, колоночные), которые часто предлагают гибкую схему и горизонтальную масштабируемость.
Сравнение:
| Аспект | SQL (MySQL, PostgreSQL) | NoSQL (MongoDB, Redis, Cassandra) |
|---|---|---|
| Модель данных | Таблицы со строками и столбцами | Документы, пары ключ-значение, графы, широкие столбцы |
| Схема | Жесткая, требует миграций | Гибкая (schema-less или динамическая) |
| Масштабирование | Вертикальное (мощный сервер) | Горизонтальное (много серверов) |
| Транзакции | Полная поддержка ACID | Часто eventual consistency, поддержка ACID варьируется |
| Запросы | Мощный стандартизированный язык SQL | Специфичные для БД API, часто без JOIN |
Пример запроса:
-- SQL: Найти пользователей старше 25 лет
SELECT name, email FROM users WHERE age > 25;
// NoSQL (MongoDB): Та же операция
db.users.find({ age: { $gt: 25 } }, { name: 1, email: 1 });
Выбор технологии: Используйте SQL для сложных запросов, транзакций и целостности данных (финансовые системы). Выбирайте NoSQL для больших объемов неструктурированных данных, горизонтального масштабирования и гибкости (каталоги продуктов, аналитика).