русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Особенности программирования объектной СУБД


Дата добавления: 2013-12-23; просмотров: 1020; Нарушение авторских прав


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

Покажем на небольшом примере различие в написании программ. Допустим, необходимо занести в базу данных такие сведения о сотруднике, как имя и возраст, а также фамилию непосредственного начальника. Предположим, что сведения хранятся в реляционной таблице «персонал», которая имеет поля: «имя», «возраст» и «начальник». При добавлении в реляционную базу сведений о сотруднике Иванове, 30 лет, у которого начальник по фамилии Сидоров, на языке SQL надо написать текст:

 

INSERT INTO PERSONAL

VALUE(<<ИВАНОВ>>, 30, <<СИДОРОВ>>)

 

Сведения о Сидорове в таблице уже имеются, он также имеет начальника, а последний - тоже, и т. д. Все делается довольно просто, но если, например, необходимо извлечь информацию о всех начальниках Иванова, то при выборке следующей записи инициируется процесс поиска строки по первичному ключу в первом столбце таблицы, что снижает скорость выполнения запроса. Если же для программирования используется язык высокого уровня, а запросы отправляются с него в реляционную базу, то ситуация практически не изменится. Так, фрагмент программы на Cи++, добавляющий новую запись, может иметь вид:



 

TTable *pTable=new TTable();

pTable->Assign("Personal");

TVarRecord newrec;

newrec.Add("ИВАНОВ");

newrec.Add(30);

newrec.Add("СИДОРОВ");

pTable->AppendRecord(&newrec);

pTable->Close();

delete pTable;

 

Теперь запишем то же самое, но сохраним данные в объектной базе. Пример, рассматриваемый ниже, иллюстрирует подход, принятый в СУБД Poet фирмы Poet Software GmbH. Данные о сотруднике присутствуют в объекте класса TPerson, объявленного следующим образом:

persistent class TPerson {

char *m_pszName;

int m_iAge;

TPerson *m_pChief;

public:

TPerson(char *pszName, int Age, TPerson *pChief){

//реализация конструктора

}

};

 

Обратите внимание на слово persistent (стабильный) в объявлении класса, означающее, что объекты типа TPerson будут сохраняться в базе данных. Далее будем называть такие объекты стабильными, сохраняющими свое состояние между сеансами работы программы. Объектная база данных, по существу представляющая собой хранилище стабильных объектов, может образовываться различными способами в зависимости от реализации: введением в язык программирования нового ключевого слова, предоставлением специального метода для создания объектов или наследованием от специального предопределенного типа. Таким образом, программисту достаточно объявить объект «стабильным», а затем уже СУБД сама отслеживает изменения, отменяет ссылки на удаленные объекты и создает версии объектов. В нашем случае добавление нового объекта, в котором собраны сведения об Иванове, выглядит так:

 

TPerson *pIvanov =new TPerson("ИВАНОВ", 30, pSidorov);

 

Что касается последнего параметра, то в объектной СУБД ссылка на непосредственного начальника хранится в виде указателя, и для перехода к объекту «Сидоров» не выполняется никакого поиска.

Объектная СУБД предоставляет широкий набор средств управления базой, а именно: управление транзакциями (когда программист на уровне исходного текста задает их начало и конец); блокировку базы или набора сохраненных в ней объектов; получение на клиентском месте сведений о том, как проходит инициированный клиентом запрос, чтобы либо ждать завершения процесса, либо прервать его. В качестве языка запросов используются различные варианты объектного языка запросов (OQL - Object Query Language), расширенный SQL, дополненный объектными свойствами, средствами описания типов данных и итерации по объектам в базе данных.

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

"Краеугольными камнями" концепции объектного программирования являются следующие:

- наследование, инкапсуляция данных и полиморфизм [подробнейшую информацию о которых можно найти в любом руководстве по программированию, например в книге Гради Буча "Объектно-ориентированное программирование"; (М.: Мир, 1992)].

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

