Объектная база данных или объектно-ориентированная база данных — это система управления базой данных , в которой информация представлена в форме объектов , используемых в объектно-ориентированном программировании . Объектные базы данных отличаются от реляционных баз данных , которые ориентированы на таблицы. Третий тип — объектно-реляционные базы данных — представляет собой гибрид обоих подходов. Объектные базы данных рассматриваются с начала 1980-х годов. [2]
Объектно-ориентированные системы управления базами данных (ОСУБД), также называемые ODBMS (система управления объектными базами данных), сочетают в себе возможности баз данных с возможностями объектно-ориентированного языка программирования. ООСУБД позволяют объектно-ориентированным программистам разрабатывать продукты, хранить их как объекты, а также копировать или модифицировать существующие объекты для создания новых объектов в ООСУБД. Поскольку база данных интегрирована с языком программирования, программист может поддерживать согласованность в одной среде, поскольку и ООСУБД, и язык программирования будут использовать одну и ту же модель представления. Проекты реляционных СУБД, напротив, поддерживают более четкое разделение между моделью базы данных и приложением.
Поскольку использование веб-технологий увеличивается с внедрением интранетов и экстрасетей, компании проявляют личный интерес к ООСУБД для отображения своих сложных данных. Использование СУБД, специально разработанной для хранения данных в виде объектов, дает преимущество тем компаниям, которые ориентированы на мультимедийные презентации, или организациям, использующим системы автоматизированного проектирования (САПР). [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 ( Корпорация микроэлектроники и компьютерных технологий или MCC), Vodak (GMD-IPSI) и Zeitgeist (Texas Instruments). По проекту ОРИОН было опубликовано больше статей, чем по любому другому проекту. Вон Ким из 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 (Versant Corporation), VOSS (Logic Arts) и JADE (Jade Software Corporation). Некоторые из этих продуктов остаются на рынке, и к ним присоединились новые коммерческие продукты с открытым исходным кодом, такие как InterSystems Caché .
Системы управления объектными базами данных добавили концепцию постоянства в объектные языки программирования. Ранние коммерческие продукты были интегрированы с различными языками: GemStone ( Smalltalk ), Gbase ( LISP ), Vbase ( COP ) и VOSS (система хранения виртуальных объектов для Smalltalk ). На протяжении большей части 1990-х годов C++ доминировал на рынке управления базами данных коммерческих объектов. В конце 1990-х годов поставщики добавили Java , а совсем недавно — C# .
Начиная с 2004 года, объектные базы данных пережили второй период роста, когда появились объектные базы данных с открытым исходным кодом , которые были широко доступны и просты в использовании, поскольку они полностью написаны на языках ООП , таких как Smalltalk, Java или C#, таких как db4o от Versant (db4objects). , DTS/S1 от Obsidian Dynamics и Perst (McObject), доступный по двойной лицензии с открытым исходным кодом и коммерческой лицензии.
Объектные базы данных, основанные на персистентном программировании, заняли нишу в таких прикладных областях, как инженерные и пространственные базы данных , телекоммуникации , а также научных областях, таких как физика высоких энергий [13] и молекулярная биология . [14]
Другая группа объектных баз данных ориентирована на встроенное использование в устройствах, пакетном программном обеспечении и системах реального времени .
Большинство объектных баз данных также предлагают тот или иной язык запросов , позволяющий находить объекты с использованием подхода декларативного программирования . Наибольшие различия между продуктами обнаруживаются в области языков объектных запросов и интеграции интерфейсов запросов и навигации. Попытка стандартизации была предпринята ODMG с помощью языка объектных запросов OQL.
Доступ к данным может быть более быстрым, поскольку объект можно получить напрямую, без поиска, по указателям .
Другая область различий между продуктами заключается в способе определения схемы базы данных. Однако общей характеристикой является то, что язык программирования и схема базы данных используют одни и те же определения типов.
Мультимедийные приложения упрощаются, поскольку методы класса, связанные с данными, отвечают за их правильную интерпретацию.
Многие объектные базы данных, например Gemstone или VOSS, предлагают поддержку управления версиями . Объект можно рассматривать как совокупность всех его версий. Кроме того, версии объектов можно рассматривать как самостоятельные объекты. Некоторые объектные базы данных также обеспечивают систематическую поддержку триггеров и ограничений, которые являются основой активных баз данных .
Эффективность такой базы данных также значительно повышается в областях, где требуются огромные объемы данных об одном элементе. Например, банковское учреждение может получить информацию об учетной записи пользователя и эффективно предоставить ему обширную информацию, такую как транзакции, записи информации о счете и т. д.
Группа управления объектными данными представляла собой консорциум поставщиков объектных баз данных и объектно-реляционного сопоставления, членов академического сообщества и заинтересованных сторон. Его целью было создание набора спецификаций, которые позволили бы создавать портативные приложения, хранящие объекты в системах управления базами данных. Он опубликовал несколько версий своей спецификации. Последним выпуском был ODMG 3.0. К 2001 году большинство основных поставщиков объектных баз данных и объектно-реляционного сопоставления заявили о соответствии ODMG Java Language Binding. Соответствие остальным компонентам спецификации было неоднозначным. В 2001 году привязка языка Java ODMG была представлена процессу сообщества Java в качестве основы для спецификации объектов данных Java . Затем компании-члены ODMG решили сконцентрировать свои усилия на спецификации объектов данных Java. В результате ODMG распалась в 2001 году.
Многие идеи объектных баз данных также были включены в SQL:1999 и в той или иной степени реализованы в продуктах объектно-реляционных баз данных .
В 2005 году Кук, Рай и Розенбергер предложили отказаться от всех усилий по стандартизации и ввести дополнительные API объектно-ориентированных запросов, а вместо этого использовать сам язык объектно-ориентированного программирования, то есть Java и .NET, для выражения запросов. В результате появились Native Queries. Аналогичным образом, в сентябре 2005 года Microsoft анонсировала Language Integrated Query (LINQ) и DLINQ, реализацию LINQ, чтобы обеспечить тесные, интегрированные с языком возможности запросов к базе данных с помощью своих языков программирования C# и VB.NET 9.
В феврале 2006 года группа управления объектами (OMG) объявила, что им предоставлено право на разработку новых спецификаций на основе спецификации ODMG 3.0 и создание рабочей группы по технологиям объектных баз данных (ODBT WG). Рабочая группа ODBT планировала создать набор стандартов, которые будут включать в себя достижения в области технологии объектных баз данных (например, репликации), управления данными (например, пространственной индексации) и форматов данных (например, XML), а также включить в эти стандарты новые функции, которые поддерживать домены, в которых применяются объектные базы данных (например, системы реального времени). Работа рабочей группы ODBT была приостановлена в марте 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, предложившая эффективный внутренний тип данных JSON (JSONB) с полным набором функций и операций для всех основных реляционных и нереляционных манипуляций.
Объектная база данных хранит сложные данные и связи между данными напрямую, без сопоставления с реляционными строками и столбцами , и это делает их подходящими для приложений, работающих с очень сложными данными. [19] Объекты имеют отношение «многие ко многим», и доступ к ним осуществляется с помощью указателей. Указатели связаны с объектами для установления отношений. Еще одним преимуществом ООСУБД является то, что ее можно программировать с небольшими процедурными различиями, не затрагивая всю систему. [20]