Объектная база данных или объектно-ориентированная база данных — это система управления базами данных , в которой информация представлена в форме объектов , как это используется в объектно-ориентированном программировании . Объектные базы данных отличаются от реляционных баз данных , которые ориентированы на таблицы. Третий тип, объектно-реляционные базы данных , представляет собой гибрид обоих подходов. Объектные базы данных рассматриваются с начала 1980-х годов. [2]
Объектно-ориентированные системы управления базами данных (OODBMS), также называемые ODBMS (Object Database Management System), объединяют возможности базы данных с возможностями объектно-ориентированного языка программирования. OODBMS позволяют объектно-ориентированным программистам разрабатывать продукт, хранить их как объекты и реплицировать или изменять существующие объекты для создания новых объектов в OODBMS. Поскольку база данных интегрирована с языком программирования, программист может поддерживать согласованность в пределах одной среды, поскольку и OODBMS, и язык программирования будут использовать одну и ту же модель представления. Проекты реляционных СУБД, напротив, поддерживают более четкое разделение между моделью базы данных и приложением.
Поскольку использование веб-технологий увеличивается с внедрением интрасетей и экстрасетей, компании имеют личный интерес в ООСУБД для отображения своих сложных данных. Использование СУБД, специально разработанной для хранения данных в виде объектов, дает преимущество тем компаниям, которые ориентированы на мультимедийную презентацию, или организациям, которые используют автоматизированное проектирование (САПР). [3]
Некоторые объектно-ориентированные базы данных разработаны для хорошей работы с объектно-ориентированными языками программирования , такими как Delphi , Ruby , Python , JavaScript , Perl , Java , C# , Visual Basic .NET , C++ , Objective-C и Smalltalk ; другие, такие как JADE, имеют свои собственные языки программирования. ООСУБД используют точно такую же модель, как и объектно-ориентированные языки программирования.
Системы управления объектными базами данных выросли из исследований в начале-середине 1970-х годов и стали иметь внутреннюю поддержку управления базами данных для графоструктурированных объектов. Термин «объектно-ориентированная система баз данных» впервые появился около 1985 года. [4] Известные исследовательские проекты включали Encore-Ob/Server ( Университет Брауна ), EXODUS ( Университет Висконсин-Мэдисон ), IRIS (Hewlett-Packard), ODE ( Bell Labs ), ORION ( Корпорация Microelectronics and Computer Technology или MCC), Vodak (GMD-IPSI) и Zeitgeist (Texas Instruments). Проект ORION имел больше опубликованных статей, чем любые другие усилия. Вон Ким из MCC собрал лучшие из этих статей в книге, опубликованной The MIT Press. [5]
Ранние коммерческие продукты включали Gemstone (Servio Logic, название было изменено на GemStone Systems), Gbase (Graphael) и Vbase (Ontologic). Дополнительные коммерческие продукты вышли на рынок в конце 1980-х — середине 1990-х годов. К ним относятся ITASCA (Itasca Systems), Jasmine (Fujitsu, продаваемая Computer Associates), Matisse (Matisse Software), Objectivity/DB (Objectivity, Inc.), ObjectStore ( Progress Software , приобретенная у eXcelon, которая изначально была Object Design, Incorporated ), ONTOS (Ontos, Inc., название было изменено с Ontologic), O 2 [6] (O 2 Technology, объединенная с несколькими компаниями, приобретенная Informix , которая в свою очередь была приобретена IBM ), POET (теперь FastObjects от Versant, которая приобрела Poet Software), Versant Object Database (Versant Corporation), VOSS (Logic Arts) и JADE (Jade Software Corporation). Некоторые из этих продуктов остаются на рынке и к ним присоединились новые продукты с открытым исходным кодом и коммерческие продукты, такие как InterSystems Caché .
Системы управления объектными базами данных добавили концепцию персистентности к языкам объектного программирования. Ранние коммерческие продукты были интегрированы с различными языками: GemStone ( Smalltalk ), Gbase ( LISP ), Vbase ( COP ) и VOSS (Virtual Object Storage System for Smalltalk ). На протяжении большей части 1990-х годов C++ доминировал на рынке управления коммерческими объектными базами данных. Поставщики добавили Java в конце 1990-х годов, а позднее и C# .
Начиная с 2004 года объектные базы данных пережили второй период роста, когда появились объектные базы данных с открытым исходным кодом , которые стали широкодоступными и простыми в использовании, поскольку они полностью написаны на языках ООП , таких как Smalltalk, Java или C#, например, db4o от Versant (db4objects), DTS/S1 от Obsidian Dynamics и Perst (McObject), доступные по двойной лицензии с открытым исходным кодом и коммерческой лицензии.
Объектные базы данных, основанные на постоянном программировании, приобрели свою нишу в таких прикладных областях, как инженерные и пространственные базы данных , телекоммуникации , а также в таких научных областях, как физика высоких энергий [13] и молекулярная биология [14] .
Другая группа объектных баз данных ориентирована на встроенное использование в устройствах, пакетном программном обеспечении и системах реального времени .
Большинство объектных баз данных также предлагают некий язык запросов , позволяющий находить объекты с использованием декларативного подхода к программированию . Именно в области языков запросов объектов и интеграции интерфейсов запросов и навигации обнаруживаются самые большие различия между продуктами. Попытка стандартизации была предпринята ODMG с помощью Object Query Language , OQL.
Доступ к данным может быть ускорен, поскольку объект можно получить напрямую, без поиска, следуя указателям .
Другая область различий между продуктами заключается в способе определения схемы базы данных. Однако общая характеристика заключается в том, что язык программирования и схема базы данных используют одни и те же определения типов.
Мультимедийные приложения облегчаются, поскольку методы класса, связанные с данными, отвечают за их правильную интерпретацию.
Многие объектные базы данных, например Gemstone или VOSS, предлагают поддержку управления версиями . Объект можно рассматривать как набор всех его версий. Кроме того, версии объектов можно рассматривать как объекты сами по себе. Некоторые объектные базы данных также предоставляют систематическую поддержку триггеров и ограничений, которые являются основой активных баз данных .
Эффективность такой базы данных также значительно повышается в областях, где требуются огромные объемы данных об одном элементе. Например, банковское учреждение может получить информацию о счете пользователя и эффективно предоставить ему обширную информацию, такую как транзакции, записи информации о счете и т. д.
Группа управления объектными данными была консорциумом поставщиков объектных баз данных и объектно-реляционного отображения, членов академического сообщества и заинтересованных сторон. Ее целью было создание набора спецификаций, которые позволили бы переносимым приложениям хранить объекты в системах управления базами данных. Она опубликовала несколько версий своей спецификации. Последним выпуском был ODMG 3.0. К 2001 году большинство основных поставщиков объектных баз данных и объектно-реляционного отображения заявили о соответствии ODMG Java Language Binding. Соответствие другим компонентам спецификации было неоднозначным. В 2001 году ODMG Java Language Binding был представлен в Java Community Process в качестве основы для спецификации Java Data Objects . Затем компании-члены ODMG решили сосредоточить свои усилия на спецификации Java Data Objects. В результате ODMG был расформирован в 2001 году.
Многие идеи объектных баз данных были также включены в SQL:1999 и реализованы в различной степени в продуктах объектно-реляционных баз данных .
В 2005 году Кук, Рай и Розенбергер предложили отказаться от всех усилий по стандартизации для введения дополнительных объектно-ориентированных API запросов, а вместо этого использовать сам язык программирования OO, т. е. Java и .NET, для выражения запросов. В результате появились Native Queries. Аналогичным образом, в сентябре 2005 года Microsoft анонсировала Language Integrated Query (LINQ) и DLINQ, реализацию LINQ, чтобы обеспечить близкие, интегрированные в язык возможности запросов к базе данных с помощью своих языков программирования C# и VB.NET 9.
В феврале 2006 года Группа управления объектами (OMG) объявила, что им предоставлено право разрабатывать новые спецификации на основе спецификации ODMG 3.0 и создания Рабочей группы по технологии объектных баз данных (ODBT WG). ODBT WG планировала создать набор стандартов, которые включали бы достижения в технологии объектных баз данных (например, репликацию), управление данными (например, пространственное индексирование) и форматы данных (например, XML), а также включить в эти стандарты новые функции, которые поддерживают домены, в которых внедряются объектные базы данных (например, системы реального времени). Работа ODBT WG была приостановлена в марте 2009 года, когда после экономических потрясений в конце 2008 года поставщики ODB, участвовавшие в этих усилиях, решили сосредоточить свои ресурсы в другом месте.
В январе 2007 года Консорциум Всемирной паутины дал языку XQuery статус окончательной рекомендации . XQuery использует XML в качестве своей модели данных. Некоторые идеи, изначально разработанные для объектных баз данных, нашли свое отражение в XQuery, но XQuery по своей сути не является объектно-ориентированным. Из-за популярности XML движки XQuery конкурируют с объектными базами данных в качестве средства хранения данных, которые слишком сложны или изменчивы для удобного хранения в реляционной базе данных. XQuery также позволяет писать модули для предоставления функций инкапсуляции, которые были предоставлены объектно-ориентированными системами.
XQuery v1 и XPath v2 и более поздние версии являются мощными и доступны как в программном обеспечении с открытым исходным кодом, так и в свободном (FOSS) программном обеспечении, [15] [16] [17] , а также в коммерческих системах. Они просты в изучении и использовании, очень мощные и быстрые. Они не являются реляционными, и XQuery не основан на SQL (хотя один из людей, которые разработали XQuery, также был соавтором SQL). Но они также не являются объектно-ориентированными в программном смысле: XQuery не использует инкапсуляцию со скрытием, неявную диспетчеризацию, а также классы и методы. Базы данных XQuery обычно используют XML и JSON в качестве формата обмена, хотя используются и другие форматы.
С начала 2000-х годов JSON получил признание сообщества и популярность в приложениях, где разработчики контролируют формат данных. JSONiq , аналог запроса XQuery для JSON (разделяющий основные выражения и операции XQuery), продемонстрировал функциональную эквивалентность форматов JSON и XML для ориентированной на данные информации. В этом контексте основной стратегией разработчиков ООСУБД было модернизация JSON для своих баз данных (используя его как внутренний тип данных).
В январе 2016 года с выпуском PostgreSQL 9.5 [18] появилась первая FOSS OODBMS, предлагающая эффективный внутренний тип данных JSON (JSONB) с полным набором функций и операций для всех основных реляционных и нереляционных манипуляций.
Объектная база данных хранит сложные данные и связи между данными напрямую, без сопоставления с реляционными строками и столбцами , и это делает их подходящими для приложений, работающих с очень сложными данными. [19] Объекты имеют связь «многие ко многим» и к ним осуществляется доступ с помощью указателей. Указатели связаны с объектами для установления связей. Еще одним преимуществом ООСУБД является то, что ее можно программировать с небольшими процедурными различиями, не затрагивая всю систему. [20]