Jasmine - первая полномасштабная ОСУБД

Источник: CITFORUM
Юрий Колонин, Центральный Московский Депозитарий

Введение

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

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

По всей видимости, учитывая колоссальный объем наработок и широчайший круг клиентов РСУБД, с одной стороны, и совершенно недостаточный с коммерческой точки зрения опыт создания и использования объектных СУБД (ОСУБД), с другой, ведущие компании (ORACLE, IBM, Informix и др.) решили пойти эволюционным путем. Были предприняты отчаянные попытки внедрить "объектность" в плоские таблицы, результатом чего явилось создание так называемых "универсальных" серверов или объектно-реляционных СУБД (ОРСУБД).

Тем же путем хотел пойти еще один софтверный монстр - компания Computer Associate, которая в начале 1996 г. объявила о намерениях внедрить объектные технологии в свою РСУБД OpenIngres. Однако по прошествии нескольких месяцев компания вдруг заявила, что OpenIngres будет развиваться далее в чистом "реляционном" ключе (на рынке вскоре появилась новая версия - Ingres II), а под новые требования рынка фирма создаст совместно с Fujitsu абсолютно новую, чисто объектную СУБД под названием Jasmine. И такая СУБД появилась на рынке в декабре 1997 г.

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

Jasmine - что это такое?

Jasmine - первая полномасштабная, промышленная система управления объектными базами данных. Эта ОСУБД создана совместными усилиями корпорации Computer Associates и фирмы Fujitsu и выпущена на рынок в конце 1997г.

Важнейшие отличительные особенности ОСУБД Jasmine включают в себя:

  • В основе - "чистая" объектная модель БД (в сравнении с так называемыми "универсальными" моделями реляционно-объектных СУБД - Oracle, IBM, Sybase). Главное достоинство объектных моделей состоит в том, что они являются гораздо более естественными отображениями реального мира (в сравнении с таблицами) и, кроме того, позволяют описывать сколь угодно сложные структуры данных и их связи.
  • Промышленный масштаб (в сравнении с известными ранее, но не получившими широкого рынка объектными СУБД типа Gemstone, O2, Object Store, Objectivity). Об этом говорит тот факт, что взявшая под свое "крыло" ОСУБД Jasmine компания Computer Associates неизменно занимает лидирующие позиции в мировом табеле о рангах и обладает колоссальным опытом и возможностями по развитию и поддержке своих программных продуктов.
  • Самая современная интегрированная среда разработки для визуального объектно-ориентированного программирования с полной поддержкой всех мультимедийных типов данных, позволяющая легко создавать интернет-приложения даже неспециалистам.
  • Открытая архитектура.
  • Мультиплатформенность.
  • Гетерогенная архитектура клиент/сервер. Один сервер способен поддерживать различные базы данных, и различные клиенты могут иметь доступ к различным базам.
  • Полный набор сервисов управления данными, что позволяет разработчикам сконцентрировать свои усилия только на бизнес-логике своих приложений и их экранных интерфейсах с пользователями. Этот набор сервисов включает:
    • обеспечение разнообразных способов связи клиента с сервером;
    • автоматическое управление блокировками и одновременным доступом к данным (вплоть до уровня отдельного объекта);
    • управление транзакциями;
    • восстановление данных после сбоя системы как в онлайновом, так и в оффлайновом режимах;
    • управление разграничением доступа к данным;
    • администрирование базы данных;
    • управление схемой базы данных.
  • Возможность работы как в традиционной архитектуре клиент/сервер, так и в сетях Internet/Intranet без каких любо модификаций.
  • Унифицированный доступ как к данным и метаданным, так и процедурам манипулирования ими на базе единого языка.

Архитектура

Приложения ОСУБД 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

Классы данных в СУБД Jasmine

