Разработка программного обеспечения на заказ

пн-пт с 09:00 до 18:00

Обзор популярных СУБД: от классики до экзотики

Оглавление

Каждый пользователь независимо от уровня навыков в ИТ регулярно обращается к базам данных, будь то каталог интернет-магазина или данные переписи населения.

База данных (БД) – доступная, структурированная информация, состоящая из 2 составляющих:

  1. данные – описание какого-либо объекта;
  2. метаданные – информация, дающая возможность оперировать данными (описание, характеристики).

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

Основные компоненты СУБД:

  • ядро для управления данными и фиксации изменений;
  • процессор языка запросов для получения данных;
  • дополнительные программы для обслуживания БД.



Функции СУБД

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

  • управление большими объемами данных (создание/модификация/удаление) транзакционным образом (ACID);
  • резервное копирование, восстановление БД из копии;
  • управление правами доступа для разных групп пользователей;
  • выборка данных с помощью SQL-запросов;

Классификация СУБД

В зависимости от цели использования СУБД классифицируют по ряду признаков.

По модели данных

Реляционная

СУБД реляционной модели данных строится на базе набора прямоугольных таблиц отношений между ними. Для управления реляционными базами данных используется специальный структурированный язык запросов (SQL). Такой тип используется, в первую очередь, в системах операционной обработки данных. Наиболее известные реляционные СУБД: MySql, PostgreSQL, Oracle.

Пример реляционной модели СУБД

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

Реляционные СУБД работают при помощи языка запросов SQL. Именно он помогает найти нужные данные среди большого объема информации и предоставить ее пользователю в простом для понимания виде. Кроме этого, транзакции проводятся в строгом соответствии с правилами ACID:

  • A (Atomicity) – атомарность. Транзакция обязательно должна примениться полностью, либо происходит ее отмена.
  • C (Consistency) – согласованность. Система должна быть согласована до старта транзакции и после ее окончания.
  • I (Isolation) – изолированность. Внутри примененной транзакции не отображаются изменения отмененной.
  • В (Durability) – долговечность. Все успешные транзакции должны быть сохранены и отображаться даже после краха системы и ее восстановления.

NoSQL

Модель NoSQL относится к не реляционным системам, например, MongoDB, Apache Cassandra, Amazon DynamoDB, FoundationDB. СУБД такого типа была разработана для работы с постоянно меняющимися, плохо структурированными и большими объемами данных.

NoSQL работает вне общепринятых стандартов SQL. Хранение, поиск, извлечение и обработка данных может вестись в произвольном формате. За счет индивидуального подхода к работе с базой удается достичь высокой производительности. Особенно это заметно при работе с данными без взаимосвязей, разной структуры и высокой вложенности.

СУБД на SQL требуют четкого соблюдения принципов ACID. В NoSQL требования к транзакциям более мягкие согласно BASE:

  • каждый запрос независимо от его успешности обязательно будет завершен;
  • записи могут какое-то время быть несогласованными, а их очередность необязательно должна быть соблюдена.

Гибкость модели делает ее применимой как при работе со сложными объемными базами, так и с совсем новыми. Так как между записями отсутствует жесткая связь, любые данные можно переносить на другие серверы без ущерба БД. Использование NoSQL менее финансово затратно за счет горизонтального масштабирования. Отпадает необходимость в дополнительных серверах.

В зависимости от модели данных, подхода к репликации и распределенности NoSQL делится на 4 категории:

  1. Key-value store (ключ-значение). Простые или составные записи этой категории имеют свой уникальный идентификатор – ключ. Такие хранилища отлично подходят для масштабирования и оперативно реагируют на запросы. Скорость – одно из главных преимуществ системы.
  2. Column family store (колоночные БД). Внешне база выглядит как классическая таблица из столбцов и строк, однако данные вносятся в не связанные между собой колонки. Таким образом добавление новой информации не влияет на систему. Это позволяет оперировать только нужными записями, что позволяет достичь высокой скорости обработки и сэкономить место на диске.
  3. Document-oriented store (документированные БД). Здесь записи хранятся в текстовых форматах. Само хранилище представляет собой иерархическую базу из логически сгруппированных элементов. При этом в процессе работы структура может меняться. Такая СУБД часто используется при обработке больших массивов.
  4. Graph store (графовые БД). Здесь элементы размещаются в узлах, которые соединены определяющими отношения данных ребрами. Ключевой момент таких баз – наличие не только самих данных, но и связей между ними.

