Сущность ООБД
Суть объектно-ориентированной БД определяется объектно-ориентированным подходом (рис. 7.1), который подразумевает объектно-ориентированное проектирование и объектно-ориентированное программирование.
Рис. 7.1. Объектно-ориентированный подход
Объектно-ориентированное проектирование – методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логических и физических, а также статических и динамических моделей проектируемой системы.
Объектно-ориентированное программирование – методология программирования, основанная на представлении программ в виде связанной совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию по наследованию.
Объектно-ориентированное проектирование предполагает не только деление (декомпозицию) базы знаний или базы данных на составные части (рис. 7.2), но и рассмотрение общей этапности реализации БД, выбор инструмента реализации с учетом оговоренных в техническом задании вариантов реализации.
Рис. 7.2. Объектно-ориентированное проектирование
Объектно-ориентированное программирование берет за основу модель атомарного элемента (рис. 7.1).
Дело в том, что, несмотря на мощные средства отладки программ, ДЛЯ повышения производительности процедуры программирования целесообразно отлаживать программы последовательно, по блокам. Программа в целом отлаживается быстрее, если блоки были отлажены заранее. Эти предпосылки и положены в основу объектно-ориентированного программирования.
Любая математическая модель имеет вид, представленный на рис. 7.1, а сложная – на рис. 7.3.
Выделяется несколько специфических понятий. Класс – это фактически некоторый блок со структурой (рис. 7.1), Однако здесь используется несколько другая терминология. Данные называют свойствами, а алгоритмы – методами. Доступ к классу осуществляется через свойства – в статическом режиме написания и отладки программы или через методы – в процессе выполнения (работы) программы.
Начало работы класса задается с помощью специальных внутренних (например, нажатие кнопки) или внешних (вызов из другой подпрограммы) сигналов, называемых событиями.
Программную реализацию класса называют компонентой. Реализация компоненты в некоторой прикладной программе получила название объекта.
В объектно-ориентированном программировании используются три основных принципа: инкапсуляция, наследование, полиморфизм.
Инкапсуляция – выделение класса с доступом к нему через свойства или методы.
Рис. 7.3. Объектно-ориентированное программирование
Наследование – трансформация класса путем изменения свойств и методов с помощью методов, называемых конструктором и деструктором.
Все классы (компоненты) строятся по иерархическому принципу с происхождением от некоторого исходного класса.
Полиморфизм позволяет использовать метод с одним именем как в базовом, так и в производных классах. Дело в том, что количество классов значительно: уже сейчас оно приближается к ста и продолжает расти. Если для производных классов применять для однотипных, "похожих" методов (например, начертание квадрата и окружности) разные имена, пользователю, особенно начинающему, будет сложно освоиться с таким разнообразием имен.
Приведем основные положения ООБД, базирующиеся на объектно-ориентированном подходе.
1. В качестве значения столбца может быть использован произвольный кортеж. Иными словами, столбец может являться как бы некоторой другой таблицей. Таким образом, создается возможность реализации таблиц с нелинейной структурой.
2. Процедура манипуляции данными позволяет присоединять процедуры, определенные значениями столбцов.
3. Данные столбцов могут наследоваться.
4. Элементами отношений могут служить нс только отдельные элементы, как в реляционных БД, но и множества.
5. Формируются классы данных, которые организуют столбцы в иерархию.
Базовым языком ООБД чаще всего является С++. Для работы с такими ООБД разрабатывается новый вариант языка программирования SQL, получивший название SQL3 и содержащий внутри себя в качестве частного случая реляционную модель (SQL2). Если SQL2 определяет семь способов связывания со стандартными языками программирования, в SQL3 это количество предполагается увеличить.
В технологии разработки ООБД конкурирует два направления.
• Distributed Object Linking and Embedding (OLE) фирмы Microsoft.
• Common Object Request Broker Architecture (CORBA) группы OBDMG, поддерживаемая фирмами IBM, Novell, DEC, с ориентацией на все платформы. В рамках этого направления выделены и сформированы указанные ранее язык определения объектов Object Definition Language (ODL); объектный язык запроса Object Query Language (OQL); язык определения интерфейсов Interface Definition Language (IDL).
Во втором направлении обычно выделяют [4] два стандарта управления БД:
• ODL/OQL, в котором объекты и методы формируются обычно с помощью языка программирования С;
• язык программирования SQL3, некоторые особенности которого описаны в гл. 9.
Необходимо отметить, что к объектно-ориентированным возможно отнести только те базы данных, у которых все структурные элементы реализации (см. рис. 7.2) построены с использованием объектно-ориентированного подхода. Если хотя бы один структурный элемент реализации не использует объектно-ориентированный подход, говорят об объектно-реляционной базе данных (ОРБД), которые будут представлены подробнее в гл. 8.
Таким образом, чтобы воспользоваться объектно-ориентированным подходом в построении собственно БД, необходимо:
1) провести инкапсуляцию данных, т. е. выделить классы и объекты;
2) определить возможные виды структуры реализуемых таблиц;
3) создать наследование классов данных;
4) обеспечить полиморфизм.
Реализация даже первой позиции неоднозначна и различна, например в ООСУБД и ОРСУБД. Имеется некоторое отличие даже в рамках различных ООСУБД.
В различных ООБД существует несколько отличный, по крайней мере по терминологии, набор свойств. В то же время существенного различия между наборами свойств нет, и потому иллюстрируем их на примере ООСУБД CACHE.
В ней выделяют классы типов данных и классы самих данных (классы объектов, таблицы).
Если провести аналогию с терминами реляционной БД, то понятию "класс (объект)" ООБД соответствует примерно понятие "таблица", а понятию "свойство" – "поле (столбец) таблицы".
В качестве свойств [38, 40] приняты константы, ссылки на объекты, встроенные объекты, потоки данных (BLOB и CLOB), коллекции в виде массивов (Array) и списков (List), многомерные свойства. К свойствам относят и связи между объектами.
Для свойств имеются типы, основными из которых являются Currency (денежный), Date, Float, Integer, List (список), Name (имя), Numeric, Status (ошибки), String.
В качестве типов свойств могут выступать связи, которые [40| можно разделить на простые, реализуемые ссылками, и отношения, иногда называемые ассоциациями. При ссылке в качестве типа свойств выступает класс (объект), с которым связывается данное свойство. Возможно встраивание одного объекта в другой. В ассоциациях выделяют отношения ONE-TO-MANY (1:М) и PARENT- CHILDREN (родитель – дети).
Различают три основные группы методов: кол (на языке Cache ObjectScript), выражение (фрагмент кода, вызываемый по значению), вызов. Нетрудно видеть, что данные ячеек неатомарны.
Структура ООБД может быть построена различными способами: с помощью визуального языка, языков программирования Cache ObjectScript, SQL.
В других ООСУБД для этих целей часто используют язык С++.
ООБД в рамках системы OLTP и OLAP взаимодействует с многомерной моделью данных (ММД). Обсудим специфику ММД.