49515 (Язык описания информационных моделей EXPRESS), страница 4

2016-07-30СтудИзба

Описание файла

Документ из архива "Язык описания информационных моделей EXPRESS", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49515"

Текст 4 страницы из документа "49515"

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


6.4.4.3 Паттерн HierarchySelect

Настоящий паттерн устраняет отмеченный выше недостаток за счет использования одной таблицы для каждого селективного типа, встречаемого в определении самостоятельной иерархии наследования классов. Однако контекст его использования ограничивается единственным паттерном отображения классов OneInheritanceHierarchy–OneTable. Организация таблицы для каждого селективного типа повторяет предыдущий случай. Для связи с объектами используется внешний ключ записей объектов в таблице _Instances. Данный паттерн позволяет существенно сократить число таблиц, необходимых для реляционного представления масштабных прикладных моделей, за счет хранения однотипных селективных данных в единых таблицах. Их размер естественно возрастает, что приводит к замедлению операций работы с хранимыми селективными данными, однако общее число таблиц, критичное для большинства современных реализаций реляционных СУБД, снижается.


6.4.4.4 Паттерн GenericSelect

Данный паттерн предоставляет типовое обобщенное решение для реляционного представления произвольных атрибутов селективного типа. Он применяется в сочетании с паттерном отображения классов AllClasses–OneTable в рамках схемо-независимой стратегии.

Таблица Selections хранит записи дескрипторов селективных данных, включая их дискриминаторы и ссылки на объекты в таблице Instances, атрибутами которых они являются. Сами данные хранятся в таблицах представления простых типов Integer_Elements, Real_Elements, String_Elements, Binary_Elements, Logical_Elements, Enum_Elements и в таблице ассоциаций Associations.

Возможны случаи, когда сами селективные данные являются элементом другой родительской селективной или агрегатной конструкции. Для этого в таблице дескрипторов Selections предусмотрены ссылки на соответствующие родительские селективные и агрегатные элементы данных в виде столбцов внешних ключей записей в таблицах Selections и Aggregates. Такая организация таблиц позволяет представить вложенные конструкции, составленные из данных произвольных типов. Для получения метаинформации о селективном элементе в таблице Selections также хранятся ссылки на соответствующие записи в таблице метаданных Attributes.



6.4.5 Отображение агрегатов

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

В отношении способов представления вложенных типов данных, в том числе основанных на предопределенных конструкциях, паттерны отображения селективных и агрегатных типов довольно близки. Паттерны ClassAggregate и HierarchyAggregate предназначены для использования с паттернами отображения классов OneClass–OneTable, OneInheritancePath–OneTable и OneInheritanceHierarchy–OneTable в рамках схемо-зависимой стратегии. Паттерн GenericAggregate применяется вместе с паттерном AllClasses–OneTable, соответствуя СН стратегии отображения.


6.4.5.1 Паттерн ClassAggregate

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

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


6.4.5.2 Паттерн HierarchyAggregate

Настоящий паттерн уменьшает число таблиц, необходимых для представления агрегатных данных за счет использования одной таблицы для каждого агрегатного типа, встречаемого в определении самостоятельной иерархии наследования классов. Размер таких таблиц при этом увеличивается, что приводит к замедлению операций работы с хранимыми агрегатными данными, однако общее число таблиц, критичное для большинства современных реализаций реляционных СУБД, снижается. Контекст использования паттерна ограничивается соответствующей схемой отображения классов OneInheritanceHierarchy–OneTable. Для связи с объектами используется внешний ключ записей объектов в таблице _Instances.

6.4.5.3 Паттерн GenericAggregate

Данный паттерн предоставляет типовое решение для обобщенного реляционного представления произвольных атрибутов агрегатного типа. Он применяется в сочетании с паттерном отображения классов AllClasses–OneTable в рамках схемо-независимой стратегии.

Таблица Aggregates хранит записи дескрипторов агрегатных данных, включая их размерности и ссылки на объекты в таблице Instances, атрибутами которых они являются. Таблица является родительской для элементов агрегата, хранящихся в других таблицах Integer_Elements, Real_Elements, String_Elements, Binary_Elements, Logical_Elements, Enum_Elements и Associations. В свою очередь, каждая запись в таблице Aggregates может иметь ссылку на запись в этой же таблице, если агрегат является элементом, вложенным в другой родительский агрегат, а также хранить соответствующий индекс в нем. Если агрегат является одним из значений селективного типа, то он ссылается на соответствующую родительскую конструкцию, представляемую записью в таблице Selections. В остальных случаях записи таблицы Aggregates ссылаются на соответствующие записи в таблице Attributes для получения метаинформации об агрегатном атрибуте.


6.5 Отображение метаданных

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

