Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Объектно-ориентированные СУБД.
Термин " объект" в программной индустрии впервые был введен в языке Simula (1967 г.) и означал какой-либо аспект моделируемой реальности. Сейчас под объектом понимается " нечто, имеющее четко определенные границы" (определение известного американского специалиста Г.Буча). Объекты, обладающие одинаковыми свойствами, составляют классы (например, курица, пингвин и чайка - объекты класса " птицы" ). Обычно класс описывается как новый тип данных, а объекты (экземпляры класса) - определенные на его основе переменных. Объектно-ориентированная парадигма. Сразу же необходимо заметить, что общепринятого определения " объектно-ориентированной модели данных" не существует. Сейчас можно говорить лишь о неком " объектном" подходе к логическому представлению данных и о различных объектно-ориентированных способах его реализации. Мы знаем, что любая модель данных должна включать три аспекта: структурный, целостный и манипуляционный. Посмотрим, как они реализуются на основе объектно-ориентированная парадигмы программирования: Структура: Структура объектной модели описываются с помощью трех ключевых понятий:
· Class Point { // вводим новый тип данных - объект " точка" · X, Y: int; // данные объекта - координаты точки ·......... · Point(X: int, Y: int); // конструктор объекта - процедура, вызываемая при · // определении переменной на базе объекта и · // присваивающая значения его данным ·......... · Draw(); // метод " нарисовать точку" · Erase(); // метод " стереть точку" · Move(newX, newY); // метод " переместить точку" (изменяет данные объекта) · int GetX(); // метод " получить значение поля X" · int GetY(); // метод " получить значение поля Y" ·......... · // все методы должны быть описаны, например · // реализация метода Move: · · Move(newX: int, newY: int) { · X=newX; // запись новых данных в объект · Y=newY; // · } · } // конец описания объекта · · Begin // основная процедура программы · · Point A(0, 0); // создать новый объект и присвоить ему данные · · for i=1 to 100 // создать цикл · A.Draw(); // нарисовать точку · A.Hide(); // стереть точку · A.Move(i, i*10); // присвоить экземпляру объекта новые данные · endfor; // · · print(A.GetX(), A.GetY()); // получить и напечатать данные объекта · End. Из этого примера видно, что мы не можем напрямую обратиться к данным объекта, а должны вызывать метод Move для изменения его данных и GetX, GetY для считывания значений этих данных. Т.е. объект скрывает свою внутренню структуру, именно это свойство и называется " инкапсуляцией".
· Class Circle extend Point { // создаем новый объект " окружность", наследующий · // свойства объекта " точка" · Radius: int; // добавляем новое поле " радиус", поля X и Y наследуются · // от родительского объекта ·............. · Circle(X: int, Y: int, Radius: int); // конструктор нового объекта ·............. · Draw(); // переопределяем некоторые методы · Hide(); // родительского объекта, метод Move наследуется ·............. · ChangeRadius(Radius); // вводим новый метод " изменить радиус" ·............. · GetRadius(); // вводим новый метод " получить значение радиуса" · // методы GetX и GetY наследуются от родительского · // объекта }
· Begin · Point A(100, 100); · Circle B(200, 200, 50); · · A.Draw(); // рисует точку · B.Draw(); // рисует окружность End. Целостность данных: Для поддержания целостности объектно-ориентированный подход предлагает использовать следующие средства:
Средства манипулирования данными: К сожалению, в объектно-ориентированном программировании отсутствуют общие средства манипулирования данными, такие как реляционная алгебра или реляционное счисление. Работа с данными ведется с помощью одного из объектно-ориентированных языков программирования общего назначения, обычно это SmallTalk, C++ или Java. Подведем теперь некоторые итоги: В объектно-ориентированных базах данных, в отличие от реляционных, хранятся не записи, а объекты. ОО-подход представляет более совершенные средства для отображения реального мира, чем реляционная модель:
В то же время, ОО-модели присущ и ряд недостатков:
Очевидно, что оба эти недостатка связаны с отсутствием развитых средств манипулирования данными. Эта задача решается двумя способами - расширение ОО-языков в сторону управления данными (стандарт ODMG), либо добавление объектных свойств в реляционные СУБД (SQL-3, а также так называемые объектно-реляционных СУБД). Объектно-ориентированные СУБД. Появление объектно-ориентированных СУБД вызвано потребностями программистов на ОО-языках, которым были необходимы средства для хранения объектов, не помещавшихся в оперативной памяти компьютера. Также важна была задача сохранения состояния объектов между повторными запусками прикладной программы. Поэтому, большинство ООСУБД представляют собой библиотеку, процедуры управления данными которой включаются в прикладную программу. Примеры реализации ООСУБД как выделеного сервера базы данных крайне редки. В качестве примера рассмотрим объектно-ориентированную СУБД ObjectStore, которая обеспечивает долговременное хранение в базе данных объектов, созданных программами на языках C++ и Java. Вся работа с объектами ведется обычными средствами включающего ОО-языка. При этом СУБД как бы расширяет виртуальную память операционной системы. Происходит это следующим образом. Когда прикладная программа обращается к объекту, то ищет его по адресу в оперативной памяти. Нужная страница оперативной памяти может быть вытеснена в виртуальную память (область хранения неиспользуемых страниц оперативной памяти на диске). Если объекта с таким адресом в виртуальной памяти не существует, то операционная система генерирует ошибку. СУБД эту ошибку перехватывает и извлекает объект из базы данных. ObjectStore поддерживает транзакции (в данный момент времени может существовать только одна транзакция), допускает методы доступа: хеш-таблица для несортированных данных и B-дерево для сортированных, также возможно использование SQL. Бесплатную копию ObjectStore можно получить с веб-сервера компании Object Design Inc. Стандарт ODMG. ODMG (Object Data Management Group) - консорциум поставщиков ООБД и других заинтересованных организаций, созданный в 1991 г. Его задачей является разработка стандарта на хранение объектов в базах даннных. В настоящее время опубликован вторая версия стандарта, которую так и называют ODMG 2.0. Рассмотрим кратко основные положения этого документа. Стандарт на хранение объектов ODMG 2.0 разработан на основе трех существующих стандартов: управление базами данных (SQL), объекты (стандарты OMG - Object Management Group) и стандарты на объектно-ориентированные языки программирования (C++, Smalltalk, Java). ODMG добавляет возможности взаимодействия с базами данных в объектно-ориентированные языки программирования: определяются средства долговременного хранения объектов и расширяется семантика языка, вносятся операторы управления данными. Стандарт состоит из нескольких частей: |
Последнее изменение этой страницы: 2017-05-05; Просмотров: 397; Нарушение авторского права страницы