Базы данных SQL и NoSQL: основные различия | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional PostgreSQL Подготовка к сертификации Oracle Java Programmer (OCAJP) C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Symfony Framework Unity Game Developer. Basic JavaScript Developer. Professional Android Developer. Basic JavaScript Developer. Basic Java Developer. Professional Highload Architect Reverse-Engineering. Professional Java Developer. Basic PHP Developer. Professional Алгоритмы и структуры данных Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Экспресс-курс «Введение в непрерывную поставку на базе Docker» Базы данных Reverse-Engineering. Professional Administrator Linux. Professional Network engineer Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Базы данных SQL и NoSQL: основные различия

Когда надо выбрать СУБД, мы чаще всего отдаем предпочтение реляционной SQL, обходя вниманием нереляционные (NoSQL) структуры. Однако преимущества есть у обоих вариантов. Давайте рассмотрим их ключевые особенности.

Язык

Давайте представим, что у нас есть город А, все жители которого разговаривают на одном языке, и этот язык — единственное средство взаимодействия между людьми. Также существует город B, все жители которого разговаривают на разных языках. При этом они взаимодействуют с окружающим миром абсолютно по-разному, то есть универсальное средство общения попросту отсутствует.

Эти простые примеры наглядно демонстрируют основные отличия между реляционными и нереляционными БД.

Да, реляционные БД используют для определения и обработки данных SQL — гибкий язык запросов, выбор которого минимизирует ряд рисков и прекрасно подходит для комплексных запросов. Но есть и обратная сторона медали: SQL имеет ряд ограничений. В частности, построение запросов обязывает предопределять структуру данных, то есть, если вы потом захотите эту структуру изменить, это может оказаться губительным для системы.

Что касается нереляционных БД, то они предлагают динамическую структуру данных, то есть данные можно хранить разными способами: колоночным, документо-ориентированным, на основе пар «ключ-значение» либо в виде графов.

Что на практике может дать такая гибкость: • возможность создавать документы без необходимости заранее задавать их структуру; • каждый документ способен обладать своей структурой; • у каждой БД возможно наличие собственного синтаксиса; • есть возможность добавлять поля непосредственно в процессе работы с данными.

1-1801-5d2aa3.png

Масштабируемость

Чаще всего SQL-базы масштабируются вертикально, то есть можно повышать нагрузку на отдельно взятый сервер и наращивать мощность центральных процессоров, а также объемы ОЗУ либо системы хранения данных. В случае с NoSQL базы масштабируются горизонтальным способом. Это, к примеру, значит, что можно повышать трафик, распределяя его либо добавляя к вашей СУБД больше серверов. Это как добавлять больше этажей к зданию или даже добавлять больше зданий на улице. То есть в случае с NoSQL система может стать и больше, и мощнее, о чем следует помнить, если нужна БД для больших либо постоянно изменяющихся структур данных.

Структура

В SQL-системах данные представляются в формате таблиц, тогда как в NoSQL — в формате документов, графов, пар «ключ-значение» либо wide-column-хранилищ. Такое положение вещей делает SQL-БД лучшим выбором для приложений, предполагающих транзакции с несколькими записями (той же системы учетных записей) или для устаревших систем, ранее спроектированных и построенных для реляционных структур.

Напоследок вспомним основные СУБД обоих видов: • SQL: MySQL, Oracle, PostgreSQL, Microsoft SQL Server; • NoSQL: MongoDB, Redis, RavenDB Cassandra, BigTable, HBase, Neo4j, CouchDB.

По материалам: https://libraitsolutions.com/the-sql-vs-nosql-difference-mysql-vs-mongodb/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться