Система управления базами данных: что это такое и зачем она нужна
Рассказываем, как устроены СУБД и какие они бывают, а также делимся подборкой из пяти самых популярных среди разработчиков баз данных.
Иллюстрация: Оля Ежак для Skillbox Media
В базах данных сегодня хранится буквально всё — ваши переписки, данные паспорта на «Госуслугах», пароли от сайтов, видео на хостингах, треки на музыкальных платформах. Но чтобы вся эта информация не потерялась, а данными было удобно управлять, придумали СУБД.
Что такое СУБД
Чтобы понять, что такое СУБД, нужно сначала узнать, что такое база данных (БД).
База данных — это набор упорядоченных и структурированных данных, которые хранятся на определённом компьютере. Проще всего представить её как большую Excel-таблицу, где у каждого элемента (строки) есть определённые свойства (столбцы).
Если создать базу данных для магазина продуктов, то у каждого товара — например, жвачки, шоколадки и бутылки воды, — будут свойства: цена, количество штук в наличии и срок годности.
Базы данных — это просто файлы на диске компьютера, куда можно записывать новые элементы. Но сами БД ничего не умеют и для них нужно писать свои методы для управления — например, для добавления нового элемента или поиска нужной записи. Чтобы облегчить работу программистам, придумали СУБД.
Система управления базами данных (СУБД) — это набор инструментов, которые позволяют удобно управлять базами данных: удалять, добавлять, фильтровать и находить элементы, менять их структуру и создавать резервные копии.
СУБД можно представить как прослойку между базой данных и пользовательскими запросами к ней.
Когда пользователь нажимает на кнопку на сайте — например, чтобы скачать картинку, — сайт составляет специальный запрос к базе данных и отправляет его в СУБД. Она разбирает его и ищет в базе данных запрашиваемую информацию, а затем возвращает обратно сайту. Он уже конвертирует их в читаемый для пользователя вид и отдаёт ему.
Без СУБД разработчикам пришлось бы самостоятельно искать в файлах баз данных информацию, которая им нужна. Можно сказать, что база данных без СУБД — это как машина без кузова. В теории это машина: можно её заправлять, менять масло и детали. Но нормально поездить на ней не получится. Придётся сначала всё прикрутить, сделать кузов и только потом уже ехать.
СУБД нужна, чтобы упростить жизнь программистам и дать им все инструменты для работы с базами данных.
Для чего нужны СУБД
СУБД нужны для всех манипуляций с базами данных, а именно чтобы:
- создавать базы данных и администрировать их: удалять, изменять и объединять;
- держать данные в структурированном виде и необходимом формате;
- защищать данные от нежелательных изменений и попыток взлома;
- загружать и сортировать данные с помощью фильтров;
- делать резервные копии, восстанавливать базы данных после сбоёв и поддерживать общую целостность.
С помощью СУБД разработчики следят за всеми изменениями в базах данных. А БД хранят информацию пользователей: их транзакции и действия.
Например, чтобы создать базу данных с каталогом всех товаров на маркетплейсе, нужно завести огромную таблицу со строками, где у каждой будут определённые свойства. Они могут быть такими:
- название товара;
- стоимость;
- количество единиц на складе;
- поставщик.
Чтобы держать такую таблицу в порядке и постоянно дополнять её новыми элементами, нужно обеспечить надёжность и высокую скорость работы. Для этого как раз и нужны СУБД.
Из чего состоит СУБД
СУБД — это набор инструментов, каждый из которых способен совершать с базой данных определённое действие: считывать её, удалять элементы или обрабатывать запросы от пользователя. И чтобы все эти инструменты правильно функционировали, у СУБД должна быть хорошо прописанная архитектура.
Главные элементы СУБД — ядро, процессор, программные средства и базы данных. Поговорим о каждом из них подробнее.
Ядро. Отвечает за работу всей системы в целом. Через него проходят все процессы обработки данных и их хранения. Ядро следит за всеми изменениями баз данных и фиксирует их.
Процессор, или компилятор. Занимается обработкой запросов от пользователей. Главная его задача — преобразовать SQL-запрос в понятные для компьютера команды, а затем вернуть результаты.
Программные средства, или утилиты. Нужны, чтобы пользователь мог вводить запросы, а администраторы могли настраивать доступ и другие необходимые параметры.
Базы данных. Место, где хранятся данные в упорядоченном, а иногда и в зашифрованном виде. Базы могут различаться по структуре и типам представления данных.
Виды СУБД
СУБД делят на разные типы и по разным параметрам. Мы рассмотрим, как они различаются в четырёх классификациях: по расположению баз данных, по хранению и обработке данных, по языку запросов, по структуре и организации данных.
По расположению баз данных
СУБД бывают локальные и распределённые.
Локальные. Это когда всё содержимое базы данных располагается на одном компьютере — обычно на сервере компании.
Распределённые. Это когда база данных частично находится на разных компьютерах — например, в облаке.
Современные СУБД могут быть одновременно локальными и распределёнными.
По хранению и обработке данных
Здесь СУБД делятся на клиент-серверные, файл-серверные и встраиваемые.
Клиент-серверные. Это когда СУБД с базой данных находятся на одном компьютере, к которому пользователи обращаются с запросами. Получить доступ к такой СУБД можно с любого компьютера.
Многие интернет-магазины заводят именно такую базу данных, чтобы пользователи могли быстро получать свежую информацию об их товарах.
Файл-серверные. Это когда база данных находится на одном сервере, а СУБД — на устройствах, с которых к базе отправляют запросы. Чтобы получить данные, у пользователя должна быть установлена и настроена СУБД.
Файл-серверные СУБД используют для локальных сервисов компаний — например, CRM-систем, где находятся данные о клиентах и документообороте.
Встраиваемые. Это локальные СУБД, которые представляют собой отдельный модуль для управления данными внутри приложений. Обычно они написаны в виде библиотек для разных языков программирования.
Например, Microsoft Access и «1С:Бухгалтерия» имеют такой тип СУБД.
По языку запросов
СУБД поддерживают язык структурированных запросов и неструктурированных.
SQL. Это язык для создания структурированных запросов к базам данных. Такие СУБД самые популярные в использовании.
NoSQL. Это язык для запросов, который основан на другом языке программирования — например, Python или JavaScript. СУБД с NoSQL обычно используют при работе с большими данными.
По структуре и организации данных
И последнее свойство, по которому делятся СУБД, — то, как они представляют информацию внутри баз данных.
Реляционные. Данные в виде таблиц, которые связаны друг с другом через сквозные параметры. Такая архитектура обеспечивает построчное хранение данных и нужна для создания строгой структуры. Ещё одна их особенность: за одно обращение к базе пользователь сможет получить лишь небольшое число элементов.
Каждая строка имеет уникальный идентификатор, или ключ. Поэтому найти нужные данные и связать их между собой в такой базе данных легко.
Реляционные базы данных используют, когда объём данных не превышает нескольких терабайт. Это делает их подходящими практически любому проекту.
Самые популярные среди реляционных баз данных — PostgreSQL, Microsoft SQL Server, MySQL, Oracle.
Реляционные базы данных применяют, когда важны следующие характеристики:
- Транзакционность. Для выполнения операции нужно сделать несколько запросов к базе данных. Это может быть, например, перевод денег с одной карты на другую через приложение банка.
- Частые изменения данных. Так как в реляционных базах данных строгая структура.
- Поиск по индексам. Каждый элемент такой базы данных — это строка, а искать элементы по строкам удобно.
- Запросы небольшого количества записей за раз. Реляционные базы данных работают как раз по этому принципу.
- Объём данных не превышает нескольких терабайт. Если будет больше, такая база данных будет работать медленнее.
Ключ — значение. Каждый элемент базы данных использует для хранения уникальный идентификатор, который состоит из ключа и значения. Этот способ хранения похож на тип данных «словарь» в языках программирования.
Базы данных типа «ключ — значение» имеют вид хеш-таблиц, в которых у каждой записи — только один индекс. При этом жёстких ограничений по структуре элементов нет.
Такие базы данных используют по принципу логов, когда новые записи заносят в конец хранилища. Удаляют элементы с помощью добавления специальной записи.
Ещё несколько способов использования баз данных типа «ключ — значение» — очереди, кэш и логирование.
Популярные базы данных типа «ключ — значение» — Redis, DynamoDB и Aerospike.
Документные. В отличие от реляционных баз данных, документоориентированные хранят информацию в виде «документов», а не таблиц и строк. Главное преимущество документных баз данных — возможность хранить информацию без строгого ограничения по структуре.
Документные базы данных умеют хранить информацию целиком и получать её одним запросом. Даже если структура элементов будет разной. Ещё документные базы данных позволяют использовать ссылки на другие записи в базе, что чем-то напоминает реляционную модель.
Популярные документные базы данных — MongoDB, CouchDB и Amazon DocumentDB.
Графовые. В них элементы имеют взаимосвязи в виде графа, где у каждого его узла есть множество связей с другими узлами. Такой вид баз данных напоминает паутину. Обычно эти базы данных используют в соцсетях или рекомендательных сервисах.
Каждый узел графовой базы данных содержит в себе данные, а чтобы составить взаимосвязи между узлами, используют рёбра. В них хранятся начальный и конечный узлы, направление и тип. Рёбра описывают взаимосвязи между двумя узлами — например, «родитель — потомок», — а также действия над ними.
Обойти весь граф можно очень быстро, потому что связи между узлами не считаются во время запроса, а сразу хранятся в базе данных. Поэтому графовые базы данных применяются в соцсетях, рекомендательных сервисах и системах выявления мошенничества, когда нужно построить взаимосвязи между данными и запросить их.
Популярные графовые базы данных — Amazon Neptune, Neo4j и InfiniteGraph.
Колоночные. В них данные хранятся последовательно в виде одной колонки, и предполагается, что на одном и том же месте в каждой колонке хранятся элементы, которые относятся к одной строке. Это позволяет эффективно сжимать данные и анализировать их — находить сумму, количество или среднее значение.
Колоночные базы данных позволяют загружать новые данные непрерывным потоком или порциями. При этом удалять их так нельзя.
Главная область применения колоночных баз данных — анализ данных. Такие базы аналитики и менеджеры компаний используют, чтобы хранить историю событий.
Популярные колоночные базы данных — 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 — в ней нет лимита по размеру баз данных и числу записей в таблицах.
Скачать СУБД можно на официальном сайте.
MySQL
Тип. Реляционная СУБД клиент-серверного вида.
Стоимость. Бесплатно.
Лицензия. GPLv2, проприетарная.
Для кого. Подходит для небольших и средних команд и проектов.
Преимущества. Интерфейс программы позволяет работать с таблицами разных форматов. MySQL работает онлайн и вмещает до 50 млн элементов. Но по функциональности она уступает PostgreSQL. При этом её можно интегрировать с другими СУБД.
MySQL использовали для сайтов и интернет-магазинов такие компании, как Twitter, Alibaba, «Фейсбук»*, Wikipedia.
После того как MySQL купила компания Oracle, пользователи стали немного переживать, что в скором времени база данных может стать платной. Но пока она остаётся бесплатной.
Скачать СУБД можно бесплатно на официальном сайте.
Microsoft SQL Server
Тип. Реляционная СУБД.
Стоимость. Бесплатно.
Лицензия. Проприетарная.
Для кого. Платную версию используют в крупных компаниях, а бесплатную можно без проблем применять в проектах с объёмом данных до 10 ГБ.
Преимущества. Эта СУБД добавляет автоматизацию задач — например, можно задать скрипт, который будет управлять памятью. Ещё Microsoft SQL Server позволяет удобно хранить сложные структуры данных и быстро искать их.
СУБД совместима с другими программами Microsoft — например, Excel и Access. С ними можно сделать интеграцию и выгружать данные оттуда, а также изменять их онлайн.
В качестве языка запросов Microsoft SQL Server использует язык SQL.
Скачать СУБД можно на официальном сайте.
SQLite
Тип. Однофайловая СУБД в виде библиотеки для языков программирования.
Стоимость. Бесплатно.
Лицензия. GPLv2, проприетарная.
Для кого. Подходит для небольших проектов.
Преимущества. SQLite очень компактная СУБД, которая не использует серверы и другие утилиты. Все данные хранятся на одном устройстве.
На SQLite можно написать простой сайт или приложение, у которого будет ограничен трафик и объём хранимых данных. СУБД работает на любых устройствах — смартфонах, компьютерах, телевизорах и других, куда можно загрузить библиотеку. Она не нуждается в администрировании, а её язык запросов — C.
Скачать СУБД можно на официальном сайте.
MongoDB
Тип. Документная СУБД с NoSQL-управлением, в которой данные хранятся в виде JSON-файлов.
Стоимость. Бесплатно.
Лицензия. Server Side Public License.
Для кого. Подходит для тех, кому нужно работать с большими объёмами данных из множества источников.
Преимущества. Главная особенность этой СУБД — данные представлены в виде текстовых документов, которые записаны в формате JSON.
Вместо таблиц здесь данные представлены в виде коллекций — групп документов. СУБД оптимизирована для распределённой работы, но также поддерживает локальное хранение данных.
MongoDB используют такие компании, как «Фейсбук», Google, Twitter, Forbes, IBM, а также многие интернет-магазины.
Скачать СУБД можно на официальном сайте.
Redis
Тип. База данных типа «ключ — значение».
Стоимость. Бесплатно.
Лицензия. BSD, Open Source.
Для кого. Redis используют для сайтов путешествий, форумов и социальных сетей. Также она подойдёт для SaaS-приложений и сервисов электронной коммерции.
Преимущества. Redis можно использовать в облаке — полностью готовую к работе и оптимально настроенную. Она легко масштабируется и управляется.
В Redis можно перенести данные из другой базы данных с помощью автоматизированного сервиса.
Скачать СУБД можно на официальном сайте.
Oracle Database
Тип. Объектно-реляционная база данных.
Стоимость. Бесплатно.
Лицензия. Проприетарная.
Для кого. Для проектов любой сложности.
Преимущества. Oracle DB работает как клиент-сервер. Это значит, что она располагается на сервере вместе с базой данных. Поэтому, чтобы работать с ней, нужен специальный интерфейс приложения-клиента. Пользователь управляет пересылкой и получением данных от сервиса.
Oracle DB обеспечивает высокую безопасность и лёгкий доступ для пользователей. Ещё она позволяет снизить нагрузку на клиентские компьютеры. При этом сервер для СУБД должен быть помощнее.
Скачать СУБД можно на официальном сайте.
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».