Объектно-реляционная база данных - Object–relational database

An объектно-реляционная база данных (ЗАКАЗАТЬ), или же система управления объектно-реляционными базами данных (ORDBMS), это система управления базами данных (СУБД) аналогично реляционная база данных, но с объектно-ориентированная модель базы данных: объекты, классы и наследование напрямую поддерживаются в схемы базы данных и в язык запросов. Кроме того, как и в случае с чисто реляционными системами, он поддерживает расширение модель данных с обычай типы данных и методы.

Пример объектно-ориентированной модели базы данных[1]

Можно сказать, что объектно-реляционная база данных обеспечивает золотую середину между реляционными базами данных и объектно-ориентированные базы данных. В объектно-реляционных базах данных подход, по сути, аналогичен подходу реляционных баз данных: данные находятся в базе данных и обрабатываются совместно с помощью запросов на языке запросов; другой крайностью являются OODBMS, в которых база данных по сути является постоянным хранилищем объектов для программного обеспечения, написанного на объектно-ориентированный язык программирования, с программированием API для хранения и извлечения объектов и практически не поддерживает запросы.

Обзор

Основная потребность в объектно-реляционной базе данных возникает из-за того, что и реляционная, и объектная база данных имеют свои индивидуальные преимущества и недостатки. Изоморфизм системы реляционных баз данных с математическим соотношением позволяет использовать многие полезные методы и теоремы из теории множеств. Но эти типы баз данных бесполезны, когда дело доходит до сложности данных.[нужна цитата ] и несоответствие[нужна цитата ] между приложением и СУБД. Объектно-ориентированная модель базы данных позволяет использовать такие контейнеры, как наборы и списки, произвольные пользовательские типы данных, а также вложенные объекты. Это обеспечивает общность между системами типов приложений и системами типов баз данных, что устраняет любую проблему несоответствия импеданса. Но объектные базы данных, в отличие от реляционных, не предоставляют математической основы для их глубокого анализа.[2][3]

Основная цель объектно-реляционной базы данных - преодолеть разрыв между реляционными базами данных и методами объектно-ориентированного моделирования, используемыми в языках программирования, таких как Ява, C ++, Visual Basic .NET или же C #. Однако более популярной альтернативой для создания такого моста является использование стандартных систем реляционных баз данных с некоторой формой объектно-реляционное отображение (ORM) программное обеспечение. В то время как традиционные СУБД или продукты SQL-DBMS, ориентированные на эффективное управление данными, полученными из ограниченного набора типов данных (определенных соответствующими языковыми стандартами), объектно-реляционная СУБД позволяет разработчикам программного обеспечения интегрировать свои собственные типы и методы, которые к ним применяются в СУБД.

ОРСУБД (например, ODBMS или же OODBMS ) интегрирован с объектно-ориентированный язык программирования. Характерные свойства ORDBMS: 1) сложные данные, 2) наследование типов и 3) поведение объекта. Комплексные данные создание в большинстве СУБД SQL основано на предварительном определении схемы через определяемый пользователем тип (UDT). Иерархия в структурированных сложных данных предлагает дополнительное свойство, наследование типов. То есть структурированный тип может иметь подтипы, которые повторно используют все его атрибуты и содержат дополнительные атрибуты, специфичные для этого подтипа. Еще одно преимущество - поведение объекта, связано с доступом к программным объектам. Такие программные объекты должны быть сохраняемыми и переносными для обработки базы данных, поэтому они обычно называются постоянные объекты. Внутри базы данных все отношения с постоянным программным объектом являются отношениями с его идентификатор объекта (OID). Все эти моменты можно решить в соответствующей реляционной системе, хотя стандарт SQL и его реализации налагают произвольные ограничения и дополнительную сложность.[4][страница нужна ]

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

История

Системы управления объектно-реляционными базами данных выросли из исследований, проведенных в начале 1990-х годов. Это исследование расширило существующие концепции реляционных баз данных, добавив объект концепции. Исследователи стремились сохранить декларативный язык запросов, основанный на исчисление предикатов как центральный компонент архитектуры. Вероятно, самый известный исследовательский проект, Postgres (Калифорнийский университет в Беркли), породил два продукта, прослеживающих их происхождение до этого исследования: Illustra и PostgreSQL.

