stringtranslate.com

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

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

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

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

Обзор

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

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

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

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

История

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

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

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

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

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

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

 CREATE TABLE Customers ( Id CHAR ( 12 ) NOT NULL PRIMARY KEY , Surname VARCHAR ( 32 ) NOT NULL , FirstName VARCHAR ( 32 ) NOT NULL , DOB DATE NOT NULL # DOB: Дата рождения ); SELECT InitCap ( C . Surname ) || ', ' || InitCap ( C . FirstName ) FROM Customers C WHERE Month ( C . DOB ) = Month ( getdate ()) AND Day ( C . DOB ) = Day ( getdate ())                                        

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

 ВЫБРАТЬ Формальный ( C . Id ) ИЗ Клиенты C ГДЕ День рождения ( C . DOB ) = Сегодня ()        

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

 CREATE TABLE Customers ( Id Cust_Id NOT NULL PRIMARY KEY , Name PersonName NOT NULL , DOB DATE NOT NULL ); SELECT Formal ( C . Id ) FROM Customers C WHERE BirthDay ( C . DOB ) = TODAY ;                                

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

 SELECT InitCap ( C.Surname ) || ' , ' || InitCap ( C.FirstName ) , A.city FROM Customers C JOIN Addresses A ON A.Cust_Id = C.Id -- соединение WHERE A.city = " New York "                 

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

 SELECT Formal ( C . Name ) FROM Customers C WHERE C . address . city = "Нью-Йорк" — связь "понимается" ORDB         

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

Ссылки

  1. ^ Data Integration Glossary (PDF) , США: Министерство транспорта, август 2001 г., архивировано из оригинала (PDF) 24.09.2016 г. , извлечено 08.03.2014 г.
  2. ^ Фрэнк Стахано (1995), Легкое введение в реляционные и объектно-ориентированные базы данных (PDF)
  3. ^ Naman Sogani (2015), Technical Paper Review (PDF) , архивировано из оригинала (PDF) 2016-03-04 , извлечено 2015-10-05
  4. ^ Дейт, Кристофер «Крис» Дж.; Дарвен, Хью , Третий манифест
  5. ^ Стоунбрейкер, Майкл с Мур, Дороти. Объектно-реляционные СУБД: следующая большая волна . Morgan Kaufmann Publishers, 1996. ISBN 1-55860-397-2
  6. ^ В то время шли споры о том, был ли этот термин придуман Майклом Стоунбрейкером из Illustra или Воном Кимом из UniSQL.

Внешние ссылки