Вкратце поясним терминологию, используемую для описания функциональности объектной базы данных:

- целостность данных - имеется в виду как структурная, так и логическая целостность базы данных, а для объектных СУБД важно поддержание соответствия между объектами в базе и объектами, переданными клиенту;

- параллелизм - механизм, гарантирующий успешное разрешение конфликтов, возникающих при одновременном доступе к одним и тем же данным;

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

- безопасность данных - одно из ключевых понятий в мире СУБД, поскольку часто в базах хранится конфиденциальная и даже секретная информация;

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

Наиболее яркой особенностью объектных баз данных можно считать объединение объектно-ориентированного программирования с технологией баз данных для создания интегрированной среды разработки приложений. В связи с этим стоит упомянуть объектную СУБД Jasmine фирмы Computer Associates, в которой имеется среда разработки приложений JADS (Jasmine Applications Developer System), по идеологии создания приложений напоминающая Delphi компании Borland.

В состав инструментария входит конструктор форм, которые можно собирать из визуальных элементов (кнопок, редакторов, картинок, кнопок выбора и т. п.) и программных (объектов, запросов, сообщений). JADS включает браузеры объектов базы данных, классов, а также удобный &quot;помощник&quot; для написания собственных программ методов.

Объектная база данных обеспечивает доступ к различным источникам данных (в том числе к реляционным СУБД), а также разнообразные средства манипуляции с объектами. Это интерфейсы СУБД с объектными языками программирования Cи++, Java, Смолток и набор ActiveX-элементов (модулей, воспринимающих высокоуровневые команды от приложений VisualBasic, Delphi и т. п.), применяемых разработчиком в своей программе для работы с СУБД. Так, с помощью ODBC (Open Database Connectivity - драйвер доступа к базам данных) к данным объектной базы получают доступ программы, использующие SQL. Если такая СУБД включает ORB-модуль (Object Request Broker, брокер объектных запросов) - средство взаимодействия объектных приложений по протоколу CORBA (Common Object Request Brokers Architecture, общая архитектура брокеров объектных запросов), то для ее объектов открывается путь в сети, в том числе и в Internet.

В современных технологиях без стандартов не обойтись, особенно разработчикам приложений. Не составляют исключения и технологии объектных СУБД. Поэтому в 1992 г. ведущие разработчики объектных СУБД образовали группу ODMG (Object Database Management Group) по выработке и согласованию стандартов. Специфика ее деятельности заключается не в создании новых стандартов, а в развитии уже существующих в OMG (Object Management Group ANSI, группа выработки стандартов объектного программирования) и разработке порядка их использования для достижения совместимости конечных прикладных программ с интерфейсом любой объектной СУБД. К настоящему времени выработаны стандарты объектной модели данных ODL (Object Definition Language, языка описания объектов), языка запросов OQL (Object Query Language, дополнения языков программирования Cи++, Смолток, Java).

Объектная модель, установленная ODMG, базируется на модели группы OMG, созданной несколькими годами ранее. В дополнение к известным объектным концепциям в новом стандарте предложены расширения для обмена с базой данных, например вводятся понятия отношений между объектами, транзакций. ODL, являющийся расширением IDL (Interface Definition Language, языка определения интерфейсов объектов), предназначен только для описания интерфейса объекта с внешним миром, а реализацию базы он никак не затрагивает и не ограничивает. Следует иметь в виду, что IDL принят в качестве стандарта описания объектных интерфейсов в CORBA. OQL включает объектное расширение языка SQL-92 таким образом, что большинство запросов, адресованных реляционной СУБД, будут выполняться и в объектных базах данных. Стандарт ODMG осуществляет поддержку операций над стабильными объектами, помогает встраивать в программы на Cи++, Смолток, Java выражения на языке OQL и содержит средства управления транзакциями и средства навигации по объектам базы данных.

 



<== предыдущая лекция | следующая лекция ==>
Объектные и реляционные СУБД | Использование объектных СУБД


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.