Объектно-ориентированная база данных

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:07, 25 марта 2017.

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

Объектно-ориентированный подход базируется на концепциях:

  • объекта и идентификатора объекта;
  • атрибутов и методов;
  • классов;
  • иерархии и наследования классов.

Характеристики ООБД

Выбор обязательных характеристик ООБД основан на двух критериях: система ООБД должна быть объектно-ориентированна и должна представлять собой базу данных.

К обязательным характеристикам относят:

  1. Возможность работы со сложными объектами, путем наличия конструктора сложных объектов. Конструктор сложных объектов позволяет применить базовые модели построения объекта на любой вид объекта.
  2. Возможность идентифицировать объект, путем присвоения ему индивидуального идентификатора, не зависящего от значений атрибутов этого объекта
  3. Возможности инкапсуляции, а именно использование права доступа только к спецификации интерфейса методов, а информацию о данных и реализации методов скрыть внутри объектов.
  4. Поддержка типов и классов. Требуется, чтобы в ООБД поддерживалась хотя бы одна концепция различия между типами и классами.
  5. Возможность реализовывать механизм наследования от суперкласса, а именно перенос атрибутов.
  6. Возможность перегрузки в сочетании с полным связыванием. Методы должны применяться к объектам разных типов. Реализация метода должна зависеть от типа объектов, к которым данный метод применяется.
  7. Вычислительная полнота. Язык манипулирования данными должен быть языком программирования общего назначения.
  8. Набор типов данных должен быть расширяемым. Пользователь должен иметь средства создания новых типов данных на основе набора предопределенных системных типов. Более того, между способами использования системных и пользовательских типов данных не должно быть никаких различий.

Общие понятия объектно-ориентированного подхода и их преломление в ООБД

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

Состояние объекта - набор значений его атрибутов.

Значение атрибута объекта - это тоже некоторый объект или множество объектов.

Поведение объекта - набор методов (программный код), оперирующих над состоянием объекта.

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

Достоинства и недостатки ООБД

Достоинства

  1. Объектно-ориентированные базы данных позволяют представлять сложные объекты более непосредственным образом, нежели реляционные системы.
  2. Определение пользовательских абстракций.Объектно-ориентированные базы данных предоставляют возможность определять новые абстракции и управлять реализацией таких абстракций.Современные пакеты ООБД дают пользователю возможность создания нового класса с атрибутами и методами, иметь классы, наследующие атрибуты и методы от суперклассов, создавать экземпляры класса, каждый из которых обладает уникальным объектным идентификатором, извлекать эти экземпляры по одному или группами, а также загружать и выполнять методы, определять объекты как совокупности других объектов,определять свойства которые тоже могут иметь сложную структуру и определяться с помощью конструктора коллекций
  3. Облегченное проектирование некоторых связей.В объектно-ориентированных базах данных поддерживается средство инверсных связей для выражения взаимных ссылок между двумя объектами (бинарная связь). Такая система обеспечивает ссылочную целостность путем установления соответствующей обратной ссылки сразу же после создания прямой ссылки.
  4. Отсутствие потребности в определяемых пользователями ключах.В модели ООБД имеется понятие идентификаторов объектов, автоматически генерируемых системой и гарантированно уникальных для каждого объекта. Это обстоятельство в сочетании с тем, что в модели ООБД устраняется потребность в определяемых пользователями ключах, дает объектно-ориентированным базам данных и другие преимущества. Во-первых, идентификатор объекта не может быть модифицирован приложением. Во-вторых, понятие идентифицируемости объекта влечет отдельное и согласованное понятие идентичности, не зависимое от того, каким образом производится доступ к объекту или как объект моделируется с помощью описательных данных.
  5. Наличие предикатов сравнения.В РБД сравнение всегда базируется лишь на значениях. В этой модели два кортежа являются одной сущностью, если все их ключевые атрибуты имеют одинаковые значения. Однако в модели ООБД были разработаны и определены иные типы сравнения.
  6. Меньшая потребность в соединениях.Возможность навигации по структурам объектов и проистекающие из этого путевые выражения в терминах атрибутов объектов дают нам возможность по-новому взглянуть на проблему соединений в ООБД. Реляционное соединение — это механизм, сопоставляющий два отношения на основе значений соответствующих пар атрибутов в этих отношениях. Поскольку в ООБД два класса могут иметь соответствующие пары атрибутов, в этой модели все еще может сохраняться необходимость в реляционном соединении (или явном соединении).
  7. Выигрыш в производительности. В большинстве ООБД при загрузке объекта в память хранимые в этом объекте идентификаторы объектов преобразуются в указатели по памяти.
  8. Объектная алгебра.Объектная алгебра не столь подробно разработана и не является столь же зрелой, как реляционная алгебра. Но как бы то ни было, такая алгебра существует, и в ней определяются пять фундаментальных операций, сохраняющих объекты: union, difference, select, generate и map.

