Перспективы свободно доступных SQL-ориентированных СУБД
Наряду с коммерческими системами в мире SQL-ориентированных СУБД существуют и развиваются системы, разрабатываемые и распространяемые на основе подхода «открытых исходных текстов» (open source). Среди них наиболее известны MySQL [26], PostgreSQL [27] и Firebird [28]. В этих системах интересны не только способы их разработки, технические особенности и области применения, но также и то, что в их развитии и совершенствовании активно участвуют российские разработчики.
В этом разделе приводится общая характеристика систем, рассматриваются различия в их организации и способах разработки. Обсуждается, в каких областях эти системы могут конкурировать с коммерческими системами, и указываются основные
проблемы, которые, по мнению авторов статьи, предстоит решить для обеспечения надежной жизнеспособности SQL-ориентированных СУБД с открытыми кодами.
MySQL
Особенностью СУБД MySQL является то, что, будучи системой с открытыми исходными текстами, она разрабатывалась коммерческой компанией MySQL AB (в числе сотрудников этой компании немало специалистов из России и Украины). Более того, в действительности компания распространяла свою систему в двух вариантах: бесплатном и корпоративном, под разработанной в самой MySQL AB коммерческой лицензии. До августа 2007 г. исходные коды обоих вариантов находились в свободном доступе, но затем доступ к текстам программ коммерческой версии был закрыт для всех, кроме корпоративных клиентов, оплативших лицензию. В начале 2008 г. компания MySQL AB была приобретена компанией Sun Microsystems. Sum Microsystems официально утверждает, что «новая СУБД MySQL корпорации Sun Microsystems является ключевым компонентом популярных программных комплексов для создания приложений Web 2.0». [29]. Однако к середине 2008 г. не видно серьезного воздействия перехода MySQL в собственность Sun Microsystems на дальнейшую разработку MySQL. Пока все работы по развитию MySQL идут по ранее намеченному плану. Текущим выпуском системы является MySQL Enterprise Server 5.1 [30]. По сравнению с предыдущей версией 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.
PostgreSQL
Под названием PostgreSQL система существует с 1996 года. Это название отражает связь PostgreSQL с оригинальным проектом Postgres и внедрением в систему поддержки языка SQL [31]. Управление проектом осуществляет небольшая группа инициативных пользователей и разработчиков, называемая PGDG (PostgreSQL Global
Development Group). В число основных разработчиков PostgreSQL входит ряд российских специалистов. В начале февраля 2008 г. была выпущена СУБД PostgreSQL 8.3 [32], в работе над которой принимали участие десятки разработчиков из 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 [33]. Эта компания выпускает свободно доступный продукт Postgres Plus и совместимую с Oracle коммерческую систему Postgres Plus Advanced Server. Наиболее интересным и совершенно новым для мира PostgresSQL является интегрированный с Postgres Plus продукт GridSQL, в котором реализуется архитектура распределенных баз данных без общих ресурсов между узлами.
Firebird
Как говорится на официальном сайте проекта [28], «Firebird – это коммерчески независимый проект программистов сообщества C/C++, технических консультантов и спонсоров, разрабатывающих и совершенствующих мультиплатформенную реляционную СУБД, основанную на исходных кодах, которые были переданы в свободное использование 25 июля 2000 г. компанией Inprise Corp. (называемой теперь Borland Software Corp)». Речь здесь идет про исходные тексты СУБД InterBase 6.0.Коммерческую линию развития этой системы продолжает Borland. В апреле 2008 г. после двухлетней работы команды разработчиков, значительную часть которой составляют российские специалисты, была выпущена версия Firebird 2.1 [34]. В этой версии улучшены средства администрирования баз данных, повышена производительность системы и введена поддержка ряда новых средств языка SQL. Упростить администрирование позволяют новые виртуальные таблицы мониторинга, на основе которых администраторы могут увидеть статистическую информацию о сервере в целом, а рядовые пользователи – только те данные, которые соответствуют их соединению. Введена возможность аутентификации пользователей средствами Windows.
На уровне SQL появилась возможность определения триггеров, условием срабатывания которых являются подключение к базе данных, начало, фиксация и откат транзакции и т.д. Появилась возможность использования глобальных временных таблиц и общих табличных выражений, которые, в частности, можно использовать для формулировки рекурсивных запросов. Введена конструкция UPDATE OR INSERT, срабатывающая как UPDATE, если условию оператора соответствует хотя бы одна строка целевой таблицы, и как INSERT в противном случае. Наконец, поддерживается оператор MERGE, позволяющий слить две таблицы. Следует заметить, что не все введенные средства SQL присутствуют в стандарте языка. Наконец, основным средством повышения производительности является новый сетевой протокол, в котором, в частности, некоторые виды пакетов группируются и посылаются в сеть вместе. Ожидаемый в конце этого года выпуск Firebird 2.5 разработчики рассматривают как важный шаг на пути к СУБД Firebird 3.0, которая будет представлять собой параллельный масштабируемый сервер с универсальной архитектурой, ориентированной на симметричные мультипроцессоры.