Jasmine имеет развитую систему встроенных классов, которая дает в руки разработчика не только базовые функции по созданию новых классов, но и продвинутый аппарат по манипулированию объектами и их коллекциями. Структура стандартных классов ОСУБД 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 может использоваться тремя различными способами:

  • Внедренный ODQL - когда ODQL-конструкции переводятся в основной язык Host-машины (C или C++) на этапе компиляции классов.
  • Интерпретируемый ODQL - когда ODQL-конструкции вводятся пользователем с терминала клиентской машины или из обычного текстового файла. Этот способ обеспечивает основу для макетирования и тестирования приложения, или для незапланированного в приложении запроса квалифицированным пользователем (в частности, администратором базы данных).
  • Динамический ODQL - когда ODQL-конструкции создаются приложением динамически во время исполнения ("на лету"). Этот способ полезен, когда необходимо написать приложение общего назначения, как например, генератор отчетов, если заранее не известно, какие классы и методы существуют в базе данных Jasmine.

В 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 продукты.

 

Наименование продукта Фирма-производитель Комментарии
Acrobat Adobe Software Inc.
www.adobe.com
Мультимедийный подкласс Acrobat, обеспечивающий хранение в БД Jasmine документов в формате Acrobat и их непосредственное отображение в приложениях.
Alta Vista Search Alta Vista Internet Software, Inc.
Www.altavista.software.digital.com
Обеспечивает разработчиков Jasmine-приложений мощными средствами индексирования произвольных текстов, хранящихся в объектной базе, что сильно ускоряет поиск информации в БД по ее контексту.
Sapphire/Web Bluestone Software Corp.
www.bluestone.com
Мощная и удобная открытая среда разработки Jasmine-приложений на языке Java.
Centura Team/Web Developer Centura Software Corp.
www.centurasoft.com
IDE для разработки 16- и 32-битных
COSMOS CosmoCom, Inc.
Www.cosmocom.com
Библиотеки классов COSMOS Caller и COSMOS Agent обеспечивают интеграцию Jasmine-приложений с системой COSMOS Call Center.
DataSpot Data Technologies Ltd.
www.dataspot.com
Продвинутое средство, позволяющее Web-дизайнерам и разработчикам баз данных без какого либо программирования публиковать данные, хранящиеся в базе данных Jasmine.
ReportPro DataPro, Inc.
www.dproinc.com
Полномасштабный генератор отчетов для ОСУБД Jasmine.
RetrievalWare
Visual RetrievalWare
Excalibur Technologies Corp.
www.excalib.com
Библиотеки мультимедийных классов, обеспечивающие возможность индексирования мультимедийных данных (документов и даже изображений!) с целью их быстрого поиска.
The Box Financial Technologies International
www.ftintl.com
Известный продукт этой компании, The Box Universal server, использует ОСУБД Jasmine для постоянного хранения сложных бизнес объектов.
Object Director HAL Computer Systems, Inc.
www.hal.com/od/
Комбинация систем ObjectDirector и Jasmine в значительной степени повышает продуктивность работы программистов за счет использования технологии распределенных объектов (CORBA). Кроме того, обеспечивается богатый набор дополнительных сервисов (Transaction Services, Replication Functions и т.д.).
Quick Video Suite InfoValue Computing, Inc.
www.infovalue.com
При совместном использовании с ОСУБД Jasmine обеспечивает высококачественную передачу по глобальным сетям различных видеопотоков.
TimeSeries Innovative Systems
Techniques, Inc.
www.incytenet.com
Библиотека классов, упрощающая работу с объемными временными последовательностями данных, что позволяет успешно работать в АСУ ТП.
ProShare Intel
www.intel.com
Оборудование для проведения видеоконференций, использующее ОСУБД Jasmine.
ISG Navigator International Software Group.
www.isgsoft.com
Распределенный процессор запросов, обеспечивающий доступ к ОСУБД Jasmine посредством OLEDB/ADO или ODBC доступа.
WorldToolKit Sence8
www.sence8.com
Трехмерная графика и виртуальная реальность на базе Jasmine.
Viscape Superscape Трехмерная графика и виртуальная реальность на базе Jasmine.

Заключение

В компании ЦМД-Софт Jasmine активно используется с января 1998 г. За этот период создано три клиент-серверных и около десятка Internet-приложений (включая Internet-магазины). Накопленный опыт позволяет нам с уверенностью заявить, что, несмотря на свою молодость, ОСУБД Jasmine представляет мощное, а во многих случаях - уникальное средство создания и ведения современных и перспективных баз данных.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=4593