2.3. Российская SQL-ориентированная СУБД Линтер
СУБД Линтер является
единственной существующей в настоящее время коммерческой российской
СУБД. Она разработана и развивается компанией Релэкс, г. Воронеж.
Конечно, по набору поддерживаемых возможностей, по производительности
при работе со сверхбольшими базами данных, по объему своего внедрения
эта система значительно уступает SQL-ориентированным
СУБД, обсуждавшимся в разд. 2.2, но она обладает рядом интересных
особенностей, которые делают ее привлекательной для разработчиков
приложений, в особенности, в России.
2.3.1. Основные технические характеристики СУБД Линтер
В СУБД Линтер [23]
полностью поддерживается стандарт SQL/92, включая средства
определения данных, выборки и манипулирования данными, определения
ограничений целостности, управления транзакциями и т.д. В последних
выпусках системы имеется поддержка некоторых средств, определенных в
стандартах SQL:1999 и SQL:2003
(аналитические функции, предикаты similar и match и т.д) За счет
использования версионного метода управления транзакциями
поддерживается режим неблокирующего выполнения транзакций, в которых
отсутствуют операции изменения базы данных. Имеется возможность
использования типа данных BLOB, позволяющего работать с большими
(объемом до двух Гб) неструктурированными объектами данных.
Поддерживаются средства определения хранимых процедур и триггеров.
В системе
обеспечивается ряд средств, позволяющих создавать гибкую и надежную
систему безопасности и конфиденциальности информации (эти средства
сертифицированы Гостехкомиссией на соответствие 2-му классу защиты
информации от несканкционированного доступа).
В
состав дистрибутива СУБД Линтер входят следующие компоненты:
-
ядро СУБД Линтер
(подсистема управления данными, транслятор SQL, процессор
сортировки, компилятор хранимых процедур, сетевые драйверы, менеджер
распределённых транзакций);
-
программы
обслуживания базы данных (генератор системной базы данных, тестер
физических структур);
-
организующие
интерфейсы (инструментарий администратора, менеджер хранимых
процедур со встроенным отладчиком, интерактивный SQL-интерфейс);
-
средства
разработки приложений (встроенный SQL для C/C++, исполняющая система
4GL языка Intcom, средство интерактивной разработки Лакуна);
-
средства
сохранения/восстановления данных (в том числе «горячее»
архивирование, быстрая загрузка/выгрузка всей базы данных или
отдельных её частей и т.п.);
-
средства миграции данных (импорт из
DBF, ODBC-средство миграции и т.п.);
-
интерфейсы
различного уровня (ODBC-драйвер, интерфейс прямого доступа к Линтер
из Delphi/Kylix/C++ Builder, интерфейс для Java-программ,
API-интерфейс Линтер, Call-интерфейс и т.д.).
2.3.2. Поддержка реального времени
Многие заказчики
компании Релэкс используют в своей работе операционные системы
реального времени. СУБД Линтер изначально проектировалась так, чтобы
удовлетворять ограничениям, которые накладывает функционирование в
таких операционных системах [24]. Архитектура Линтер достаточно гибка
для переноса в разные программно-аппаратные среды. В настоящее время
СУБД Линтер функционирует как на платформах Windows CE и Linux,
так и в средах различных операционных систем реального времени (QNX
4, QNX6, VxWorks, ОС РВ, OS/9, OS9000) на разнообразных аппаратных
платформах (x86, PPC, Sparc, ARM, MIPS и т.д.). При этом
обеспечивается полная совместимость по протоколам взаимодействия
между узлами под управлением разных операционных систем, что
позволяет использовать единую инфраструктуру и для поддержки
технологического оборудования, и для аналитических систем.
Использованию СУБД Линтер во встроенных
системах реального времени способствуют небольшие требования к
оперативной памяти. Даже полный серверный вариант системы может
поместиться в 4Мб оперативной памяти. Важным фактором использования
Линтер в системах реального времени является постоянство используемых
ресурсов, или возможность ограничения ресурсов. Гарантируется
постоянство использования оперативной памяти (вне зависимости от
объема базы данных, сложности выполняемых запросов и количества
одновременно работающих пользователей и приложений).
При создании базы
данных имеется возможность гибкой конфигурации расположения файлов
базы данных. Допускается размещение файлов разных таблиц и типов на
разных устройствах. Это особенно актуально при эксплуатации СУБД во
встроенной технике, когда у разных устройств имеются разные
характеристики скорости и надежности хранения информации. Наличие
журнала и механизмы восстановления базы данных гарантируют
восстановление базы данных после сбоев по питанию, что особенно важно
для технологических и встроенных необслуживаемых систем, которые
обычно и разрабатываются с использованием операционных систем
реального времени.
Отличительной
особенностью интерфейса СУБД Линтер является полная асинхронность.
Любой запрос, поданный ядру СУБД, будет выполняться асинхронно. В
системах реального времени возможность продолжать обработку данных
вне зависимости от реакции хранилища данных очень важна. Во время
обработки запроса к базе данных можно продолжать обработку входных
данных или управлять исполнительными устройствами. Интерфейс Линтер
позволяет также функционировать многопотоковым приложениям: вся
синхронизация обмена с базой данных выполняются прозрачно для
программы. Потоки могут также работать асинхронно.
Дополнительной
возможностью для повышения производительности является
предварительная трансляция запросов. В случае такой трансляции при
выполнении запроса уже не требуется его синтаксически разбирать,
вырабатывать план выполнения и т.п. В полностью готовый к исполнению
запрос необходимо будет только подставить параметры (если они есть),
и его можно выполнить.
В системах реального
времени особое внимание уделяется приоритетам исполнения запросов.
Возможность исполнения запросов с различными приоритетами была
заложена в Линтер, начиная с самых первых версий, и с тех пор была
значительно усовершенствована. Предлагаются три класса приоритетов
исполнения запросов: обычные приоритеты, приоритеты Round Robin и
приоритеты реального времени. Приоритетами исполнения запросов можно
управлять в процессе работы системы через специальные управляющие
команды. Кроме изменения приоритета возможна отмена выполнения
запроса или приостановка его выполнения на некоторое время.
Очень мощным аппаратом
СУБД Линтер, активно используемым в системах реального времени,
является аппарат событий. Событие представляет собой объект
синхронизации распределенных приложений или извещения приложений об
изменении в данных.
Перспективным планом
компании Релэкс является постепенная переделка ядра СУБД в
соответствии с микроядерной технологией. Новая архитектура должна
обеспечить возможности «горячего» обновления отдельных
модулей и наращивания функциональности без остановки СУБД. Конечно,
для перехода на новую архитектуру коллективу предстоит решить ряд
опытно-конструкторских задач.
2.4. Перспективы свободно доступных SQL-ориентированных СУБД
Наряду с коммерческими
системами в мире SQL-ориентированных
СУБД существуют и развиваются системы, разрабатываемые и
распространяемые на основе подхода «открытых исходных текстов»
(open
source).
Среди них наиболее известны MySQL
[25], PostgreSQL
[26] и Firebird
[27]. В этих системах интересны не только способы их разработки,
технические особенности и области применения, но также и то, что в их
развитии и совершенствовании активно участвуют российские
разработчики.
В этом разделе приводится общая
характеристика систем, рассматриваются различия в их организации и
способах разработки. Обсуждается, в каких областях эти системы могут
конкурировать с коммерческими системами, и указываются основные
проблемы, которые, по мнению авторов обзора, предстоит решить для
обеспечения надежной жизнеспособности SQL-ориентированных
СУБД с открытыми кодами.
2.3.1. MySQL
Особенностью СУБД MySQL
является то, что, будучи системой с открытыми исходными текстами, она
разрабатывалась коммерческой компанией MySQL
AB
(в числе сотрудников этой компании немало специалистов из России и
Украины). Более того, в действительности компания
распространяла свою систему в двух вариантах: бесплатном и
корпоративном, под разработанной в самой MySQL AB коммерческой
лицензии. До августа 2007
г. исходные коды обоих вариантов находились в свободном доступе, но
затем доступ к текстам программ коммерческой версии был закрыт для
всех, кроме корпоративных клиентов, оплативших лицензию.
В начале 2008 г. компания MySQL
AB
была приобретена компанией Sun
Microsystems.
Sum
Microsystems
официально утверждает, что «новая СУБД MySQL корпорации Sun
Microsystems является ключевым компонентом популярных программных
комплексов для создания приложений Web 2.0». [28].
Однако к середине 2008 г. не видно серьезного воздействия перехода
MySQL
в собственность Sun
Microsystems
на дальнейшую разработку MySQL.
Пока все работы по развитию MySQL
идут по ранее намеченному плану.
Текущим выпуском системы является MySQL
Enterprise Server 5.1 [29]. По сравнению с предыдущей версией 5.0,
вышедшей в октябре 2005 г., в MySQL
5.1 появился ряд новых возможностей, которые компания MySQL
AB
относит к областям хранилищ
данных и интеллектуального анализа данных; средств обеспечения
высокой доступности данных; упрощенного управления и средств
обеспечения высокой производительности.
В области хранилищ данных и
интеллектуального анализа данных основным нововведением является
средство горизонтального разделения таблиц и индексов (по диапазону
значений, с хэшированием и т.д.). Разделение таблиц возможно для всех
подсистем хранения данных, используемых в MySQL: MyISAM, Archive,
InnoDB и т.д. Кроме того, к этой области относится новый подключаемый
модуль, поддерживающий полнотекстовый поиск, и поддержка XPath
для работы с XML-данными
с возможностью выбора и модификации узлов XML-документов
на стороне сервера баз данных.
Для повышения уровня доступности данных
наряду с механизмом репликации на основе операторов SQL,
существовавшим в MySQL 5.0, в MySQL
5.1 обеспечивается средство репликации таблиц на уровне строк. В
MySQL Cluster появилась поддержка данных, сохраняемых в дисковой
памяти, и также обеспечивается возможность асинхронной репликации
данных из одного кластера в другой.
Для облегчения
управления системами баз данных в MySQL
5.1 появился планировщик событий, позволяющий администраторам базы
данных создавать и запускать запланированным образом задания,
выполняющие различные функции на сервере баз данных.
Достижению более
высокой производительности содействует новое средство параллельной
загрузки базы данных, а также утилита стрессового тестирования,
которая моделирует поведение заданного числа пользователей, задающих
запросы разного вида. После завершения работы этой утилиты
формируется отчет, содержащий статистические данные о работе сервера.
На конец 2008 г. планируется выпуск
MySQL
6.0, в котором будет внедрена новая подсистема управления данными
Falcom,
обеспечивающая полную поддержку транзакций со свойствами ACID.
Эта подсистема не предназначена для замены транзакционной подсистемы
управления данными InnoDB,
но, по мнению разработчиков, в ряде случаев будет работать более
эффективно. Кроме того, в MySQL
6.0 должны обеспечиваться поддержка неблокирующих вариантов операций,
изменяющих схему таблиц, а также ожидается ряд нововведений в
оптимизаторе запросов SQL.
2.3.2. PostgreSQL
Под названием
PostgreSQL
система существует с 1996 года. Это название отражает связь
PostgreSQL
с оригинальным проектом Postgres
и внедрением в систему поддержки языка SQL [30]. Управление проектом
осуществляет небольшая группа инициативных пользователей и
разработчиков, называемая PGDG (PostgreSQL Global Development Group).
В число основных разработчиков PostgreSQL
входит ряд российских специалистов.
В начале февраля 2008 г. была выпущена
СУБД PostgreSQL 8.3 [31], в работе над которой принимали участие
десятки разработчиков из 18 стран. В течение 15 месяцев разработки и
тестирования были обработаны и успешно внедрены более 280 пакетов
изменений исходного кода. Основные
изменения и новшества разработчики разбивают на три части: средства,
способствующие улучшению производительности; новые возможности для
программистов приложений баз данных; нововведения, предназначенные
для администраторов баз данных.
Основными
новыми средствами, способствующими повышению производительности СУБД
PostgreSQL 8.3, являются механизм асинхронной фиксации транзакций и
синхронизованные просмотры таблиц. При асинхронной фиксации не
происходит немедленного выталкивания во внешнюю память записи о
фиксации транзакции. Тем самым, существенное повышение
производительности сопровождается риском потери результатов последних
по времени транзакций при крахе системы. Синхронизированный просмотр
таблицы позволяет избежать нескольких просмотров одной таблицы при
одновременном выполнении нескольких однотипных запросов.
Наиболее
существенным изменением PostgreSQL, затрагивающим интересы
разработчиков приложений, является миграция модуля полнотекстового
поиска tsearch2 в ядро системы. Другое заметное изменение —
поддержка XML. Появился специальный тип данных xml, встроенный в
ядро. В соответствии со стандартом SQL:2003 реализован набор функций
для преобразования реляционных данных в XML (т. н., функции
публикации SQL/XML). Для ускорения выполнения запроса к XML-данным
возможно использование функциональных индексов и GIN-индексов, а
также использования полнотекстового поиска для XML-данных.
Соответствующие программные средства были разработаны российскими
программистами.
Администраторам
наиболее полезно новое средство EXPLAIN ANALYZE, позволяющее узнать,
какой именно алгоритм сортировки был выбран для выполнения запроса, и
сколько памяти было израсходовано. При определении функции теперь
можно переопределять переменные окружения, которые будут действовать
только в рамках выполнения данной функции (привязка к функциям
значений переменных).
В настоящее время
уточняется состав новых функциональных возможностей, которые должны
войти в следующую версию PostgreSQL
8.4. Работа над этой версией уже активно ведется, и завершение
планируется в начале 2009 г.
Продукты на основе исходных текстов
PostgreSQL производит не только сообщество PostgreSQL под управлением
PGDG, но и коммерческие компании, наиболее известной среди которых
является EnterpriseDB Corporation [32]. Эта компания выпускает
свободно доступный продукт Postgres Plus и совместимую с Oracle
коммерческую систему Postgres Plus Advanced Server. Наиболее
интересным и совершенно новым для мира PostgresSQL является
интегрированный с Postgres Plus продукт GridSQL, в котором
реализуется архитектура распределенных баз данных без общих ресурсов
между узлами.
2.3.3. Firebird
Как говорится на
официальном сайте проекта [27], «Firebird
– это коммерчески независимый проект программистов сообщества
C/C++,
технических консультантов и спонсоров, разрабатывающих и
совершенствующих мультиплатформенную реляционную СУБД, основанную на
исходных кодах, которые были переданы в свободное использование 25
июля 2000 г. компанией Inprise
Corp.
(называемой теперь Borland
Software
Corp)».
Речь здесь идет про исходные тексты СУБД InterBase
6.0. Коммерческую
линию развития этой системы продолжает Borland.
В апреле 2008 г. после двухлетней работы
команды разработчиков, значительную часть которой составляют
российские специалисты, была выпущена версия Firebird
2.1 [33]. В этой версии улучшены средства администрирования баз
данных, повышена производительность системы и введена поддержка ряда
новых средств языка SQL.
Упростить
администрирование позволяют новые виртуальные таблицы мониторинга, на
основе которых администраторы могут увидеть статистическую информацию
о сервере в целом, а рядовые пользователи – только те данные,
которые соответствуют их соединению. Введена возможность
аутентификации пользователей средствами Windows.
На уровне SQL
появилась возможность определения триггеров, условием срабатывания
которых являются подключение к базе данных, начало, фиксация и откат
транзакции и т.д. Появилась возможность использования глобальных
временных таблиц и общих табличных выражений, которые, в частности,
можно использовать для формулировки рекурсивных запросов. Введена
конструкция UPDATE
OR
INSERT,
срабатывающая как UPDATE,
если условию оператора соответствует хотя бы одна строка целевой
таблицы, и как INSERT
в противном случае. Наконец, поддерживается оператор MERGE,
позволяющий слить две таблицы. Следует заметить, что не все введенные
средства SQL
присутствуют в стандарте языка.
Наконец, основным средством повышения
производительности является новый сетевой протокол, в котором, в
частности, некоторые виды пакетов группируются и посылаются в сеть
вместе.
Ожидаемый в конце этого года выпуск
Firebird
2.5 разработчики рассматривают как важный шаг на пути к СУБД Firebird
3.0, которая будет представлять собой параллельный масштабируемый
сервер с универсальной архитектурой, ориентированной на симметричные
мультипроцессоры.
2.3.4. Плюсы и минусы SQL-ориентированных СУБД с открытыми кодами
СУБД этой категории
активно используются в разных приложениях, в которых не требуются
качества, присущие коммерческим системам высшего класса. Одной из
наиболее важных заслуг этого направления является то, что оно дает
возможность приобретения мастерства разработки и сопровождения СУБД
молодежи, в том числе, и российским молодым специалистам. Открытость
систем позволяет участвовать в их разработке практически всем
желающим при наличии соответствующих наклонностей и способностей.
Проблемами сводобно доступных
SQL-ориентированных
СУБД, которые необходимо решить для обеспечения их надежной
жизнеспособности, являются отсутствие новых идей и подходов, вечная
погоня за «большой тройкой», недостаточная надежность,
производительность и масштабируемость. Все эти проблемы очень
серьезны, и удастся ли их преодолеть в полном объеме хотя бы в одном
из проектов, покажет будущее.
Назад Содержание Вперёд