Объектно-реляционная база данных
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2008 г. ) |
Объектно -реляционная база данных ( ORD ), или объектно-реляционная система управления базами данных ( ORDBMS ), — это система управления базами данных (СУБД), аналогичная реляционной базе данных , но с объектно-ориентированной моделью базы данных : объекты, классы и наследование напрямую поддерживается в схемах баз данных и в языке запросов . Кроме того, как и в чисто реляционных системах, он поддерживает расширение модели данных за счет пользовательских типов данных и методов .
Можно сказать, что объектно-реляционная база данных обеспечивает золотую середину между реляционными и объектно-ориентированными базами данных . В объектно-реляционных базах данных подход по сути аналогичен подходу реляционных баз данных: данные находятся в базе данных и обрабатываются коллективно с помощью запросов на языке запросов; другой крайностью являются ООСУБД, в которых база данных по существу представляет собой постоянное хранилище объектов для программного обеспечения, написанного на объектно-ориентированном языке программирования , с программным API для хранения и извлечения объектов и практически без специальной поддержки запросов.
Обзор
[ редактировать ]Основная потребность в объектно-реляционной базе данных возникает из-за того, что как реляционная, так и объектная базы данных имеют свои индивидуальные преимущества и недостатки. Изоморфизм реляционной системы баз данных с математическим отношением позволяет использовать многие полезные методы и теоремы теории множеств. Однако эти типы баз данных не являются оптимальными для определенных типов приложений. Объектно-ориентированная модель базы данных допускает использование таких контейнеров, как наборы и списки, произвольные определяемые пользователем типы данных, а также вложенные объекты. Это обеспечивает общность между системами прикладного типа и системами типа базы данных, что устраняет любую проблему несоответствия импедансов. Но объектные базы данных, в отличие от реляционных, не предоставляют какой-либо математической базы для их глубокого анализа. [ 2 ] [ 3 ]
Основная цель объектно-реляционной базы данных — преодолеть разрыв между реляционными базами данных и методами объектно-ориентированного моделирования, используемыми в таких языках программирования, как Java , C++ , Visual Basic .NET или C# . Однако более популярной альтернативой достижению такого моста является использование стандартных систем реляционных баз данных с той или иной формой программного обеспечения объектно-реляционного сопоставления (ORM). В то время как традиционные продукты РСУБД или SQL-СУБД ориентированы на эффективное управление данными, полученными из ограниченного набора типов данных (определенных соответствующими языковыми стандартами), объектно-реляционная СУБД позволяет разработчикам программного обеспечения интегрировать свои собственные типы и методы, которые применить к ним в СУБД.
ORDBMS (например, ODBMS или OODBMS ) интегрирована с объектно-ориентированным языком программирования . Характерными свойствами ОРСУБД являются 1) сложные данные, 2) наследование типов и 3) поведение объектов. Создание сложных данных в большинстве ОРСУБД SQL основано на предварительном определении схемы через определяемый пользователем тип (UDT). Иерархия в структурированных сложных данных предлагает дополнительное свойство — наследование типов . То есть структурированный тип может иметь подтипы, которые повторно используют все его атрибуты и содержат дополнительные атрибуты, специфичные для этого подтипа. Еще одно преимущество — поведение объекта — связано с доступом к объектам программы. Такие программные объекты должны быть пригодными для хранения и транспортировки для обработки базы данных, поэтому их обычно называют постоянными объектами . Внутри базы данных все отношения с постоянным программным объектом являются отношениями с его идентификатором объекта (OID) . Все эти моменты можно решить в правильной реляционной системе, хотя стандарт SQL и его реализации накладывают произвольные ограничения и дополнительную сложность. [ 4 ] [ нужна страница ]
В объектно-ориентированном программировании (ООП) поведение объекта описывается посредством методов (объектных функций). Методы, обозначаемые одним именем, отличаются типом своих параметров и типом объектов, к которым они прикреплены ( сигнатура метода ). В ООП-языках это называется принципом полиморфизма , который кратко определяется как «один интерфейс, множество реализаций». Другие принципы ООП, наследование и инкапсуляция , связаны как с методами, так и с атрибутами. Наследование методов включено в наследование типов. Инкапсуляция в ООП — это степень видимости, объявленная, например, через public
, private
и protected
модификаторы доступа .
История
[ редактировать ]Объектно-реляционные системы управления базами данных возникли в результате исследований, проведенных в начале 1990-х годов. Это исследование расширило существующие концепции реляционных баз данных, добавив концепции объектов . Исследователи стремились сохранить декларативный язык запросов, основанный на исчислении предикатов, в качестве центрального компонента архитектуры. Вероятно, самый известный исследовательский проект Postgres (Калифорнийский университет в Беркли) породил два продукта, берущих свое начало от этого исследования: Illustra и PostgreSQL .
В середине 1990-х годов появились первые коммерческие продукты. В их число входили Illustra [ 5 ] (Illustra Information Systems, приобретенная Informix Software , которая, в свою очередь, была приобретена IBM ), Omniscience (Корпорация Omniscience, приобретенная Oracle Corporation и ставшая исходной Oracle Lite) и UniSQL (UniSQL, Inc., приобретенная KCOMS ). Украинский разработчик Руслан Засухин, основатель Paradigma Software, Inc. , разработал и выпустил первую версию базы данных Valentina в середине 1990-х годов в виде C++ SDK . К следующему десятилетию PostgreSQL превратилась в коммерчески жизнеспособную базу данных и стала основой для нескольких текущих продуктов, поддерживающих ее функции ОРСУБД.
Ученые-компьютерщики стали называть эти продукты «объектно-реляционными системами управления базами данных» или ОРСУБД. [ 6 ]
Многие идеи ранних объектно-реляционных баз данных в значительной степени были включены в SQL:1999 через структурированные типы . Фактически, любой продукт, который соответствует объектно-ориентированным аспектам SQL:1999, можно описать как продукт для управления объектно-реляционными базами данных. Например, IBM Db2 , база данных Oracle и 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: Date of Birth
);
SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName)
FROM Customers C
WHERE Month(C.DOB) = Month(getdate())
AND Day(C.DOB) = Day(getdate())
Самый актуальный [update] Базы данных SQL позволяют создавать пользовательские функции , которые позволяют запросу выглядеть следующим образом:
SELECT Formal(C.Id)
FROM Customers C
WHERE Birthday(C.DOB) = Today()
В объектно-реляционной базе данных можно увидеть что-то вроде этого, с определяемыми пользователем типами данных и выражениями, такими как 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 -- the join
WHERE A.city="New York"
Тот же запрос в объектно-реляционной базе данных выглядит проще:
SELECT Formal( C.Name )
FROM Customers C
WHERE C.address.city="New York" -- the linkage is 'understood' by the ORDB
См. также
[ редактировать ]- Документоориентированная база данных
- SQL
- Сравнение объектно-реляционных систем управления базами данных
- Структурированный тип
- База данных объектов
- Объектно-реляционное отображение
- Реляционная модель
- Языковой интегрированный запрос
- Entity Framework
Ссылки
[ редактировать ]- ^ Глоссарий по интеграции данных (PDF) , США: Министерство транспорта, август 2001 г., заархивировано из оригинала (PDF) 24 сентября 2016 г. , получено 8 марта 2014 г.
- ^ Фрэнк Стаджано (1995), Нежное введение в реляционные и объектно-ориентированные базы данных (PDF)
- ^ Наман Согани (2015 г.), Обзор технического документа (PDF) , заархивировано из оригинала (PDF) 4 марта 2016 г. , получено 5 октября 2015 г.
- ^ Дэйт, Кристофер «Крис» Дж .; Дарвен, Хью , Третий манифест
- ^ Стоунбрейкер. Майкл с Муром, Дороти. Объектно-реляционные СУБД: следующая большая волна . Издательство Морган Кауфманн, 1996. ISBN 1-55860-397-2 .
- ^ В то время возник спор, был ли этот термин придуман Майклом Стоунбрейкером из Illustra или Вон Кимом из UniSQL.
Внешние ссылки
[ редактировать ]- Савушкин, Сергей (2003), Точка зрения на ОРСУБД , заархивировано из оригинала 1 марта 2012 г. , получено 21 июля 2012 г.
- JPA Performance Benchmark – сравнение продуктов Java JPA ORM (Hibernate, EclipseLink, OpenJPA, DataNucleus).
- PolePosition Benchmark – показывает компромиссы в производительности для решений в контексте объектно-реляционного несоответствия импедансов .