Система управления базами данных: что это такое и зачем она нужна
Рассказываем, как устроены СУБД и какие они бывают, а также делимся подборкой из пяти самых популярных среди разработчиков баз данных.


Иллюстрация: Оля Ежак для Skillbox Media
В базах данных сегодня хранится буквально всё — ваши переписки, данные паспорта на «Госуслугах», пароли от сайтов, видео на хостингах, треки на музыкальных платформах. Но чтобы вся эта информация не потерялась, а данными было удобно управлять, придумали СУБД.
Что такое СУБД
Чтобы понять, что такое СУБД, нужно сначала узнать, что такое база данных (БД).
База данных — это набор упорядоченных и структурированных данных, которые хранятся на определённом компьютере. Проще всего представить её как большую Excel-таблицу, где у каждого элемента (строки) есть определённые свойства (столбцы).
Если создать базу данных для магазина продуктов, то у каждого товара — например, жвачки, шоколадки и бутылки воды, — будут свойства: цена, количество штук в наличии и срок годности.

Иллюстрация: Оля Ежак для Skillbox Media
Базы данных — это просто файлы на диске компьютера, куда можно записывать новые элементы. Но сами БД ничего не умеют и для них нужно писать свои методы для управления — например, для добавления нового элемента или поиска нужной записи. Чтобы облегчить работу программистам, придумали СУБД.
Система управления базами данных (СУБД) — это набор инструментов, которые позволяют удобно управлять базами данных: удалять, добавлять, фильтровать и находить элементы, менять их структуру и создавать резервные копии.
СУБД можно представить как прослойку между базой данных и пользовательскими запросами к ней.

Иллюстрация: Оля Ежак для Skillbox Media
Когда пользователь нажимает на кнопку на сайте — например, чтобы скачать картинку, — сайт составляет специальный запрос к базе данных и отправляет его в СУБД. Она разбирает его и ищет в базе данных запрашиваемую информацию, а затем возвращает обратно сайту. Он уже конвертирует их в читаемый для пользователя вид и отдаёт ему.
Без СУБД разработчикам пришлось бы самостоятельно искать в файлах баз данных информацию, которая им нужна. Можно сказать, что база данных без СУБД — это как машина без кузова. В теории это машина: можно её заправлять, менять масло и детали. Но нормально поездить на ней не получится. Придётся сначала всё прикрутить, сделать кузов и только потом уже ехать.

Изображение: Big Pants Production / Shutterstock / Skillbox Media
СУБД нужна, чтобы упростить жизнь программистам и дать им все инструменты для работы с базами данных.
Для чего нужны СУБД
СУБД нужны для всех манипуляций с базами данных, а именно чтобы:
- создавать базы данных и администрировать их: удалять, изменять и объединять;
- держать данные в структурированном виде и необходимом формате;
- защищать данные от нежелательных изменений и попыток взлома;
- загружать и сортировать данные с помощью фильтров;
- делать резервные копии, восстанавливать базы данных после сбоёв и поддерживать общую целостность.
С помощью СУБД разработчики следят за всеми изменениями в базах данных. А БД хранят информацию пользователей: их транзакции и действия.

Иллюстрация: Оля Ежак для Skillbox Media
Например, чтобы создать базу данных с каталогом всех товаров на маркетплейсе, нужно завести огромную таблицу со строками, где у каждой будут определённые свойства. Они могут быть такими:
- название товара;
- стоимость;
- количество единиц на складе;
- поставщик.
Чтобы держать такую таблицу в порядке и постоянно дополнять её новыми элементами, нужно обеспечить надёжность и высокую скорость работы. Для этого как раз и нужны СУБД.
Из чего состоит СУБД
СУБД — это набор инструментов, каждый из которых способен совершать с базой данных определённое действие: считывать её, удалять элементы или обрабатывать запросы от пользователя. И чтобы все эти инструменты правильно функционировали, у СУБД должна быть хорошо прописанная архитектура.
Главные элементы СУБД — ядро, процессор, программные средства и базы данных. Поговорим о каждом из них подробнее.

