Введение
Тип системы управления базами данных
Объектная база данных или объектно-ориентированная база данных — это система управления базами данных, в которой информация представлена в форме объектов, как это делается в объектно-ориентированном программировании. Объектные базы данных отличаются от реляционных баз данных, ориентированных на таблицы. Третий тип, объектно-реляционные базы данных, является гибридом обоих подходов. Объектные базы данных рассматриваются с начала 1980-х годов.
Обзор
Системы управления объектно-ориентированными базами данных (OODBMS), также называемые ODBMS (Object Database Management System), объединяют возможности баз данных и объектно-ориентированных языков программирования. OODBMS позволяют объектно-ориентированным программистам разрабатывать продукты, хранить их как объекты, а также создавать новые объекты, копируя или изменяя существующие, непосредственно в OODBMS. Благодаря интеграции базы данных с языком программирования, разработчик может обеспечить согласованность данных в единой среде, где как OODBMS, так и язык программирования используют одну и ту же модель представления. В отличие от этого, в реляционных СУБД наблюдается более четкое разделение между моделью базы данных и приложением. С ростом популярности веб-технологий и внедрением интранет и экстранет, компании проявляют повышенный интерес к OODBMS для представления сложных данных. Использование СУБД, разработанной специально для хранения данных в виде объектов, дает преимущество компаниям, специализирующимся на мультимедийных презентациях, или организациям, использующим системы автоматизированного проектирования (CAD). Некоторые объектно-ориентированные базы данных оптимизированы для работы с языками программирования, такими как Delphi, Ruby, Python, JavaScript, Perl, Java, C#, Visual Basic NET, C++, Objective C и Smalltalk; другие, например JADE, имеют собственные языки программирования. OODBMS используют ту же модель, что и объектно-ориентированные языки программирования.
История
Системы управления объектными базами данных выросли из исследований, проводившихся в начале и середине 1970-х годов, направленных на обеспечение встроенной поддержки управления базами данных для объектов, имеющих графовую структуру. Термин "объектно-ориентированная система баз данных" впервые появился около 1985 года. Заметными исследовательскими проектами были Encore Ob/Server (Браунский университет), EXODUS (Университет Висконсин-Мэдисон), IRIS (Hewlett Packard), ODE (Bell Labs), ORION (Microelectronics and Computer Technology Corporation или MCC), Vodak (GMD IPSI) и Zeitgeist (Texas Instruments). Проект ORION опубликовал больше научных статей, чем любая другая подобная работа. Вон Ким из MCC собрал лучшие из этих статей в книгу, изданную издательством The MIT Press. Ранние коммерческие продукты включали 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), O2 (O2 Technology, объединилась с несколькими компаниями, приобретенная Informix, которая, в свою очередь, была приобретена IBM), POET (теперь FastObjects от Versant, которая приобрела Poet Software), Versant Object Database (Versant Corporation), VOSS (Logic Arts) и JADE (Jade Software Corporation). Некоторые из этих продуктов остаются на рынке и к ним присоединились новые продукты с открытым и коммерческим исходным кодом, такие как InterSystems Caché. Системы управления объектными базами данных добавили концепцию постоянства (persistence) в языки объектного программирования. Ранние коммерческие продукты были интегрированы с различными языками: GemStone (Smalltalk), Gbase (LISP), Vbase (COP) и VOSS (Virtual Object Storage System for Smalltalk). На протяжении большей части 1990-х годов C++ доминировал на рынке коммерческих объектных баз данных. В конце 1990-х годов поставщики добавили поддержку Java, а в последнее время – C#. Начиная с 2004 года, объектные базы данных пережили второй период роста, когда появились объектные базы данных с открытым исходным кодом, которые были широко доступны и просты в использовании, поскольку они полностью написаны на языках объектно-ориентированного программирования, таких как Smalltalk, Java или C#, например, db4o от Versant (db4objects), DTS/S1 от Obsidian Dynamics и Perst (McObject), доступные под двойной лицензией – с открытым исходным кодом и коммерческой.
Технические особенности
Большинство объектных баз данных также предлагают тот или иной язык запросов, позволяющий находить объекты, используя декларативный подход к программированию. Наиболее существенные различия между продуктами проявляются в области языков запросов к объектам и интеграции запросовых и навигационных интерфейсов. ODMG предприняла попытку стандартизации, разработав язык запросов объектов 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 запросов, а вместо этого использовать сами языки программирования ООП, такие как Java и .NET, для выражения запросов. В результате появились "нативные запросы". Аналогично, в сентябре 2005 года Microsoft представила Language Integrated Query (LINQ) и DLINQ – реализацию LINQ, обеспечивающую тесную интеграцию запросов к базам данных с языками программирования C# и VB.NET 9. В феврале 2006 года Object Management Group (OMG) объявила о получении права на разработку новых спецификаций на основе спецификации ODMG 3.0 и о создании рабочей группы по технологиям объектных баз данных (ODBT WG). Рабочая группа ODBT планировала создать набор стандартов, включающих в себя достижения в области технологий объектных баз данных (например, репликация), управления данными (например, пространственная индексация) и форматов данных (например, XML), а также добавить новые функции для поддержки областей применения объектных баз данных (например, системы реального времени). Работа рабочей группы ODBT была приостановлена в марте 2009 года, когда, после экономического кризиса конца 2008 года, поставщики ОДБ, участвовавшие в этой работе, решили перенаправить свои ресурсы. В январе 2007 года World Wide Web Consortium присвоил языку XQuery статус окончательной рекомендации. XQuery использует XML в качестве модели данных. Некоторые идеи, первоначально разработанные для объектных баз данных, были использованы в XQuery, однако XQuery не является принципиально объектно-ориентированным языком. Благодаря популярности XML, движки XQuery конкурируют с объектными базами данных как средство хранения данных, которые слишком сложны или изменчивы для удобного хранения в реляционной базе данных. XQuery также позволяет создавать модули, обеспечивающие функции инкапсуляции, предоставляемые объектно-ориентированными системами. XQuery v1 и XPath v2 и более поздние версии являются мощными и доступны как в программном обеспечении с открытым исходным кодом (FOSS), так и в коммерческих системах. Они просты в изучении и использовании, очень мощные и быстрые. Они не являются реляционными, и XQuery не основан на SQL (хотя один из разработчиков XQuery также является соавтором SQL). Однако они также не являются объектно-ориентированными в программистском смысле: XQuery не использует инкапсуляцию со скрытием данных, неявную диспетчеризацию, классы и методы. Базы данных XQuery обычно используют XML и JSON в качестве формата обмена, хотя могут использоваться и другие форматы. С начала 2000-х годов JSON получил широкое признание и популярность в приложениях, где разработчики контролируют формат данных. JSONiq, аналог XQuery для JSON (использующий основные выражения и операции XQuery), продемонстрировал функциональную эквивалентность форматов JSON и XML для данных. В этом контексте основной стратегией разработчиков OODBMS заключалась в адаптации JSON к своим базам данных (используя его в качестве внутреннего типа данных). В январе 2016 года, с выпуском PostgreSQL 9.5, первая FOSS OODBMS предложила эффективный внутренний тип данных JSON (JSONB) с полным набором функций и операций для всех основных реляционных и нереляционных манипуляций.
Сравнение с СУБДР
Объектная база данных хранит сложные данные и взаимосвязи между ними напрямую, без преобразования в реляционные строки и столбцы, что делает её подходящей для приложений, работающих с очень сложными данными. Объекты находятся в отношении "многие ко многим" и к ним осуществляется доступ с использованием указателей. Указатели связываются с объектами для установления взаимосвязей. Дополнительным преимуществом OODBMS является возможность программирования с незначительными процедурными изменениями, не затрагивающими всю систему.