Владимир Пржиялковский
сотрудник ВЦ РАН, преподаватель УЦ "Интерфейс" (http://www.interface.ru)
prz@ccas.ru

14 июня 2001 года состоялась официальная церемония по поводу начала продаж новой версии СУБД Oracle - Oracle 9i. Это событие небезразлично очень многим, поскольку Oracle продолжает доминировать на мировом рынке СУБД, несмотря даже на последний ход IBM, которая приобрела недавно подразделение Informix, занимающееся базами данных (Informix Software).

Основные моменты, характеризующие это событие, - быстрота подготовки очередной версии и несколько более высокое, чем обычно, количество окутывающего ее тумана (что ассоциируется скорее с военными действиями, чем с поэтикой). Действительно, официальное заявление о новой версии было сделано только в октябре прошлого года, а поставки начались уже в июне. Количество тестировщиков было непривычно мало, а срок испытаний бета-версий для многих составил даже менее формальных семи месяцев. Наконец, в Интернете первые бета-версии появились только в начале июня, да и то лишь для платформ Sun Solaris, HP-UX и Linux, но не для Windows, для которой обозначен срок появления - "в течение трех месяцев".

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

Новшества крупным планом

Новой версии СУБД Oracle 9i напрямую предшествует версия Oracle 8.1.7. Объявлено, что в новой версии по сравнению с предыдущей сделано 400 изменений. Содержательно эта цифра мало о чем говорит, так как изменение изменению рознь. Попытаемся выделить некоторые общие моменты.

Изменения в названии

Переименования - вещь сакральная для ПО таких гигантов, как Oracle. Наивно было бы полагать, что в новой версии фирма просто сменит номер. Для пользователей же переход на новую систему обозначений - неизбежность, с которой так или иначе придется смириться.

Версия Oracle 8i следовала традиции в части объема понятия: Oracle 8i обозначало СУБД и ее ближайшее окружение. Теперь же Oracle 9i предполагается использовать в качестве "зонтичного" названия для двух ключевых серверных продуктов компании: Oracle 9i Application Server и Oracle 9i Database. Разумеется, за последним термином скрывается СУБД, а не БД, однако такова терминология фирмы.

При этом первый из данной пары продуктов - Oracle 9i Application Server - уже присутствует на рынке с октября прошлого года, а собственно июньские ожидания связаны со вторым - Oracle 9i Database. Несмотря на подобную относительную самостоятельность Application Server (Oracle 9i AS), следует, видимо, полагать, что продукт будет функционировать полностью, как задумано, только с момента появления СУБД новой версии.

Таким образом, 75 разных серверных программных продуктов в текущей версии оказались сведены к двум основным и общему названию - Oracle 9i.

На Web-сайте фирмы присутствует еще и третий "обобщенный продукт": Oracle 9i Developer Suite. Это прямой наследник нынешней среды разработки приложения Developer Suite, также обогащенный рядом новшеств. Oracle 9i Developer Suite, будучи важным набором ПО (в него, например, входит JDeveloper, среда разработки Web-приложений с использованием Java), все же не серверный продукт и, соответственно, здесь не рассматривается.

Сведение семи с лишним десятков разных названий в номенклатуре серверных продуктов Oracle к базовым двум преследует цель дать пользователям единую целостную среду разработки Интернет-приложений. Представители фирмы поясняют мотивацию такого сужения следующим образом. Или вы приобретаете единую систему Oracle 9i AS, управляемую с одной консоли, или набираете "корзину" из WebLogic фирмы BEA, систему Plumtree для создания портала, Times Ten для быстрой работы с данными, Inktomi для Web-кэширования, Phone.com и Nokia для поддержки беспроводного доступа, Netscape для организации Web-узла и т. д. Каждая из перечисленных систем требует отдельной консоли управления и отдельных знаний для ее эксплуатации.

Сужение номенклатуры названий отражает неизменность линии на централизацию в Oracle: "несколько больших серверов", а не "десятки маленьких".

Нововведения в Oracle 9i Application Server

Как объявлено, главнейшее новшество в Oracle 9i Application Server - это использование патентованной технологии кэширования. Таким образом, это новшество носит технологический характер, причем связано исключительно с Web. Прикладное же значение этого новшества, по мнению представителей Oracle, состоит в том, что оно решает проблемы, из-за которых Web-сайт имеет высокое время отклика и плохо выдерживает пиковые нагрузки. В результате разработчики сайта вынуждены ориентироваться в большей степени на статичное представление данных (что, по мнению представителей Oracle, делает сайт менее привлекательным); для поддержания постоянного времени реакции с учетом неравномерных нагрузок в инфраструктуру Web-сайта приходится вкладывать деньги с "запасом"; возможность увеличения масштабов сайта становится в долгосрочном аспекте неясной.

Как заявляют представители Oracle, в компании уже есть опыт использования новой технологии кэширования. Так, в августе 2000 г. эта технология была применена на одном из самых посещаемых сайтов мира - http://www.oracle.com, позволив в четыре раза увеличить число обслуживаемых одновременно страниц. Применение новой технологии кэширования на сайте продаж Oracle Store привело к фантастическому росту пропускной способности: в 150 раз (!). Сегодня этот сайт ежесекундно обрабатывает 7500 запросов.

Новшества в Oracle 9i Database

Они связываются с техникой "более эффективной" поддержки data mining и data warehousing. Ключевое слово здесь для Oracle - "интеллектуализация" автоматизированных систем, появление в них возможностей для аналитики (business intelligence platform, BI). Очевидно, это дань (в современном духе) тем технологиям, которым в свое время разработчики СУБД не уделили должного внимания, предпочтя сравнительно простые "учетно-отчетные" системы. Увы, здесь тактика Oracle не слишком оригинальна. В состав Oracle 9i Database включены некоторые дополнительные средства OLAP (OLAP Services), новые функции из категории data mining, а также средства извлечения, преобразования и загрузки (ETL tools) для складов данных. (По поводу OLAP заметим: тем самым мы наблюдаем постепенный перенос функциональности "старого" Oracle Express в основной сервер СУБД; текущие пользователи Express переводятся в положение "равноудаленных" вместе с пользователями приснопамятной Digital Rdb). Когда ETL-средства окажутся собраны на одном сервере БД, то, по мнению Oracle, отпадет нужда в длительном и дорогом процессе извлечения больших объемов данных "на стороне" для загрузки их в базу под управлением Oracle. Кроме того, на эти же процессы автоматически распространятся категории масштабирования, которыми обладает сервер БД Oracle (подробнее об этом ниже).

Объявлено и о новшествах другого рода. Так, в Oracle 9i Database должна быть встроена возможность персонализации в реальном времени. Эта возможность опять-таки рассчитана на Web, но в аспекте электронной коммерции. В существующих технологиях индивидуальные рекомендации, выдаваемые посетителю Web-узла, основаны на накопленной в БД истории посещений конкретного пользователя. Новая технология Oracle дополнительно позволит выдавать в реальном времени рекомендации, отталкиваясь от текущего поведения посетителя Web-страницы.

Oracle 9i и аренда приложений

Oracle 9i разрабатывалась с учетом активного использования в системах типа "аренда приложений" (ASP). Здесь фирма предлагает много интересного, и остается только наблюдать, насколько адекватно и удобно все это реализовано уже сейчас и будет реализовано в обозримом будущем. В связи с ASP можно указать на два ключевых средства.

Oracle 9i Real Application Clusters - средство, позволяющее увеличивать пропускную способность приложения за счет простого наращивания числа серверов и устройств для хранения данных в кластерной конфигурации. На управленческом уровне это средство соответствует идиоме "плати по мере собственного роста" (а не с упреждением, "про запас").

Средство Oracle 9i Data Guard призвано обеспечить "нулевое" время простоя при возникновении технологических сбоев. Обещано, что переключение с рабочего сервера на резервный (standby) и обратно будет выполняться "нажатием клавиши".

Помимо этого, предусмотрены некоторые средства автоматического управления системой (так сказать, "самоуправления"), самонастройки и фиксации диагностики разного уровня с возможностью уточнения проблем по выдаваемым отчетам.

Немаловажные детали

Как говорится, "бес - в подробностях". Ниже описаны некоторые из конкретных технических новшеств - для многих разработчиков именно они и представляют основной интерес.

Новые возможности SQL Oracle

Диалект SQL, который реализован в Oracle, заметно менялся за последние четыре года, и версия Oracle 9i не стала в этом плане исключением. Так, балансировка между ANSI-стандартом на SQL и введением в язык собственных конструкций и функций и раньше составляла предмет непростого выбора для руководства фирмы. В версии Oracle 9i принят как ряд решений по сознательному отходу от стандарта ANSI в угоду производительности СУБД, так и ряд дополнений, взятых из существующих стандартов (тем не менее Intermediate Level SQL2 ни в продукте Oracle, ни у кого-либо из конкурентов все же не достигнут).

В OLAP-машину Oracle вставлен прямой интерфейс с Java, что повышает реактивность SQL-запросов, генерируемых внешними Интернет-порталами. Обновленная техника связи SQL-машины и PL/SQL-машины обещает сделать вызов хранимых процедур из SQL и SQL-предложений из программ на PL/SQL более эффективным (последнее, впрочем, относится и к другим включающим языкам). Параллельная обработка запросов может теперь выполняться и в хранимых процедурах на PL/SQL и Java.

Помимо этого добавлены некоторые расширения SQL, позволяющие более оперативно обрабатывать большие объемы данных, а именно:

  • функции LEAD и LAG в SQL можно использовать для быстрого анализа временных рядов, хранящихся на складах данных (простое агрегирование данных за периоды времени);
  • функции ранжирования помогают выполнять традиционные для OLAP-приложений действия типа "выдать первую десятку", "последнюю десятку", "первые/последние 10%" (некоторые из этих функций начали появляться уже в версии 8i);
  • появились функции группирования - распределения данных по группам типа возрастных или уровней дохода и целый ряд статистических функций.

Новые модельные свойства

Их совсем немного, но для кого-то они могут оказаться очень важными. Расширены возможности объектных типов, а главное - реализовано долгожданное любителями объектности наследование.

Упрощение конфигурирования

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

В версии 8 уже делалась попытка ввести графические инструменты редактирования конфигурационных файлов, однако в Oracle 9i они, по мнению Oracle, более интуитивно понятны, удобны и всеобъемлющи.

Переконфигурирование SGA в процессе работы

Объявлено, что в версии Oracle 9i Database есть возможность изменять параметры SGA без остановки и перезапуска системы, как требовалось раньше (это касается, по крайней мере, буфера блоков данных и областей shared pool и large pool). Например, если администратор обнаружит нехватку места в shared pool, он сможет присоединить к этой области часть памяти из буферов данных. Для систем, эксплуатируемых круглосуточно (например в Интернете), это нововведение выглядит весьма привлекательно, но можно отметить, что уже в версии Oracle 8.1.6 новая внутренняя техника работы с динамической оперативной памятью позволила администраторам относительно безболезненно выставлять размер shared pool с запасом, особо не утруждая себя вычислением оптимального значения.

Возможности журнальных файлов

В новой версии более полно задействованы возможности, заложенные в журнальных файлах (то, что потенциал этих файлов используется не до конца, бросалось в глаза и раньше). Во-первых, упрощены (путем автоматизации) процедуры создания и поддержки баз данных горячего резерва (standby), в технике реализации которых журналы играют ключевую роль. Теперь к тому же для резервной БД можно задавать временной промежуток, который должен отделять ее от основной базы.

Во-вторых, добавлены новые и автоматизированы некоторые старые функции LogMiner - средства, позволяющего прослеживать цепочку изменений объектов в БД и откатывать эти изменения.

Средства извлечения, преобразования и загрузки данных (ETL)

Раньше эти средства непосредственно в Oracle отсутствовали (по крайней мере в таком объеме и в такой взаимосвязи), так что для загрузки склада данных из операционной БД приходилось обращаться к посторонним системам либо писать свои программы обработки (переформатирования, построения сверток, отсева и коррекции данных и т. д.) В версии Oracle 9i они доступны, не в последнюю очередь за счет разработок недавнего приобретения Oracle - фирмы Carleton Software. В функциональности ETL-средств в Oracle можно выделить три основных направления.

  • Извлечение. Фаза извлечения формируется из набора SQL-запросов (на диалекте Oracle) к операционной БД.
  • Преобразование. Фаза преобразования включает агрегирование операционных данных, представленных в исходной БД с ненужной для склада данных степенью детальности. По утверждению Oracle, в Oracle 9i появилось автоматическое агрегирование данных для загрузки в склад. Можно вспомнить, что вообще преобразование данных иногда включает возможности обращения к внешним метаданным и очистки.
  • Загрузка. Появилось новое решение задачи, выполнявшейся ранее в Oracle средствами SQL*Loader (впрочем, SQL*Loader остается и даже получает некоторое развитие для выполнения своего традиционного класса задач).

Cache Fusion

Уже более четырех лет в Oracle существует технология параллельного сервера (OPS). Вспомним, что речь идет о работе нескольких экземпляров СУБД с одной базой данных одновременно. Буфер блоков данных при этом у каждого экземпляра свой. В Oracle 9i идея OPS получила развитие под названием Cache Fusion: параллельно работающие экземпляры СУБД имеют в этом случае общее буферное пространство. Буферы как бы спеклись в единое целое - отсюда, надо полагать, и название (от англ. fusion - плавление).

Первоначально архитектура OPS проектировалась в расчете на MPP-компьютерные системы ("массивно параллельные", в которых узлы имеют полный комплект устройств самостоятельного компьютера, включая процессор, ОЗУ и дисковую память). Тем не менее в OPS каждому экземпляру СУБД требуется право работать с блоками данных из "чужого" буфера. Для реализации этого права в Oracle служит "встроенный диспетчер блокировок в распределенной среде" (Integrated Distributed Lock Manager, IDLM). IDLM отвечает за передачу блоков от одного экземпляра к другому; он имелся и в прежних реализациях, а теперь вошел в состав Cache Fusion. Таким образом, Cache Fusion способен быстро "раздать" нужные блоки разным экземплярам СУБД, формируя образ пресловутого "единого буфера".

Разграничение доступа

Разграничению доступа к данным Oracle всегда уделяла особое внимание. В Oracle 9i получила дальнейшее развитие система виртуальных частных БД (VPD), появившаяся в версии 8. Основная цель - контролировать доступ к базам данных Oracle со стороны Web-серверов. На мой взгляд, техника VPD, отчасти из-за ее сложности, не входила у нас до сих пор в категорию наиболее популярных (много ли администраторов Oracle знают о том, что в их распоряжении есть fine-grained access control?). Однако возможно, что с ростом числа крупных Web-серверов она станет более распространенной.

Из числа новшеств в VPD можно отметить так называемую систему Oracle Label Security, позволяющую "навешивать" на отдельные строки таблиц специальные метки для разграничения доступа. Опытные пользователи сразу вспомнят mandatory access control, существовавший в ныне сошедшей со сцены версии Trusted Oracle.

Дальнейшее развитие получили системы идентификации и шифрования данных (например, добавлена аутентификация с использованием внешнего сервера), хотя принципиально нового здесь ничего не просматривается.

Java и XML

Что касается Java, то принципиальная новизна Oracle 9i - это имя Enterprise Java Engine, пришедшее на смену привычному JServer. Остальные новшества, безусловно, важны и нужны, но они несравнимы по своему значению с появлением в Oracle 8.1 встроенной Java-машины.

Многие нововведения касаются внутреннего устройства, и оценить их можно будет только после начала эксплуатации. Это касается, например, нового алгоритма сборки мусора в Java-машине, новых интерфейсов oracle.jdbc.* для собственных расширений Oracle и т.д. Новшества другого рода затрагивают расширения функциональности JDBC и SQLJ, организацию хранимых Java-процедур, поддержку Unicode в полях NCHAR при работе через JDBC и т. д. - таких добавлений набирается довольно много.

Примерно в ту же категорию попадают новшества, касающиеся работы с XML: принципиальные шаги здесь были сделаны в версии Oracle 8.1, а в версии Oracle 9i разработчиков ожидают естественные усовершенствования. Так, Oracle 9i поставляется с предзагруженным пакетом XML Developer Kit (XDK) для Java и с предкомпилированным XDK для C. В новой версии поддерживаются текстовый поиск во вложенных XML-элементах, значения атрибутов поиска, синтаксис запросов XPath и поиск в других XML-структурах.

Могут ли 400 новостей быть хорошими?

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

Развитие системы Oracle показывает, что нововведения могут быть разных типов:

  • принципиальные (таким было, например, включение в состав СУБД виртуальной машины Java, позволившее работать с хранимыми Java-процедурами);
  • доводка ранее объявленных принципиальных новшеств (часто это просто доделки; пример - наследование объектов, появившееся в Oracle 9i);
  • малозначащие.

На мой взгляд, принципиальных новшеств в версии Oracle 9i Database не просматривается. Несколько ключевых моментов новизны, пропагандируемых представителями фирмы (такие как "кластерная масштабируемость"), скорее всего, хороши, но не затрагивают интересы подавляющей массы потребителей в СНГ, так как рассчитаны на крупные кластерные установки. Это, конечно, не означает, что все новшества в Oracle 9i нашим разработчикам неинтересны - доделки в части использования Java, упомянутые выше, весьма уместны. Более того, это свидетельствует о "кризисе жанра", охватившем за последние годы всю отрасль СУБД вообще, в результате которого нововведения в таких системах все чаще сводятся к чисто эксплуатационным доработкам и переделкам. Нет худа без добра, так как, появись на горизонте "большая конфета", все дружно бросились бы за ней, позабыв о существующих прорехах.

Многие из новинок в Oracle 9i представляют собой дальнейшее развитие того, что уже имелось в версиях Oracle 8.1.7, Oracle 8.1.6 или более ранних. Почему о них говорится только сейчас? Мне кажется, ответ надо искать в "случайном", с точностью до недели, совпадении появления Oracle 9i с официальным представлением новой версии DB2 7.2 фирмы IBM и ожидающимся в этом же месяце анонсом новой версии СУБД Sybase. Слишком свеж в памяти "салют" новых версий СУБД крупнейших поставщиков-конкурентов - тогда речь шла о "новом поколении универсальных серверов" БД с объектными возможностями. Не забылись, однако, и сокрушительные последствия того "фестиваля новых версий".

Многие изменения в системе Oracle зреют годами, и можно наблюдать, как фирма от версии к версии пытается их укоренить. Не всегда это удается: так, Web-сервер собственной разработки под названием OAS, похоже, уступил место так называемому iAS - связке СУБД Oracle + Apache (вовремя подготовленному в версии Oracle 8.1.6 "запасному аэродрому", оказавшемуся более ценным, чем планировавшийся "основной"). Иначе говоря, те пользователи, которые при появлении OAS в свое время выдвинули встречный лозунг: "Oracle + Perl + Apache", оказались в выигрыше по сравнению с коллегами, поддавшимися обаянию рекламных речей. Так что, может быть, стоит осмотрительнее относиться ко всем предлагаемым новшествам.

Несмотря на это, у Oracle в версии Oracle 9i Database все еще имеется солидный запас прочности основного продукта - СУБД, и было бы неразумно в будущем этот запас растратить.