Недостатки

  1. Отсутствие интероперабельности между РБД и ООБД:
    • минимальную оптимизацию запросов;
    • отсутствие стандартной алгебры запросов;
    • отсутствие средств обеспечения запросов;
    • отсутствие поддержки представлений;
    • проблемы с безопасностью;
    • отсутствие поддержки динамических изменений определений классов;
    • ограниченная поддержка ограничений целостности;
    • ограниченные возможности настройки производительности;
    • недостаточная поддержка сложных объектов;
    • ограниченная интеграция с существующими объектно-ориентированными системами программирования;
    • ограниченный выигрыш в производительности.
  2. Недостаточность средств для оптимизации запросов .Одной из самых значительных проблем в ООБД является оптимизация декларативных запросов. Оптимизацию запросов к ООБД затрудняет дополнительная сложность самой объектно-ориентированой модели данных.
  3. Отсутствие стандартной алгебры запросов.Это обстоятельство тоже затрудняет оптимизацию запросов.
  4. Отсутствие средств обеспечения запросов.В большинстве ООБД не хватает средств обеспечения запросов. В тех же немногих системах, где имеются достаточные соответствующие средства, язык запросов не совместим с ANSI SQL. Среди этих средств обеспечения запросов нет вложенных подзапросов, запросов с множествами (union, intersection, difference), агрегатных функций и GROUP BY, соединения нескольких классов — возможностей, полностью поддерживаемых в РБД.
  5. Отсутствие поддержки представлений.Разработка объектно-ориентированного механизма представлений осложняется такими свойствами модели, как идентифицируемость объектов.
  6. Проблемы с безопасностью.В РБД поддерживается авторизация, тогда как в большинстве ООБД она отсутствует. РБД предоставляют пользователям передавать и изымать права на чтение или изменение определений и кортежей в отношениях и представлениях. ООБД смогут получить более широкое распространение в области бизнеса лишь в том случае, если эта функция в них будет усовершенствована.
  7. Ограниченная поддержка ограничений целостности.Отсутствуют механизмы объявления ключевых свойств атрибутов (например, атрибут класса не может быть объявлен первичным ключом класса), или ограничений уникальности, явных ограничений целостности, а также пред- и постусловий методов.
  8. Ограниченные возможности настройки производительности.В большинстве ООБД имеются лишь ограниченные средства параметризованной настройки производительности. В РБД инсталляторам предоставляется возможность настраивать производительность системы путем задания большого числа параметров, устанавливаемых системным администратором.
  9. Недостаточная поддержка сложных объектов.Полная функциональность сложных объектов все еще не поддерживается. Можно осуществлять навигацию по ссылкам и кодировать операции с применением этих ссылок, но отсутствуют предопределенные родовые операции, в которых используются различные виды семантики ссылок.
  10. Ограниченная интеграция с объектно-ориентированными системами программирования. Конфликты по именам; необходимость переделывать иерархии классов; склонность ООБД к перегрузке системных операций.

Реляционные БД и ООБД

Не смотря на огромную популярность парадигмы ООП в программировании, в технологии разработки баз данных эта парадигма пока не особо популярна. И тому есть как объективные, так и субъективные причины.

  1. Популярность. Под реляционные базы создано множество замечательных продуктов, которые необходимо поддерживать и развивать. В эти продукты уже вложены большие деньги и заказчики готовы еще вкладывать деньги в их развитие. Напротив, с использованием ООБД разработано сравнительно мало серьезных коммерческих продуктов, существует мало мощных ООСУБД.
  2. Язык запросов и его стандартизация. Еще в далеком 1986 году был принят первый стандарт SQL-86, который определил всю судьбу реляционных БД. После принятия стандарта все разработчики реляционных СУБД обязаны были следовать ему. Для объектно-ориентированных баз данных пока стандарта языка запросов нет. Сейчас среди разработчиков даже нет единого мнения о том, что этот язык запросов должен делать, не говоря уже о том, как он это должен делать.
  3. Математический аппарат. Для реляционных БД в свое время Эдгар Кодд заложил фундамент математического аппарата реляционной алгебры. Этот мат. аппарат объясняет, как должны выполняться основные операции над отношениями в базе данных, доказывает их оптимальность (либо из него видно, где надо оптимизировать). С другой стороны для ООБД нет такого аппарата, даже не смотря на то, что работы в этой области ведутся с 80-х годов. Таким образом, в ООБД пока нет строгих терминов, таких как декартово произведение, отношение и т. д.
  4. Проблема хранения данных и методов. В реляционных БД хранятся только голые данные. Что с ними будет делать приложение, зависит уже от приложения. В ООБД же, напротив должны храниться объекты, а объект это совокупность его свойств (параметры объекта) и методов (интерфейс объекта). Здесь так же нет единого мнения, как ООБД должна осуществлять хранение объектов и как разработчик должен эти объекты разрабатывать и проектировать. Здесь же возникает и проблема хранения иерархии объектов, хранение абстрактных классов и т.п.

Объектно-ориентированные системы управления базами данных (ООСУБД)

ООСУБД позволяет работать с объектами баз данных так же, как с объектами в программировании в ООЯП. ООСУБД расширяет языки программирования, прозрачно вводя долговременные данные, управление параллелизмом, восстановление данных, ассоциированные запросы и другие возможности. Некоторые объектно-ориентированные базы данных разработаны для плотного взаимодействия с такими объектно-ориентированными языками программирования как Python, Java, C#, Visual Basic .NET, C++, Objective-C и Smalltalk; другие имеют свои собственные языки программирования. ООСУБД используют точно такую же модель, что и объектно-ориентированные языки программирования.

СУБД должна обеспечивать:

  • Долговременное хранение
  • Использование внешней памяти
  • Параллелизм
  • Восстановление
  • Нерегламентированные запросы

Преимущества использования ООСУБД:

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

Источники

  1. Object_database [Электронный ресурс] : Материал из Википедии — свободной энциклопедии: — Режим доступа: https://ru.wikipedia.org/wiki/Object_database

Ссылки

  1. https://habrahabr.ru/post/56399/
  2. http://citforum.ru/database/articles/art_24.shtml
  3. С.Д. Кузнецов. Объектно-ориентированные базы данных - основные концепции, организация и управление: краткий обзор
  4. http://www.osp.ru/os/2004/03/184042/