Код
#статьи

Система управления базами данных: что это такое и зачем она нужна

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

Иллюстрация: Оля Ежак для 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
Изображение: PostgreSQL

MySQL

Тип. Реляционная СУБД клиент-серверного вида.

Стоимость. Бесплатно.

Лицензия. GPLv2, проприетарная.

Для кого. Подходит для небольших и средних команд и проектов.

Преимущества. Интерфейс программы позволяет работать с таблицами разных форматов. MySQL работает онлайн и вмещает до 50 млн элементов. Но по функциональности она уступает PostgreSQL. При этом её можно интегрировать с другими СУБД.

MySQL использовали для сайтов и интернет-магазинов такие компании, как Twitter, Alibaba, «Фейсбук»*, Wikipedia.

После того как MySQL купила компания Oracle, пользователи стали немного переживать, что в скором времени база данных может стать платной. Но пока она остаётся бесплатной.

Скачать СУБД можно бесплатно на официальном сайте.

Интерфейс MySQL
Изображение: MySQL

Microsoft SQL Server

Тип. Реляционная СУБД.

Стоимость. Бесплатно.

Лицензия. Проприетарная.

Для кого. Платную версию используют в крупных компаниях, а бесплатную можно без проблем применять в проектах с объёмом данных до 10 ГБ.

Преимущества. Эта СУБД добавляет автоматизацию задач — например, можно задать скрипт, который будет управлять памятью. Ещё Microsoft SQL Server позволяет удобно хранить сложные структуры данных и быстро искать их.

СУБД совместима с другими программами Microsoft — например, Excel и Access. С ними можно сделать интеграцию и выгружать данные оттуда, а также изменять их онлайн.

В качестве языка запросов Microsoft SQL Server использует язык SQL.

Скачать СУБД можно на официальном сайте.

Интерфейс Microsoft SQL Server
Изображение: Microsoft

SQLite

Тип. Однофайловая СУБД в виде библиотеки для языков программирования.

Стоимость. Бесплатно.

Лицензия. GPLv2, проприетарная.

Для кого. Подходит для небольших проектов.

Преимущества. SQLite очень компактная СУБД, которая не использует серверы и другие утилиты. Все данные хранятся на одном устройстве.

На SQLite можно написать простой сайт или приложение, у которого будет ограничен трафик и объём хранимых данных. СУБД работает на любых устройствах — смартфонах, компьютерах, телевизорах и других, куда можно загрузить библиотеку. Она не нуждается в администрировании, а её язык запросов — C.

Скачать СУБД можно на официальном сайте.

Интерфейс SQLite
Изображение: sqliteexpert.com

MongoDB

Тип. Документная СУБД с NoSQL-управлением, в которой данные хранятся в виде JSON-файлов.

Стоимость. Бесплатно.

Лицензия. Server Side Public License.

Для кого. Подходит для тех, кому нужно работать с большими объёмами данных из множества источников.

Преимущества. Главная особенность этой СУБД — данные представлены в виде текстовых документов, которые записаны в формате JSON. 

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

MongoDB используют такие компании, как «Фейсбук», Google, Twitter, Forbes, IBM, а также многие интернет-магазины.

Скачать СУБД можно на официальном сайте.

Интерфейс MongoDB
Изображение: studio3t.com

Redis

Тип. База данных типа «ключ — значение».

Стоимость. Бесплатно.

Лицензия. BSD, Open Source.

Для кого. Redis используют для сайтов путешествий, форумов и социальных сетей. Также она подойдёт для SaaS-приложений и сервисов электронной коммерции.

Преимущества. Redis можно использовать в облаке — полностью готовую к работе и оптимально настроенную. Она легко масштабируется и управляется.

В Redis можно перенести данные из другой базы данных с помощью автоматизированного сервиса.

Скачать СУБД можно на официальном сайте.

Интерфейс Redis
Изображение: stackoverflow.com

Oracle Database

Тип. Объектно-реляционная база данных.

Стоимость. Бесплатно.

Лицензия. Проприетарная.

Для кого. Для проектов любой сложности.

Преимущества. Oracle DB работает как клиент-сервер. Это значит, что она располагается на сервере вместе с базой данных. Поэтому, чтобы работать с ней, нужен специальный интерфейс приложения-клиента. Пользователь управляет пересылкой и получением данных от сервиса.

Oracle DB обеспечивает высокую безопасность и лёгкий доступ для пользователей. Ещё она позволяет снизить нагрузку на клиентские компьютеры. При этом сервер для СУБД должен быть помощнее.

Скачать СУБД можно на официальном сайте.

Интерфейс Oracle Database
Изображение: sqlmanager.net

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


Онлайн-школа для детей Skillbox Kids
Учим детей программированию, созданию игр, сайтов и дизайну. Первое занятие бесплатно! Подробности — по клику.
Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована