Главная

Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






ООСУБД(Объектно-ориентированные базы данных)


Все более усложняющиеся практические задачи стимулируют появление других моделей, точнее отражающих реальный мир. Объектно-ориентированный подход является одним из новых подходов к созданию программного обеспечения (ПО), который считается очень перспективным для решения некоторых классических проблем разработки ПО.

Базовым понятием ООТ является то, что все ПО должно всегда, когда это возможно, создаваться на основе стандартных и повторно используемых компонентов. Традиционно создание ПО и управление базами данных представляли собой совершенно разные дисциплины. Технология баз данных была сконцентрирована в основном на статических концепциях хранения информации, тогда как технология создания ПО моделировала динамические аспекты программного обеспечения. Эти две дисциплины слились воедино в объектно-ориентированных и объектно-реляционных СУБД.

Объектно-ориентированная методология моделирования и разработки основана на объектно-ориентированных концепциях. При проектировании используются автономные компьютерные структуры, называемые объектами. Каждый объект – это сущность реального мира, взаимодействующая с другими объектами.

Общепринятого определения "объектно-ориентированной модели данных" не существует. Сейчас можно говорить лишь о некоем "объектном" подходе к логическому представлению данных и о различных объектно-ориентированных способах его реализации.

Структура объектной модели описываются с помощью трех ключевых понятий:

- инкапсуляция - каждый объект обладает некоторым внутренним состоянием (хранит внутри себя запись данных), а также набором методов - процедур, с помощью которых (и только таким образом) можно получить доступ к данным, определяющим внутреннее состояние объекта, или изменить их. Таким образом, объекты можно рассматривать как самостоятельные сущности, отделенные от внешнего мира. Мы не можем напрямую обратиться к данным объекта, а должны вызывать соответствующий метод (для изменения данных или для считывания значений этих данных). Т.е. объект скрывает свою внутреннюю структуру, именно это свойство и называется "инкапсуляцией";

- наследование - подразумевает возможность создавать из классов объектов новые классы объектов, которые наследуют структуру и методы своих предков, добавляя к ним черты, отражающие их собственную индивидуальность. Наследование может быть простым (один предок) и множественным (несколько предков);

- полиморфизм - различные объекты могут по-разному реагировать на одинаковые внешние события в зависимости от того, как реализованы их методы.

Появление объектно-ориентированных СУБД вызвано потребностями программистов, программирующих на ОО языках, которым были необходимы средства для хранения объектов, не помещавшихся в оперативной памяти компьютера. Также важна была задача сохранения состояния объектов между повторными запусками прикладной программы. Поэтому, большинство ООСУБД представляют собой библиотеку, процедуры управления данными которой включаются в прикладную программу. Примеры реализации ООСУБД как выделенного сервера базы данных крайне редки.

 

Любая сущность реального мира в объектно-ориентированных языках и системах моделируется в виде объекта.

Объект – это уникально идентифицируемая сущность, которая содержит атрибуты, описывающие состояние объектов "реального мира", и связанные с ними действия.

Объект получает генерируемый системой уникальный идентификатор, связанный с объектом во все время его существования и не меняется при изменении состояния объекта. Каждый объект имеет состояние (набор значений его атрибутов) и поведение (набор методов (программный код), оперирующих над состоянием объекта). Атрибуты объектов называются переменными экземпляра (instance variables). Значение атрибута объекта – это тоже некоторый объект или множество объектов. Каждый атрибут имеет уникальное имя и тип данных.

Традиционные типы данных, называемые базовыми типами данных (base data types) или договорные типы данных (conventional data types), используются в большинстве языков программирования и включают типы real (вещественный), integer (целый), string (строковый) и т.д.

Для атрибутов определены домены – логические группы, представляющие собой набор возможных значений данного атрибута. Типы данных определяют базовые домены, т.е. тип real представляет собой все вещественные числа, тип integer – все целые числа, тип date – все возможные даты, тип string – любые комбинации символов и т.д. Однако домены базовых типов данных представляют собой лишь основу, используемую для создания более ограниченных именованных доменов на более высоком логическом уровне.

Например, мы можем создать домен SRTEMP (средняя температура). Для точного определения домена атрибута SRTEMP мы должны создать домен с именем ‘SRTEMP’. Каждый домен имеет имя и описание, включая базовый тип данных, размер, формат и ограничения на значения домена. Поэтому мы можем определить домен ‘SRTEMP’ как любое вещественное число с двумя знаками после запятой. Домен может также определяться как список возможных значений, разделенных запятыми. Например, домен ‘STUDENT’ может быть определен как (NSTUD, FIO, GR, LANGUAGE).

Атрибут объекта может быть однозначным или многозначным, т.е. атрибут может получить из своего домена одно или несколько значений.

Все операции, выполняемые объектом, реализуются с помощью методов. Методы используются для изменения значений атрибутов объекта или для получения значений указанных атрибутов. Методы представляют собой реальные действия, такие, например, как изменение специализации студента, добавление студента в группу, распечатка адресов студентов и т.д. Можно сказать, что методы эквивалентны процедурам в традиционных языках программирования. В терминах ОО методы определяют поведение объекта.

Для каждого метода определяются имя (name) и тело (body). Тело состоит из компьютерных инструкций на некотором языке программирования, описывающих некоторое реальное действие.

Для инициализации метода объекту посылается сообщение. При отправлении сообщения (message) задаются объект-адресат, имя метода и все необходимые параметры.

