Мелешко Е.А.,
Пидопрыгора Г.А.
Национальный
авиационный университет
Недостатки
обьектно-ориентированных СУБД
Появление
объектно-ориентированных СУБД вызвано необходимостью решать такие задачи, как:
нахождение средств для хранения объектов, не помещавшихся в оперативной памяти
компьютера, а также сохранение состояния объектов между повторными запусками
прикладной программы. Поэтому, большинство объектно-ориентированных СУБД
представляют собой библиотеку, процедуры управления данными которой включаются
в прикладную программу. Ожидалось, что объектно-ориентированные
методы позволят в технологии баз данных сделать своего рода квантовый переход.
Однако, несмотря на указанные достижения, ООБД так и не смогли оказать
значительного влияния на положение дел в этой области. И в модели, и технологии
ООБД до сих пор сохраняются слабые места:
·
отсутствуют
общие средства манипулирования данными, такие как реляционная алгебра или реляционное счисление.
Работа с данными ведется с помощью одного из объектно-ориентированных языков
программирования общего назначения, обычно это SmallTalk, C++ или Java.
·
Недостаточность средств для оптимизации запросов.
Одной из самых
значительных проблем в ООБД является оптимизация декларативных запросов.
Оптимизацию запросов к ООБД затрудняет дополнительная сложность самой
объектно-ориентированой модели данных.
·
Отсутствие стандартной алгебры запросов.
Еще один серьезный
недостаток ООБД состоит в отсутствии стандартов алгебры запросов. Это
обстоятельство тоже затрудняет оптимизацию запросов. Для ООБД было предложено
несколько разных формальных языков запросов, основанных на алгебрах и
исчислениях. Эти алгебры и исчисления отличаются в нескольких отношениях,
и по выразительности, и по поддержке оптимизирующих правил перезаписи. Почти
все эти алгебры базируются на переменных, т.е. используют переменные для
хранения промежуточных результатов. В РБД существует близкое соответствие между
алгебраическими операциями и низкоуровневыми примитивами физической системы. Это
строгое соответствие достигается за счет отображений между отношениями и
файлами. Однако в ООБД нет аналогичного интуитивного соответствия между
операциями объектной алгебры и примитивами физических систем.
·
Отсутствие средств обеспечения запросо.
В большинстве ООБД не
хватает средств обеспечения запросов. В тех же немногих системах, где имеются
достаточные соответствующие средства, язык запросов не совместим с ANSISQL.
Среди этих средств обеспечения запросов нет вложенных подзапросов, запросов с
множествами (union, intersection, difference), агрегатных функций и GROUPBY,
соединения нескольких классов — возможностей, полностью поддерживаемых в РБД. Кроме
того, отсутствует стандарт для объектных запросов.
·
Отсутствие поддержки представлений.
В ООБД не поддерживаются
представления. Разработка объектно-ориентированного механизма представлений
осложняется такими свойствами модели, как идентифицируемость объектов.
·
Проблемы с безопасностью.
В РБД поддерживается
авторизация, тогда как в большинстве ООБД она отсутствует. В некоторых системах
ООБД пользователи должны явным образом устанавливать и снимать блокировки.
·
Отсутствие поддержки динамических изменений определений
классов.
В дополнение к тому, что
для ООБД до сих пор не разработана единая стандартная модель данных, в
большинстве ООБД не допускаются динамические изменения схемы баз данных, таких
как добавление к классу нового атрибута или метода, добавление к классу нового
суперкласса, удаление суперкласса класса, добавление нового класса и удаление
класса.
·
Ограниченная поддержка ограничений целостности.
Отсутствуют механизмы
объявления ключевых свойств атрибутов (например, атрибут класса не может быть
объявлен первичным ключом класса), или ограничений уникальности, явных
ограничений целостности, а также пред- и постусловий методов.
·
Ограниченные возможности настройки производительности.
В большинстве ООБД
имеются лишь ограниченные средства параметризованной настройки
производительности.
·
Недостаточная поддержка сложных объектов.
Полная функциональность
сложных объектов все еще не поддерживается. Можно осуществлять навигацию по
ссылкам и кодировать операции с применением этих ссылок, но отсутствуют
предопределенные родовые операции, в которых используются различные виды
семантики ссылок. Считается, что все ссылки указывают на независимые объекты, а
семантика особых связей внутри сложных объектов скрыта в операциях,
предоставляемых пользователями.
·
Ограниченные возможности настройки производительности.
В большинстве ООБД
имеются лишь ограниченные средства параметризованной настройки
производительности.
·
Ограниченная интеграция с объектно-ориентированными системами
программирования.
Трудно переписывать
объектно-ориентированные программы для управления стабильными данными. Здесь
возникает ряд проблем: конфликты по именам; необходимость переделывать иерархии
классов; склонность ООБД к перегрузке системных операций.
·
Ограниченный выигрыш в производительности.
Для большинства
приложений, которым требуется доступ к объектам через идентификаторы, нужны
также и возможности доступа к базе данных и ее обновления, обеспечиваемые в РБД. При
выполнении таких приложений ООБД не имеют никаких преимуществ в
производительности по сравнению с РБД.
Перечисленные выше недостатки, показали,
что ООБД не оправдали возлагавшихся на них ожиданий, таких как: обеспечение всеми необходимыми средствами, которые нужны для целевых приложений. Надо
отметить, что почти все современные ООБД – не столько системы баз данных,
сколько системы стабильного хранения данных для некоторого
обьектно-ориентированного языка программирования.
Так что, хотя
объектно-ориентированная модель данных во многих отношениях богаче реляционной
модели, она еще не вполне отвечает полагаемым на нее требованиям и было бы
лучше исправить все ее недостатки путем добавления объектных свойств в реляционные СУБД.