Современный мир — это информация. Данные, с которыми человек взаимодействует каждый день, с утра до вечера. Мы слушаем музыку, вызываем такси, листаем ленты соцсетей. В это время мы постоянно взаимодействуем с данными, которые должны где-то храниться. И хранятся в базах прямо в наших устройствах или на удаленных серверах.
База данных — это набор информации, которая хранится упорядоченно в электронном виде.
Но данные недостаточно просто хранить: они непрерывно создаются, изменяются, копируются, удаляются, восстанавливаются и так далее. Для всего этого и нужна система управления базой данных —СУБД.
СУБД обеспечивает:
- централизованное хранение данных и доступ к ним;
- целостность и согласованность данных;
- резервное копирование и восстановление,
- многопользовательскую работу, разграничение доступа и безопасность.
В качестве аналогии можно привести в пример автомобиль. Если у вас есть только один двигатель, то никуда уехать не выйдет: понадобятся кузов, трансмиссия, подвеска, колеса, тормоза и другие составляющие. Также и с СУБД: базой данных без управляющей ей системой практически невозможно пользоваться.
Какими бывают СУБД? В зависимости от специфики решаемых задач используются системы разных типов, каждая со своими преимуществами и недостатками. Вариантов их классификации великое множество, ограниченное только фантазией их составителей. Но есть ключевой признак, по которому можно разделить СУБД на основные типы – используемая модель данных.
По этому критерию системы управления базами данных делятся на иерархические, сетевые, реляционные, объектно-ориентированные, объектно-реляционные и NoSQL. Иерархические и сетевые БД, а значит и СУБД использовались в 1960-1970-е годы и уже давно ушли в историю, поэтому останавливаться на них не будем. А про остальные расскажем подробнее.
Реляционные СУБД
Начнем с доминирующего класса баз данных, а значит и систем для их управления. Реляционные БД хранят данные в виде связанных таблиц – отношений. Модель предложена еще в 1970-м году британским математиком Эдгаром Коддом с тех пор является стандартом и используется в большинстве информационных систем.
Отметим, что известны более ранние проекты, которые также использовали модели реляционного типа. Так, например, в 1960-е годы в Академии наук СССР была разработана система «Автодиректор», которая использовалась для структурирования данных АСУ ТП (Автоматизированная система управления технологическим процессом) Днепродзержинского металлургического комбината и Объединенного центра ядерных исследований в Дубне.
Таблицы в реляционных БД содержат в себе строки и столбцы. В строках хранятся записи (наборы связанных данных), а в столбцах – атрибуты (характеристики) данных. Каждая строка обладает уникальным идентификатором или ключом, что позволяет легко находить нужные данные и связывать их между собой. Для управления данными используется язык запросов SQL (Structured Query Language).
К преимуществам реляционных СУБД относятся простота, независимость логической структуры данных от приложений, высокая надежность и безопасность, строгая целостность данных и четкая их структура, поддержка транзакций (ACID) большое количество готовых инструментов, документации и специалистов.
Конечно, есть и недостатки. Ключевые из них – это ограниченная горизонтальная масштабируемость и снижение производительности при работе с очень большими объемами данных.
Реляционные СУБД применяются там, где на первый план выходят надежность и строгая целостность данных: в корпоративных системах для бухгалтерии, банковских системах, различных ERP и CRM, интернет-магазинах, системах бронирования, государственных реестрах, а также налоговых и учетных системах.
Примеры популярных реляционных систем:
- MySQL — популярная реляционная СУБД для веб-разработки, простая и производительная.
- Firebird (FirebirdSQL) — компактная реляционная СУБД с низкими требованиями к ресурсам.
- PostgreSQL — мощная реляционная СУБД для сложных и масштабируемых систем.
Объектно-ориентированные СУБД
В объектно-ориентированных СУБД данные хранятся в виде объектов, которые соответствуют концепциям объектно-ориентированного программирования (ООП) и включают в себя как сами данные (поля), так и методы их обработки. Благодаря этому они поддерживают инкапсуляцию, наследование, полиморфизм и другие механизмы, присущие ООП. Это позволяет естественно описывать сложные структуры, например, элементы технических устройств или объекты реального мира.
В ООСУБД нет необходимости преобразовывать данные в таблицы, за счет чего отсутствует разрыв между объектной моделью приложения и способом хранения данных.
К недостаткам таких систем относят отсутствие единых стандартов, сложность запросов и ограниченную распространенность. Применяются объектно-ориентированные СУБД в инженерных CAD/CAM-системах, научном моделировании, симуляторах, телекоммуникационных системах, а также в проектах на Java или C++, где требуется хранение большого количества взаимосвязанных объектов сложной структуры.
Примеры популярных объектно-ориентированных СУБД.
- ObjectDB — широко используется в Java-приложениях.
- db4o — легкая объектная СУБД для встраиваемых и настольных приложений.
- Versant Object Database — применяется в телекоммуникационных и инженерных системах.
Объектно-реляционные СУБД
Объектно-реляционные СУБД сочетают в себе признаки двух предыдущих основных типов. То есть это реляционные СУБД, поддерживающие некоторые технологии объектно-ориентируемых СУБД и реализующие объектно-ориентированный подход: в структуре баз данных и языке запросов реализованы объекты, классы и наследование.
Таким образом достигается расширение классической табличной модели при помощи введения пользовательских типов данных, вложенных структур, массивов и объектов с сохранением поддержки стандартного языка запросов SQL. Благодаря этим свойствам объектно-реляционные СУБД демонстрируют большую гибкость при описании сложных данных, например, географических объектов, мультимедиа или иерархических структур.
К недостаткам объектно-реляционных СУБД относится более сложная архитектура и модель данных по сравнению с «чистыми» реляционными или объектными СУБД. Это накладывает повышенные требования к проектированию и администрированию.
Примеры популярных объектно-реляционных СУБД.
- PostgreSQL — поддерживает пользовательские типы данных, JSON, массивы.
- Oracle Database — реализует объектные типы и коллекции.
- IBM Db2 — используется в корпоративных и аналитических системах.
NoSQL СУБД
NoSQL СУБД представляют собой обширный класс систем управления базами данных, ориентированных на хранение и обработку больших объемов слабо структурированных или неструктурированных данных. От реляционных СУБД их отличает отказ от строгой табличной модели и фиксированной схемы данных, что обеспечивает высокую гибкость при разработке и масштабировании приложений.
В основе NoSQL СУБД лежат различные модели данных: документоориентированная, ключ–значение, колоночная и графовая. Такой подход удобен в ситуациях, когда структура данных часто меняется. Например, профили пользователей в социальных сетях или каталоги товаров интернет-магазинов удобно хранить в документоориентированных базах данных, а данные о сессиях пользователей и корзинах покупок — в СУБД типа ключ–значение.
Благодаря распределенной архитектуре NoSQL СУБД обеспечивают высокую производительность и отказоустойчивость, что делает их подходящими для веб-сервисов, онлайн-игр и мобильных приложений с большим количеством пользователей.
К недостаткам NoSQL СУБД относится отсутствие единого стандарта языка запросов и ограниченная поддержка сложных транзакций. Поэтому в системах, где требуется строгая согласованность данных, например в банковских или бухгалтерских приложениях, их применение может быть ограничено.
Примеры популярных NoSQL СУБД:
• MongoDB — хранение профилей пользователей и каталогов товаров.
• Redis — кэширование данных, хранение пользовательских сессий.
• Apache Cassandra — обработка больших объёмов данных в высоконагруженных системах., применяется в системах аналитики, мессенджерах и сервисах с высокой нагрузкой.
Как выбрать СУБД для вашего проекта?
С основными типами СУБД мы познакомились, теперь немного расскажем о том, как выбрать СУБД под задачи конкретного проекта. Итоговое решение зависит от задач информационной системы и характера обрабатываемых данных.
Реляционные СУБД подходят для систем со строгой структурой данных и высокой требованиями к целостности и транзакциям. Они применяются в банковских и бухгалтерских системах, ERP и CRM, интернет-магазинах, системах бронирования и государственных реестрах.
Объектно-ориентированные СУБД используются в системах со сложной объектной моделью, тесно связанной с логикой приложения. Это инженерные CAD/CAM-платформы, научные симуляторы и телекоммуникационные решения, особенно при разработке на объектно-ориентированных языках программирования.
Объектно-реляционные СУБД применяются там, где необходима надежность реляционных БД и поддержка сложных типов данных. Они востребованы в геоинформационных системах, аналитических платформах и корпоративных приложениях, работающих с иерархиями, массивами и документами.
NoSQL СУБД оптимальны для высоконагруженных распределенных систем с гибкой структурой данных. Именно они широко используются в соцсетях, мессенджерах, онлайн-играх, мобильных приложениях и системах аналитики, где важны масштабируемость и скорость работы.
Какие СУБД представлены на российском рынке
После 2022 года иностранные вендоры официально покинули российский рынок, что существенно сузило выбор СУБД до отечественных коммерческих решений и зарубежного программного обеспечения со свободной лицензией. В результате значительная, если не большая часть российских СУБД базируется на PostgreSQL — среди них Postgres Pro, Tantor, Arenadata Postgres и Ред База Данных, которые, несмотря на происхождение базового open source-проекта, соответствуют требованиям Реестра отечественного ПО и могут использоваться в государственных информационных системах и госзакупках.
- Postgres Pro— объектно-реляционная СУБД на базе PostgreSQL с дополнительными оптимизациями, сертификацией и промышленной поддержкой для корпоративного и государственного сектора.
- Tantor— объектно-реляционная СУБД корпоративного уровня на базе PostgreSQL, ориентированная на высокую доступность и замену зарубежных коммерческих решений.
- Arenadata Postgres— промышленный дистрибутив объектно-реляционной СУБД PostgreSQL для корпоративных и аналитических систем.
- Ред База Данных— объектно-реляционная СУБД на базе PostgreSQL, ориентированная на госсектор и интеграцию с отечественными операционными системами.
Наряду с решениями на базе PostgreSQL, на российском рынке представлены и полностью отечественные разработки.
- ClickHouse— колоночная аналитическая СУБД для обработки больших объемов данных и выполнения высокопроизводительных OLAP-запросов.
- «ЛИНТЕР»— полностью отечественная реляционная СУБД для защищённых и критически важных информационных систем.
- SoQoL— отечественная реляционная СУБД, ориентированная на высоконагруженные транзакционные приложения.
- ODANT — NoSQL СУБД, являющаяся неотъемлемой частью технологической Low-code-платформы для создания информационных систем. Рассчитана на работу с большими объемами данных и распределенной структурой организаций, обеспечивает синхронность информации и легко масштабируется.
- Tarantool — отечественная высокопроизводительная in-memory СУБД, совмещающая функции базы данных и сервера приложений. Она ориентирована на высоконагруженные системы и работу с данными в оперативной памяти, обеспечивая низкие задержки и высокую скорость обработки. Поддерживает NoSQL и SQL, встроенный язык Lua, репликацию, отказоустойчивость и ACID-транзакции. Используется как распределённое хранилище «горячих» данных, кэш, очередь задач и основа микросервисных архитектур.
ODANT
На СУБД ODANT остановимся подробнее. Система разработана специально для решения задач по построению одноименной Low-code-платформы в связи с тем, что ни одна из российских систем на момент начала разработки платформы не удовлетворяла предъявляемым требованиям.
В ODANT используется язык запросов XQuery, который по назначению похож на SQL, но рассчитан на работу с иерархическими, а не табличными данными. В отличие от SQL, здесь не требуются сложные JOIN-операции, так как запросы напрямую работают с вложенными объектами и их связями. Это хорошо соответствует объектной и древовидной модели данных ODANT.
В результате разработчик получает простой и единый способ доступа к данным и формирования результатов в нужной структуре.
Технологическая платформа ODANT, неотъемлемой частью которой является одноименная СУБД, использует Low-code-подход, основанный на принципе «моделирование вместо программирования». Системы создаются в визуальной среде, где можно настраивать модели данных и бизнес-логику без написания кода. Это позволяет быстрее разрабатывать и изменять решения, а также привлекать к созданию систем специалистов предметной области, а не только программистов.
При помощи ODANT можно создавать децентрализованные иерархические системы, с полной синхронностью данных, работающих в режиме Data Lake – в качестве единой системы сбора информации, обработки, анализа и визуализации.
ODANT является полностью российской разработкой, состоит в Реестре отечественного ПО. На его основе созданы информационные системы, эксплуатируемые органами государственной власти и местного самоуправления, а также крупными корпоративными заказчиками.
В следующих материалах на канале мы подробнее расскажем о возможностях ODANT и наиболее значимых проектах, реализованных на основе платформы.
Статья подготовлена коллективом компании Инфостандарт — разработчика информационных систем для корпоративного сектора, органов государственной власти и местного самоуправления. Компания работает с 2012 года, за это время реализовано более 100.
Команда Инфостандарт использует популярные российские и открытые технологии, а также имеет глубокие компетенции в построении отраслевых информационных систем на основе уникальной российской технологической платформы ODANT.