Множество объектов с одним и тем же набором атрибутов и методов образует класс объектов. . Т.е. класс представляет собой набор подобных объектов с разделяемыми структурой (атрибутами) и поведением (методами). Класс содержит подробное описание структуры данных и реализации методов для объектов данного класса. Поэтому все объекты в классе используют одинаковую структуру и отвечают на одинаковые сообщения.

Классы организуются в иерархию классов.

Объект должен принадлежать только одному классу. Объекты имеют общие свойства, но каждый объект существует во времени и пространстве независимо от других объектов.

Наиболее важным качеством ООБД является то, что проектирование, разработка и сопровождение прикладной системы (с использованием ООБД) становится процессом, в котором интегрируются структурный и поведенческий аспекты.

Объектная технология расширяет традиционную методику разработки приложений новым моделированием данных и методами программирования. Для повторного использования кода и улучшения сохранности и целостности данных в объектном программировании данные и код для их обработки организованы в объекты. Таким образом, практически полностью снимаются ограничения на типы данных.

В ООСУБД каждая определенная пользователем структура – это объект, непосредственно управляемый базой данных. Пользователь просто объявляет связь, и СУБД автоматически генерирует методы управления, динамически создавая, удаляя и пересекая связи. Ссылки при этом прямые, нет необходимости в просмотре и сравнении или даже поиске индекса, который может сильно сказаться на производительности. Поэтому применение объектной модели предпочтительнее для баз данных с большим количеством сложных связей: перекрестных ссылок, ссылок, связывающих несколько объектов с несколькими (many-to-many relationships) двунаправленными ссылками.

В отличие от реляционных СУБД, ООСУБД полностью поддерживают объектно-ориентированные языки программирования. Разработчики, применяющие С++ или Smalltalk, имеют дело с одним набором правил (позволяющим использовать все преимущества объектной технологии (наследование, инкапсуляцию и полиморфизм). Разработчик не должен прибегать к трансляции объектной модели в реляционную и обратно. Прикладные программы обращаются и функционируют с объектами, сохраненными в базе данных, которая использует стандартную объектно-ориентированную семантику языка и операции.

ООСУБД хорошо подходят (опять же без трансляций между объектной и реляционной моделями) для организации распределенных вычислений. Традиционные базы данных (в том числе и реляционные и некоторые объектные) построены вокруг центрального сервера, выполняющего все операции над базой. По существу, эта модель мало отличается от мэйнфреймовой организации 60-х годов с центральной ЭВМ – мэйнфреймом (mainframe), выполняющей все вычисления, и пассивных терминалов.

В настоящее время рабочие станции (клиенты) имеют вычислительную мощность порядка 30 - 50 % мощности сервера базы данных, то есть большая часть вычислительных ресурсов может быть распределена среди клиентов. Поэтому все больше приложений, и в первую очередь базы данных и средства принятия решений, работают в распределенных средах, в которых объекты (объектные программные компоненты) распределены по многим рабочим станциям и серверам и где любой пользователь может получить доступ к любому объекту.

Благодаря стандартам межкомпонентного взаимодействия все эти фрагменты кода комбинируются друг с другом независимо от аппаратного, программного обеспечения, операционных систем, сетей, компиляторов, языков программирования, различных средств организации запросов и формирования отчетов, и динамически изменяются при манипулировании объектами без потери работоспособности.

Объектно-ориентированная база данных (ООБД) позволяют программистам на языках третьего поколения интерпретировать все свои информационные сущности как объекты, хранящиеся в оперативной памяти. Дополнительный интерфейсный уровень абстракции обеспечивает перехват запросов, обращающихся к тем частям базы данных, которые находятся в постоянном хранилище на диске. Изменения, вносимые в объекты, оптимальным образом переносятся из памяти на диск.

Преимущество ООСУБД – упрощенный код. Приложения получают возможность интерпретировать данные в контексте того языка программирования, на котором они написаны. Реляционная база данных возвращает значения всех полей в текстовом виде, а затем они приводятся к локальным типам данных. В ООБД этот этап ликвидирован.

Данные в ООСУБД способны принять вид любой структуры, которую можно выразить на используемом языке программирования. Отношения между сущностями также могут быть произвольно сложными. ООБД управляет кэш буфером объектов, перемещая объекты между буфером и дисковым хранилищем по мере необходимости.

С помощью ООСУБД:

· сложные информационные структуры выражаются лучше, чем в реляционных БД,

· устраняется необходимость транслировать данные из того формата, который поддерживается в СУБД.

Объектно-ориентированные СУБД выполняют много дополнительных функций. Это окупается сполна, если отношения между данными очень сложны. В таком случае производительность ООБД оказывается выше, чем у реляционных СУБД. Если же данные менее сложны, дополнительные функции оказываются избыточными.

В этой модели данных поддерживаются и нерегламентированные запросы, но языком их составления не обязательно является SQL. Если логическое представление не соответствует SQL, то применение SQL становится бессмысленным, и есть смысл составлять нерегламентированные запросы, используя язык описания объекта ООСУБД.

И именно это же является самым большим недостатком ООСУБД ‑ то, что последние оказываются тесно связанными с применяемыми языками программирования, ибо к ним могут обратиться далеко не все приложения (а только те, которые работают с соответствующими языками программирования



Последнее изменение этой страницы: 2016-06-09

headinsider.info. Все права принадлежат авторам данных материалов.