В. И. Швецов Базы данных
![]()
|
ð+ переход из прикладной программы к запросу осуществляется вызовом специальной функции ð скомпилированная вместе с текстом запроса прикладная программа автоматически выполняется ð при неоднократном выполнении одного и того же запроса используется один и тот же программный модуль ð+ при каждом выполнении одного и того же запроса используются разные программные модули Задача 5. Характеристика команд динамического SQL Вариант 1. Какие операторы могут быть использованы в динамическом SQL? ð+ SELECT ð+ DELETE ð+ INSERT ð DECLARE TABLE ð EXEC SQL ð+ OPEN ð+ DECLARE CURSOR ð+ PREPARE ð+ EXECUTE Вариант 2. Какие специальные операторы могут быть использованы в динамическом SQL? ð SELECT ð DELETE ð INSERT ð DECLARE TABLE ð EXEC SQL ð GET DIAGNOSTIC ð+ DECLARE CURSOR ð+ PREPARE ð+ EXECUTE Вариант 3. Какие специальные операторы могут быть использованы в динамическом SQL для подготовки и выполнения SQL- запроса? ð DECLARE TABLE ð EXEC SQL ð GET DIAGNOSTIC ð+ PREPARE ð+ EXECUTE Задача 6. Характеристика интерфейсов программирования приложений (API). Вариант 1. Чем удобны интерфейсы программирования приложений? ð не требуется изучать алгоритмический язык программирования ð+ не требуется изучать специальные инструкции статического и динамического SQL ð+ соответствующий подход может применяться с использованием разных языков программирования ð не требуется изучать язык SQL Вариант 2. Как компилируется прикладная программа, использующая интерфейсы программирования приложений? ð+ прикладная программа компилируется вместе с вызовом функций библиотек ð вызов функций библиотек компилируется отдельно ð сформированный модуль запроса вставляется в модуль прикладной программы ð+ в модуль прикладной программы вставляется вызов функции библиотеки Вариант 3. Как выполняется программа с использованием интерфейсов программирования приложений? ð параметрами функций библиотеки интерфейсов программирования приложений являются имена таблиц, атрибутов и константы ð+ параметрами функций библиотеки интерфейсов программирования приложений являются тексты SQL- запросов ð+ переход из прикладной программы к запросу осуществляется вызовом специальной функции ð скомпилированная вместе с текстом запроса прикладная программа автоматически выполняется ð+ при неоднократном выполнении одного и того же запроса используется один и тот же программный модуль ð при каждом выполнении одного и того же запроса используются разные программные модули Задача 7. Что такое протокол ODBC? Вариант 1. Какова цель создания протокола ODBC? ð создание интерфейса с конкретной СУБД ð создание универсального интерфейса с СУБД ð+ создание универсального интерфейса с СУБД на уровне конкретной операционной системы ð создание библиотеки функций для обеспечения связи прикладной программы и СУБД Вариант 2. Что такое драйверы ODBC? ð программа- интерфейс между прикладной программой на алгоритмическом языке и вызовом функции API ð+ программа- интерфейс между вызовом функции API и программой, реализующей функции конкретной СУБД ð программа- интерфейс между прикладной программой на алгоритмическом языке и программой, реализующей функции конкретной СУБД ð программа- интерфейс между прикладной программой на алгоритмическом языке и программой, реализующей функции любой СУБД Вариант 3. Для чего в этом протоколе используются драйверы? ð для сокращения времени реализации запроса ð+ для создания возможности использования этого протокола в разных СУБД ð для удобства разработки прикладных программ ð для упрощения текста запроса к базе данных Задача 8. Что такое протокол JDBC? Вариант 1. Какова цель создания протокола JDBC? ð создание интерфейса с конкретной СУБД ð создание универсального интерфейса с СУБД ð создание универсального интерфейса с СУБД на уровне конкретной операционной системы ð+ создание библиотеки функций для обеспечения связи прикладной программы и СУБД ð+ создание интерфейса программы, написанной на определенном алгоритмическом языке, с СУБД Вариант 2. Что такое драйверы JDBC? ð программа-интерфейс между прикладной программой на определенном алгоритмическом языке и вызовом функции API ð+ программа-интерфейс между вызовом функции API и программой, реализующей функции конкретной СУБД ð программа-интерфейс между прикладной программой на алгоритмическом языке и программой, реализующей функции конкретной СУБД ð программа-интерфейс между прикладной программой на алгоритмическом языке и программой, реализующей функции любой СУБД Вариант 3. Для чего в этом протоколе используются драйверы? ð для сокращения времени реализации запроса ð+ для создания возможности использования этого протокола в разных СУБД ð для удобства разработки прикладных программ ð для упрощения текста запроса к базе данных ð для создания возможности обращения к функциям API из программы, написанной на языке Java Литература
Лекция 14. Направления развития баз данных В лекции рассматриваются перспективные направления в теории и практике создания баз данных – объектно-ориентированные и распределенные базы данных, а также новое направление в аналитической обработке данных = хранилища данных. Ключевые термины: направления развития баз данных, объектно-ориентированные базы данных, системы управления объектно-ориентированными базами данных, объект, класс, методы класса, наследование, системы управления объектно-реляционными базами данных, распределенные базы данных, системы управления распределенными базами данных, хранилища данных. Цель лекции: выделить основные черты в новых направлениях развития теории и практики создания баз данных (новые свойства, присущие объектно-ориентированным и распределенным базам данных) и хранилищ данных. 14.1. Объектно-ориентированный подход к организации баз данных В начале 90-х годов XX века начались активные попытки по внедрению объектно-ориентированных технологий в отрасль проектирования и разработки баз данных. Бытовала точка зрения о том, что соответствующие технологии быстро вытеснят все остальные, так же как и во многих других программистских отраслях, но ничего подобного не произошло. Объектно-ориентированное программирование Рассмотрим термин «объектно-ориентированное программирование». Заметим, что это термин, принятый преимущественно в российской литературе. В западной литературе [2] под этим понимается сразу три аспекта:
Объектно-ориентированный анализ – это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области.
Объектно-ориентированное проектирование – это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логической и физической, а также статической и динамической моделей проектируемой системы.
Объектно-ориентированное программирование – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. Здесь и далее по тексту условимся не отступать от традиций и понимать под объектно-ориентированным программированием (ООП) сразу три указанных выше аспекта. Основой объектно-ориентированной технологии является так называемая объектная модель, которая возникает как результат объектно-ориентированной декомпозиции. Она выделяет основные абстракции предметной области, определяет классы абстракций и выясняет, какими данными (атрибутами) описывается каждая абстракция, какую функциональность эти абстракции должны обеспечивать. В отличие от традиционных технологий программирования объектно-ориентированная технология представляет программу как совокупность классов и объектов, взаимодействующих друг с другом. Объект – конкретная материализация абстракции; сущность с хорошо определенными границами, в которой инкапсулированы состояние и поведение. Объект ООП – инкапсулированная структура, имеющая атрибуты и методы. Термин «инкапсулированная структура» означает, что объект является самодостаточным, программы, внешние по отношению к объекту, ничего «не знают» о его структуре и такое «знание» им не требуется. «Внешний» вид объекта называется его интерфейсом. В таком понимании объект – это черный ящик, нам неизвестно, чтó у него внутри, мы лишь можем вызвать его методы и только через них взаимодействовать с ним. Кроме этого, объекты могут принадлежать иерархии «от общего к частному», которая реализуется путем наследования. Инкапсулированные состояния объекта могут быть как простыми типами данных, так и другими объектами, или даже массивами объектов. Каждый объект содержит определенную совокупность методов, классы взаимодействуют друг с другом посредством механизма сообщений. Объекты идентифицируются с помощью специальных указателей – дескрипторов. Методы объектов ООП представляют собой последовательности инструкций, выполняемых объектом. Например, у объекта может быть метод, отображающий данный объект, создающий данный объект и изменяющий его. Предметная область моделируется как множество классов взаимодействующих объектов. Объект характеризуется набором свойств, которые являются как бы его пассивными характеристиками, и набором методов работы с этим объектом. Работать с объектом можно только с использованием его методов. Атрибуты объекта могут принимать множество допустимых значений, набор конкретных значений атрибутов определяет состояние объекта. Используя методы работы с объектом можно изменять значение его атрибутов и тем самым как бы изменить состояние самого объекта. Множество объектов с одним и тем же набором атрибутов и методов образует класс объектов. Класс, объекты которого могут служить значениями атрибута объектов другого класса, называется доменом этого атрибута. К числу основных идей объектно-ориентированной технологии, как правило, относят [1]: абстрагирование, инкапсуляцию, модульность, иерархичность, типизацию, полиморфизм, наследование. Инкапсуляция ограничивает область видимости имени атрибута пределами того объекта, в котором оно определено. Смысл этого атрибута будет определяться тем объектом, в котором оно инкапсулировано. Полиморфизм – способность одного и того же программного кода работать с разнообразными данными. Другими словами, он допускает возможность в объектах разных типов иметь методы (процедуры или функции) с одинаковыми именами. Во время выполнения объектной программы одни и те же методы оперируют с разными объектами в зависимости от типа аргумента. Наследование. Допускается порождение нового класса на основе уже существующего класса, и этот процесс называется наследованием. В этом случае новый класс, называемый подклассом существующего класса, наследует все атрибуты и методы класса. В подклассе, кроме того, могут быть определены дополнительные атрибуты и методы. Различают случаи простого и множественного наследования. В первом случае подкласс может определяться только на основе одного класса, во втором случае – на основе нескольких классов. Набор классов образует иерархическую структуру. Объектно-ориентированные базы данных К настоящему моменту терминология еще не устоялась, существует много разных определений и трактовок. Представляется, что объектно-ориентированная база данных (ООБД) – база данных, основанная на принципах объектно-ориентированной технологии. К основным описательным моментам, связанным с ООБД, в литературе [2] относят:
Схема представления объекта приводится на рис. 14.1 ![]() Рис. 14.1. Схема представления объекта Система управления объектно-ориентированной базой данных называется объектно-ориентированной СУБД (ООСУБД). Цель ООСУБД – обеспечение постоянного хранения объектов, причем в отличие от традиционной СУБД ООСУБД должна хранить в составе объекта данные и программы. Поскольку каждый объект данного класса имеет один и тот же набор методов, методы сохраняются только один раз – как методы класса (данные каждого экземпляра объекта хранятся отдельно). Схема представления класса объектов приводится на рис. 14.2 ![]() Рис. 14.2. Схема представления класса объектов Используя наследование, всем объектам ПОДРАЗДЕЛЕНИЕ можно приписать свойство объекта-родителя (ФАКУЛЬТЕТ) – название факультета, номер факультета. Схема представления объектов ФАКУЛЬТЕТ и ПОДРАЗДЕЛЕНИЕ приводится на рис.14.3. ![]() Рис. 14.3. Фрагменты представления конкретных объектов Сравнивая объектно-ориентированный и реляционный подходы к БД, можно отметить следующие особенности. В реляционных БД (РБД) реальные объекты представляются как структуры, состоящие из набора элементарных типов данных. Такое представление имеет понятную интерпретацию – строка в плоской таблице. В том случае, когда специфика предметной области позволяет работать с такого рода приближением реальных объектов, РБД отлично справляются со своей задачей. Довольно часто реляционная модель и ее способ описания предметной области в виде набора плоских таблиц не отражают внутренней структуры для многих предметных областей, являются искусственными и становятся совершенно непонятными при увеличении количества таблиц. Основная причина несостоятельности реляционного подхода заключается в слишком сильной абстракции реального объекта, что ведет к потере семантики. В отличие от реляционных баз данных объектно-ориентированные базы данных обладают простой и естественной связью с предметной областью, представляя ее структуру и состав, что облегчает проектирование и положительно сказывается на понимании принципов функционирования программ. Так, в сложных неоднородных предметных областях использование ООБД (в частности, там, где разные объекты имеют разные методы) должно действительно упростить процесс проектирования и разработки. К сожалению, в ООБД существуют свои проблемы. В ООБД отсутствует универсальная модель данных, и соответственно, отсутствует мощная математическая база, как, например, в реляционной модели. В связи с этим у ООБД нет языка запросов высокого уровня, аналогичного SQL, и при доступе к данным используется мало эффективный навигационный подход. ООСУБД отличаются от реляционных СУБД тем, что программный интерфейс создания приложения либо очень слаб, либо вообще отсутствует. Это означает, для написании приложения, работающего с ООБД не существует мастеров и конструкторов (не считая, например, конструктора создания списка полей в объекте, который поставляется вместе с ООСУБД ObjectStore). Поэтому разработчик создает приложения на одном из алгоритмических языков. По нашему мнению, существенным ограничением развития объектно-ориентированного подхода к созданию баз данных является то, что методы объекта содержатся внутри объекта и неразрывно связаны с ним. Это делает, по сути, невозможным создание для объектно-ориентированной базы данных соответствующей системы управления базой данных в традиционном понимании СУБД, функциями которой, в частности, является реализация операций обработки данных. Поэтому ООСУБД часто является не системой управления базами данных, а библиотекой программ, с помощью которой можно построить объектно-ориентированную базу данных. Примером такой библиотеки является ООСУБД ObjectStore. В связи с этим, возникает проблема реализации непредвиденных запросов. Для перехода к объектно-ориентированным БД стандарт объектного программирования был дополнен стандартизованными средствами доступа к базам данных (стандарт ODMG 93; Object Database Management Group – группа управления объектно-ориентированными базами данных). К настоящему времени этот стандарт не реализован. Состояние проблемы подробно описано также в работах [2-6 и др.]. Отметим только, что ООБД используются, но пока не стали реальной альтернативой реляционным базам данных. Объектно-ориентированные возможности появляются в ведущих современных СУБД, таких, как, например, Oracle. Предпринимаются попытки внесения изменений в стандарты языка SQL с целью его частичной адаптации к ООБД. Так, новый стандарт SQL-3 включает большой раздел, посвященный этому вопросу. |