Эта статья требует дополнительных ссылок для проверки . ( октябрь 2008 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Объектно -реляционная база данных ( ORD ) или система управления объектно-реляционной базой данных ( ORDBMS ) - это система управления базой данных (СУБД), аналогичная реляционной базе данных , но с объектно-ориентированной моделью базы данных : объекты, классы и наследование напрямую связаны поддерживается в схемах баз данных и на языке запросов . Кроме того, как и в случае с чисто реляционными системами, он поддерживает расширение модели данных с помощью настраиваемых типов данных и методов .
Можно сказать, что объектно-реляционная база данных обеспечивает золотую середину между реляционными базами данных и объектно-ориентированными базами данных . В объектно-реляционных базах данных подход по существу аналогичен подходу к реляционным базам данных: данные находятся в базе данных и обрабатываются совместно с помощью запросов на языке запросов; другой крайностью являются ООСУБД, в которых база данных, по сути, представляет собой постоянное хранилище объектов для программного обеспечения, написанного на объектно-ориентированном языке программирования , с программным API для хранения и извлечения объектов и практически без специальной поддержки запросов.
Обзор [ править ]
Основная потребность в объектно-реляционной базе данных возникает из-за того, что и реляционная, и объектная база данных имеют свои индивидуальные преимущества и недостатки. Изоморфизм системы реляционных баз данных с математическим соотношением позволяет использовать многие полезные методы и теоремы из теории множеств. Но эти типы баз данных не оптимальны для определенных типов приложений. Объектно-ориентированная модель базы данных позволяет использовать такие контейнеры, как наборы и списки, произвольные пользовательские типы данных, а также вложенные объекты. Это обеспечивает общность между системами типов приложений и системами типов баз данных, что устраняет любую проблему несоответствия импеданса. Но объектные базы данных, в отличие от реляционных, не предоставляют математической основы для их глубокого анализа. [2] [3]
Основная цель объектно-реляционной базы данных - преодолеть разрыв между реляционными базами данных и методами объектно-ориентированного моделирования, используемыми в таких языках программирования, как Java , C ++ , Visual Basic .NET или C # . Однако более популярной альтернативой для достижения такого моста является использование стандартных систем реляционных баз данных с некоторой формой программного обеспечения объектно-реляционного сопоставления (ORM). В то время как традиционные СУБД или продукты SQL-DBMS, ориентированные на эффективное управление данными, полученными из ограниченного набора типов данных (определенных соответствующими языковыми стандартами), объектно-реляционная СУБД позволяет разработчикам программного обеспечения интегрировать свои собственные типы и методы, которые к ним применяются в СУБД.
ORDBMS (например, ODBMS или OODBMS ) интегрирована с объектно-ориентированным языком программирования . Характерные свойства ORDBMS: 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 Corporation, приобретенная Oracle Corporation и ставшая первоначальным Oracle Lite) и UniSQL (UniSQL, Inc., приобретена KCOMS ). Украинский разработчик Руслан Засухин, основатель Paradigma Software, Inc. , разработал и поставил первую версию базы данных Valentina в середине 1990-х годов в виде C ++ SDK.. К следующему десятилетию PostgreSQL превратилась в коммерчески жизнеспособную базу данных и стала основой для нескольких текущих продуктов, поддерживающих ее функции ORDBMS.
Специалисты по информатике стали называть эти продукты «системами управления объектно-реляционными базами данных» или ORDBMS. [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 ( Фамилия ) || ',' || InitCap ( FirstName ) ОТ Заказчиков ГДЕ Месяц ( DOB ) = Месяц ( getdate ()) И День ( DOB ) = День ( getdate ())
Большинство современных [Обновить]баз данных SQL позволяют создавать пользовательские функции , которые позволят запросу выглядеть как:
ВЫБРАТЬ Официальный ( Id ) ОТ клиентов, ГДЕ День рождения ( DOB ) = Сегодня ()
В объектно-реляционной базе данных можно увидеть что-то вроде этого с определяемыми пользователем типами данных и выражениями, такими как BirthDay()
:
CREATE TABLE клиентов ( Id CUST_ID NOT NULL PRIMARY KEY , имя PersonName NOT NULL , DOB DATE NOT NULL ); ВЫБОР Формальная ( C . Id ) FROM Клиенты С ГДЕ День рождения ( С . DOB ) = СЕГОДНЯ ;
Объектно-реляционная модель может предложить еще одно преимущество в том, что база данных может использовать отношения между данными для простого сбора связанных записей. В приложении адресной книги к приведенным выше таблицам будет добавлена дополнительная таблица, в которой будет храниться ноль или более адресов для каждого клиента. При использовании традиционной СУБД для сбора информации как для пользователя, так и для его адреса требуется «соединение»:
ВЫБОР InitCap ( С . Фамилия ) || ',' || InitCap ( С . FirstName ), . город FROM Клиенты C присоединиться Адреса ON A . Cust_id = С . Id - объединение WHERE A . city = "Нью-Йорк"
Тот же запрос в объектно-реляционной базе данных выглядит проще:
ВЫБРАТЬ Формальный ( C . Имя ) FROM Клиентов C ГДЕ C . адрес . city = "New York" - связь "понимается" ORDB
См. Также [ править ]
- Документно-ориентированная база данных
- SQL
- Сравнение объектно-реляционных систем управления базами данных
- Структурированный тип
- База данных объектов
- Объектно-реляционное отображение
- Реляционная модель
- LINQ
- ADO.NET Entity Framework
Ссылки [ править ]
- ^ Интеграция данных Глоссарий (PDF) , США: Министерство транспорта, август 2001 г., в архиве с оригинала (PDF) на 2016-09-24 , извлекаются 2014-03-08
- ^ Франк Стаджано (1995), Нежное введение в реляционные и объектно-ориентированные базы данных (PDF)
- ^ Naman Sogani (2015), Технический обзор бумаги (PDF) , в архиве от оригинала (PDF) на 2016-03-04 , извлекаются 2015-10-05
- ^ Дата, Кристофер «Крис» J ; Дарвен, Хью , Третий манифест
- ^ Stonebraker ,. Майкл с Муром, Дороти. Объектно-реляционные СУБД: следующая большая волна . Издатели Morgan Kaufmann, 1996. ISBN 1-55860-397-2 .
- ^ В то время возник спор, был ли этот термин придуман Майклом Стоунбрейкером из Illustra или Вон Кимом из UniSQL.
Внешние ссылки [ править ]
Викискладе есть медиафайлы, связанные с объектно-ориентированными моделями . |
- Савушкин, Сергей (2003), Точка зрения на ОРСУБД , заархивировано из оригинала 01.03.2012 , получено 21.07.2012.
- Тест производительности JPA - сравнение продуктов Java JPA ORM (Hibernate, EclipseLink, OpenJPA, DataNucleus).
- PolePosition Benchmark - показывает компромиссы производительности для решений в контексте несоответствия объектно-реляционного импеданса .