на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Язык описания информационных моделей EXPRESS
p align="left">К издержкам стратегии следует отнести необходимость поддержки и использования словарей метаданных, без которых реализация промежуточного объектно-реляционного слоя невозможна. Сами словари также могут быть представлены в виде таблиц, хранящих информацию об исходных прикладных моделях и включенных в состав единой реляционной системы. Другим недостатком является относительно низкая эффективность выполнения базовых операций манипулирования объектами, поскольку их реализация сопряжена с необходимым дополнительным анализом сопутствующих метаданных.

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

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

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

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

6.3 Отображение наследования классов

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

6.3.1 Паттерн OneInheritanceHierarchy-OneTable

Первый, наиболее простой паттерн OneInheritanceHierarchy-OneTable соответствует случаю отображения всех конкретных родственных классов, имеющих общий набор прародителей, в одну таблицу <Hierarchy>_Instances. Прародителем будем называть класс-предок, у которого нет собственных родителей.

В случае простого наследования данный паттерн трансформируется в стратегию представления конкретных классов в каждом дереве наследования одной реляционной таблицей. Атрибуты всех родственных классов, являющихся вершинами дерева, отображаются в столбцы данной таблицы. Если иерархия наследования классов в прикладной модели представлена несколькими деревьями, то каждому такому дереву будет соответствовать отдельная таблица.

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

Достоинством паттерна является возможность эффективной реализации базовых операций над произвольными объектами без дополнительных расходов на сборку значений атрибутов из разных таблиц и их обратное распределение по ним. Также непосредственно реализуется полиморфное чтение. Единственная сложность состоит в определении типа запрашиваемых объектов. Простота поддержки и развития такой СЗ стратегии делает ее довольно привлекательной. Недостатком является излишнее потребление памяти за счет избыточного хранения нулевых значений, а иногда и необходимость индексирования большого числа столбцов для ускорения выполнения запросов по значениям отдельных атрибутов. При большой глубине наследования классов, что является типичным в научных и промышленных моделях STEP, это может оказаться критичным как для потребления памяти, так и для производительности.

6.3.2 Паттерн OneClass-OneTable

В паттерне OneClass-OneTable каждый конкретный или абстрактный классы в иерархии наследования представляются отдельной таблицей <Class>_Instances, при этом собственные атрибуты данного класса отображаются в ее столбцы. Для связи с наследуемыми атрибутами она хранит вторичные ключи соответствующих записей в таблицах родительских классов. В случае простого наследования -- один вторичный ключ, в случае множественного наследования -- несколько вторичных ключей, каждый из которых соответствует таблице одного из родителей.

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

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

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

6.3.3 Паттерн OneInheritancePath-OneTable

Некоторые недостатки предыдущего паттерна компенсируются в результате сериализации таблиц классов по отношениям наследования. В паттерне OneInheritancePath-OneTable каждому конкретному классу соответствует своя таблица <Concrete_Class>_Instances, в столбцы которой отображаются все атрибуты класса, включая наследуемые от родителей.

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

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

6.3.4 Паттерн AllClasses-OneTable

Паттерн AllClasses-OneTable предполагает использование единой таблицы Instances для представления дескрипторов объектов всех классов. В столбцах таблицы хранятся идентификатор объекта и его тип. Контекст использования паттерна связан с представлением атрибутов классов в виде самостоятельных таблиц. В этом случае связь между таблицами экземпляров классов и значений их атрибутов осуществляется через внешние ключи записей объектов (см. раздел 6.4.2.2). Предполагается, что значения атрибутов одного и того же типа хранятся в единой таблице независимо от их вхождения в состав того или иного класса. Тем самым достигается существенная для схемо-независимой стратегии инвариантность реляционной схемы по отношению к прикладным моделям. Связь простого объекта с его классом осуществляется через внешний ключ записи в таблице классов Entities (см. раздел 6.5). Для сложных объектов предусмотрен внешний ключ записи в соответствующей таблице сложных классов Complex_Entities.

6.3.5 Паттерн BLOB

Паттерн BLOB также предполагает использование единой таблицы BLOB Instances для представления объектов всех классов. Однако в отличие от паттерна AllClasses-OneTable в данной таблице используется дополнительный столбец для хранения значений атрибутов, упакованных в бинарную или текстовую строку переменной длины. Задача упаковки значений в строку и их распаковки для клиентских приложений ложится непосредственно на промежуточный слой программного обеспечения. Хотя чтение и запись данных объекта осуществляются за одну операцию обращения к таблице, дополнительные расходы приходятся на обработку строк промежуточным слоем. По существу в этом случае BLOB стратегия объединяет в себе паттерны наследования, агрегации и ассоциации.

Возможны разновидности данного паттерна, связанные с различными способами представления строки значений атрибутов как в бинарном формате, так и в одном из текстовых метаформатов. В частности, применительно к метамодели EXPRESS стандарт STEP определяет формат текстового кодирования прикладных данных (ISO-10303-21) и несколько альтернативных способов XML разметки документов (ISO-10303-28), порождаемых соответствующей прикладной моделью данных, специфицируемой на языке EXPRESS.

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

6.4 Отображение атрибутов

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

6.4.1 Представление простых типов

Соответствие базовых типов языка EXPRESS типам данных в SQL достаточно прозрачно. В таблицу 1 сведены базовые типы EXPRESS и возможные способы их представления в некоторых популярных коммерческих и свободно распространяемых реляционных СУБД.

Таблица 1. Соответствие базовых типов EXPRESS и SQL в реляционных СУБД

ЕXPRESS

MySQL

PostgreSQL

Oracle

INTEGER

INTEGER

INTEGER

INTEGER

REAL

REAL,

DOUBLE PRECISION

FLOAT8,

DOUBLE PRECISION

NUMBER,

DOUBLE PRECISION

REAL(n)

FLOAT(n)

NUMERIC(n)

NUMBER(n)

NUMBER

REAL,

DOUBLE PRECISION

FLOAT8,

DOUBLE PRECISION

NUMBER,

DOUBLE PRECISION

BOOLEAN

CHAR(1),

TINYINT

CHAR(1),

SMALLINT

CHAR(1),

INTEGER

LOGICAL

CHAR(1),

TINYINT

CHAR(1),

SMALLINT

CHAR(1),

INTEGER

ENUMERATION

VARCHAR(128),

INTEGER

VARCHAR(128),

INTEGER

VARCHAR2(128),

INTEGER

STRING

TEXT (up to 64K),

LONGTEXT (up to 4Gb)

TEXT (about 1Gb)

VARCHAR2(4000),

LONG (up to 2Gb)

STRING(n)

VARCHAR(n)

VARCHAR(n)

VARCHAR2(n)

STRING(n) FIXED

CHAR(n)

CHAR(n)

CHAR(n)

BINARY

BLOB (up to 64K),

LONGBLOB (up to 4Gb)

BYTEA

LONG RAW (up to 2Gb)

BINARY(n)

VARCHAR(n) BINARY

VARBIT(n)

RAW(n)

BINARY(n) FIXED

CHAR(n) BINARY

BIT(n)

RAW(n)

ENTITY (reference)

VARCHAR(128),

FOREIGN KEY

VARCHAR(128),

FOREIGN KEY

VARCHAR2(128),

FOREIGN KEY

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.