Классика баз данных - статьи

       

Что было, то и теперь есть, и что будет, то уже было…


Сергей Кузнецов

Что было, то и будет, и что делалось, то и будет делаться, и нет ничего нового под солнцем. Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас.

Книга Екклесиаста [9:10]

Объектно-ориентированные СУБД (ООСУБД) являются далеко не новым словом в технологии баз данных. Пятнадцать, и даже в некоторых случаях даже 20 лет тому назад это была одна из любимых тем университетских исследований. Общие идеи, лежащие в основе этого подхода, довольно просты и доступно изложены в опубликованном десять лет назад Манифесте объектно-ориентированных баз данных (русский вариант см. в "СУБД" N 4, 1995). Если прибегнуть к еще большему упрощению, то основная цель проектировщиков и разработчиков ООСУБД состояла в том, чтобы предоставить разработчикам информационных приложений механизм управления данными во внешней памяти, который полностью стыковался бы со средствами объектно-ориентированного программирования. Существует обширный класс программистов, для которых объектно-ориентированный подход является гораздо более естественным, чем более традиционное чисто процедурное программирование, а языки объектно-ориентированного программирования плохо сопрягаются со средствами реляционных СУБД (РСУБД).

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

Технология ООСУБД предполагает существование интегрированной языковой среды, которая одновременно позволяет конструировать объектную базу данных, содержащую не только данные, но и программный код (методы объектов), обеспечивающий доступ к этим данным, и код приложения.
Тем самым, исчезает разрыв между пассивными данными и активными программами, проект прикладной системы ведется в рамках единой технологии, что убыстряет его разработку и облегчает последующее сопровождение. Естественно, что при этом должны преследоваться цели сохранения всех преимуществ объектно-ориентированного программирования (уникальная идентификация объектов, инкапсуляция, наследование, полиморфизм и т.д.) и систем баз данных (многопользовательский режим доступа, восстановление после сбоев, управление транзакциями и т.д.). Казалось бы, блестящие перспективы, и я действительно считал их блестящими пятнадцать лет назад. Почему же эти ожидания не оправдались в полной мере, и почему теперь наблюдается некоторый всплеск активности на рынке ООСУБД? Я перечислю несколько причин негативного характера, возможно, не в порядке возрастания или убывания их важности и, скорее всего, не все.

  • До последнего времени отсутствовал объектно-ориентированный язык программирования, который был бы (1) "настоящим", т.е. строго соответствующим принципам объектно-ориентированного подхода и (AND!) (2) был бы достаточно распространенным
  • В среде исследователей технологии ООСУБД так и не нашлось специалиста, который, подобно Теду Кодду по отношению к реляционным базам данных, смог бы создать простую и надежную теорию; более того, большинство участников этого сообщества уже давно склоняется к тому, что такую теорию создать невозможно
  • Среди специалистов в области объектно-ориентированных языков программирования отсутствует общепринятое понятие объектной модели, причем все попытки выработать компромиссную эталонную модель до сих пор оканчивались неудачно
  • Преследуя цели сохранить преимущества РСУБД, приходится, тем не менее, пересматривать смысл таких понятий, как единица блокировки для поддержки многопользовательского режима, транзакция, журнализация, ограничение целостности и т.д., причем общепринятой трактовки не существует
  • Преследуя цели сохранить преимущества объектно-ориентированных языков программирования, приходится для обеспечения удовлетворительной эффективности ООСУБД приходится жертвовать полнотой инкапсуляции, вводить ограниченные средства наследования и т.д.
  • При всех отмеченных недостатках (а реально их гораздо больше!) использования реляционных баз данных для разработки информационных приложений существуют надежные методологии и программные средства, позволяющие проектировать, реализовывать, сопровождать и распространять такие приложения; при ориентации на ООСУБД выбор гораздо меньше.



    Другими словами, до последнего времени ООСУБД на рынке относились к области риска. С одной стороны, имеется много примеров удачного использования этих продуктов в реализованных приложениях. С другой стороны, сектор рынка ООСУБД очень узок и пока не может приносить больших доходов. Как следствие, сравнительно стабильно существует ряд продуктов ООСУБД. Например, на сегодня достаточно устойчивы следующие продукты: O2 (Ardent Software, Inc. www.ardentsoftware.com), Cashe (InterSystems Corporation, www.intersys.com), ObjectStore (Object Design, Inc., www.odi.com), Objectivity/DB (Objectivity, Inc., www.objectivity.com), POET (POET Software, Inc., www.poet.com, VERSANT (Versant Corporation, www.versant.com), GemStone/S (GemStone Systems, Inc., www.gemstone.com) и т.д. Все эти компании невелики, и годовой бюджет каждой из них находится в пределах десятков миллионов долларов. Крупные софтверные компании, такие как Oracle, Informix, Sybase, Microsoft и IBM, не собираются развивать свою линию продуктов ООСУБД. Вместо этого они предлагают свои подходы к расширению реляционных баз данных объектными свойствами. По этому поводу много писалось, и в любом случае это выходит за пределы объема этой заметки.

    Что же сейчас происходит? Почему снова печатные издания часто возвращаются к теме ООСУБД? Неужели что-то радикально изменилось? Неужто появилось что-то новое под нашим с вами солнцем? И да, и нет.

    Все проблемы (а я сказал далеко не обо всех) пока остаются актуальными. Технологическая поддержка объектно-ориентированных приложений имеется, но не является достаточно общепринято и признанной. Теоретического основания по-прежнему нет. И т.д.



    Но!
    a) Появился Internet, появилась технология intranet, появился язык программирования Java.


    С точки зрения теории это почти ничего не значит. Internet - это перенос в практическую сферу (с соответствующим развитием) идей и принципов ОС UNIX (вспомните "Сеть - это компьютер" Билла Джоя), Web - это естественное внедрение в Internet принципов организации гипертекста, intranet - это методика использования средств Internet при разработке внутрикопоративных информационных систем; Java (это мое личное мнение, не отражающее какие-либо официальные источники) - это прагматический объектно-ориентированный язык, единственным преимуществом которого является возможность безопасной интерпретации (конечно, здесь я многое утрирую).



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

    Web - компонент технологии Internet, возникший позже других. Здесь тоже нет ничего принципиально нового: естественная идея распространения идеи гепертекста на территориально распределенные информационные ресурсы. Но опять же Но! Технология Web открыла возможность публикации в Internet самых разнообразных источников, начиная от публично доступных и заканчивая сугубо коммерческими.

    Язык Java вышел на мировой рынок, главным образом, в связи с потребностями сообщества Internet. Возникший вместе с Web язык HTML является языком гипертекстовой разметки документов, это не язык программирования. А какой-то язык программирования был нужен, чтобы расширить возможности Web - дать возможность Web-клиентам получать не только статические тексты и графику, но и динамические изменяемые картинки, видео- и аудио-данные. Созданный в компании Sun Microsystems интерпретируемый, безопасный, объектно-ориентированный язык Java быстро завоевал распространение именно в среде Web-разработчиков. Не обладая какими-либо принципиально новыми возможностями, Java прежде всего дает возможность создания мобильных в Internet объектов, методы которых могут выполняться в клиентских браузерах независимо от особенностей компьютера клиента (поскольку язык интерпретируемый). Естественно, что появление на мировой арене широко распространенного объектно-ориентированного языка вновь обострило интерес к ООСУБД и к возможностям Java быть языковой основой таких систем баз данных.

    Возникновение и распространение информационных корпоративных Intranet-систем явилось естественной реакцией мира бизнеса на существование удобных для разработчиков и пользователей, сравнительно стандартных средств Internet (электронная почта, удаленный доступ к файлам, Web и т.д.) Эта технология, в частности, сделала особенно актуальными возможности сетевого доступа к существующим базам данных и повысила значимость языка Java.


    Кроме того, разрабатываемые совершенно заново Intranet-системы стали новой областью повышенного интереса к ООСУБД.

    b) На технологию объектно-ориентированных баз данных обратила внимание одна из крупнейших софтверных компаний Computer Associates

    Это произошло немногим более двух лет тому назад. Тогда Чарльз Ванг, президент и основатель CA принял решение о стратегическом партнерстве с японской компанией Fujitsu и о фактическом приобретении ее продукта ООСУБД Jasmine. По моему мнению, в исходном продукте не было ничего принципиально нового, но новым было то, что ООСУБД заинтересовалась одна из лидирующих софтверных компаний. Это означало новый уровень доводки продукта до промышленного образца, новый уровень рекламы и маркетинга.

    Так оно и произошло. Около полутора лет специалисты CA доводили продукт Fujitsu до промышленного уровня. Уже более полугода компания CA проводит агрессивную рекламную и маркетинговую компанию вокруг Jasmine. Г-н Ванг публично заявил о намерениях компании довести оборот продаж Jasmine до цифр, соизмеримых с оборотом ведущего продукта CA UniCenter.

    В этой истории мало интересно техническое содержание (что было, то и будет!), но представляет интерес стратегия Чарльза Ванга, входящего, по моему мнению, в один ряд с Биллом Гейтсом и Ларри Эллисоном, которые никогда не проигрывают. Он рисковый игрок, но игрок, играющий не по азарту, а на выигрыш.

    На самом деле, сегодня в Jasmine мы видим два новых для ООСУБД момента, которые оба связаны с масштабностью CA. Во-первых, используя свой практически неограниченный инженерный потенциал, CA смогла довести Jasmine до уровня коммерческого продукта, обеспечив необходимый набор средств разработки (но не проектирования объектно-ориентированных баз данных!). Если вы спросите, верю ли я в работоспособность этой системы, я, конечно, отвечу да. CA - это надежная компания.

    Во-вторых, потенциал CA позволил перевести на новый уровень рекламу и маркетинг ООСУБД. Если полностью доверять рекламе CA, то можно вообразить, что эта компания первой создала промышленно доступную технологию объектно-ориентированных баз данных.


    Конечно же, это не так, но остается фактом, что CA явилась первой компанией среди монстров софтверной индустрии, которая решилась потратить большие деньги на развитие этой технологии.

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

    Вряд ли что-нибудь изменится очень быстро. Поживем - увидим. А пока: не делайте резких движений и дышите глубже.


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