Владимир Пржиялковский
4 декабря 1997 г. в помещении МГУ состоялся семинар Московской секции ACM SIGMOD (группы по базам данных). Темой очередного ежемесячного заседания были объектные технологии в реляционных серверах баз данных компаний Informix, IBM и Oracle. Семинар был задуман как чисто техническое мероприятие, рассчитанное на специалистов, и на нем обсуждались такие атрибуты современных версий реляционных СУБД, как объектная модель (встроенные типы, абстрактные типы данных, отношения типов и т. д.), объектная архитектура (взаимоотношение реляционной и объектной сред, поддержка распределенных объектных сред), средства определения объектов (определение свойств, связей, операций и т. д.) и манипулирования объектами (связь с объектными языками программирования, языки запросов и т. д.). До некоторой степени семинар был необычен как для устроителей, так и для гостей: для первых - потому что были приглашены докладчики из фирм - разработчиков коммерческих СУБД (можно напомнить, что сама ACM представляет собой несколькосоттысячную международную некоммерческую организацию); для вторых - потому что разработчики прикладных систем (из которых как раз и состояли в основном “гости”) одновременно услышали рассказ о реализации объектных возможностей в современных SQL-СУБД разных, конкурирующих “в обычной жизни” между собой систем, при том, что элемент презентаций в этих выступлениях варьировался от нуля до примерно трети обычной дозы (в зависимости от типа СУБД). Добавляло необычности и то, что слушатели ознакомились с позицией в “объектно-реляционном” вопросе независимых экспертов с мировым именем - Криса Дейта и Ким Вона.
Еще только открывая семинар, председатель Московской секции Леонид Андреевич Калиниченко сразу как бы задал критический тон, познакомив слушателей с исследованием, проведенным Ким Воном в отношении применимости термина “объектно-реляционная” к современным СУБД. Напомним, что Ким Вон - не только автор UniSQL, он также активный и авторитетный участник SIGMOD объединения ACM. На проведенное недавно в Стокгольме мероприятие (не Московской секции) SIGMOD Ким Вон пригласил представителей ведущих коммерческих СУБД, с которыми и обсудил этот вопрос. Рамки нашей заметки позволяют привести лишь “сухой остаток”: все американские представители фирм-разработчиков, включая Oracle, Informix и IBM, после длительного обсуждения признали, что СУБД их фирм нельзя считать “объектно-реляционными”. Уточнение “американские” мы привели не случайно, так как некоторые российские представители этих же фирм (см. ниже о выступлении российского представителя Informix) не согласны со своими американскими коллегами.
Критический тон был поддержан представителем московского отделения фирмы Oracle Михаилом Елашкиным: за 20 минут по регламенту он изложил содержание шестичасового выступления Криса Дейта, которое состоялось этим летом и касалось как раз возможностей объединения объектной и реляционной технологий. Специалистам взгляды Дейта хорошо известны, они несколько изменились со временем, но в целом примерно таковы. Реляционная “идея” не реализована, а объектная слишком сыра, т. е. содержит много непроработанных моментов. То, что сегодня многие фирмы выдают за объектно-реляционные системы, никак не заслуживает такого названия. Оказалось, однако, что лучший в мире “учитель” по реляционным СУБД (его книга “Введение в СУБД” до сих пор признается наиболее подробным, грамотным и увлекательным изложением реляционных идей) работает над объектно-реляционной моделью, которую вскоре обещает обнародовать. Наивно предполагать, что Дейт не в курсе имеющихся различий между моделью и реализацией, но тем не менее легко представить, какой модель Дейта, буде она появится, вызовет интерес.
Затем эстафету приняли представители фирм-разработчиков, рассказавших об объектности последних объектно-реляционных версий. Дмитрий Безруков (фирма ФОРС) в течение нескольких месяцев работал с относительно недавно появившейся версией Oracle8, объектные возможности которой считаются стратегическими новшествами по отношению к предыдущей, седьмой версии. Если сравнивать с двумя последовавшими выступлениями, то доклад Безрукова был, пожалуй, самым конкретным и обстоятельным. Фирма Oracle дополнила свой язык работы с данными (диалект SQL) специальными расширениями, назвав то, что получилось, “объектно-реляционным языком”. С его помощью можно создавать свои типы данных, в том числе на базе ранее определенных, на манер вложенных записей. Языком описания методов служит PL/SQL или Cи++. Собственно же объекты, обладающие уникальным идентификатором OID, появляются в так называемых “таблицах объектов”, где каждая строка представляет собой объект. Атрибуты объектов видны в таблице, доступ же к объектам обеспечивают обычные табличные SQL-операторы (объекты без OID могут быть атрибутами простой таблицы). В этой общей схеме много деталей - модельных (коллекции, массивы объектов, “объектные представления” и др.) и технических (хранимые и временные объекты, копирование объектов и т. д.). Сложность и проработка объектных свойств впечатляет, но в то же время оставляет много вопросов.
Предварив свое выступление смелой полемикой с упомянутыми Ким Воном и Дейтом, о реализации объектных свойств в СУБД Informix Universal Data Option рассказал сотрудник московского представительства фирмы Informix Алексей Грачев. Строится она, по его словам, во-первых, на абстрактных типах данных, а во-вторых, на поддержке наследования. Первые позволяют создавать собственные типы на основе базовых и уже заведенных, пользуясь соответствующим расширением SQL. С помощью второго можно строить иерархию типов и данных. Техническое решение, по-видимому, перекликающееся с “кассетами” (Cartridges) в Oracle и имеющее название Data Blade, позволяет объединять в один “пакет” набор типов с общей прикладной ориентацией. Каждый такой набор может в принципе быть написан кем угодно, но настоящим “лезвием для данных” он будет только в том случае, если его сертифицирует фирма Informix. Выступление Алексея Грачева было настолько “гладким”, что почти не породило у слушателей вопросов. В общем-то и Oracle, и Informix в своих объектных расширениях пошли одним путем - по предварительному описанию SQL3 (к слову сказать, составленному не без участия этих фирм). В результате получилось, что многие технические детали оказались либо избыточными, как в случае Oracle, либо, наоборот, необъясненными (Informix).
Выступление Константина Лисовского (АО “Курс”) об объектных свойствах DB2 Universal Database в значительной мере основывалось на статье Д. Чемберлина (IBM) “Анатомия объектно-реляционных баз данных”. Корпорация IBM крайне осторожно вносит новшества в свои продукты, следуя принципу “не навреди”. В полной мере это относится и к внесению объектности в DB2. Объектно-реляционная СУБД в трактовке IBM - это, во-первых, объектная инфраструктура и, во-вторых, реляционная СУБД, поддерживающая объектные данные (здесь используется терминология IBM). К объектной инфраструктуре IBM относит то, что уже входит в DB2, - пользовательские функции и типы данных, большие объекты, триггеры и ограничения. Хотя типы могут определяться только на основе базовых данных, их потенциал оказывается не таким уж и малым, поскольку функции для типов могут определяться произвольно (в пределах Cи, Cи++ или Бейсика). Реляционные расширения - это добавки к DB2, позволяющие эффективно работать с объектами различных прикладных областей, типа “текстового расширителя”, который поддерживает быстрое извлечение документов на основе содержания. Из сказанного IBM заключает, что DB2 Universal Database - это “уже больше, чем реляционная СУБД”, и обозначает направления, в которых будет продолжаться работа по внесению в систему объектных свойств.
Мне хорошо знакома предыстория прошедшего семинара, поскольку впервые идея о его проведении была высказана Михаилом Елашкиным в начале прошлого лета. К тому времени сложилось ощущение, что появившиеся в последнее время “объектно-реляционные” СУБД вызывают у пользователей некоторую растерянность. Действительно, по результатам опроса, проведенного Группой пользователей Oracle трех Америк, только 15% пользователей (было опрошено несколько сотен) планируют закупку Object Option в Oracle8. Всем известно, какую дрожь в коленках испытали финансисты из Informix после попытки фирмы сделать Universal Server своим основным поставляемым продуктом. С другой стороны, как мне показалось, были растеряны и фирмы-поставщики, потому что не все их сотрудники понимали, как проконсультировать пользователей по поводу построения объектно-реляционных приложений. То есть хорошо объяснить, как лучше использовать те или иные особенности своих продуктов, они могли, но когда доходило до способов построения с их помощью прикладной системы, возникали сложности. Остановить же продвижение новых продуктов ни пользователи, ни представители фирм, естественно, не в состоянии.
Именно так возникла идея круглого стола, участники которого попытались бы осмыслить проблему более широко, нежели простое выяснение тонкостей устройства той или иной системы. Мне кажется, отчасти это удалось, по крайней мере такому осмыслению было положено начало. В немалой мере этому способствовали помимо выступавших ученый секретарь Московской секции ACM SIGMOD Михаил Рувимович Когаловский и заместитель председателя Сергей Дмитриевич Кузнецов. Особо симптоматична активная позиция, которую заняло московское представительство Oracle: его сотрудники проявили не часто встечающуюся у нас широту мышления, предложив провести технический семинар с участием конкурирующих фирм. Это можно расценить как определенного рода зрелость и переход от близорукого проталкивания на рынок своих продуктов, которые являются не более чем инструментом, к более дальновидной политике разъяснения разработчикам, как, когда и почему этот инструмент применим в их насущной практике создания информационных систем.
С автором статьи, координатором Евро-Азиатской группы пользователей Oracle, можно связаться по адресу: prz@deneg.net.