Введение

Техника программирования

Отображение объектов в реляционную базу данных (ORM, O/RM, и инструмент O/R mapping) в информатике — это техника программирования для преобразования данных между реляционной базой данных и областью памяти кучи языка объектно-ориентированного программирования. Это создает, по сути, виртуальную объектную базу данных, которая может использоваться в рамках языка программирования. В объектно-ориентированном программировании задачи управления данными оперируют объектами, которые объединяют скалярные значения в объекты. Например, рассмотрим запись в адресной книге, представляющую одного человека вместе с нулем или более номерами телефонов и нулем или более адресами. Это можно смоделировать в объектно-ориентированной реализации как «объект Человек» с атрибутом/полем для хранения каждого элемента данных, составляющего запись: имя человека, список телефонных номеров и список адресов. Список телефонных номеров сам по себе будет содержать «объекты ТелефонныйНомер» и так далее. Каждая такая запись в адресной книге рассматривается языком программирования как единый объект (например, на него может ссылаться одна переменная, содержащая указатель на объект). С объектом могут быть связаны различные методы, такие как методы для возврата предпочтительного номера телефона, домашнего адреса и т. д. В отличие от этого, реляционные базы данных, такие как SQL, группируют скалярные значения в кортежи, которые затем перечисляются в таблицах. Кортежи и объекты имеют некоторое общее сходство, поскольку оба являются способами объединения значений в именованные поля, так что вся коллекция может быть обработана как единое составное целое. Однако у них много различий, в частности: управление жизненным циклом (вставка и удаление строк по сравнению со сборкой мусора или подсчетом ссылок), ссылки на другие сущности (ссылки на объекты по сравнению со ссылками на внешние ключи) и наследование (отсутствующее в реляционных базах данных). Кроме того, объекты управляются в куче и находятся под полным контролем одного процесса, в то время как кортежи базы данных являются общими и должны включать механизмы блокировки, слияния и повторных попыток. Отображение объектов в реляционную базу данных обеспечивает автоматическую поддержку сопоставления кортежей с объектами и обратно, учитывая все эти различия. Суть проблемы заключается в преобразовании логического представления объектов в атомизированную форму, которую можно хранить в базе данных, сохраняя при этом свойства объектов и их взаимосвязи, чтобы их можно было перезагрузить как объекты при необходимости. Если эта функциональность хранения и извлечения реализована, объекты считаются постоянными. Недостатки инструментов ORM обычно связаны с высоким уровнем абстракции, скрывающим то, что на самом деле происходит в коде реализации. Кроме того, сильная зависимость от программного обеспечения ORM была названа одним из основных факторов, приводящих к созданию плохо спроектированных баз данных.

Объектно-ориентированные базы данных

Другой подход заключается в использовании объектно-ориентированной системы управления базами данных (OODBMS) или баз данных, ориентированных на документы, таких как нативные XML-базы данных, которые обеспечивают большую гибкость в моделировании данных. OODBMS – это базы данных, разработанные специально для работы с объектно-ориентированными значениями. Использование OODBMS избавляет от необходимости преобразования данных в формат SQL и обратно, поскольку данные хранятся в исходном объектном представлении, а связи представляются напрямую, без использования объединений таблиц или соответствующих операций. Для баз данных, ориентированных на документы, эквивалентом ORM являются объектно-документные отображатели (ODM). Базы данных, ориентированные на документы, также избавляют пользователя от необходимости "разбивать" объекты на строки таблиц. Многие из этих систем также поддерживают язык запросов XQuery для извлечения наборов данных. Объектно-ориентированные базы данных обычно используются в сложных, специализированных приложениях. Одним из аргументов против использования OODBMS является то, что они могут быть неспособны выполнять произвольные, не зависящие от приложения запросы. По этой причине многие программисты предпочитают системы отображения объектов в SQL, даже если большинство объектно-ориентированных баз данных способны обрабатывать SQL-запросы в ограниченной степени. Другие OODBMS обеспечивают репликацию в базы данных SQL, чтобы удовлетворить потребность в произвольных запросах, сохраняя при этом известные шаблоны запросов.

Вызовы

Возникает ряд трудностей при сопоставлении объектной системы с реляционной базой данных. Эти трудности известны как несоответствие объектно-реляционных моделей. Альтернативой реализации ORM является использование встроенных процедурных языков, предоставляемых каждой основной системой управления базами данных. К ним можно обращаться из клиентского приложения, используя SQL-запросы. Шаблон проектирования "Объект доступа к данным" (DAO) используется для абстрагирования этих запросов и предоставления легковесного объектно-ориентированного интерфейса для остальной части приложения.