Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас.
Книга Екклесиаста, 1:10
Объектно-ориентированные СУБД (ООСУБД) - далеко не новое слово в технологии баз данных. Пятнадцать, в некоторых случаях даже двадцать лет тому назад это была одна из любимых тем университетских исследований. Общие идеи, лежащие в основе этого подхода, довольно просты; их доступное изложение содержится в опубликованном десять лет назад Манифесте объектно-ориентированных баз данных (русский вариант см. в "СУБД" № 4, 1995). Основная же цель проектировщиков ООСУБД состояла в том, чтобы предоставить разработчикам приложений механизм управления данными во внешней памяти, который бы полностью стыковался со средствами объектно-ориентированного программирования. Для обширного класса программистов объектно-ориентированный подход гораздо более естественен, чем традиционное чисто процедурное программирование, однако языки объектно-ориентированного программирования плохо сопрягаются со средствами реляционных СУБД (РСУБД).
Один из основных дефектов технологии приложений на основе реляционных баз данных состоит в том, что логически связанный проект при реализации распадается на две различные части: проектирование и разработка схемы базы данных - и проектирование и разработка программного кода приложения. Понятно, что данные, хранящиеся во внешней памяти, никому не нужны без обрабатывающих их программ, а программы эти бессмысленны, если отсутствуют данные. Тем не менее при реализации этих связанных частей используются абсолютно разные инструменты: модели и языки баз данных в одном случае, и системы программирования - в другом.
Технология ООСУБД предполагает существование интегрированной языковой среды, которая одновременно позволяет конструировать объектную базу данных, содержащую не только данные, но и программный код (методы), обеспечивающий доступ к этим данным, и код приложения. Исчезает разрыв между пассивными данными и активными программами, проект прикладной системы ведется в единых рамках, что убыстряет разработку и облегчает последующее сопровождение. Естественно, при этом необходимо стремиться к сохранению всех преимуществ объектно-ориентированного программирования (уникальная идентификация объектов, инкапсуляция, наследование, полиморфизм и т. д.) и систем баз данных (многопользовательский режим доступа, восстановление после сбоев, управление транзакциями и т. д.). Казалось бы, перспективы блестящие - я действительно считал их блестящими пятнадцать лет назад. Почему же ожидания не оправдались в полной мере? Перечислю несколько причин негативного характера, возможно, не в порядке возрастания или убывания их важности, и, скорее всего, не все.
- До последнего времени отсутствовал "настоящий", то есть строго соответствующий принципам объектно-ориентированного подхода, и при этом достаточно распространенный объектно-ориентированный язык программирования.
- Среди исследователей технологии ООСУБД так и не нашлось специалиста, который, подобно Теду Кодду, по отношению к реляционным базам данных смог бы создать простую и надежную теорию; более того, большинство представителей этого сообщества уже давно склоняется к тому, что такую теорию создать невозможно.
- Среди специалистов в области объектно-ориентированных языков программирования отсутствует общепринятое понятие объектной модели, причем все попытки выработать компромиссную эталонную модель до сих пор заканчивались неудачей.
- Стремление сохранить преимущества РСУБД заставляет, тем не менее, пересматривать смысл таких понятий, как единица блокировки для поддержки многопользовательского режима, транзакция, журнализация, ограничение целостности и т. д., причем общепринятой их трактовки не существует.
- Стремление сохранить преимущества объектно-ориентированных языков программирования заставляет для обеспечения удовлетворительной эффективности жертвовать полнотой инкапсуляции, вводить ограниченные средства наследования и т. д.
- При всех недостатках (а их гораздо больше, нежели мы отметили) использования реляционных баз данных для разработки приложений имеются надежные методологии и программные средства, позволяющие проектировать, реализовывать, сопровождать и распространять такие приложения. При ориентации на ООСУБД выбор гораздо беднее.
Итак, до последнего времени ООСУБД относились к области риска. С одной стороны, есть много примеров удачного использования подобных продуктов. С другой, рынок ООСУБД крайне узок и пока не может приносить больших доходов. На сегодняшний день достаточно устойчивы следующие продукты: O2 (Ardent Software, http://www.ardentsoftware.com), Cashe (InterSystems, http://www.intersys.com), ObjectStore (Object Design, http://www.odi.com), Objectivity/DB (Objectivity, http://www.objectivity.com), POET (POET Software, http://www.poet.com), VERSANT (Versant, http://www.versant.com), GemStone/S (GemStone Systems, http://www.gemstone.com). Все эти компании невелики, и годовой бюджет каждой из них измеряется десятками миллионов долларов. Такие крупные компании, как Oracle, Informix, Sybase, Microsoft и IBM, не собираются развивать собственные продукты класса ООСУБД; вместо этого они предлагают подходы к расширению реляционных баз данных объектными свойствами.
Что же сейчас происходит? Почему снова печатные издания часто возвращаются к теме ООСУБД? Неужели что-то радикально изменилось? Неужели появилось что-то новое? И да, и нет.
Проблемы ООСУБД не потеряли актуальности. Технологическая поддержка объектно-ориентированных приложений существует, но не является достаточно общепринятой и признанной. Теоретическое основание по-прежнему отсутствует. И так далее.
Но!
1. Появился Internet, появилась технология intranet, появился язык программирования Java.
С точки зрения теории эти события почти ничего не значат. Internet - это перенос с соответствующим развитием в практическую сферу идей Unix (вспомните "сеть - это компьютер" Билла Джоя), Web - естественное внедрение в Internet принципов организации гипертекста, intranet - методика использования средств Internet при разработке внутрикорпоративных информационных систем; а Java, как я считаю, - прагматический объектно-ориентированный язык, единственным преимуществом которого (конечно, здесь я утрирую) является возможность безопасной интерпретации.
С точки зрения практики это означает очень многое. Технология Internet, перевернувшая человеческие представления о распространении информации, об основанном на ее продаже бизнесе, стремительно переходит от предоставления множества текстовых документов к графическим образам (необязательно двумерным), аудио- и видеоданным.
Web, компонент технологии Internet, возникший позже других, также не содержащий в себе ничего принципиально нового, тем не менее позволил публиковать в Internet самые разнообразные источники, от общедоступных до сугубо коммерческих.
Java вышел на мировой рынок главным образом в связи с потребностями сообщества Internet. Возникший вместе с Web язык HTML служит для гипертекстовой разметки документов - это не язык программирования. А язык программирования был нужен, чтобы расширить возможности Web - дать возможность Web-клиентам получать не только статические тексты и графику, но и динамические изменяемые изображения, видео- и аудиоданные. Созданный в Sun интерпретируемый, безопасный, объектно-ориентированный язык Java быстро завоевал популярность именно в среде Web-разработчиков. Не обладая какими-либо принципиально новыми возможностями, Java позволяет создавать мобильные в рамках всего Internet объекты, методы которых в силу интерпретируемости языка могут выполняться в браузерах независимо от особенностей клиентского компьютера. Появление широко распространенного объектно-ориентированного языка вновь обострило интерес к ООСУБД и к возможностям Java стать их языковой основой.
Возникновение и распространение информационных корпоративных систем intranet явилось естественной реакцией мира бизнеса на существование удобных для разработчиков и пользователей, сравнительно стандартных средств Internet (электронная почта, удаленный доступ к файлам, Web и т. д.). Эта технология, в частности, сделала особенно актуальными возможности сетевого доступа к существующим базам данных и повысила значимость языка Java. Разрабатываемые совершенно заново системы intranet стали еще одной причиной повышенного интереса к ООСУБД.
2. На технологию объектно-ориентированных баз данных обратила внимание одна из крупнейших софтверных компаний - Computer Associates.
Это произошло немногим более двух лет тому назад. Чарльз Ванг, президент и основатель CA, принял решение о стратегическом союзе с японской компанией Fujitsu и о фактическом приобретении ее продукта, ООСУБД Jasmine. По моему мнению, в исходном продукте не было ничего принципиально нового - новым было как раз то, что ООСУБД заинтересовался один из лидеров. Это означало иной уровень доводки промышленного продукта, иной уровень рекламы и маркетинга.
Так и произошло. Около полутора лет специалисты CA доводили разработку Fujitsu до промышленного уровня. Уже более полугода CA ведет вокруг Jasmine агрессивную рекламную и маркетинговую кампанию. Сам Ванг во всеуслышание заявил о намерении довести продажи Jasmine до цифр, соизмеримых с оборотом ведущего продукта CA-Unicenter.
В этой истории представляет интерес не техническое содержание (что было, то и будет), а стратегия Чарльза Ванга, стоящего, по моему мнению, в одном ряду с Биллом Гейтсом и Ларри Эллисоном, которые никогда не проигрывают. Это рисковый игрок, но игрок, играющий не по азарту, а на выигрыш.
На самом деле сегодня в Jasmine проявились два новых для ООСУБД момента, которые связаны с масштабностью CA. Во-первых, используя свой практически неограниченный инженерный потенциал, компания смогла довести Jasmine до уровня коммерческого продукта, обеспечив необходимый набор средств разработки (но не проектирования объектно-ориентированных баз данных). Если вы спросите, верю ли я в работоспособность этой системы, я, конечно, отвечу "да". CA - надежная компания.
Во-вторых, CA перевела рекламу ООСУБД на такой уровень, что если полностью ей доверять, можно вообразить, что именно эта компания первой создала промышленно доступную технологию объектно-ориентированных баз данных. Конечно же, это не так, однако CA первой среди гигантов софтверной индустрии решилась потратить большие деньги на развитие данной технологии.
Итак, революции в нашем деле, слава Богу, нет. При планировании информационной системы имеется выбор между чисто реляционными, объектно-реляционными и объектно-ориентированными системами баз данных. Чисто реляционные системы слегка "туповаты" (обратная сторона простоты и эффективности), но зато спокойно справляются с терабайтами информации. Объектно-реляционные системы привлекают тем, что не заставляют полностью пересматривать свой способ мышления и обещают (но не обязательно гарантируют) тот же уровень надежности, эффективности и масштабируемости, что чисто реляционные системы. Наконец, объектно-ориентированные СУБД предоставляют новый, привлекательный способ создания информационных систем, но пока не обладают коммерческими качествами реляционных систем.
Вряд ли что-нибудь изменится быстро. Поживем - увидим. А пока не делайте резких движений и дышите глубже.
Сергей Кузнецов - эксперт компании ЦИТ, научный pедактоp жуpнала "СУБД". С ним можно связаться по электронной почте по адресу kuz@citmgu.ru.