Иллюстрация: Оля Ежак для Skillbox Media
Ядро. Отвечает за работу всей системы в целом. Через него проходят все процессы обработки данных и их хранения. Ядро следит за всеми изменениями баз данных и фиксирует их.
Процессор, или компилятор. Занимается обработкой запросов от пользователей. Главная его задача — преобразовать SQL-запрос в понятные для компьютера команды, а затем вернуть результаты.
Программные средства, или утилиты. Нужны, чтобы пользователь мог вводить запросы, а администраторы могли настраивать доступ и другие необходимые параметры.
Базы данных. Место, где хранятся данные в упорядоченном, а иногда и в зашифрованном виде. Базы могут различаться по структуре и типам представления данных.
Виды СУБД
СУБД делят на разные типы и по разным параметрам. Мы рассмотрим, как они различаются в четырёх классификациях: по расположению баз данных, по хранению и обработке данных, по языку запросов, по структуре и организации данных.
По расположению баз данных
СУБД бывают локальные и распределённые.
Локальные. Это когда всё содержимое базы данных располагается на одном компьютере — обычно на сервере компании.
Распределённые. Это когда база данных частично находится на разных компьютерах — например, в облаке.
Современные СУБД могут быть одновременно локальными и распределёнными.
По хранению и обработке данных
Здесь СУБД делятся на клиент-серверные, файл-серверные и встраиваемые.
Клиент-серверные. Это когда СУБД с базой данных находятся на одном компьютере, к которому пользователи обращаются с запросами. Получить доступ к такой СУБД можно с любого компьютера.
Многие интернет-магазины заводят именно такую базу данных, чтобы пользователи могли быстро получать свежую информацию об их товарах.
Файл-серверные. Это когда база данных находится на одном сервере, а СУБД — на устройствах, с которых к базе отправляют запросы. Чтобы получить данные, у пользователя должна быть установлена и настроена СУБД.
Файл-серверные СУБД используют для локальных сервисов компаний — например, CRM-систем, где находятся данные о клиентах и документообороте.
Встраиваемые. Это локальные СУБД, которые представляют собой отдельный модуль для управления данными внутри приложений. Обычно они написаны в виде библиотек для разных языков программирования.
Например, Microsoft Access и «1С:Бухгалтерия» имеют такой тип СУБД.
По языку запросов
СУБД поддерживают язык структурированных запросов и неструктурированных.
SQL. Это язык для создания структурированных запросов к базам данных. Такие СУБД самые популярные в использовании.
NoSQL. Это язык для запросов, который основан на другом языке программирования — например, Python или JavaScript. СУБД с NoSQL обычно используют при работе с большими данными.
По структуре и организации данных
И последнее свойство, по которому делятся СУБД, — то, как они представляют информацию внутри баз данных.
Реляционные. Данные в виде таблиц, которые связаны друг с другом через сквозные параметры. Такая архитектура обеспечивает построчное хранение данных и нужна для создания строгой структуры. Ещё одна их особенность: за одно обращение к базе пользователь сможет получить лишь небольшое число элементов.

Изображение: andreycha / habr.com
Каждая строка имеет уникальный идентификатор, или ключ. Поэтому найти нужные данные и связать их между собой в такой базе данных легко.
Реляционные базы данных используют, когда объём данных не превышает нескольких терабайт. Это делает их подходящими практически любому проекту.
Самые популярные среди реляционных баз данных — PostgreSQL, Microsoft SQL Server, MySQL, Oracle.
Реляционные базы данных применяют, когда важны следующие характеристики:
- Транзакционность. Для выполнения операции нужно сделать несколько запросов к базе данных. Это может быть, например, перевод денег с одной карты на другую через приложение банка.
- Частые изменения данных. Так как в реляционных базах данных строгая структура.
- Поиск по индексам. Каждый элемент такой базы данных — это строка, а искать элементы по строкам удобно.
- Запросы небольшого количества записей за раз. Реляционные базы данных работают как раз по этому принципу.
- Объём данных не превышает нескольких терабайт. Если будет больше, такая база данных будет работать медленнее.
Ключ — значение. Каждый элемент базы данных использует для хранения уникальный идентификатор, который состоит из ключа и значения. Этот способ хранения похож на тип данных «словарь» в языках программирования.
Базы данных типа «ключ — значение» имеют вид хеш-таблиц, в которых у каждой записи — только один индекс. При этом жёстких ограничений по структуре элементов нет.