СУБД NoSQL лучше всего подойдет в следующих случаях:

  • для хранения и работы с регулярно меняющимися большими массивами неструктурированных данных;
  • если отсутствует возможность сформировать схему управления до создания БД;
  • если есть перспективы изменения архитектуры хранилища;
  • при необходимости быстрого запуска прототипа какого-либо продукта;
  • если планируется масштабируемость, которую нужно провести максимально оперативно.

Иерархическая

Здесь база данных представлена объектами различных уровней, которые располагаются в виде древовидной структуры. В главный элемент системы – корневой – вложен один или несколько других подтипов. Каждый последующий строится таким же образом.

Пример иерархической модели СУБД

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

Построение системы осуществляется по следующему принципу:

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

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

Сетевая

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

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

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

Объектно-реляционная

Этот тип включает в себя реляционную систему с объектно-ориентированными технологиями. Сюда относятся такие СУБД, как Oracle Database, Informix, DB2, PostgreSQL.

Главная задача объектно-реляционной СУБД – с помощью производных данных усилить функциональность реляционной базы. Достигается эта цель при помощи 4 основных подходов:

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

Смешанная

Здесь имеет место сочетание нескольких разноплановых баз данных в одну серверную систему. Соответственно СУБД смешанного типа позволяет хранить и обрабатывать данные из любой базы такой системы. Основная задача СУБД смешанного типа – преобразовывать данные в нужный формат.

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

По степени распределенности

Локальные

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

Распределенные

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

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

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

Распространенные реляционные СУБД

MySQL

MySQL — одна из самых востребованных сегодня СУБД, работающих по принципу клиент-сервер.

Преимущества системы:

  • поддержка разных типов таблиц;
  • возможность дополнительно;
  • неограниченный многопользовательский режим;
  • бесплатная.

Недостатки:

  • из-за открытого исходного кода данных система не гарантирует безопасное хранение и передачу информации;
  • Язык SQL стандартизован и имеет несколько версий. Самая старая SQL92. К сожалению, MYSQL поддерживает не полностью даже этот устаревший стандарт, из-за этого СУБД имеет значительные ограничения, особенно при переходе с других СУБД.

Oracle

СУБД клиент-серверного типа Oracle применима для работы с реляционными и объектно-ориентированными базами. В зависимости от размера БД и цели использования можно приобрести одну из 4 редакций:

  1. Standard Edition 2 – для небольших баз.
  2. Enterprise Edition – для крупных компаний с перспективой масштабирования БД.
  3. Express Edition – бесплатная версия, отличающаяся высокой скоростью, но для баз объемом не более 11 ГБ.
  4. Personal Edition – версия с предварительным тестовым периодом отдельных компонентов программы.

Достоинства:

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

Недостатки:

  • высокая стоимость;
  • не поддерживается на технически слабом оборудовании.

SQL Server

СУБД клиент-серверного типа также представлена в нескольких редакциях:

  • Enterprise – система с расширенным набором функций.
  • Standard – версия с самыми необходимыми инструментами для хранения, обработки и передачи данных.
  • Developer – редакция для разработчиков. Включает в себя все функции SQL Server, но для тестирования. Другими словами, использовать с реальными БД версию не получится.
  • Express – сборка с упрощенным функционалом для небольших БД до 10 ГБ.

Достоинства:

  • стабильность и скорость обработки запросов;
  • простота в использовании;
  • визуализация на мобильных устройствах;
  • свободное взаимодействие с продуктами Microsoft.

Недостатки

  • высокая цена;
  • тяжело работает вне системы Microsoft.

PostgreSQL

PostgreSQL – одна из самых старых СУБД с открытым исходным кодом. Написана на базе POSTGRES.

Достоинства:

  • позволяет масштабировать БД и работает с большими объемами информации;
  • распространяется и используется бесплатно;
  • поддержка текстового формата json.

Недостатки:

  • запросы чтения и пакетные операции могут сильно снизить скорость работы системы;
  • сложная конфигурация;
  • неопытному пользователю может быть слишком тяжелой для восприятия.

SQLite

SQLite работает только с 2 форматами данных: integer (целочисленный) и text (текстовый). Максимально возможный объем базы ограничивается 2 Тб.

