Объектно-ориентированная модель данных
Объектно-ориентированная модель данных (ООМД) — это модель данных, в которой информация представляется в виде совокупности объектов, взаимодействующих между собой посредством сообщений. Каждый объект обладает уникальным идентификатором, состоянием (набором атрибутов) и поведением (набором методов). Данная модель является развитием объектно-ориентированного подхода в программировании и применяется для проектирования баз данных, систем управления базами данных (СУБД) и информационных систем, где требуется моделирование сложных сущностей реального мира.
Основные понятия
Объект
Объект — это базовый элемент модели, который представляет собой конкретную сущность предметной области. Каждый объект имеет:
- Уникальный идентификатор (OID — Object Identifier), который не зависит от значений его атрибутов и не изменяется в течение всего времени существования объекта.
- Состояние — совокупность значений атрибутов (свойств), описывающих текущие характеристики объекта.
- Поведение — набор методов (процедур или функций), которые могут быть выполнены над объектом или самим объектом.
Класс
Класс — это шаблон (тип) для создания объектов. Он определяет структуру атрибутов и методов, которыми будут обладать все объекты данного класса. Объекты, созданные на основе одного класса, называются экземплярами этого класса. Например, класс «Студент» может включать атрибуты «ФИО», «Группа», «Средний балл» и методы «Зачислить», «Отчислить», «Изменить группу».
Инкапсуляция
Инкапсуляция — принцип, при котором внутреннее устройство объекта (реализация методов и хранение атрибутов) скрыто от внешнего мира. Доступ к состоянию объекта возможен только через его публичные методы (интерфейс). Это обеспечивает защиту данных от некорректного использования и упрощает модификацию реализации без изменения внешнего кода.
Наследование
Наследование — механизм, позволяющий создавать новый класс (подкласс, производный класс) на основе существующего (суперкласса, базового класса). Подкласс наследует все атрибуты и методы суперкласса, а также может добавлять собственные или переопределять унаследованные. Например, класс «Аспирант» может наследовать от класса «Студент», добавляя атрибут «Тема диссертации».
Полиморфизм
Полиморфизм — способность объектов разных классов, имеющих общего предка, по-разному реагировать на одно и то же сообщение (вызов одного и того же метода). Это позволяет единообразно обрабатывать объекты различных типов, если они поддерживают общий интерфейс. Например, метод «Рассчитать стипендию» может по-разному вычисляться для студентов и аспирантов.
Связи между объектами
В объектно-ориентированной модели данных выделяют несколько типов связей:
- Ассоциация — структурная связь между объектами разных классов (например, «Студент учится в Группе»).
- Агрегация — отношение «часть-целое», при котором объект-часть может существовать независимо от объекта-целого (например, «Компьютер состоит из Процессора, Памяти и Диска»).
- Композиция — более строгая форма агрегации, при которой объект-часть не может существовать без объекта-целого (например, «Страница является частью Книги»).
- Обобщение — отношение «является» (is-a), реализуемое через наследование.
История развития
Идеи объектно-ориентированного подхода начали формироваться в 1960-х годах. Язык программирования Simula-67, разработанный Оле-Йоханом Далем и Кристеном Нюгором, впервые ввёл понятия классов и объектов. В 1970-х годах Алан Кэй разработал язык Smalltalk, который заложил основы современного объектно-ориентированного программирования, включая полиморфизм и динамическую типизацию.
Применение объектно-ориентированных принципов к базам данных началось в 1980-х годах. В 1985 году была опубликована статья «Объектно-ориентированные базы данных» (Object-Oriented Databases), а в 1989 году — манифест объектно-ориентированных систем управления базами данных (ООСУБД), авторами которого стали Малкольм Аткинсон, Дэвид Дьюитт и другие. В 1990-х годах появились первые коммерческие ООСУБД, такие как ObjectStore, GemStone, Versant. В 1997 году был принят стандарт ODMG (Object Data Management Group), который определял модель данных и язык запросов OQL (Object Query Language).
В 2000-х годах объектно-ориентированная модель данных оказала значительное влияние на развитие реляционных СУБД, которые начали внедрять объектно-реляционные расширения (SQL:1999, SQL:2003). В настоящее время чисто объектно-ориентированные СУБД занимают нишевую позицию, уступая по популярности реляционным и NoSQL-системам, однако объектно-ориентированный подход широко используется в объектно-реляционных СУБД (Oracle, PostgreSQL) и в объектно-ориентированных расширениях языков программирования.
Сравнение с реляционной моделью
Объектно-ориентированная модель данных отличается от реляционной модели по нескольким ключевым параметрам:
| Характеристика | Реляционная модель | Объектно-ориентированная модель |
|---|---|---|
| Единица данных | Отношение (таблица) | Объект |
| Идентификация | Первичный ключ (значения атрибутов) | Уникальный идентификатор (OID) |
| Связи | Внешние ключи | Прямые ссылки (указатели) |
| Поведение | Отсутствует (только данные) | Включает методы |
| Наследование | Не поддерживается | Поддерживается |
| Сложность моделирования | Нормализация, разбиение на таблицы | Естественное представление сущностей |
Основное преимущество ООМД — более естественное представление сложных взаимосвязей и иерархий, а также возможность хранения не только данных, но и методов их обработки. Недостатки включают сложность реализации запросов (отсутствие мощного декларативного языка, подобного SQL), проблемы с производительностью при работе с большими объёмами данных и меньшую распространённость по сравнению с реляционными системами.
Применение
Объектно-ориентированная модель данных используется в следующих областях:
- Системы автоматизированного проектирования (САПР) — для хранения сложных геометрических и конструкторских данных.
- Геоинформационные системы (ГИС) — для представления пространственных объектов (здания, дороги, реки) с их атрибутами и поведением.
- Мультимедийные базы данных — для хранения изображений, видео, аудио с метаданными и методами обработки.
- Научные и инженерные расчёты — для моделирования сложных физических процессов.
- Телекоммуникационные системы — для управления сетевыми объектами (маршрутизаторы, коммутаторы).
Критика
Объектно-ориентированная модель данных подвергается критике по нескольким причинам:
- Сложность реализации запросов — отсутствие единого стандарта языка запросов (OQL не получил широкого распространения) и необходимость навигации по связям между объектами.
- Проблема «несоответствия импеданса» — различие между объектной моделью в памяти и способом хранения данных на диске.
- Сложность обеспечения целостности — при наследовании и полиморфизме трудно гарантировать непротиворечивость данных.
- Отсутствие широкой поддержки — малое количество коммерческих СУБД и инструментов разработки по сравнению с реляционными системами.
Современное состояние
В настоящее время объектно-ориентированная модель данных редко используется в чистом виде. Большее распространение получили объектно-реляционные СУБД (Oracle, PostgreSQL, Microsoft SQL Server), которые сочетают реляционное хранение с объектно-ориентированными возможностями (пользовательские типы данных, наследование таблиц, методы). Кроме того, объектно-ориентированный подход активно применяется в NoSQL-системах, таких как документо-ориентированные СУБД (MongoDB, Couchbase), где данные хранятся в виде JSON-документов, напоминающих объекты.
Источники
- Аткинсон М., Дьюитт Д., Майер Д., Бансилон Ф., Диттрих К., Ким В., Цуру С. Манифест объектно-ориентированных систем баз данных (1989).
- Ким В. Введение в объектно-ориентированные базы данных. — MIT Press, 1990.
- Каттелл Р. Руководство по объектно-ориентированным базам данных. — Addison-Wesley, 1991.
- Стандарт ODMG 3.0 (1997).
- Коннолли Т., Бегг К. Базы данных: проектирование, реализация и сопровождение. — 6-е изд. — Вильямс, 2017.
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных: полный курс. — Вильямс, 2003.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →