Виталий Яковлев
Руководитель направления СУБД компании SWD Software. С ним можно связаться по email: v.iakovlev@swd.ru.

СУБД сегодня - это огромные, сложные "монстры" с зачастую избыточной функциональностью. В данной статье мы ставили своей целью выделить и немного классифицировать новинки основных игроков на рынке СУБД: Oracle, DB2, SQL Server и Empress.

Oracle

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

Второй компонент - это опция автоматизированного исполнения задач позволяющая автоматически проводить такие задачи, как пересоздание индексов, обновление статистики и прочие, которые не требуют ручного контроля администратора. Администратор может задать "техническое окно" во время которого будут проводиться все технические изменения. Третий компонент - это "Аварийные сигналы, генерируемые сервером", который отвечает за уведомление администратора о нештатных ситуациях по электронной почте. Сигнал тревоги будет сгенерирован в случае, если СУБД не может разрешить ситуацию самостоятельно. При этом помимо описания произошедшего сбоя генерируются рекомендации по его устранению. Последняя, но вероятно самая интересная опция - это "Автоматизированный монитор диагностирования базы данных". Этот компонент отвечает за анализ данных, полученных из архива рабочей нагрузки, и используя алгоритм искусственного интеллекта (наподобие используемого в Oracle Expert) анализирует состояние блокировок, "бутылочные горлышки" на уровне процессора, состояние и нагрузку по операциям ввода/вывода. Одним словом, делает все то, чем обычно занимается администратор, анализируя логи базы данных.

Определенные улучшения сделаны и в области производительности. Полное сканирование таблиц, которое при работе с корпоративными базами данных является довольно частым событием. В версии Oracle 10g была проведена оптимизация механизма полного сканирования таблиц, в результате которой потребление ресурсов процессора значительно сократилось, что соответственно привело к сокращению времени обработки таких запросов. В случае если запрос обрабатывается в рамках ЦП (а не с использованием ввода/вывода) время запроса сокращается на 30-40%.

IBM DB2

IBM обратила основное внимание на другое - на упрощение проведения изменений в базе данных. В IBM называют изменения, нацеленные на более простое и более быстрое изменение базы данных, "интерактивным изменением структуры" (online schema evolution). Естественно, проведение таких изменений в большом продукт наподобие DB, процесс не быстрый, и сказать о том что эволюция полностью закончена можно будет лишь через несколько релизов. Эта эволюция начинается именно с 8-й версии DB2, чтобы со временем, в последующих релизах, сделать модифицирование структур базы данных занятием простым и не вызывающим сбоя в работе СУБД. Ну а в данный момент вышеописанную опцию можно использовать, например, для изменения размера типа CHAR. Кроме того, интерактивное изменение структуры позволяет изменять типы столбцов, добавлять столбцы в индексацию, изменять кластеризацию, добавлять и изменять сегментирование разделов. Конечно, не все так просто: данные изменяются со старого формата на новый не моментально, так что производительность может понизиться до того момента, когда данные будут полностью реорганизованы, но, с другой стороны, для базы данных, где требуется произвести изменения, данная опция просто незаменима.

Второе улучшение касается улучшения возможностей сегментирования базы данных. Начиная с 8 версии DB2 вы можете проводить такие изменения с разделами и конструкторами сегментов, которые ранее были невозможны, например: удалить индекс сегмента, создать таблицу без сегментного индексирования, добавить сегмент в конец таблицы для увеличения ограничения ключевого значения, изменять сами сегменты и проводить ребалансирование разделов/сегментов во время операций реорганизации. Кстати, создание сегментов теперь значительно упростилось.

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

Microsoft SQL Server

Список новых опций в SQL Server 2005 весьма предсказуем, Microsoft довольно настойчиво идет к поставленной цели "интегрировать все". Основными нововведениями стали собственная поддержка Web-сервисов и включение окружения .NET в механизм SQL-сервера. Кроме того, к числу весьма полезных и используемых нововведений стоит отнести "сервис преобразования данных", который значительно упростил процедуру загрузки данных в базу. Особенно это касается маленьких и комплексных загрузок.

Отдельного упоминания заслуживают хранимые процедуры и функции, определяемые пользователем (UDF, user-defined functions). В SQL Server 2005 аналитические сервисы позволяют загружать управляемые блоки напрямую в сервер. Объектная модель, экспериментально названная "Серверная ADOMD" почти идентична технологии ADOMD.NET. Она позволяет создавать хранимые процедуры и функции определяемые пользователем, которые напрямую обращаются к содержанию модели на сервера. Это неоценимо, когда модель содержит тысячи или даже миллионы правил, а клиент нуждается лишь в маленьком их подмножестве. Фактически средства просмотра данных сами вызывают хранимые процедуры для уменьшения объема информации, затребованной клиентом. Использование объектной модели данных в UDF позволяет делать весьма интересные вещи, например получать прогнозирование результата наряду с самим результатом.

