Однако наиболее активно это направление развивается в последние годы
Вид материала | Документы |
СодержаниеIngres [25]). |
- Новый политический консенсус в России. От государства «смуты» к государству «термидора», 385.82kb.
- Состояние и перспективы развития рынка пантовой продукции в алтайском крае, 43.64kb.
- Лекция гендерная проблематика в основных направлениях, 752.67kb.
- Потребительский рынок является наиболее гибким и устойчивым сектором экономики., 189.96kb.
- Программа дисциплины «Экономическая социология» для направления / специальности социология, 908.94kb.
- Орлик Анны Влдадимировны на тему: сказка, 39.13kb.
- Проблемные вопросы регистрации лекарственных средств в странах СНГ, 57.1kb.
- Если ребенок плохо говорит, 227.02kb.
- «Развитие сельского хозяйства и регулирование рынков сельскохозяйственной продукции,, 163.06kb.
- Программирование в ограничениях и недоопределенные модели а. С. Нариньяни, В. В. Телерман,, 419.59kb.
построить СУБД, опирающуюся на конкретную модель данных или
предназначенную для конкретной области применений. В
частности, как показывает опыт системы EXODUS [48], средства
расширяемых систем хорошо пригодны и для построения
объектно-ориентированной СУБД.
Наконец, коснемся направления третьего поколения СУБД [9]. Как
явствует из Манифеста третьего поколения, сторонники этого
направления придерживаются принципа эволюционного развития
возможностей СУБД без коренной ломки предыдущих подходов и с
сохранением приемственности с системами предыдущего поколения.
Тем не менее, несмотря на отличающуюся терминологию и
смещенные акценты, системы третьего поколения не так уж далеки
от объектно-ориентированных СУБД.
Одной из наиболее известных СУБД третьего поколения является
система POSTGRES [26-28], а создатель этой системы М.
Стоунбрекер, по всей видимости, является вдохновителем всего
направления. В POSTGRES реализованы многие интересные
средства: поддерживается темпоральная модель хранения и
доступа к данным и в связи с этим абсолютно перемотрен
механизм журнализации изменений, откатов транзакций и
восстановления БД после сбоев; обеспечивается мощный механизм
ограничений целостности; поддерживаются ненормализованные
отношения (работа в этом направлении началась еще в среде
INGRES [25]).
Но одно свойство системы POSTGRES действительно сближает ее с
объектно-ориентированными СУБД. В POSTGRES допускается
хранение в полях отношений данных абстрактных, определяемых
пользователями типов. Это обеспечивает возможность внедрения
поведенческого аспекта в БД, т.е. решает ту же задачу, что и
ООБД, хотя, конечно, семантические возможности модели данных
POSTGRES существенно слабее, чем у объектно-ориентированных
моделей данных.
Перейдем теперь к чисто объектно-ориентированным СУБД. Мы
рассмотрим особенности организации двух таких систем - ORION
[11-17] и O2 [29-32].
Проект ORION осуществлялся с 1985 по 1989 г. фирмой MCC под
руковоством известного еще по работам в проекте System R Вона
Кима. Под названием ORION на самом деле скрывается семейство
трех СУБД: ORION-1 - однопользовательская система; ORION-1SX,
предназначенная для использования в качестве сервера в
локальной сети рабочих станций; ORION-2 - полностью
распределенная объектно-ориентированная СУБД. Реализация всех
систем производилась с использованием языка Common Lisp на
рабочих станциях (и их локальных сетях) Symbolics 3600 с ОС
Genera 7.0 и SUN-3 в среде ОС UNIX. Описание реализации
ORION-2 пока не опубликовано, поэтому мы рассмотрим только
ORION-1 и ORION-1SX.
Основными функциональными компонентами системы являются
подсистемы управления памятью, объектами и транзакциями. В
ORION-1 все компоненты, естественно, располагаются в одной
рабочей станции; в ORION-1SX - разнесены между разными
рабочими станциями (в частности, управление объектами
производится в рабочей станции-клиенте). Применение в
ORION-1SX для взаимодействия клиент-сервер механизма
удаленного вызова процедур позволило использовать в этой
системе практически без переделки многие модули ORION-1.
Сетевые взаимодействия основывались на стандартных средствах
операционных систем.
В число функций подсистемы управления памятью входит
распределение внешней памяти, перемещение страниц из буферов
оперативной памяти во внешнюю память и наоборот, поиск и
размещение объектов в буферах оперативной памяти (как принято
в объектно-ориентированных системах, поддерживаются два
представления объектов - дисковое и в оперативной памяти; при
перемещении объекта из буфера страниц в буфер объектов и
обратно представление объекта изменяется). Кроме того, эта
подсистема отвественна за поддержание вспомогательных
индексных структур, предназначенных для ускорения выполнения
запросов.
Подсистема управления объектами включает подкомпоненты
обработки запросов, управления схемой и версиями объектов.
Версии поддерживаются только для объектов, при создании
которых такая необходимость была явно указана. Для схемы БД
версии не поддерживаются; при изменении схемы отслеживается
влияние этого изменения на другие компоненты схемы и на
существуующие объекты. При обработке запросов используется
техника оптимизации, аналогичная применяемой в реляционных
системах (т.е. формируется набор возможных планов выполнения
запроса, оценивается стоимость каждого из них и выбирается для
выполнения наиболее дешевый) [102].
Подсистема управления транзакциями обеспечивает традиционную
сериализуемость транзакций, а также поддерживает средства
журнализации изменений и восстановления БД после сбоев. Для
сериализации транзакций применяется разновидность двухфазного
протокола синхронизационных захватов с различной степенью
гранулированности [103]. Конечно, при синхронизации
учитывается специфика ООБД, в частности, наличие иерархии
классов. Журнал изменений обеспечивает откаты индивидуальных
транзакций и восстановление БД после мягких сбоев (архивные
копии БД для восстановления после поломки дисков не
поддерживаются).
Проект O2 реализуется французской компанией Altair,
образованной специально для целей проектирования и реализации
объектно-ориентированной СУБД. Начало проекта датируется
сентябрем 1986 г., и он был расчитан на пять лет: три года на
прототипирование и два года на разработку промышленного
образца. Текущий прототип системы функционирует в режиме
клиент/сервер в локальной сети рабочих станций SUN c
соответствующим разделением функций между сервером и
клиентами.
Основными компонентами системы (не считая развитого набора
интерфейсных средств) являются интерпретатор запросов и
подсистемы управления схемой, объектами и дисками. Управление
дисками, т.е. поддержание базовой среды постоянного хранения
обеспечивает система WiSS [104], которую разработчики O2
перенесли в окружение ОС UNIX.
Наибольшую функциональную нагрузку несет компонент управления
объектами. В число функций этой подсистемы входит:
- управление сложными объектами, включая создание и
уничтожение объектов, выборку объектов по именам, поддержку
предопределенных методов, поддержку объектов со внутренней
структурой-множеством, списком и кортежем;
- управление передачей сообщений между объектами;
- управление транзакциями;
- управление коммуникационной средой (на базе транспортных
протоколов TCP/IP в локальной сети Ethernet);
- отслеживание долговременно хранимых объектов (напомним, что
в O2 объект хранится во внешней памяти до тех пор, пока
достижим из какого-либо долговременно хранимого объекта);
- управление буферами оперативной памяти (аналогично ORION,
представление объекта в оперативной памяти отличается от его
представления на диске);
- управление кластеризацией объектов во внешней памяти;
- управление индексами.
Несколько слов про управление транзакциями. Различаются
режимы, когда допускается параллельное выполнение транзакций,
изменяющих схему БД, и когда параллельно выполняются только
транзакции, изменяющие внутренность БД. Первый режим обычно
используется на стадии разработки БД, второй - на стадии
выполнения приложений. Средства восстановления БД после сбоев
и откатов транзакций также могут включаться и выключаться.
Наконец, поддерживается режим, при котором все постоянно
хранимые объекты загружаются в оперативную память при начале
транзакции для увеличения скорости работы прикладной системы.
Компонент управления схемой БД реализован над подсистемой
управления объектами: в системе поддерживаются несколько
невидимых для программистов классов и в том числе классы
"Class" и "Method", экземплярами которых являются,
соответственно, объекты, определяющие классы, и объекты,
определяющие методы. (Как видно, ситуация напоминает
реляционные системы, в которых тоже обычно поддерживаются
служебные отношения-каталоги, описывающие схему БД.) Удаление
класса, который не является листом иерархии классов или
используется в другом классе или сигнатуре какого-либо метода,
запрещено.
Даже приведенное краткое описание особенностей двух
объектно-ориентированных СУБД показывает прагматичность
современного подхода к организации таких систем. Их
разработчики не стремятся к полному соблюдению чистоты
объектно-ориентированного подхода и применяют наиболее простые
решения проблем, которые на самом деле еще не решены. Пока в
сообществе разработчиков объектно-ориентированных систем БД не
видно работы, которая могла бы сыграть в этом направлении
роль, аналогичную роли System R [105] по отношению к
реляционным системам. Правда, и проблемы ООБД гораздо более
сложны, чем решаемые в реляционных системах.
6. Проблемы выполнения и оптимизации запросов к ООБД
В этом разделе мы остановимся на проблемах выполнения запросов
к ООБД, сформулированных на каком-либо декларативном языке.
Каким бы не был этот язык, в конечном счете потребуется по
внешнему представлению запроса сформировать план его
выполнения, который минимизировал бы общие накладные расходы
системы, требующиеся для выполнения запроса. Другими словами,
до выполнения запроса необходимо выполнить его оптимизацию,
учитывая в общем случае необходимость обменов с внешней
памятью.
Публикации, касающиеся оптимизации запросов к ООБД,
практически отсутствуют. Это свидетельствует о недостаточной
развитости каких-либо оригинальных подходов.
Как мы видели на примерах конкретных систем в предыдущем
разделе, в них по сути дела применяется тот же подход к
оптимизации запросов, который использовался в реляционных
системах: формируется набор альтернативных планов, оценивается
стоимость каждого из них и выбирается план с наименьшей
стоимостью. (Подробный обзор современных методов оптимизации
запросов в реляционных СУБД и нерешенных проблем можно найти в
[106].) Возможность применения такого подхода в СУБД ORION и
O2 (да и в других) опирается на то, что объекты в этих
системах не полностью инкапсулированы. Наряду с методами, в
объектах видны и некоторые атрибуты, и если условие выборки
задано через эти атрибуты, оптимизатор запросов, которому
известны внутренняя структура объектов и набор существующих
индексов, получает возможность выбора. Если же условие выборки
можно формулировать только через методы, при подходах ORION и
O2 единственным возможным способом выборки объектов класса
будет последовательный просмотр всех объектов этого класса.
Здоник [7] отмечает, что основная проблема с оптимизацией
запросов к ООБД связана с расширяемостью набора типов в такой
БД. Каждый новый тип вводит собственную алгебру, неизвестную
оптимизатору запросов. Например, оптимизатор не имеет
информации о возможной коммутативности двух операций типа и
т.д. Здоник полагает, что возможному решению проблемы
оптимизации могло бы способствовать формальное определение
алгебраических свойств операций типа при его разработке.
Примерно такой подход применяется в оптимизаторах, основанных
на наборе правил, применяемых в расширяемых СУБД (например,
[107]).
Как кажется, из последних публикаций, затрагивающих проблемы
оптимизации запросов, наибольшее влияние на оптимизаторы
систем ООБД может оказать [108]. Эта работа не связана
непосредственно со спецификой ООБД, но преимущество
предлагаемого подхода связано как раз с максимальной
независимостью от особенностей организации БД. Предлагается не
оценивать план выполнения запроса, а учитывать реальную
стоимость уже использованного плана и на этой основе изменять
критерии выбора оптимизатора. Может быть, таким образом
удастся справиться с неизвестной оптимизатору алгеброй
определяемых пользователями типов.
По нашему мнению, если в системе для программирования методов
применяется язык достаточно высокого уровня (во всяком случае,
не Си), то при компиляции запроса могло бы производиться
частичное вычисление вызываемых в нем методов с последующим
преобразованием запроса к виду, когда условия определены на
атрибутах хранимых классов. После этого можно было производить
обычную оптимизацию запроса. Заметим, что это не было бы
нарушением инкапсуляции объектов, поскольку оптимизатор
является частью системы, для которой внутренняя организация
объектов БД открыта.
7. Особенности управления транзакциями в системах ООБД
Дела с управлением транзакциями в системах ООБД обстоят
примерно аналогично ситуации с оптимизацией запросов: как
правило, используются слегка модифицированные традиционные
методы сериализации транзакций, журнализации изменений
объектов, индивидуальных откатов транзакций и восстановления
состояния БД после сбоев. Фактически, как и в случае
оптимизации запросов, такое управление транзакциями
предполагает частичное нарушение инкапсуляции объектов:
синхронизация основывается на знании внутренней структуры
объектов, журнализация и восстановление - на знании природы
методов, изменяющих состояние объекта и т.д.
Какой-либо подход, в котором предлагался бы полный набор
средств управления транзакциями, полностью согласующийся с
парадигмой объектной ориентированностью, нам неизвестен. Одна
из наиболее продвинутых работ, проводимых в этом направлении в
рамках германского проекта VODAK, описывается в [93].
В основе управления транзакциями в системе VODAK находится
разработанный ранее в контексте инженерных СУБД механизм
транзакций со вложенными подтранзакциями [109]: вызов любого
действия в объекте равносилен образованию новой
подстранзакции. В отличие от традиционного механизма вложенных
подтранзакций в данном случае заранее не определена
максимальная вложенность транзакций. При синхронизации
транзакций используется знание о семантике объектов, в том
числе информация о коммутативности операций. (Аналогичный
подход описан в [110].)
Не очень понятно, как при таком подходе поступать с
журнализацией изменений. В принципе только сам объект знает,
какая информация может понадобиться для его восстановления, и
только сам объект может выполнить такое восстановление. Может
быть, следует применять технику темпоральных БД, и при каждом
изменении состояния объекта заводить его новую версию. В
общем, как нам представляется, проблема журнализации и
восстановления в ООБД пока остается открытой.
8. Связь ООБД с дедуктивными и активными базами данных
Связь направления ООБД с направлением дедуктивных БД носит
двоякий характер. Во-первых, для структуризации дедуктивных (и
вообще логических) БД в последнее время стремятся использовать
парадигму объектной ориентированности [83-84]. Это отдельная
тема, для ее рассмотрения было бы необходимо предварительное
введение в концепции дедуктивных БД, что находится за
пределами данного обзора.
Во-вторых, некоторые механизмы дедуктивных БД пытаются
использовать в контексте обычных (может быть, несколько
расширенных семантически) ООБД. Это прежде всего относится к
языкам запросов [82] (как мы отмечали в разд. 4, одно из
направлений развития декларативных языков запросов к ООБД -
дедуктивные языки). На логическом выводе основываются в ряде
проектов доказательство корректности схемы ООБД и динамический
контроль целостности [85-86]. Видимо, в будущих системах ООБД
логика будет играть еще большую роль.
Работы по интеграции объектно-ориентированных и активных БД
находятся в начальной стадии. Известно, что основной проблемой
систем активных БД является построение эффективного механизма
вычисления на основе поступающих событий условий и вызова при
необходимости соответствующих действий. В [42] описывается
экспериментальная работа, выполненная на базе
объектно-ориентированной СУБД PROBE, в которой активность ООБД
обеспечивается с помощью определения двух специальных классов
объектов "active-object" и "activelist-object". При
возникновении одного из предопределенных в системе событий
вызывается один из методов соответствующего объекта класса
"active-object", в котором в зависимости от состояния и
предписанного набора правил принимается решение о дальнейших
действиях. Основной вывод, который можно сделать на основании
изложенного в [42] материала, - это пригодность основных
средств типовой ООБД и для обеспечения ее активности.
9. Заключение
В этом обзоре мы рассмотрели (очень кратко) далеко не все
вопросы, связанные с ООБД. Совсем не были рассмотрены проблемы
проектирования ООБД и вообще объектно-ориентированного
проектирования БД [59], вопросы поддержания разнородной
(multi-media) информации в ООБД [12], подходы к интеграции
неоднородных БД на основе объектно-ориентированного подхода
[87-88], проблемы поддержания различных представлений ООБД
[89] и т.д.
Мы стремились показать общее состояние дел (насколько это
возможно в таком кратком обзоре) в наиболее важных областях,
связанных с управлением ООБД. По нашему мнению, практически во
всех этих областях имеется масса нерешенных проблем, и
потребность в развитых объектно-ориентированных СУБД
стимулирует решение этих проблем.
Литература:
1. Mattbew Rapaport. Object-Oriented Data Bases: The Next Step
in DBMS Evolution // Comp. Lang.- 5, N 10.- 1988.- 91-98
2. Michael Stonebraker. Future Trends in Database Systems //
IEEE Trans. Knowledge and Data Eng.- 1, N 1.- 1989.- 33-44
3. Oscar Nierstrasz. A Survey of Object-Oriented Concepts //
In Object-Oriented Concepts, Databases and Applications, ed.
W. Kim, F. Lochovski, ACM Press and Addison-Wesley, 1989.-
3-21
4. M. A. Garvey, M. S. Jackson. Introduction to
Object-Oriented Databases // Inf. and Software Technol.- 31, N
10.- 1989.- 521-528
5. Fereidoon Sadri. Object-Oriented Database Systems //
COMPSAC'89 13th Annu. Int. Comput. Software and Appl. Conf.,
Orlando, Fla, Sept. 20-22, 1989.- 195-196
6. Stanley Y. W. Su. Extensions to the Object-Oriented
Paradigm // COMPSAC'89 13th Annu. Int. Comput. Software and
Appl. Conf., Orlando, Fla, Sept. 20-22, 1989.- 197-199
7. Stanley Zdonik. Directions in Object-Oriented Databases //
COMPSAC'89 13th Annu. Int. Comput. Software and Appl. Conf.,
Orlando, Fla, Sept. 20-22, 1989.- 200
8. Malkolm Atkinson, Francois Bansilhon, David DeWitt, Klaus
Dittrich, David Maier, Stanley Zdonik. The Object-Oriented
Database System Manifesto // 1st Int. Conf. Deductive and
Object-Oriented Databases, Kyoto, Japan, Dec. 4-6, 1989
9. The Committee for Advanced DBMS Function (Michael
Stonebraker, Bruce Lindsay, Jim Gray, Make Carey, David
Beech). Third Generation Data Base System Manifesto // Proc.
ACM SIGMOD Int. Conf. Manag. Data, Atlanta City, NJ, USA, May
23-25, 1990, ACM SIGMOD Record.- 19, N 2.- 1990.- 34-43
10. R. P. van de Riet. Introduction to the Special Issue on
Deductive and Object-Oriented Databases // Data and Knowledge
Eng.- 5.- 1990.- 255-261
11. Won Kim. Object-Oriented Databases: Definition and