Таблица Schemas предназначена для представления информационных схем языка EXPRESS, зарегистрированных в реляционной базе данных. Она хранит первичные ключи записей и уникальные имена схем. Defined_Types — это таблица простых типов данных, определяемых пользователем, которая хранит первичный ключ типа, его имя, а также ссылку на базовый тип в виде внешнего ключа записи в этой же таблице. Одиннадцать предопределенных типов, соответствующих семи элементарным типам языка EXPRESS, обобщенным ассоциативному и перечисляемому типам, а также селективному и агрегатному супертипам, заносятся заранее при инициализации таблицы. Предопределенные типы являются листьями в дереве иерархии сложных типов, рекурсивно определяемых пользователем и заносимых в данную таблицу в виде отдельных записей. Defined_Types_To_Schemas — это таблица соответствия определяемых типов данных конкретным схемам. Связь между пользовательским типом и информационной схемой устанавливается через отдельную таблицу, а не через внешний ключ в таблице Defined_Types, поскольку один и тот же тип может включаться в разные схемы, если в спецификации на языке EXPRESS для него определены директивы импорта. Таблица хранит внешние ключи определяемых пользователем типов и соответствующих им информационных схем. Пара внешних ключей «тип–схема» формирует составной первичный ключ записи в таблице Defined_Types_To_Schemas, чем контролируется уникальность включения типа в одну и ту же схему.

Для детального описания перечислимых, селективных и агрегатных типов дополнительно используются таблицы Enumeration_Constants, Select_Types и Aggregate_Types. Таблица Enumerations_Constants содержит списки возможных значений для каждого перечислимого пользовательского типа. Ее столбцы хранят символьные значения перечислимого типа и внешний ключ соответствующей записи типа в таблице Defined_Types. Аналогичным образом, таблица Select_Types представляет списки базовых типов, входящих в определение каждого конкретного селективного типа, в виде внешних ключей записей типов в таблице Defined_Types. В столбцах таблицы агрегатных типов Aggregate_Types содержится информация о типе агрегата (ARRAY, LIST, SET или BAG), базовом типе его элементов в виде внешнего ключа соответствующей записи в таблице Defined_Types, разрешенных значениях нижней и верхней границ агрегата, признаках допустимости наличия уникальных и неопределенных элементов.

Таблица классов Entities предназначена для представления объектных типов информационной схемы, зарегистрированной в базе данных. Ее столбцы хранят первичные ключи записей и уникальные имена сущностей. Аналогично определяемым типам, привязка классов к схеме осуществляется через отдельную таблицу соответствия Entities_To_Schemas. Для реконструкции отношений наследования между классами используется таблица Inheritance_Relations, в которой данные отношения представлены парами внешних ключей записей классов родителей и потомков в таблице Entities. Поскольку язык EXPRESS допускает множественное наследование с признаками AND или ANDOR, важно иметь альтернативное представление иерархии наследования в виде множеств всех родительских классов, данные которых включаются в конструируемые объекты сложных классов. Для этой цели используется таблица Complex_Entities. Для единообразия обработки объектов простые классы также представляются записями этой таблицы. Таблица Complex_Entities_To_Entities хранит все соответствия сложных классов родительским классам в виде пары внешних ключей записей в таблицах Complex_Entities и Entities.

Наконец, таблица атрибутов Attributes содержит столбцы для представления имени атрибута, класса, в котором данный атрибут определяется (или переопределяется), в виде соответствующего внешнего ключа записи в таблице Entities, типа атрибута в виде внешнего ключа записи в таблице Defined_Types, признака обязательности значений и контекста использования (EXPLICIT, DERIVED или INVERSE).

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


7. Реализация промежуточного объектно-реляционного слоя в

среде Oracle 9

В настоящее время в рамках проекта создания программной платформы для интеграции приложений ведется разработка промежуточного объектно-реляционного слоя общего назначения. Объектно-реляционный слой предназначен для работы с произвольными прикладными объектно-ориентированными данными, модели которых описаны на языке EXPRESS.

Для интегрируемых приложений объектно-реляционный слой предоставляет программные объектно-ориентированные интерфейсы доступа к прикладным данным на некоторых популярных языках реализации). Организация этих интерфейсов следует перечисленным выше принципам прозрачного манипулирования хранимыми данными, декларируемым Манифестом объектно-ориентированных баз данных. Интерфейсы предоставляют функционально развитый набор операций для манипулирования хранимыми и временными объектами, включая операции создания, модификации, удаления объектов, навигации по их однонаправленным и двунаправленным ассоциативным связям и выборки объектов на основе языка запросов. Запросы базируются на конструкции QUERY языка EXPRESS, позволяющей задать произвольный предикат на множестве объектов и отобрать те из них, которые удовлетворяют условию данного предиката. Интерфейсы предусматривают несколько пессимистических и оптимистических моделей транзакций с различными способами изоляции на уровне отдельных прикладных объектов и самостоятельных объектных популяций, содержательных для коллективных пользовательских сессий и участвующих в них приложений.

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

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

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

