Рубріки: Теория

СУБД: какие бывают, как выбрать

Сергій Бондаренко

Что такое система управления базами данных (СУБД)

База данных – это массив информации, к которой мы регулярно обращаемся и даже не замечаем этого. Например, вы авторизуетесь в социальной сети или просто загружаете картинку на сайт. В первом случае используется база данных учетных записей всех пользователей сети, во втором – база данных, в которой хранится информация о файлах на сервере. Иными словами, база данных – это упорядоченный набор информации, к которому можно обращаться по мере необходимости, дополняя и редактируя его структуру.

Типы СУБД

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

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

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

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

Помимо реляционных СУБД, различают также следующие типы, в зависимости от модели БД:

  • Иерархические – при которых информация в базе данных хранится в виде объектов, объединенных в древовидную структуру. По сравнению с другими типами СУБД, иерархическая СУБД обладает относительно небольшим арсеналом операций по манипулированию данными (которого, впрочем, достаточно для решения большинства задач).
  • Сетевые – СУБД, которые как и иерархические имеют древовидную структуру, но отличаются от иерархических СУБД тем, что любая запись-потомок может иметь сразу несколько предков. Сложность построения такой БД компенсируется хорошими показателями скоростью доступа и низким расходом оперативной памяти.
  • Объектно-ориентированные (объектные) СУБД – базы данных, где каждая запись рассматривается как отдельный объект с некоторым набором свойств, взаимодействующий с другими объектами БД. В языке запросов реализована парадигма ООП – объекты, классы, наследование.
  • Объектно-реляционные СУБД – в которых объединены свойства реляционных и объектных СУБД.

ПО для работы с базами данных может быть локальным или распределенным. Локальные СУБД размещают все свои компоненты на одном компьютере, распределенные СУБД могут располагаться на нескольких рабочих станциях.

Для общения с БД используется специальный синтаксис, который называется структурированным языком запросов SQL (Structured Query Language). Для нереляционных БД применяется иной синтаксис, который называется NoSQL. Такие СУБД применяются для хранения больших данных или для БД с большим количеством внутренних связей. Иногда вместо стандартного языка запросов используется какой-нибудь язык программирования, например JavaScript.

Требования к СУБД

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

К самим СУБД был сформирован ряд требований, которым обязательно должна соответствовать любая современная СУБД.

  1. Непротиворечивость данных. Информация в БД должна быть целостной и ошибок возникать не должно. Связанные данные должны адекватно изменяться. Например, пользователь делает заказ товара в магазине – в БД должно произойти резервирование и оформление заказа, а общее число приобретенного товара на складе должно быть уменьшено на единицу.
  2. Данные должны быть актуальными.
  3. Пользователь должен иметь возможность по запросу получить быстрый доступ к любой части БД.
  4. Данные должны быть лишены избыточности.
  5. Информация в СУБД должна быть максимально защищена от несанкционированного доступа, изменения или удаления.
  6. В случае технического сбоя СУБД должна иметь возможность восстановления исходной информации из резервной копии или с помощью другой технологии коррекции ошибок. СУБД обязана вести системный журнал со всеми изменениями, вносимыми в БД. Это позволит исправить ошибки и откатить БД до рабочей версии, в случае, например, вирусной атаки.

Рекомендации по выбору СУБД

Реляционные СУБД (Oracle, MySQL, Microsoft SQL Server, PostgreSQL) универсальны и подходят почти для любых задач, когда не нужно обрабатывать очень большой поток запросов и хранить слишком большие объемы данных. Когда же запросов много, возникает проблема масштабирования, с которой реляционные СУБД пока нормально справиться не могут.

Самая простая СУБД предполагает использование парадигмы «ключ-значение» (например, Redis и Memcached). Обычно такие СУБД применяют для решения задач кеширования. Отдельные СУБД данного типа позволяют перенести работу полностью в память и задать время существования записей (затем они автоматически будут удалены). Для баз данных с большим числом и сложными структурами хранимых сущностей эти СУБД неудобны. 

Если необходимо хранить связи между узлами в графовой структуре БД (например, в социальной сети для описания общих интересов или родственных связей) рекомендуем обратить внимание на такие СУБД как InfiniteGraph, Neo4j, Amazon Neptune и InfoGrid. Данное ПО позволит вам построить систему оценок и рекомендаций.

В колоночных СУБД используется особый способ записи информации, благодаря чему менять структуру таблиц можно очень быстро. Этот тип БД рассматривает колонку как отдельную таблицу. Если в обычной реляционной СУБД считывание данных происходит по всей строке, пока не будет достигнута нужная колонка, в колоночной СУБД считывается сразу нужный столбец. Из преимуществ колоночных СУБД можно выделить хороший процент сжатия, что заметно уменьшает занимаемое пространство. Особенностью колоночных баз и колоночных индексов является то, что для них невозможна операция промежуточной вставки или апдейта. Часто эти базы не предусматривают оператор UPDATE, только DELETE и INSERT. Применять такие колоночные СУБД как SAP IQ, Vertica, ClickHouse, Google BigQuery, InfoBright для простой выборки со статическими параметрами, где хранится менее ста миллионов строк, не имеет смысла.    