Достоинства:

  • система проста как в настройке, так и в использовании;
  • легко переносится.

Недостатки:

  • возникают серьезные сложности при масштабировании;
  • не подходит для работы с большими базами данных;
  • не может быть изменена.

NOSQL СУБД

MongoDB

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

Достоинства:

  • простота в использовании;
  • скорость работы;
  • любая структура оперативно обрабатывается, сохраняется и передается.

Недостатки:

  • не используется SQL — для перевода таких запросов потребуются дополнительные инструменты;
  • установка системы потребует продолжительного времени;
  • в процессе интеграции и запуска СУБД потребуется помощь высококлассных специалистов.

Apache Cassandra

Cassandra – бесплатная СУБД на базе Java. Работает с собственным, аналогичным CQL языком запросов.

Достоинства:

  • безопасность — потеря данных возможна только в случае поломки всех главных узлов БД.
  • масштабируемость.

Недостатки:

  • так как изначально Cassandra была предназначена только для записи данных, серьезно снизилась скорость их чтения;
  • из-за работы системы сразу в нескольких слоях данных может потребоваться более мощное программное и аппаратное обеспечение.

Amazon DynamoDB

Amazon DynamoDB – бессерверная система хранения по принципу «ключ-значение». Данные хранятся в таблицах.

Достоинства:

  • высокая производительность;
  • контроль управления;
  • плавное масштабирование;
  • неограниченный объем данных.

Недостатки:

  • сложная архитектура в проектировании;
  • сложные запросы, которые требуют тщательной индексации.

FOUNDATIONDB

FoundationDB – встраиваемая СУБД по принципу «ключ-значение». Все узлы в БД размещаются автономно друг от друга.

Достоинства:

  • транзакции не блокируют друг друга;
  • автоматически решардинг: система автоматически распределяет нагрузку.

Недостатки:

  • возможны существенные задержки ответов на запросы;
  • открытый код не гарантирует безопасности сохранения данных.

Специализированные СУБД

Специализированные СУБД – системы, которые ориентированы на конкретные задачи.

Vertica

Vertica – аналитическая система для работы с большими объемами данных. Бесплатная версия позволяет разместить не более 1 Тб информации максимум на 3 серверах в одном кластере.

Достоинства:

  • высокая скорость обработки запросов даже при работе с большим объемом данных за счет параллельных проекций;
  • масштабируемость;
  • возможность интеграции;
  • легкость в установке и пользовании;
  • подходит для небольшого штата сотрудников.

Недостатки:

  • отсутствие контроля за дисковыми и сетевыми нагрузками.

NEO4J

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

Достоинства:

  • простая модель данных;
  • высокая производительность.

Недостатки:

  • не поддерживает шардинг;
  • есть ограничения на количество графов.

MultiValue

MultiValue или многомерные СУБД – системы управления многомерными базами данных. Главное отличие таких баз от прочих – трехмерность. То есть данные размещены многомерными массивами, которые упорядочены блоками с конкретными характеристиками. Запрос направляется к конкретным блокам данных. За счет этого удается достичь оперативной обработки.

Достоинства:

  • легкость в использовании;
  • невысокая стоимость;
  • возможность дополнения системы новыми функциями, что невозможно в СУБД с использованием SQL.

RDF stores

СУБД RDF stores – системы управления данными в формате RDF. RDF – граф, изображенный тройкой «субъект – предикат – объект». Данные такого формата активно используются во многих сферах: образование, СМИ, маркетинг, геосервисы и др.

Достоинства:

  • высокая производительность;
  • минимальные затраты памяти.

Single Store

Single Store DB – СУБД позволяющая проводить и транзакции, и аналитику. Работает система через SQL.

Достоинства:

  • высокая пропускная способность;
  • совместимость с другими платформами;
  • поддержка всех типов данных.

Недостатки:

  • высокие требования к аппаратному обеспечению;
  • не подходит для хранения озера данных и больших двоичных объектов.

Какую СУБД выбрать

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

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

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

Консультация

Если у Вас возник вопрос или Вы хотите связаться для расчёта проекта, оставьте заявку или свяжитесь с нами. Будем рады сотрудничеству

Расскажите нашему ведущему IT-специалисту задачи, которые стоят перед Вами, мы подготовим самые эффективные пути решения.

Выберите планируемый бюджет на разработку, руб:

Политики конфиденциальности