В чем разница реляционных и нереляционных баз данных
Что проверяют
Понимаете ли вы, что выбор зависит от формы данных и требований к согласованности, а не от моды.
Как отвечать
Реляционные: данные в таблицах со строгой схемой, связи по ключам, язык запросов SQL, транзакции с гарантиями ACID. Сильны там, где данные связаны, а согласованность важнее скорости записи: финансы, заказы, учёт.
Нереляционные это не один тип, а несколько семейств:
- документные (MongoDB): документ произвольной структуры, читается целиком. Хороши, когда набор полей разный от записи к записи;
- ключ-значение (Redis): максимально быстрый доступ по ключу, кэш и сессии;
- колоночные (ClickHouse, Cassandra): аналитика по огромным объёмам, где читают немного колонок из миллиардов строк;
- графовые (Neo4j): связи это основной объект запроса, обход в глубину дешевле рекурсивных соединений.
Главные различия на практике: схема на записи против схемы в приложении; соединения на стороне базы против денормализации; строгая согласованность против согласованности в конечном счёте и горизонтального масштабирования.
Важная оговорка: противопоставление сильно сгладилось. PostgreSQL умеет jsonb с индексами и закрывает большую часть документных сценариев, а многие NoSQL добавили транзакции. Поэтому современный ответ звучит так: начинаем с реляционной, а специализированную базу добавляем под конкретную задачу.
Что это меняет для тестирования: в нереляционной базе схему не проверяет никто, кроме приложения, поэтому документы с неполной структурой это отдельный класс дефектов.
Где спотыкаются
Считают NoSQL синонимом MongoDB.
Говорят «NoSQL быстрее», не уточняя, в каком сценарии.
Уверены, что в NoSQL нет транзакций вовсе.
Не знают про jsonb в PostgreSQL и противопоставляют то, что давно сошлось.