Распределенная обработка данных. Найханова Л.В. - 93 стр.

UptoLike

Составители: 

93
запросы могут основываться только на одном классе (предлагался подход к определению
запроса на нескольких классах в стиле расширения семантики реляционного оператора
соединения). Синтаксис языка ориентирован на SQL. Очень развит набор допустимых
предикатов селекции. В частности, для атрибута, доменом которого является суперкласс,
можно указать имя интересующего пользователя подкласса.
Язык запросов системы Iris находится в значительной степени под влиянием
реляционной парадигмы. Даже название этого языка OSQL отражает его тесную связь с
реляционным языком SQL. По сути дела, OSQL - это реляционный язык, рассчитанный на
работу с ненормализованными отношениями. Естественно, при таком подходе в OSQL
нарушается инкапсуляция объектов.
На наш взгляд, особый интерес представляет декларативный язык запросов системы
O2 RELOOP. В общих словах, это декларативный язык запросов с SQL-ори-ентированным
синтаксисом, основанный на специально разработанной для модели O2 алгебре объектов
и значений. (Кстати, это не единственная работа в направлении построения алгебры для
объектно-ориентированных моделей данных.) Особенно впечатляющим качеством языка
RELOOP является естественность его построения в общем контексте модели O2. Запрос
задается всегда на значении-множестве или списке. Если мы вспомним, что
долговременному классу в O2 соответствует одноименное значение-множество, то тем
самым можно определить запрос на любом хранимом классе. Результатом запроса может
являться объект, значение-множество или значение-список. При этом элементами
значений-множеств могут являться объекты (простая выборка), либо значения-кортежи с
элементами-объектами разных классов (например). В совокупности эти особенности
языка позволяют формулировать запросы над несколькими классами (специфическое
соединение, порождающее не новые объекты, а кортежи из существующих объектов), а
также употреблять вложенные подзапросы.
Проблемы оптимизации запросов
Как обычно, основной целью оптимизации запроса в системе ООБД является
создание оптимального плана выполнения запроса с использованием примитивов доступа
к внешней памяти ООБД.
Оптимизация запросов хорошо исследована и разработана в контексте реляционных
БД. Известны методы синтаксической и семантической оптимизации на уровне
непроцедурного представления запроса, алгоритмы выполнения элементарных
реляционных операций, методы оценок стоимости планов запросов.
Конечно, объекты могут иметь существенно более сложную структуру, чем кортежи
плоских отношений, но не это различие является наиболее важным. Основная сложность
оптимизации запросов к ООБД следует из того, что в этом случае условия выборки
формулируются в терминах "внешних" атрибутов объектов (методов), а для реальной
оптимизации (т.е. для выработки оптимального плана) требуются условия, определенные
на "внутренних" атрибутах (переменных состояния).
На самом деле похожая ситуация существует и в РСУБД при оптимизации запроса
над представлением БД. В этом случае условия также формулируются в терминах
внешних атрибутов (атрибутов представления), и в целях оптимизации запроса эти
условия должны быть преобразованы в условия, определенные на атрибутах хранимых
отношений. Хорошо известным методом такой "предоптимизации" является подстановка
представлений, которая часто (хотя и не всегда в случае использования языка SQL)
обеспечивает требуемые преобразования. Альтернативным способом выполнения запроса
над представлением (иногда единственным возможным) является материализация
представления.
В системах ООБД ситуация существенно усложняется двумя обстоятельствами. Во-
первых, методы обычно программируются на некотором процедурном языке
программирования и могут иметь параметры. Т.е. в общем случае тело метода
запросы могут основываться только на одном классе (предлагался подход к определению
запроса на нескольких классах в стиле расширения семантики реляционного оператора
соединения). Синтаксис языка ориентирован на SQL. Очень развит набор допустимых
предикатов селекции. В частности, для атрибута, доменом которого является суперкласс,
можно указать имя интересующего пользователя подкласса.
     Язык запросов системы Iris находится в значительной степени под влиянием
реляционной парадигмы. Даже название этого языка OSQL отражает его тесную связь с
реляционным языком SQL. По сути дела, OSQL - это реляционный язык, рассчитанный на
работу с ненормализованными отношениями. Естественно, при таком подходе в OSQL
нарушается инкапсуляция объектов.
     На наш взгляд, особый интерес представляет декларативный язык запросов системы
O2 RELOOP. В общих словах, это декларативный язык запросов с SQL-ори-ентированным
синтаксисом, основанный на специально разработанной для модели O2 алгебре объектов
и значений. (Кстати, это не единственная работа в направлении построения алгебры для
объектно-ориентированных моделей данных.) Особенно впечатляющим качеством языка
RELOOP является естественность его построения в общем контексте модели O2. Запрос
задается всегда на значении-множестве или списке. Если мы вспомним, что
долговременному классу в O2 соответствует одноименное значение-множество, то тем
самым можно определить запрос на любом хранимом классе. Результатом запроса может
являться объект, значение-множество или значение-список. При этом элементами
значений-множеств могут являться объекты (простая выборка), либо значения-кортежи с
элементами-объектами разных классов (например). В совокупности эти особенности
языка позволяют формулировать запросы над несколькими классами (специфическое
соединение, порождающее не новые объекты, а кортежи из существующих объектов), а
также употреблять вложенные подзапросы.
Проблемы оптимизации запросов
     Как обычно, основной целью оптимизации запроса в системе ООБД является
создание оптимального плана выполнения запроса с использованием примитивов доступа
к внешней памяти ООБД.
     Оптимизация запросов хорошо исследована и разработана в контексте реляционных
БД. Известны методы синтаксической и семантической оптимизации на уровне
непроцедурного представления запроса, алгоритмы выполнения элементарных
реляционных операций, методы оценок стоимости планов запросов.
     Конечно, объекты могут иметь существенно более сложную структуру, чем кортежи
плоских отношений, но не это различие является наиболее важным. Основная сложность
оптимизации запросов к ООБД следует из того, что в этом случае условия выборки
формулируются в терминах "внешних" атрибутов объектов (методов), а для реальной
оптимизации (т.е. для выработки оптимального плана) требуются условия, определенные
на "внутренних" атрибутах (переменных состояния).
     На самом деле похожая ситуация существует и в РСУБД при оптимизации запроса
над представлением БД. В этом случае условия также формулируются в терминах
внешних атрибутов (атрибутов представления), и в целях оптимизации запроса эти
условия должны быть преобразованы в условия, определенные на атрибутах хранимых
отношений. Хорошо известным методом такой "предоптимизации" является подстановка
представлений, которая часто (хотя и не всегда в случае использования языка SQL)
обеспечивает требуемые преобразования. Альтернативным способом выполнения запроса
над представлением (иногда единственным возможным) является материализация
представления.
     В системах ООБД ситуация существенно усложняется двумя обстоятельствами. Во-
первых, методы обычно программируются на некотором процедурном языке
программирования и могут иметь параметры. Т.е. в общем случае тело метода

                                                                                   93