Ответ
Реляционные БД (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).