Методические указания к выполнению ЛР5 - Работа с объектной базой данных
Описание файла
Документ из архива "Методические указания к выполнению ЛР5 - Работа с объектной базой данных", который расположен в категории "". Всё это находится в предмете "постреляционные базы данных" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "постреляционные базы данных" в общих файлах.
Онлайн просмотр документа "Методические указания к выполнению ЛР5 - Работа с объектной базой данных"
Текст из документа "Методические указания к выполнению ЛР5 - Работа с объектной базой данных"
Работа с объектной базой данных
Введение
Учебно-методические материалы «Работа с объектной базой данных» представляет собой методические указания к лабораторным работам по дисциплине «Постреляционные базы данных».
В материалах рассмотрены принципы взаимодействия с объектно-ориентированной СУБД на примере СУБД Cache Intersystems. Приведено краткое описание технологий настройки соединений с БД и языковых конструкций для создания объектов и работы с ними во внешней среде. Рассмотрены запросов к объектной базе данных. В заключительной части методических указаний приведены контрольные вопросы, список рекомендуемой литературы и пример задания.
Ознакомившись с методическими указаниями и разобрав приведенные в нем примеры, студент может получить у преподавателя свой вариант задания и приступить к его выполнению. Целью лабораторной работы является практическое изучение возможностей объектно-ориентированной СУБД на примере СУБД Cache Intersystems для создания, изменения, просмотра и удаления объектов из внешнего приложения используя объектное представление данных.
Оглавление
Введение 1
Цель работы 1
Время выполнения 2
Теоретическая часть 2
Объектный доступ 2
Практическая часть 6
Создание С++-проекции в среде Cache Project 6
Создание проекции файлов в среде Microsoft Visual Studio. 9
Описание основных методов клиента и сервера 13
Пример задания 15
Вопросы для самопроверки 15
Содержание отчета по лабораторной работе 16
Литература 16
Цель работы
-
Изучить различные технологии взаимодействия внешних приложений с Cache`.
-
Освоить методы обращения к\из СУБД Cache` используя объектный подход и реляционное представление.
-
Получить навыки работы с инструментальными средствами среды Cache`, реляционных СУБД и объектных языков программирования для организации их взаимодействия.
Время выполнения
Время выполнения лабораторной работы 2 часа.
Теоретическая часть
Сердцем СУБД Caché является сервер многомерных данных (MDS - Multidimensional Data Server), позволяющий компактно и эффективно хранить данные произвольной сложности. Для доступа к сложноструктурированным данным не требуется производить изощренных и дорогостоящих операций соединения, что положительно сказывается на общей производительности, и, в совокупности с транзакционной многомерной моделью Caché и встроенными средствами многопользовательской работы, позволяет создавать промышленные приложения, лишенные недостатков реляционных СУБД.
В Caché реализована концепция единой архитектуры данных, то есть СУБД Caché является открытой системой и предоставляет огромное количество интерфейсов для взаимодействия с внешним миром, которые можно разделить по типу доступа: прямой, реляционный и объектный. Однако, стоит отметить, что подобное разбиение довольно условно, и некоторые способы взаимодействия Caché с внешним миром можно отнести сразу к нескольким категориям.
Прямой доступ к данным(Caché Direct), обеспечивает максимальную производительность. Разработчики приложений получают непосредственный доступ к многомерным структурам (так называемым глобалам) Caché.
Для построения отчетов и совместимости с реляционными продуктами СУБД Caché предоставляет реляционный доступ, в основе которого лежит стандарт SQL 92.
Однако, наиболее интересным является объектный доступ. С этой точки зрения Caché соединяет традиционную технологию проектирования баз данных с объектной моделью.
Cache' позволяет комбинировать три типа доступа.
Объектный доступ
Cache' Objects - объектный доступ, для максимальной продуктивности разработки при использовании Visual C. В Cache' реализована объектная модель в соответствии с рекомендациями ODMG (Группа управления объектными базами данных - Object Database Management Group).
-
В Cache' полностью поддерживаются наследование (в том числе и множественное), инкапсуляция и полиморфизм.
-
При создании информационной системы разработчик получает возможность использовать объектно-ориентированный подход к разработке, моделируя предметную область в виде совокупности классов объектов, в которых хранятся данные (свойства классов) и поведение классов (методы классов).
-
Cache', поддерживая объектную модель данных, позволяет естественным образом использовать объектно-ориентированный подход при реализации приложений в ОО-средствах разработки (в частности C++).
Основный звеном является механизм объектной фабрики Caché, в основе которой лежит Caché ObjectServer, представляющий собой OLE In - Process Automation Server. Он позволяет держать на клиенте копии серверных объектов. К примеру, если в приложении на C++ средствами ObjectServer открывается объект, то идентичный объект открывается и на сервере. При изменении какого-либо свойства на стороне клиента соответствующее свойство у серверного объекта изменяется автоматически, вызов метода влечет его выполнение на сервере с передачей результатов на клиентскую часть
Архитектура ObjectServer подразумевает разделение приложения на две основные части: клиентскую и серверную. При этом организация получения метаданных серверных объектов может быть реализована двумя способами: раннее и позднее связывание. Раннее связывание означает, что на клиенте явно хранятся определения классов. Т.е. если клиент взаимодействует с серверным классом, то приложению заранее известна структура этого класса, описания свойств и сигнатуры методов, благодаря чему при компиляции можно создавать более эффективные способы обращения к экземплярам данного класса. Если с сервером связано более одного клиента, то, естественно, информацию о серверных классах необходимо продублировать на каждом клиенте, что в случае сильно распределенной системы может быть довольно трудоемко. Однако, основной недостаток такого подхода заключается в синхронизации изменений серверных классов с соответствующими определениями на клиентах. При изменении одного свойства необходимо провести корректировку и перекомпиляцию всех классов, которых потенциально могут быть тысячи и даже сотни тысяч.
Альтернативой раннему связыванию является использование механизма позднего связывания. Все что клиенту необходимо иметь, так это единственный класс Factory , который согласно паттерну проектирования Abstract Factory , берет на себя ответственность за создание объектов, инкапсулируя всю логику формирования экземпляров класса на стороне клиента. В совокупности с преимуществами технологии OLE (а именно, при использовании Variant) объектная фабрика избавляет клиента от необходимости хранить определения всех используемых серверных классов.
Механизм предоставляет возможность проецирования классов Caché в классы C ++. Архитектура C ++ binding сходна с проецированием в Java и наряду с отображением классов Caché в классы C++ заботится о конкурентном доступе к объектам и о транзакционности. Кроме того, стоит отметить, что C++-проецирование (как и все остальные виды проецирования) оптимизировано под распределенные архитектуры и использует механизм кэширования для минимизации трафика между C ++-приложениями и Caché-сервером.
Пример: использования классов Caché из C ++
d_ref <Sample_Person> p1 = Sample_Person::openid(&db, L"1"); p1->setDOB(1970,2,1); |
C++-библиотека, поставляемая вместе с Caché, содержит шаблонный класс d _ ref <>:
-
данный класс инкапсулирует логику обращения к промежуточным классам;
-
данный класс реализованный по концепции smart pointer, что позволяет вызывать методы промежуточных классов через “->” синтаксис, копировать d _ ref <> таким образом, что два экземпляра будут указывать на один объект, передавать экземпляр d _ ref <> в промежуточный метод «по ссылке».
Создать проекцию объектов из среды разработки Cache на какой –либо язык программирования можно двумя способами:
-
Создание проекции объектов на язык С непосредственно из Cache Project;
-
Создание проекции объектов непосредственно в среде Microsoft Visual Studio.
Рассмотрим оба этих варианта ниже.
Схема взаимодействия:
Взаимодействие между Cache и клиентской частью, написанной на С++, осуществляется через С++-проекцию (со стороны клиентской части приложения) и функции объектного доступа в Cache (со стороны серверной части приложения).
Практическая часть
Создание С++-проекции в среде Cache Project
С++-проекция – это код на языке С++, автоматически сгенерированный ПО Caché. Для того, чтобы создать С++-проекцию необходимо:
1) В среде разработки Caché выбрать Инструменты->Сгенерировать С++-проекцию (см. Рис.1).
Рис. 1
2)Система выдаст диалоговое меню, где необходимо нажать кнопку добавить и в предложенном диалоговом окне выбрать описание классов на основе, которых необходимо сгенерировать С++-проекцию (см. Рис.2 и Рис.3).
Рис. 2.
Рис. 3
3) После чего выбранные описания классов будут добавлены в список, классов на основе которых будет сгенерировать С++-проекция. После данной процедуры система автоматически сгенерирует описание на языке С++ и выдаст об этом сообщение (см. Рис.5 и Рис.6.):
Рис. 5
Рис.6
На каждое описание класса система генерирует два файла, спецификация которых такова:
<Название класса>.h
<Название класса>.cpp
где <Название класса> - это класс в среде Caché, на основе которого генерируется проекция.
1) *.h – содержит интерфейс описания класса, его общее описание, директивы включения различных библиотек и другую информацию;
2) *.сpp –содержит реализацию функций класса, интерфейсы которых прописаны в файле *.h, также содержит директивы включения различных библиотек;
Создание проекции файлов в среде Microsoft Visual Studio.
Cache Net Project, используя проекции объектов позволяет эффективно взаимодействовать с клиентскими приложениями, написанными на других языках.
Для создания проекции из среды Microsoft Visual Studio необходимо выполнить следующие действия.
В среде разработки Visual Studio Net (Рис.1) , необходимо зайти в меню Tools->External tools (Рис.2).
Рис.1
Рис.2
Появиться окно (Рис.3):