Кроме того, Microsoft проводит большую работу в области аналитической работы с базой данных. Новый Data Mining Wizard позволяет вам создавать комплексные модели всего за несколько простых шагов. Мастер производит выборку ваших данных для определения пути "подгонки" вашей модели под выбранный вами алгоритм. Также нововведением является возможность легкого создания необходимого числа вложенных таблиц. Вложенные таблицы позволяют комбинировать разреженные данные. Например, можно легко смоделировать влияние демографических данных на продажи продукта. Возможность представить множественные вложенные таблицы в единую модель позволяют проводить еще более сложное моделирование. Например, как различные слои населения с различным политическим мнением соотносятся с популярностью тех или иных фильмов, или как рейтинг продаж в сентябре повлияет на октябрьские продажи.

Empress RDBMS

Компания Empress разрабатывает "встраиваемую СУБД", в которой надежность превыше всех остальных критериев. Одна из главных новинок здесь - это возможность реализации репозиториев PSM (хранимых процедур - Persistent Stored Modules). Реализация репозитория PSM в предыдущих версиях СУРБД Empress требовала, чтобы хранились в той базе данных, в которой они используются, что вело к неудобству при внесении изменений в несколько копий PSM для разных баз данных внутри одной инсталляции Empress. Основное назначение нового репозитория PSM - хранить все используемые PSM в одной базе данных, так, чтобы существовал только один экземпляр каждого PSM.

Кроме того, интересна возможность "каскадной работы". Дело в том, что целостность ссылок в базе данных или ограничения ссылающихся данных в СУРБД Empress обычно используется для сохранения целостности пользовательских баз данных. Большинство баз данных построены таким образом, что почти в каждой из них содержится, по крайней мере, один атрибут, который ссылается на другой атрибут в другой таблице. Взаимосвязь между такими атрибутами в разных таблицах часто не является двусторонней или организованной по типу "один - множество". Эта взаимосвязь определяется по типу "родитель - потомок" и управляется при помощи связки первичного и внешнего ключей. Однако со временем целостность ссылочных данных может приводить к ошибкам обновления связей, поскольку при удалении "родителя" все его "потомки" остаются "висеть" без порождающей опорной точки. Новая функция "каскадного удаления" предотвращает возникновение ошибок обновления связей, что кроме того, является дополнительным средством обеспечения целостности данных.

***

В целом одну из главных тенденций в одном из интервью высказал эксперт IBM DB2Крейг Маллинс: "пора немного притормозить с дальнейшим внедрением новых возможностей в СУБД и заняться улучшением уже созданного функционала". Ведь действительно, СУБД сегодня - это огромные, сложные "монстры", которые своей избыточной функциональностью делают управление базой данных весьма непростым занятием. В подавляющем числе случаев администратор СУБД перегружен избыточной функциональностью системы и тратит излишне много времени на то, чтобы разобраться с новыми опциями, и на осознание того, как и зачем эти опции можно внедрить в существующую схему работы БД. С этой точки зрения очень выгодно отличаются разработчики СУБД Oracle и Empress, стремящиеся прежде всего к увеличению надежности уже существующего продукта, а затем уж к внедрению новых опций.

MySQL в лидерах

Говоря о тенденциях в области СУБД, нельзя не упомянуть ПО MySQL. Очень многие компании довольно настороженно относятся к использованию программного обеспечения с открытым кодом в своих корпоративных приложениях. Именно поэтому очень важным шагом в развитии MySQL стало проведение тестирования и определения соотношения цена/качество. Тест проводился на основе ПО SPECjAppServer2002, весьма известного в индустрии стандарта тестирования производительности J2EE серверных приложений, связанных с базой данных (www.spec.org/jAppServer2002). Базируясь на результатах этого тестирования, можно сказать, что MySQL значительно оторвался от своих преследователей по соотношению скорость/производительность/цена. Комбинация MySQL, WebLogic и Sun представила лучшее соотношение цена/производительность среди всех представленных мультинодовых конфигураций, обойдя решения от Oracle, IBM и Microsoft и многих других вендоров более чем на 40%. Ко всему прочему MySQL представила самый быстрый результат по параметру "количество операций в секунду" среди всех СУБД, работающих на 4-х процессорном сервере.