Поскольку выбор стратегии отображения для реализации объектно-реляционного слоя подобной функциональности крайне неоднозначен с учетом разнообразия потенциальных приложений, предполагается реализация и поддержка нескольких альтернативных стратегий, а именно: схемо-независимого, схемо-зависимого и BLOB подходов. Они базируются на тех или иных сочетаниях рассмотренных выше паттернов ОР отображения и используют собственные пакеты программ на PL/SQL для реализации базовой функциональности объектно-реляционного слоя. Хотя все пакеты реализуют семантически эквивалентные наборы операций для манипулирования объектами и их поиска, их внешние интерфейсы не допускают унификацию в силу ограниченных возможностей языка SQL при формировании клиентских запросов со стороны объектно-реляционного посредника для специфических реляционных схем представления объектно-ориентированных моделей данных. Для адаптации посредника к иным объектно-реляционным стратегиям в его архитектуре предусмотрены специальные компоненты-адаптеры, обеспечивающие требуемую виртуализацию хранилищ данных. Каждый адаптер реализуется с учетом специфики конкретного ОР отображения.

В качестве целевой платформы реализации промежуточного объектно-реляционного слоя выбрана СУБД Oracle9.


7.1 Схемо-независимая стратегия

Разработанная схемо-независимая стратегия состоит в применении обобщенных паттернов AllClasses–OneTable, Attribute–Table, GenericAssociation, GenericSelect, GenericAggregate для отображения схем, классов и атрибутов, а также паттерна представления соответствующих метаданных прикладной модели реляционными таблицами.

Реализованные в среде Oracle9 PL/SQL пакеты обеспечивают выполнение всего базового набора операций с хранимыми объектно-ориентированными данными и запросов к ним. Обобщенная, независимая от конкретных прикладных моделей реализация PL/SQL процедур и функций основана на совместном одновременном использовании данных и метаданных, хранимых в системах таблиц в соответствии с перечисленными паттернами отображения. Приведем описание основных пакетных методов для объектно-реляционного отображения в качестве иллюстрации схемо-независимой стратегии.

Пакет lb_defined_types для работы с метаинформацией о пользовательских типах данных, определенных EXPRESS схемой:

  • procedure Register_Defined_Type – регистрация в базе данных пользовательского типа схемы;

  • procedure Save_Enum_Type – сохранение метаданных для перечислимого типа;

  • procedure Save_Select_Type – сохранение метаданных для селективного типа;

  • procedure Save_Aggregate_Type – сохранение метаданных для агрегатного типа;

  • function Get_Type – выдача метаинформации о пользовательском типе данных.

Пакет lb_entity предназначен для работы с метаинформацией, относящейся к объектным типам EXPRESS схемы:

  • function Register_Entity – регистрация объектного типа схемы;

  • procedure Save_Attribute – сохранение метаданных для атрибута, определяемого в регистрируемом объектном типе;

  • procedure Save_Inheritance_Relations – сохранение информации о подтипах и супертипах регистрируемого объектного типа;

  • function Add_Entity_From_Schema – экспортирование информации об объектном типе из другой схемы;

  • function Get_Entity – выдача метаинформации об объектном типе;

  • function Get_Attribute – выдача метаинформации об атрибуте, определяемом в объектном типе схемы.

Пакет lb_instance предназначен для работы с данными: занесения данных в базу, а также для извлечения данных из нее на основе запросов:

  • function Init_Instance – инициация сохранения объекта;

  • procedure Init_Attribute_List – инициация сохранения значений атрибутов объекта;

  • procedure Put_Simple_Attribute_{R, I, S, B, L, E} – сохранение значения атрибута вещественного, целочисленного, символьного, бинарного, логического, перечислимого типа, соответственно;

  • procedure Put_Association – сохранение значения атрибута ассоциативного типа;

  • function Put_Aggregate – инициация сохранения элементов агрегата;

  • function Put_Select – инициация сохранения селективного элемента;

  • procedure Put_Element_{R, I, S, B, L, E} – сохранение значения элемента агрегатной или селективной конструкции вещественного, целочисленного, символьного, бинарного, логического, перечислимого типа, соответственно;

  • procedure Get_Instances_By_ID – выборка объектов по заданным идентификаторам;

  • procedure Get_Instances_By_Type – выборка объектов по заданному типу;

  • procedure Get_Instances_By_Route – выборка объектов по заданному навигационному маршруту;

  • procedure Add_Route_Path – метод формирования навигационного маршрута;

  • procedure Get_All_Instances – выборка всех объектов;

  • procedure Delete_Instances – удаление объектов по заданным идентификаторам.

До начала работы с прикладными данными соответствующие таблицы метаданных должны быть проинициализированы. С этой целью разработан CASE инструмент, позволяющий автоматически сгенерировать скрипт инициализации соответствующих таблиц на языке PL/SQL по заданной EXPRESS спецификации прикладной модели. Фрагмент данного скрипта для информационной схемы ActorResource представлен ниже.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4125
Авторов
на СтудИзбе
667
Средний доход
с одного платного файла
Обучение Подробнее