Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООБД (лекции).doc
Скачиваний:
29
Добавлен:
07.02.2015
Размер:
876.03 Кб
Скачать
  1. Языки программирования систем ообд и языки запросов

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

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

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

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

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

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

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

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