Изображение: Tzoof Avny Brosh / medium.com
Такие базы данных используют по принципу логов, когда новые записи заносят в конец хранилища. Удаляют элементы с помощью добавления специальной записи.
Ещё несколько способов использования баз данных типа «ключ — значение» — очереди, кэш и логирование.
Популярные базы данных типа «ключ — значение» — Redis, DynamoDB и Aerospike.
Документные. В отличие от реляционных баз данных, документоориентированные хранят информацию в виде «документов», а не таблиц и строк. Главное преимущество документных баз данных — возможность хранить информацию без строгого ограничения по структуре.

Изображение: Тольяттинский государственный университет
Документные базы данных умеют хранить информацию целиком и получать её одним запросом. Даже если структура элементов будет разной. Ещё документные базы данных позволяют использовать ссылки на другие записи в базе, что чем-то напоминает реляционную модель.
Популярные документные базы данных — MongoDB, CouchDB и Amazon DocumentDB.
Графовые. В них элементы имеют взаимосвязи в виде графа, где у каждого его узла есть множество связей с другими узлами. Такой вид баз данных напоминает паутину. Обычно эти базы данных используют в соцсетях или рекомендательных сервисах.
Каждый узел графовой базы данных содержит в себе данные, а чтобы составить взаимосвязи между узлами, используют рёбра. В них хранятся начальный и конечный узлы, направление и тип. Рёбра описывают взаимосвязи между двумя узлами — например, «родитель — потомок», — а также действия над ними.

Изображение: Amazon
Обойти весь граф можно очень быстро, потому что связи между узлами не считаются во время запроса, а сразу хранятся в базе данных. Поэтому графовые базы данных применяются в соцсетях, рекомендательных сервисах и системах выявления мошенничества, когда нужно построить взаимосвязи между данными и запросить их.
Популярные графовые базы данных — Amazon Neptune, Neo4j и InfiniteGraph.
Колоночные. В них данные хранятся последовательно в виде одной колонки, и предполагается, что на одном и том же месте в каждой колонке хранятся элементы, которые относятся к одной строке. Это позволяет эффективно сжимать данные и анализировать их — находить сумму, количество или среднее значение.

Изображение: GrapeCity
Колоночные базы данных позволяют загружать новые данные непрерывным потоком или порциями. При этом удалять их так нельзя.
Главная область применения колоночных баз данных — анализ данных. Такие базы аналитики и менеджеры компаний используют, чтобы хранить историю событий.
Популярные колоночные базы данных — ClickHouse, Apache Druid, Vertica, BigQuery и Teradata.
Популярные СУБД
СУБД существует много, но часто программисты пользуются семью самыми популярными — PostgreSQL, Microsoft SQL Server, MySQL, SQLite, MongoDB, Redis и Oracle.
PostgreSQL
Тип. Реляционная СУБД клиент-серверного вида.
Стоимость. Бесплатно.
Лицензия. PostgreSQL License, Open Source.
Для кого. Подходит для проектов любой сложности и объёма.
Преимущества. СУБД имеет большую функциональность и высокую производительность — например, она без проблем может работать с большими данными под высокой нагрузкой.
Язык запросов — SQL, но его можно поменять через расширения на PL/Python, PL/Java и PL/Perl. И ещё одно преимущество PostgreSQL — в ней нет лимита по размеру баз данных и числу записей в таблицах.
Скачать СУБД можно на официальном сайте.

