Создание клиентских частей SQL-баз данных под Win95 и WinNT

  d8ef8794     

Функциональные новшества.


В Oracle 7.3 появилась возможность читать и писать поля таблиц типа Long по частям (на уровне Oracle Call Interface), что безусловно полезно, ибо размер таких полей может доходить до 2 Гбайт. Расширился набор типов представлений (views), для которых допускается их непосредственная модификация. Появился ряд новшеств в языке PL/SQL (процедурном расширении SQL), самое заметное из которых - поддержка таблиц, хранимых в памяти сервера. Новые алгоритмы обработки запросов. Выполнение SQL-запроса - особенно имеющего сложную структуру - обычно распадается на несколько взаимосвязанных операций. Само это разбиение, а тем более выбор методов выполнения операций, как правило, допускают множество альтернативных решений. Выбор оптимальной их комбинации - задача оптимизатора, который на основании как характера запроса, так и имеющейся информации о задействованных таблицах и индексах, наличии тех или иных системных ресурсов (в Oracle 7.3 расширен набор видов предоставляемой оптимизатору информации: теперь он может учитывать частотные гистограммы индексируемых полей) строит оценку стоимости разных вариантов решения.

Помимо "джентльменского" набора более или менее универсальных методов существует также целый ряд более узкоспециализированных, т. е. таких, которые очень хорошо работают в некоторых ситуациях, но могут быть совсем неэффективными (или даже неприменимыми) в других. Несмотря на такой недостаток, применение этих методов может дать очень заметный эффект, особенно при выполнении сложных запросов над большими объемами данных, что характерно для систем поддержки принятия решений (DSS) (хранилищ данных). В Oracle 7.3 введен целый ряд таких специализированных алгоритмов.

• "Звездообразные запросы" (star queries). В DSS-системах довольно часто применяются запросы, выполняющие соединение одной большой таблицы (таблицы фактов) с несколькими маленькими (справочными таблицами). При выполнении подобных запросов оказывается эффективным достаточно экзотический алгоритм, выполняющий сначала вычисление декартова произведения справочных таблиц, а затем слияние сортировкой полученного результата с таблицей фактов.


• "Слияние хэшированием". Альтернативный слиянию сортировкой метод выполнения соединений таблиц (еще одна альтернатива - вложенные циклы).

• Применение битовых строк для индексирования. До версии 7.3 Oracle применял для индексирования только B-деревья и хэш-функции (если таблица помещалась в хэш-кластер). В версии 7.3 появилась возможность использования индексов с битовыми строками (bit-map indexes). Их идея очень проста. Если некоторое поле таблицы может принимать ограниченное число значений, то каждому такому значению можно сопоставить битовую строку (количество бит равно количеству записей в таблице), в которой единицы находятся в позициях, соответствующих тем записям, которые имеют данное значение в индексируемом поле. Ясно, что такой индекс позволяет очень быстро находить нужные записи по значениям проиндексированного поля (и любым их логическим комбинациям), а также выполнять операции агрегирования опять-таки по этому полю. Метод эффективен лишь для полей с небольшим количеством допустимых значений, неэффективны операции сравнения с предшествованием (больше/меньше), неэффективны операции вставки, удаления и модификации записей. В действительности "в чистом виде" битовые строки не применяются: они размещаются в листьях B-дерева, что позволяет смягчить указанные недостатки, но очевидно, что в целом они носят принципиальный характер, а потому не устранимы полностью. Oracle позволяет применять bit-map индексирование в сочетании с другими методами индексирования на одной и той же таблице.

До версии Oracle 7.3 основным средством администратора являлся Server Manager - программный продукт с графическим интерфейсом, но ориентированный на управление одной БД (в случае нескольких БД приходилось использовать несколько сессий), не имевший удобных средств графического мониторинга системы и не позволявший непосредственно управлять удаленными заданиями, требовавшими привлечения системных команд и ресурсов, не находящихся под контролем СУБД Oracle. Пробел заполнялся достаточно многочисленными программными продуктами третьих фирм, специализирующихся именно на средствах администрирования. Однако обеспечение единообразного администрирования распределенных систем стало настолько актуальной задачей, что стимулировала развитие новой стратегии корпорации в области средств администрирования сервера БД.



В комплекте с сервером версии 7.3 (в вариантах Workgroup и Enterprise) поставляется Oracle Enterprise Manager. В состав этого программного продукта входит набор утилит управления, интегрированных в единую консоль администратора. Через специальный связной процесс - Communication Deamon - эта консоль может взаимодействовать с интеллектуальными агентами - специальными процессами, функционирующими на компьютерах-серверах, обеспечивающими возможность удаленного управления (впрочем, агент требуется только для выполнения удаленных заданий и контроля за событиями - все основные административные функции реализуются через непосредственную связь консоли с сервером БД). Все управляемые компоненты - БД, серверы (узлы), процессы - отображаются на консоли в навигаторе объектов, позволяющем быстро находить требуемый объект и детализировать представление его структуры до нужного уровня. Непосредственно административные функции выполняются с помощью явного или неявного вызова соответствующих утилит. Для выполнения некоторых действий (перенос пользователя из одной БД в другую, присвоение новой роли пользователю и др.) достаточно "буксировки" мышкой.

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

Задания могут выполняться по заданному расписанию, причем непосредственный контроль за этим осуществляется локально интеллектуальным агентом, так что в принципе постоянная поддержка связи консоли с сервером не требуется (хотя для того, чтобы изменить задание или время его выполнения, необходимо, чтобы "агент вышел на связь"). Помимо использования набора стандартных типов заданий и их комбинаций администратор может определять принципиально новые, исользуя системно-независимый язык TCL (Task Control Language). Фактически и "стандартные" типы заданий строятся с применением "шаблонов" на этом языке, тексты которых можно использовать в качестве образцов. Интерпретация TCL в конкретной ОС того или иного сервера осуществляется соответствующим интеллектуальным агентом, что делает управление СУБД почти не зависящим от платформы сервера (а таких платформ Oracle поддерживает более 80).



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

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

Отдельного упоминания заслуживают поставляемые Oracle утилиты, входящие в Performance Package. В него входят: утилита мониторинга системы (несколько десятков стандартных динамических диаграмм плюс возможность определять свои собственные); утилита, показывающая в наглядной форме физическое расположение объектов БД в файлах данных и позволяющая выполнять оптимизирующие операции (дефрагментацию); утилита, показывающая информацию о сессиях, потребляющих наибольшее количество ресурсов (есть возможность сортировки сессий по различным параметрам, для любой из выбранных сессий можно легко "спуститься" по лестнице детализации информации о ней вплоть до используемых курсоров и планов выполнения соответствующих им запросов). Наконец, есть еще две утилиты, стоящие несколько особняком. Это Oracle Trace - управляемая событиями трассировка - и Oracle Expert - экспертная система, проводящя анализ структуры, параметров и функционирования СУБД и генерирующая рекомендации (а также готовые административные скрипты) для ее оптимизирующей настройки.


Содержание раздела