В середине 1990-х годов появились первые коммерческие продукты. К ним относятся Illustra[5] (Illustra Information Systems, приобретена Программное обеспечение Informix, который, в свою очередь, был приобретен IBM ), Всеведение (Omniscience Corporation, приобретенная Корпорация Oracle и стал оригинальным Oracle Lite), и UniSQL (UniSQL, Inc., приобретенная KCOMS ). Украинский разработчик Руслан Засухин, основатель Paradigma Software, Inc., разработал и поставил первую версию Валентина база данных в середине 1990-х как C ++ SDK. К следующему десятилетию PostgreSQL стала коммерчески жизнеспособной базой данных и является основой для нескольких текущих продуктов, поддерживающих ее функции ORDBMS.

Ученые-компьютерщики стали называть эти продукты «системами управления объектно-реляционными базами данных» или СУБД.[6]

Многие идеи ранних объектно-реляционных баз данных в значительной степени стали частью SQL: 1999 через структурированные типы. Фактически, любой продукт, который соответствует объектно-ориентированным аспектам SQL: 1999, может быть описан как продукт для управления объектно-реляционными базами данных. Например, IBM DB2, База данных Oracle, и Microsoft SQL Server, заявляют о поддержке этой технологии и делают это с разной степенью успеха.

Сравнение с СУБД

РСУБД обычно может включать SQL такие утверждения, как эти:

   СОЗДАЙТЕ СТОЛ Клиенты  (       Идентификатор          СИМВОЛ(12)    НЕТ НОЛЬ НАЧАЛЬНЫЙ КЛЮЧ,       Фамилия     VARCHAR(32) НЕТ НОЛЬ,       Имя   VARCHAR(32) НЕТ НОЛЬ,       Дата рождения         ДАТА        НЕТ НОЛЬ   № DOB: Дата рождения    );    ВЫБРАТЬ InitCap(Фамилия) || ', ' || InitCap(Имя)      ИЗ Клиенты     КУДА Месяц(Дата рождения) = Месяц(Getdate())       И День(Дата рождения) = День(Getdate())

Самый актуальный Базы данных SQL позволяют создавать индивидуальные функции, что позволит отображать запрос как:

    ВЫБРАТЬ Формальный(Идентификатор)      ИЗ Клиенты     КУДА День рождения(Дата рождения) = Сегодня()

В объектно-реляционной базе данных можно увидеть что-то вроде этого с пользовательскими типами данных и выражениями, такими как День рождения():

    СОЗДАЙТЕ СТОЛ Клиенты (      Идентификатор           Cust_Id     НЕТ НОЛЬ  НАЧАЛЬНЫЙ КЛЮЧ,      Имя         PersonName  НЕТ НОЛЬ,      Дата рождения          ДАТА        НЕТ НОЛЬ    );    ВЫБРАТЬ Формальный( C.Идентификатор )      ИЗ Клиенты C     КУДА День рождения ( C.Дата рождения ) = СЕГОДНЯ;

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

     ВЫБРАТЬ InitCap(C.Фамилия) || ', ' || InitCap(C.Имя), А.город       ИЗ Клиенты C присоединиться Адреса А НА А.Cust_Id=C.Идентификатор - соединение      КУДА А.город="Нью-Йорк"

Тот же запрос в объектно-реляционной базе данных выглядит проще:

    ВЫБРАТЬ Формальный( C.Имя )      ИЗ Клиенты C     КУДА C.адрес.город="Нью-Йорк" - связь «понимается» ORDB

Смотрите также

Рекомендации

  1. ^ Глоссарий по интеграции данных (PDF), США: Министерство транспорта, август 2001 г., архивировано из оригинал (PDF) на 2016-09-24, получено 2014-03-08
  2. ^ Франк Стаджано (1995), Нежное введение в реляционные и объектно-ориентированные базы данных (PDF)
  3. ^ Наман Согани (2015), Обзор технических документов (PDF), заархивировано из оригинал (PDF) на 2016-03-04, получено 2015-10-05
  4. ^ Дата, Кристофер «Крис» Дж.; Дарвен, Хью, Третий манифест
  5. ^ Stonebraker ,. Майкл с Муром, Дороти. Объектно-реляционные СУБД: следующая большая волна. Издательство Морган Кауфманн, 1996. ISBN  1-55860-397-2.
  6. ^ В то время возник спор о том, был ли этот термин придуман Майкл Стоунбрейкер Illustra или Вон Ким UniSQL.

внешняя ссылка