Реляционные базы данных и NoSQL‑хранилища

Базы данных нужны для хранения данных и их обработки. Бывают реляционные (SQL) и NoSQL системы управления базами данных.

Реляционные базы данных (SQL)

Наиболее распространенными базами данных являются реляционные или SQL — данные в них хранятся во взаимосвязаанных таблицах. Реляционные СУБД поддерживают транзакционную модель работы с данными, что важно для использования в составе систем, требовательных к надёжности хранения и целостности информации. Транзакция — это набор операций, который может быть выполнен либо весь и успешно, либо не выполнен вообще. Транзакционный подход гарантирует сохранение целостности данных, надёжную и предсказуемую работу с системой.

Типичные представители SQL СУБД: MySQL / MariaDB, PostgreSQL, MS SQL и Oracle. MySQL, MariaDB и PostgreSQL — бесплатны и для сайтов используются чаще всего. MS SQL и Oracle — платные и реже используются в веб‑проектах, но чаще применяются в корпоративных приложениях. Для обычных проектов в техническом плане нет существенной разницы какую СУБД использовать, но в экономическом плане выгоднее использовать самую распространенную MariaDB или PostgreSQL — больше разработчиков, ниже стоимость поддержки и разработки.

Базы данных и хранилища NoSQL

Есть еще так называемые NoSQL базы данных и хранилища — например, MongoDB, CouchDB, Redis, Memcached, Cassandra и Scylla. Они значительно моложе реляционных баз данных, а также существенно отличаются от них по структуре хранения и механикам работы с данными. NoSQL СУБД применяются чаще не для хранения всех данных приложения, а лишь для решения специфических задач (журналирование, кэширование, очереди заданий, распределённое хранение данных) и поэтому менее распространены в простых проектах.

Рекомендации

В качестве основного хранилища предпочтительнее использовать реляционную СУБД из‑за поддержки транзакционности и общей надёжности. Для обычных проектов рационально использовать MySQL или PostgreSQL — на простых операциях не очень заметна разница между различными реляционными базами данных. В наших проектах мы обычно склоняемся к использованию PostgreSQL.

Как правило, выбор платформы — системы управления сайтом или фреймворка, а иногда даже языка программирования уже в какой‑то мере обуславливает выбор базы данных для проекта. Системы управления сайтами на PHP обычно полноценно поддерживают в качестве БД только MySQL / MariaDB, а продукты от Microsoft, как правило, используют в одной связке, например, .NET + MS SQL. Фреймворки реже диктуют выбор конкретной СУБД — обычно они поддерживают практически все реляционные системы управления базами данных.

Нереляционные СУБД лучше применять там, где их использование позволит увеличить скорость работы приложения, но нет необходимости в обеспечении сверхнадёжного хранения данных.

хранение данныхSQLNoSQLСУБДсерверное ПО
Статья опубликована в 2019 и была обновлена в 2021 году

Тематические статьи

PostgreSQL — система управления базами данных

PostgreSQL — это популярная объектно-реляционная система управления базами данных. PostgreSQL базируется на языке SQL, отличается высокой надёжность и имеет широкие возможности.

В PostgreSQL нет ограничений на максимальный размер базы данных, количество записей и индексов таблицах. В СУБД встроены мощные и надёжные механизмы транзакций, есть возможности для репликации, шардинга и партиционирования. СУБД отличает легкая расширяемость и возможность тонкой настройки.

Статья обновлена в 2025 году
MariaDB — система управления реляционными базами данных

MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.

Статья опубликована в 2014 году
MySQL — система управления базами данных

MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб‑приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб‑фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).

Статья опубликована в 2014 году
Масштабирование баз данных — партиционирование, репликация и шардинг

СУБД — это очень часто «узкое место» в производительности веб‑приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование.

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

Статья обновлена в 2025 году
MongoDB — документо-ориентированная база данных (NoSQL)

MongoDB — это NoSQL хранилище данных, крайне удобное для хранения информации, которая не может быть нормально структурирована в рамках реляционных баз данных.

MongoDB — это СУБД с открытым исходным кодом, не требующая описания схемы таблиц. Документы в MongoDB хранятся в JSON или BSON, работа с такой моделью проще кодируется и проще управляется, а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии.

Статья опубликована в 2019 году
SQL-инъекции — распространённый метод взлома веб‑приложений и сайтов

SQL‑инъекции — это один из распространённых способов взлома сайтов и веб‑приложений, работающих с реляционными базами данных.

SQL‑инъекции основаны на внедрении в выполняемый приложением запрос к базе данных произвольного SQL‑кода, переданного злоумышленником. Последствиями SQL‑инъекций может быть как кража, модификация или удаление данных, так и полный взлом атакуемой системы — получение привилегированного доступа, например.

Статья опубликована в 2019 году