Изображение: PostgreSQL
MySQL
Тип. Реляционная СУБД клиент-серверного вида.
Стоимость. Бесплатно.
Лицензия. GPLv2, проприетарная.
Для кого. Подходит для небольших и средних команд и проектов.
Преимущества. Интерфейс программы позволяет работать с таблицами разных форматов. MySQL работает онлайн и вмещает до 50 млн элементов. Но по функциональности она уступает PostgreSQL. При этом её можно интегрировать с другими СУБД.
MySQL использовали для сайтов и интернет-магазинов такие компании, как Twitter, Alibaba, «Фейсбук»*, Wikipedia.
После того как MySQL купила компания Oracle, пользователи стали немного переживать, что в скором времени база данных может стать платной. Но пока она остаётся бесплатной.
Скачать СУБД можно бесплатно на официальном сайте.

Изображение: MySQL
Microsoft SQL Server
Тип. Реляционная СУБД.
Стоимость. Бесплатно.
Лицензия. Проприетарная.
Для кого. Платную версию используют в крупных компаниях, а бесплатную можно без проблем применять в проектах с объёмом данных до 10 ГБ.
Преимущества. Эта СУБД добавляет автоматизацию задач — например, можно задать скрипт, который будет управлять памятью. Ещё Microsoft SQL Server позволяет удобно хранить сложные структуры данных и быстро искать их.
СУБД совместима с другими программами Microsoft — например, Excel и Access. С ними можно сделать интеграцию и выгружать данные оттуда, а также изменять их онлайн.
В качестве языка запросов Microsoft SQL Server использует язык SQL.
Скачать СУБД можно на официальном сайте.

Изображение: Microsoft
SQLite
Тип. Однофайловая СУБД в виде библиотеки для языков программирования.
Стоимость. Бесплатно.
Лицензия. GPLv2, проприетарная.
Для кого. Подходит для небольших проектов.
Преимущества. SQLite очень компактная СУБД, которая не использует серверы и другие утилиты. Все данные хранятся на одном устройстве.
На SQLite можно написать простой сайт или приложение, у которого будет ограничен трафик и объём хранимых данных. СУБД работает на любых устройствах — смартфонах, компьютерах, телевизорах и других, куда можно загрузить библиотеку. Она не нуждается в администрировании, а её язык запросов — C.
Скачать СУБД можно на официальном сайте.

Изображение: sqliteexpert.com
MongoDB
Тип. Документная СУБД с NoSQL-управлением, в которой данные хранятся в виде JSON-файлов.
Стоимость. Бесплатно.
Лицензия. Server Side Public License.
Для кого. Подходит для тех, кому нужно работать с большими объёмами данных из множества источников.
Преимущества. Главная особенность этой СУБД — данные представлены в виде текстовых документов, которые записаны в формате JSON.
Вместо таблиц здесь данные представлены в виде коллекций — групп документов. СУБД оптимизирована для распределённой работы, но также поддерживает локальное хранение данных.
MongoDB используют такие компании, как «Фейсбук», Google, Twitter, Forbes, IBM, а также многие интернет-магазины.
Скачать СУБД можно на официальном сайте.

Изображение: studio3t.com
Redis
Тип. База данных типа «ключ — значение».
Стоимость. Бесплатно.
Лицензия. BSD, Open Source.
Для кого. Redis используют для сайтов путешествий, форумов и социальных сетей. Также она подойдёт для SaaS-приложений и сервисов электронной коммерции.
Преимущества. Redis можно использовать в облаке — полностью готовую к работе и оптимально настроенную. Она легко масштабируется и управляется.
В Redis можно перенести данные из другой базы данных с помощью автоматизированного сервиса.
Скачать СУБД можно на официальном сайте.

Изображение: stackoverflow.com
Oracle Database
Тип. Объектно-реляционная база данных.
Стоимость. Бесплатно.
Лицензия. Проприетарная.
Для кого. Для проектов любой сложности.
Преимущества. Oracle DB работает как клиент-сервер. Это значит, что она располагается на сервере вместе с базой данных. Поэтому, чтобы работать с ней, нужен специальный интерфейс приложения-клиента. Пользователь управляет пересылкой и получением данных от сервиса.
Oracle DB обеспечивает высокую безопасность и лёгкий доступ для пользователей. Ещё она позволяет снизить нагрузку на клиентские компьютеры. При этом сервер для СУБД должен быть помощнее.
Скачать СУБД можно на официальном сайте.

Изображение: sqlmanager.net
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».