Объектно-реляционная база данных
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 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 , Фамилия VARCHAR ( 32 ) NOT NULL , Имя VARCHAR ( 32 ) NOT NULL , DOB DATE NOT NULL # DOB: Дата рождения ); ВЫБЕРИТЕ InitCap ( C. Фамилия ) || ', ' || InitCap ( C . FirstName ) FROM Customers C WHERE Месяц ( C . DOB ) = Месяц ( getdate ()) И День ( C . DOB ) = День ( getdate ())
Самый актуальный [update] Базы данных SQL позволяют создавать пользовательские функции , которые позволяют запросу выглядеть следующим образом:
ВЫБЕРИТЕ Формальный ( C. День Id ) ОТ Клиентов C WHERE рождения ( C. = DOB ) ( Сегодня )
В объектно-реляционной базе данных можно увидеть что-то вроде этого, с определяемыми пользователем типами данных и выражениями, такими как BirthDay()
:
CREATE TABLE Customers ( Id Cust_Id NOT NULL PRIMARY KEY , Имя PersonName NOT NULL , DOB DATE NOT NULL ); ВЫБЕРИТЕ Формальный ( C.Id ) ОТ Клиентов C ГДЕ Рождения ( C.DOB ; ) = СЕГОДНЯ День
Объектно-реляционная модель может предложить еще одно преимущество, заключающееся в том, что база данных может использовать связи между данными для облегчения сбора связанных записей. В приложении адресной книги к приведенным выше таблицам будет добавлена дополнительная таблица, в которой будет храниться ноль или более адресов для каждого клиента. При использовании традиционной СУБД для сбора информации как о пользователе, так и об его адресе требуется «объединение»:
ВЫБЕРИТЕ InitCap ( C. Фамилия ) || ', ' || InitCap ( C. FirstName , A. ) город ОТ Клиентов C ПРИСОЕДИНЯЙТЕСЬ Адреса A ON A . Cust_Id = C . Id соединение WHERE A. — город = "Нью-Йорк"
Тот же запрос в объектно-реляционной базе данных выглядит проще:
ВЫБЕРИТЕ Формальный ( C. Имя ) ИЗ Клиентов C WHERE C . адрес . city = "Нью-Йорк" - связь "понимается" 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 – показывает компромиссы в производительности для решений в контексте объектно-реляционного несоответствия импедансов .