В чем разница между реляционными (SQL) и нереляционными (NoSQL) базами данных?

«В чем разница между реляционными (SQL) и нереляционными (NoSQL) базами данных?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Реляционные БД (SQL) организуют данные в виде таблиц со строго заданной схемой (столбцы и типы данных). Связи между таблицами устанавливаются с помощью ключей (первичных и внешних).

Нереляционные БД (NoSQL) — это общий термин для различных моделей хранения данных, которые не используют табличную реляционную модель. Они предлагают гибкие схемы.

Сравнительная таблица:

Характеристика Реляционные БД (SQL) Нереляционные БД (NoSQL)
Модель данных Таблицы со строгой схемой (schema-on-write) Гибкая: документы, ключ-значение, графы, колонки (schema-on-read)
Язык запросов Стандартизированный SQL (Structured Query Language) Специфичные для каждой БД API и языки запросов
Масштабирование Вертикальное (увеличение мощности сервера) Горизонтальное (добавление новых серверов)
Транзакции Поддержка ACID (Atomicity, Consistency, Isolation, Durability) Чаще BASE (Basically Available, Soft state, Eventual consistency), но некоторые поддерживают ACID
Примеры PostgreSQL, MySQL, Oracle, SQL Server MongoDB (документная), Redis (ключ-значение), Cassandra (колоночная), Neo4j (графовая)

Примеры запросов:

-- SQL (PostgreSQL): Выборка пользователей старше 30 лет с JOIN по заказам.
SELECT u.name, o.order_id FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.age > 30;
// NoSQL (MongoDB): Аналогичная выборка (предполагается, что заказы вложены в документ пользователя).
db.users.find(
    { age: { $gt: 30 } },
    { name: 1, 'orders.order_id': 1 } // Проекция
);

Когда что выбирать?

  • SQL: Когда нужна целостность данных, сложные связи, транзакции (банковские системы, ERP).
  • NoSQL: Для больших объемов неструктурированных/полуструктурированных данных, необходимости гибкой схемы и горизонтального масштабирования (каталоги товаров, ленты социальных сетей, IoT).