Стандарты объектных баз данных
Язык объектных запросов OQL — это SQL — подобный декларативный язык, который предоставляет эффективные средства для извлечения объектов из базы данных, включая высокоуровневые примитивы для наборов объектов и объектных структур. Синтаксис оператора SELECT, определенный SQL-92, является подмножеством OQL, это гарантирует, что SELECT-утверждения, выполняемые над реляционными таблицами, сохранят… Читать ещё >
Стандарты объектных баз данных (реферат, курсовая, диплом, контрольная)
Несколько наиболее крупных компаний-разработчиков образовали группу Object Database Management Group (ODMG) с целью определения стандартов, необходимых для ООСУБД. В состав этой группы в настоящее время входят компании Sun Microsystems, eXcelon Corporation, Objectivity Inc., POET Software, Computer Associates и Versant Corporation. Группа ODMG создала объектную модель, в которой определяется стандартная модель семантики объектов базы данных. Эта модель имеет очень большое значение, поскольку в ней определена встроенная семантика, которая может быть отражена и предписана в ООСУБД. Проект библиотек классов и приложений, в которых применяется эта семантика, должен быть переносимым во все ООСУБД, в которых поддерживается эта объектная модель.
Ниже перечислены основные компоненты архитектуры ODMG для ООСУБД.
- · Объектная модель (Object Model — ОМ).
- · Язык определения объектов (Object Definition Language — ODL).
- 2
Язык объектных запросов (Object Query Language — OQL).
· Средства связывания объектной модели с объектами языков C++, Java и Smalltalk.
Первая версия стандарта ODMG была выпущена в 1993 году.
С тех пор было выпущено несколько небольших поправок к ней, а следующая обновленная версия ODMG 2.0 была принята в сентябре 1997 года. Она включает следующие дополнения:
- · новые средства связывания объектной модели с объектами языка программирования Java компании Sun;
- · полностью пересмотренная версия объектной модели с новой метамоделью, поддерживающей семантику объектной базы данных во многих языках программирования;
- · стандартная внешняя форма для данных и схемы данных, обеспечивающая обмен данными между базами данных.
В конце 1999 года была выпущена версия ODMG 3.0, в которую вошел целый ряд дополнений к объектной модели и средствам связывания Java. В период между выпусками версий 2.0 и 3.0 группа ODMG расширила свой устав и включила в него разработку спецификаций универсальных стандартов хранения объектов. В тот же период группа ODMG изменила расшифровку аббревиатуры своего обозначения с Object Database Management Group на Object Data Management Group в соответствии с расширением своих обязанностей, которые вышли за пределы задач простой разработки стандартов хранения для объектных баз данных [4, c.32].
Стандарт на хранение объектов ODMG разработан на основе трех существующих стандартов: управление базами данных (SQL), объекты (стандарты OMG — Object Management Group) и стандарты на объектно-ориентированные языки программирования (C++, Smalltalk, Java).
ODMG добавляет возможности взаимодействия с базами данных в объектно-ориентированные языки программирования: определяются средства долговременного хранения объектов и расширяется семантика языка, вносятся операторы управления данными. Стандарт состоит из нескольких частей:
Объектная модель — унифицированная основа всего стандарта. Она расширяет объектную модель консорциума OMG за счет введения таких свойств как связи и транзакции для обеспечения функциональности, требуемой при взаимодействии с базами данных. Ключевые концепции объектной модели ODMG:
- · наделение объектов такими свойствами как атрибуты и связи
- · методы объектов (поведение)
- · множественное наследование
- · идентификаторы объектов (ключи)
- · определение таких совокупностей объектов как списки, наборы, массивы и т. д.
- · блокировка объектов и изоляция доступа
- · операции над базой данных
Язык описания объектов ODL — средство определения схемы базы данных (по аналогии с DDL в реляционных СУБД). ODL является расширением IDL (Interface Definition Language — язык описания интерфейсов) модели OMG и предоставляет средства для определения объектных типов, их атрибутов, связей и методов. ODL создает слой абстрактных описаний так, что схема базы данных становится независима как от языка программирования, так и от СУБД. ODL рассматривает только описание объектных типов данных, не вдаваясь в детали реализации их методов. Это позволяет переносить схему БД между различными ODMG-совместимыми СУБД и языками программирования, а также транслировать ее в другие DDL.
Приведем пример из «белой книги» фирмы Objectivity [4, с. 79−90] на языке ODL, иллюстрирующий связи типа «один-ко-многим», которые объявлены между преподавателем и студентами:
interface professor: employee {.
attribute string name;
unique attribute lang unsigned ssn;
relationship dept works_in inverse faculty; relationship set teaches inverse taught_by;
... operations.. .
{.
interface section: class {.
... taught_by: professor. .. ;
.. .
}.
Язык объектных запросов OQL — это SQL — подобный декларативный язык, который предоставляет эффективные средства для извлечения объектов из базы данных, включая высокоуровневые примитивы для наборов объектов и объектных структур. Синтаксис оператора SELECT, определенный SQL-92, является подмножеством OQL, это гарантирует, что SELECT-утверждения, выполняемые над реляционными таблицами, сохранят работоспособность и с наборами объектов ODMG. OQL-запросы могут вызываться из ОО-языка, точно также из OQL-запросов могут делаться обращения к процедурам, написанным на OO-языке. OQL предоставляет средства обеспечения целостности объектов (вызов объектных методов и использование собственных операторов изменения данных).
Приведем некоторые примеры на языке OQL из того же источника:
объектный реляционный база шлюз.
Select x from x in faculty where x. salary > x.dept.chair.salary.
sort s in (select struct (name: x.name, s: x. ssn) from x in faculty where for all y in x. advisees:y.age<25) by s.name.
Chair.salary.
Students except TAs.
list (1,2) + list (count (jse.advisees), 1+2).
exists x in faculty [1:n]: x.spouse.age<25.
Связывание с ОО-языками. Стандарт связывания с C++, Smalltalk и Java определяет OML (Object Manipulation Language) — язык манипулирования объектами, который расширяет базовые ОО-языки средствами манипулирования и хранения объектов. Также включаются OQL, средства навигации и поддержка транзакций. Каждый ОО-язык имеет свой собственный OML, поэтому разработчик остается в одной языковой среде, ему нет необходимости разделять средства программирования и доступа к данным.
Взаимодействие с другими стандартами. Многие стандарты обладают совместимостью с объектными БД, например CFI, STEP, ISO ODP, TINA-C, X3H7, ANSI OpenGIS и др. В настоящее время они могут напрямую взаимодействовать с любой стандартной объектно-ориентированной СУБД, хотя в ряд из них и были для обеспечения совместимости внесены изменения. Следующие два стандарта заслуживают более подробного описания — это OMG и SQL.
Стандарты OMG. Первым результатом деятельности OMG стало утверждение архитектуры брокера объектных запросов CORBA (Common Object Request Broker Architecture) — средства для диспетчеризации запросов между объектами и пользователями; в дальнейшем также были добавлены ряд других сервисов. В настоящее время интерфейс ODMG полностью адаптирован к спецификации Persistence Object Service консорциума OMG, что дает возможность пользователям систем, которые основаны на архитектуре CORBA, использовать преимущества от объектно-ориентированных СУБД, которые могут содержать объекты, отвечающие стандарту OMG и используемые так же, как и любые другие («мелкие») объекты спецификации OMG. В свою очередь объекты OMG доступны через интерфейс ODMG.
Язык SQL. Из-за своей распространенности SQL был заложен в основу OQL, который был дополнен средствами поддержки объектной модели. В 1999 году была разработана версия языка SQL, известная под названием SQL3, в которой была добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности. В отличие от ODMG, в SQL не планируется привязка к ODL, а также C++ и Smalltalk, которые важны для пользователей объектно-ориентированных СУБД. Несмотря на это, возможности SQL3 в организации запросов совпадают с возможностями OQL.