|
|
|||||||||||||||||||||||||||||
|
Jasmine - первая полномасштабная ОСУБДИсточник: CITFORUM Юрий Колонин, Центральный Московский Депозитарий
ВведениеБурное развитие информационных технологий, их внедрение во все сферы человеческой жизни (включая досуг) в последние годы привели к резкому расширению понятия обрабатываемой в компьютерных системах информации. Информация теперь - это не только (а во многих случаях - не столько) строки и числа, но и звук, изображение, видео. И если для конечного пользователя новые типы данных - это вполне естественное удобство (куда приятнее, например, в Internet-магазине увидеть желаемый товар, что называется, в натуре - на фото или в видеоклипе и узнать его характеристики с голоса, чем изучать скучные прайс-листы), то для разработчиков приложений - дополнительная головная боль. Приходится иметь дело не только с резко возросшими объемами обрабатываемой (а значит, и хранимой) информации, но с существенно усложнившимися связями между ее отдельными компонентами. Эта ситуация не в последнюю очередь бросила вызов ведущим фирмам-разработчикам СУБД, поскольку накопленный ими потенциал в области хранения и обработки данных, в основном, располагался в области реляционных СУБД (РСУБД), принципиально не умевших работать со сложной или слабоструктурированной информацией. По всей видимости, учитывая колоссальный объем наработок и широчайший круг клиентов РСУБД, с одной стороны, и совершенно недостаточный с коммерческой точки зрения опыт создания и использования объектных СУБД (ОСУБД), с другой, ведущие компании (ORACLE, IBM, Informix и др.) решили пойти эволюционным путем. Были предприняты отчаянные попытки внедрить "объектность" в плоские таблицы, результатом чего явилось создание так называемых "универсальных" серверов или объектно-реляционных СУБД (ОРСУБД). Тем же путем хотел пойти еще один софтверный монстр - компания Computer Associate, которая в начале 1996 г. объявила о намерениях внедрить объектные технологии в свою РСУБД OpenIngres. Однако по прошествии нескольких месяцев компания вдруг заявила, что OpenIngres будет развиваться далее в чистом "реляционном" ключе (на рынке вскоре появилась новая версия - Ingres II), а под новые требования рынка фирма создаст совместно с Fujitsu абсолютно новую, чисто объектную СУБД под названием Jasmine. И такая СУБД появилась на рынке в декабре 1997 г. В задачи доклада не входит сравнительный анализ объектно-реляционных и "чисто" объектных СУБД: и те, и другие имеют множество достоинств (хотя симпатии автора, много лет проработавшего с реляционными СУБД, сейчас целиком отданы объектным). Наша задача проще и практичней - ознакомить аудиторию с основными характеристиками первой полномасштабной коммерческой ОСУБД Jasmine. Jasmine - что это такое?Jasmine - первая полномасштабная, промышленная система управления объектными базами данных. Эта ОСУБД создана совместными усилиями корпорации Computer Associates и фирмы Fujitsu и выпущена на рынок в конце 1997г. Важнейшие отличительные особенности ОСУБД Jasmine включают в себя:
АрхитектураПриложения ОСУБД Jasmine способны работать как на автономных компьютерах, так и в архитектурах клиент/сервер и WEB-сервер/WEB-браузер. Система Jasmine представляет собой чрезвычайно развитую и одновременно открытую систему программирования (рис.1). Центральное место в системе Jasmine, разумеется, занимает объектно-ориентированный сервер БД, который обеспечивает высокоэффективную интеллектуальную поддержку хранения и обработки структур данных произвольной сложности. Еще один важнейший компонент системы - Jasmine Studio. Этот компонент имеет две функциональные нагрузки: во-первых, он выступает как мощная визуальная среда разработки клиентских и серверных компонентов приложений и, во-вторых, как не менее мощный визуальный администратор БД. Приложения, созданные в среде Jasmine Studio, без каких-либо модификаций способны работать как в традиционных архитектурах, так и в составе WEB-браузеров. Последний вариант поддерживается входящими в состав комплекта поставки plug-in'ами для двух популярных браузеров (от Netscape и Microsoft). С помощью компонента WEBLink-Server обеспечивается возможность эффективной работы Jasmine-сервера в сети Internet на базе стандартного языка HTML. В этом случае запросы к БД Jasmine встраиваются в HTML-страницы посредством нескольких специальных тэгов. В среде Windows разработку клиентских частей приложений можно осуществлять, пользуясь любой системой программирования, способной "понимать" механизмы связи ActiveX и Windows API. Соответствующие компоненты также входят в комплект поставки. Компоненты Java Bindings и Persistance Java обеспечивают два механизма, пользуясь которыми, специалисты, создающие Java-приложения, способны самым естественным образом интегрировать в одной среде программирование не только интерфейса с пользователем и бизнес-функций, но и любые запросы к ОСУБД Jasmine, включая работу с метаданными.
Рис.1. Архитектура ОСУБД Jasmine Классы данных в СУБД JasmineJasmine имеет развитую систему встроенных классов, которая дает в руки разработчика не только базовые функции по созданию новых классов, но и продвинутый аппарат по манипулированию объектами и их коллекциями. Структура стандартных классов ОСУБД Jasmine представлена на рис.2. Верхняя ветвь дерева классов (наследники класса Literal) описывает элементарные данные, характерные для реляционных СУБД: числа, строки и т.д. Все подклассы, образующие эту ветвь, имеют необходимые методы для манипуляции элементарными данными, их преобразования из одного типа в другой и т.д.
Рис.2. Система классов ОСБД Jasmine Нижняя ветвь дерева классов (наследники класса Entity) служит целям описания сложных структур данных, в частности - коллекций (портфелей, наборов, списков и массивов) данных произвольного типа. Соответствующие классы обладают многими десятками мощных методов, реализующих эффективные операции над коллекциями. Пользовательские классы наследуются от класса Composite и могут, как уже отмечалось иметь произвольную сложность. Так, на уровне пользовательских классов производителем реализованы библиотеки мультимедийных классов (для работы с документами, изображениями, видео, звуком), SQL-классов (для доступа к существующим базам реляционного типа), Weblink-классов (для связи с Internet) и т.д. Тем самым подчеркивается открытость и потенциальная мощь системы. На этом же уровне разрабатываются стандартные библиотеки классов третьих фирм (см. ниже). Еще одно подмножество стандартных классов Jasmine (наследники класса SysManager) обеспечивает средства управления сеансами работы с БД и транзакциями. Язык ОСУБД JasmineДля работы с объектно-ориентированной БД процедурный язык типа SQL, естественно не годится. В ОСУБД Jasmine разработан свой объектно-ориентированный язык под сокращенным наименованием ODQL (Object Data Base Language). Язык отвечает стандарту ODMG-2. Используется для определения генеральной схемы конкретной базы данных - описания классов необходимых объектов, их свойств и методов, а также средств обеспечения целостности базы данных (межобъектных ссылок) и средств манипулирования объектами (создание объектов, их поиск, корректировка и удаление). ODQL - полностью самодостаточный язык программирования. С его помощью наряду с традиционными для баз данных операциями можно объявлять переменные и присваивать им результаты выражений (в том числе, запросов). Можно писать условные выражения, циклы и пр. В принципе, можно написать все приложение на ODQL (в части бизнес-логики и обработки данных; интерфейс с пользователем, естественно, не входит в компетенцию ODQL-сервера). По сути язык ODQL основан на языке С (С++). Программные конструкции, написанные на ODQL, препроцессируются компилятором Jasmine и приводятся к синтаксису языка С или С++, а затем компилируются соответствующим компилятором. В принципе при написании тел методов допускается произвольная смесь операторов языка ODQL с операторами базового языка сервера (C, C++). ODQL поддерживает все современные концепции ООП: инкапсуляцию, наследование (в том числе, и множественное), полиморфизм, агрегирование. В соответствии с требованиями ODMG, обеспечивается уникальная идентификация каждого объекта. ODQL может использоваться тремя различными способами:
В Jasmine введено понятие семейства классов, под которым понимается набор связанных между собой по какому либо признаку (например, по целевому назначению) классов. Требование уникальности имен классов распространяется только в рамках семейства. Тем самым обеспечивается возможность разработки единой базы данных различными коллективами. Например, в следующем фрагменте определяется и создается объект класса Client семейства Depo : defaultCF depoCF; /* Имя семейства, которое будет использовано далее по умолчанию */ Client oCl; /* Объявляется переменная oCl как объект класса Client из семейства Depo */ oCl = Client.new(); /* Создается новый объект класса Сlient, и ссылка на этот объект присваивается переменной oCl */ oCl = Client from Client where Client.id == 1991890; /* Запрос на поиск в базе объекта класса Client, числовое свойство id которого равно 1991980 */ После исполнения данного запроса у пользователя появляется доступ у полному набору (кортежу) его свойств, например: oСl.place.name.print() /* Москва */ oCl.boss.firstname.print() /* Анатолий */ oCl.boss.category.print() /* Директор департамента */ Очевидно, что в объектной базе данных связи типа 1:М, М:1 и даже М:М реализуются простым и естественным способом! Сопутствующие продуктыНесмотря на то, что система Jasmine сама по себе представляет развитый и мощный инструмент разработки современных приложений, компания Computer Associates, следуя давней традиции, еще на завершающем этапе разработки этой системы заключила партнерские соглашения с большим числом ведущих западных фирм, способных еще более повысить мощь и функциональные возможности своей ОСУБД. Ниже для информации перечислены некоторые фирмы-партнеры CA и выпущенные ими в поддержку Jasmine продукты.
ЗаключениеВ компании ЦМД-Софт Jasmine активно используется с января 1998 г. За этот период создано три клиент-серверных и около десятка Internet-приложений (включая Internet-магазины). Накопленный опыт позволяет нам с уверенностью заявить, что, несмотря на свою молодость, ОСУБД Jasmine представляет мощное, а во многих случаях - уникальное средство создания и ведения современных и перспективных баз данных.
|
|