Документная СУБД оптимальна в тех случаях, когда объекты предполагается помещать, например, в какое-нибудь хранилище состояний или когда записываются сложные структуры со списками и словарями (например, если вы работаете с форматом JSON). А, вот, для формирования отчетности и для реализации транзакционной модели документная СУБД это не самый лучший вариант.

Пять самых распространенных СУБД

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

MySQL

MySQL – это одна из наиболее популярных реляционных баз данных. Данную СУБД часто включают в состав серверов. СУБД работает на всех основных платформах, включая Red Hat, Fe­dora, Ubuntu, Debian, Solaris, Microsoft Windows и Apple macOS. Реализована поддержка нескольких процессоров и многопоточность. Через API с базами данных можно работать с помощью популярных языков программирования (C, C++, C#, PHP, Java, Ruby, Python и Perl). Библиотека функций SQL реализуется через высокооптимизированную библиотеку классов благодаря чему достигается высокая скорость работы и отсутствуют утечки памяти. В MySQL реализована поддержка Novell Cluster.

К сожалению, MySQL не часто обновляется и не поддерживает горячее резервное копирование. MySQL часто критикуют за недостаточную надежность, а, кроме того, в ней имеются проблемы с юникодом.

Oracle RDBMS (Oracle Database)

Данная СУБД идеально подходит для больших организаций, которые обрабатывают огромное количество данных. Она выпускается в различных редакциях, от Enterprise Edition до Lite – для мобильных устройств. Бесплатная версия Express Edition (XE) ограничена используемой оперативной памятью (1 ГБ), а также всего одним процессором, максимальный объем БД для бесплатной редакции — 11 ГБ. Oracle СУБД обеспечивает автономное администрирование, в ее составе вы найдете инструменты для управления базами данных «на все случаи жизни». Каждая транзакция проходит изолированно, что позволяет добиться высокого уровня безопасности.

PostgreSQL

Довольно распространенная СУБД PostgreSQL, которая является бесплатной и объектно-реляционной. Несмотря на то, что СУБД является полностью бесплатным ПО, за ее внедрение, модификацию и поддержку придется все же платить дополнительно.

 PostgreSQL может работать с базами данных любого размера и любым количество записей и индексов в таблице. СУБД отличает расширяемость – можно добавить собственные преобразования типов, домены, индексы, операторы, процедурные языки, поддерживается загрузка C-совместимых модулей.  В PostgreSQL реализованы сложные и надёжные механизмы транзакций и репликации. PostgreSQL поддерживает битовые строки и сетевые адреса, массивы данных, в том числе многомерные, композитные типы и прочие сложные структуры. В СУБД присутствует поддержка XML, JSON и NoSQL-баз.

Microsoft SQL Server

Довольно популярная СУБД от Microsoft, которая ориентирована на платформу Windows. Для управления БД используется процедурное расширение языка SQL — Transact-SQL. Оно добавляет к основному функционалу языка запросов управляющие операторы, дает возможность работать с локальными и глобальными переменными, а также расширяет возможности по работе со строками, датой, математикой и пр.

SQL Server хорошо масштабируется, может развертываться в настольных системах, в центрах обработки данных, а также в «облаке» (в 32-битном и 64-битном варианте). Поддерживается принцип самообслуживания, СУБД оптимизирована под экосистемы «облачных» вычислений.

MongoDB

MongoDB  – это одна из самых популярных СУБД с открытым исходным кодом типа NoSQL. Обычно MongoDB выбирают, когда есть необходимость в масштабируемой базе данных. В числе клиентов, использующих MongoDB такие крупные организации как IBM, Twitter, Zendesk, Forbes, Facebook, Google.

Данные хранятся в виде коллекций и документов, в формате BSON (бинарные JSON-подобные документы). В отличие от реляционных БД здесь нет сложных табличных соединений типа JOIN. Имеется поддержка индексов, присутствует возможность работы с несколькими репликами на различных узлах. Поддерживается автоматическая фрагментация. Для работы с БД можно использовать собственную оболочку MongoDB Compass или один из альтернативных графических интерфейсов сторонних разработчиков.

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

Заключение

Система управлением базами данных имеет очень большое значение. От нее зависит функциональность огромного количества приложений и веб-сервисов – от площадок для интернет-маркетинга до синхронизации медицинских данных и сервисов для продажи билетов.

Большие объемы хранимой информации представляют особый интерес для маркетологов и аналитиков, которые могут выполнять прогнозирование используя сложные статистические методы, искусственный интеллект и машинное обучение. Специальные инженеры (data-scientist) могут определять тенденции спроса на товар, формировать тарифные планы, востребованные покупателем и так далее. Все это делается при помощи массивов информации, управляемой СУБД. Объем анализируемой информации «биг дата» может достигать сотен петабайт и это число растет каждый год. 

Если вас заинтересовала данная тема, рекомендуем посмотреть видео, в котором просто объясняются базовые вещи, которые должен знать каждый разработчик.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023