Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4951
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

9. Дополнительные вопросы применения баз данных

263

Короче говоря, наличие международных стандартов и рекомендаций не устраняет всех возможных противоречий и многообразия принимаемых фир- мами-разработчиками решений. Польза от стандартов неоспорима потому, что без них было бы хуже, а часто и просто невозможно, решить вопросы международного уровня. Например, без принятия стандартов на связь, нельзя было бы организовать сеть Интернет.

Обычному пользователю и начинающему разработчику требуется иметь общее представление об имеющихся стандартах и их реализациях наиболее крупными фирмами. Это может помочь ему решить собственные задачи, не изобретая велосипед.

Реализации стандартов разными фирмами отличаются друг от друга, и все их особенности не описать. Познакомившись с наиболее важными стандартами, пользователь может легко использовать любую реализацию стандарта. В частности, это относится к стандартному языку доступа к БД — языку SQL. Средства его реализации в различных СУБД отличаются друг от друга незначительно.

Стандартизация в области баз данных затрагивает синтаксис и семантику языков баз данных, управление данными и транзакциями, организацию взаимодействия СУБД с другими элементами распределенных систем, параллельную обработку запросов, защиту данных от несанкционированного доступа и другие аспекты.

Рассмотрим с точки зрения стандартизации основной язык доступа к реляционным базам данных — язык SQL.

Стандартизация языка SQL

Язык SQL разработан в середине 70-х годов научно-исследовательской лабораторией фирмы IBM в рамках проекта реляционной СУБД System R. Исходное название языка - SEQUEL (Structured English QUEry Language). Язык основан на реляционном исчислении с переменными кортежами (подраздел 3.7). Кроме основных операторов формулирования запросов и манипулирования БД, он включал также средства описания и изменения схемы БД, определения ограничений целостности, защиты доступа (авторизации) к отношениям и их полям, получения точек сохранения транзакций, выполнения откатов и прочее.

Постепенно SQL был взят на вооружение различными организациями и фирмами-разработчиками ПО и появились стандарты SQL следующих организаций: ANSI (American National Standards Institute - Американский Национальный Институт Стандартов), SAG (SQL Access Group), X/Open (группа стандартов для UNIX), ISO (International Standard Organization - Международная организация no стандартизации), федерального правительства США, а также фирмы IBM.

Наиболее широко используемыми стандартами являются стандарт 1989 года ANSI SQL-89 и стандарты 1992 года: ANSI SQL-92 и ISO SQL-92.

264 Часть 2. Проектирование и использование БД

Стандарт ANSI SQL-89 описывает три варианта использования SQL (три интерфейса): «модульный язык», «встроенный SQL» и «непосредственный вызов».

Модульный язык предусматривает возможность создания процедур, вызываемых из программ на традиционных языках программирования (С, Кобол, Фортран и другие).

Встроенный SQL предусматривает включение в программы на обычных языках программирования SQL-операторов. Совокупность SQL-операторов называют HOST-языком. Обработка программы с использованием SQL-опе- раторов происходит в два этапа: сначала работает препроцессор, преобразующий SQL-операторы в некоторые команды языка программирования с учетом используемой СУБД, а затем - обычный компилятор с основного языка программирования. При включении SQL-операторов используется статический метод, означающий полное определение параметров операторов до выполнения программы.

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

Основной набор операторов SQL включает операторы определения схемы БД, выборки и манипулирования данными, управления транзакциями, авторизации доступа к данным, поддержки встраивания SQL в системы программирования и другие вспомогательные средства.

Несмотря на широкий набор возможностей, этот стандарт обладал функциональной неполнотой. Работа над SQL была продолжена, что привело к появлению в 1992 г. новых стандартов. Получили широкое применение и оказались по сути эквивалентными стандарты ISO SQL-92 и ANSI SQL-92.

Стандарт SQL-92 поддерживается практически всеми современными программами работы с базами данных. Он расширяет функции предыдущего стандарта, а главное, - предусматривает динамический SQL. Отличием динамического метода выполнения SQL-операторов от статического является то, что параметры SQL-операторов определяются непосредственно при выполнении программы. Несмотря на некоторое снижение быстродействия выполнения программы, динамический метод выполнения SQL-операторов позволяет повысить гибкость работы с базами данных и повысить независимость приложений от типов баз данных.

С принятием этого стандарта начата работа над новым стандартом SQL3. Стандарт языка SQL3 разрабатывался ANSI совместно с ISO. Более точно: комитетом ХЗН2 по стандартам в области синтаксиса и семантики языков баз данных института ANSI (ANSI ХЗН2) и рабочей группой WG3 по базам данных подкомитета SC21, занимающегося взаимосвязью открытых систем, управлением данными и открытой распределенной обработкой, Объединенного комитета Международной организации по стандартизации и Меж-

9. Дополнительные вопросы применения

баз данных

265

дународной электротехнической

комиссии (ISO/IEC JTCI).

Кроме того, на

разработку стандарта оказывали влияние организации, работающие в области объектно-ориентированных технологий, в частности: консорциум поставщиков программного обеспечения объектно-ориентированных баз данных ODMG (The Object Database Management Group) и консорциум по программному обеспечению, разрабатывающий спецификации объектно-ориентиро- ванных интерфейсов OMG (Object Management Group).

Текущий проект SQL3 практически полностью включает спецификацию SQL2, а также содержит ряд новых возможностей, в том числе две весьма существенных: объектные функциональные возможности и средства обеспечения вычислительной полноты языка - Управление хранимыми процедурами PSM (Procedure Storage Management).

К новой объектной возможности SQL3 прежде всего относится обеспечение объектной ориентированности таблиц БД. По сравнению с обычными реляционными таблицами теперь строки таблиц могут содержать абстрактные типы данных (АТД) и ссылки на АТД из других строк, а также иметь однозначные идентификаторы (вместо поиска строки по значениям). Поддержка АТД предусматривает средства определения типов и методов доступа к ним, аналогичных объектно-ориентированным языкам программирования типа С++, Smalltalk, Ada и других.

Напомним, что хранимые процедуры (подраздел 5.4) - это группы выполняемых операторов, которые хранятся не в приложении, а в базе данных. К разрешенным внутри хранимых процедур операторам относятся: операторы SQL, арифметические операторы, операторы передачи управления, описания функций и т. д.

Стандарт ODMG-93

Главной целью стандарта ODMG-93 является обеспечение независимости (мобильности) прикладных систем от систем управления объектными базами данных (СУОБД). При разработке стандарта ставилась задача увязки решений с рекомендациями группы, занимающейся стандартизацией в области объектно-ориентированных языков программирования - OMG (Object Management Group).

Согласно ODMG-93, СУОБД, с одной стороны, рассматривается как СУБД, в которой данные имеют объектную модель, а с другой - как средство представления объектов БД в качестве объектов ряда языков программирования. СУОБД расширяют языки программирования, например, С++, средствами долговременного хранения объектов, управления конкурентным доступом, восстановления данных, выполнения объектных запросов и т. д.

В стандарте ODMG-93 дается определение следующих компонентов баз данных:

• объектной модели, которую должны поддерживать СУОБД;

266

Часть 2. Проектирование и использование БД

языка определения объектов ODL (Object Definition Language);

языка объектных запросов OQL (Object Query Language);

•языка манипулирования объектами OML (Object Manipulation Language), используемого в объектно-ориентированных языках программирования.

Схема взаимосвязи основных элементов стандарта ODMG показаны на рис. 9.3.

Библиотеки Базы данных

Инструментальные

 

компоненты

Постоянное хранилище объектов

Рис. 9.3. Схема взаимосвязи основных элементов стандарта ODMG

За основу языка ODL в стандарте ODMG-93 взят язык определения интерфейсов IDL (Interface Definition Language) архитектуры OMG. В IDL каждый объект базы данных имеет строго определенный и единственный тип. Поведение объекта определяется перечнем допустимых операций в соответствии с типом. Объектная модель позволяет описывать связи типа 1:1, 1:М и М:М.

Язык объектных запросов OQL представляет собой декларативный язык работы с объектными БД. Синтаксической основой языка является SQL2. Основное отличие OQL от языка SQL состоит в том, что запрос формулируется в терминах объектов и коллекций (а не таблиц), а результатом являются объекты и коллекции (а не кортежи).

9. Дополнительные вопросы применения баз данных

267

Операции манипулирования данными, управления транзакциями, динамического вызова запросов на OQL и другие действия выполняются с помощью библиотек классов и функций.

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

Перечень инструментальных средств и библиотек в стандарте не определяется. Важным является объектно-ориентированный принцип их организации. Так, инструментальные средства поддержки разработки пользовательских приложений и их графических интерфейсов программируются на одном из OML и сохраняются как часть иерархии классов. Библиотеки функций (доступа, вычислений и т. д.) хранятся в иерархии типов и являются доступными из программного кода приложения.

Стандарт ODMG-93 используется при разработке СУОБД и в качестве канонической объектной модели при проектировании систем управления неоднородными мультибазами данных. Примером использования стандарта является проект IRO-DB программы ESPRIT III.

Технология CORBA

Для информационных систем с распределенной обработкой в качестве стандарта группой OMG предложена технология CORBA (Common Object Request Broker Architecture - архитектура брокера общих объектных запросов). Спецификации написаны на пассивном языке описания интерфейсов 1DL (Interface Definition Language), определяющем функциональность компонентов - внешние интерфейсы с потенциальными клиентами. Написанные на этом языке компоненты должны быть доступны независимо от языков, инструментальных средств, операционных систем и сетевой инфраструктуры программных компонентов.

Основу архитектуры CORBA составляет брокер объектных запросов ORB (Object Request Broker), управляющий взаимодействием клиентов и серверов в распределенной сетевой среде. Брокер объектных запросов представляет собой объектную шину, позволяющую объектам прозрачно генерировать запросы и получать отклики от других локальных и удаленных объектов.

Важнейшими свойствами CORBA ORB, определяющими ее достоинства для архитектуры клиент-сервер, являются следующие:

возможность статически определять вызовы методов при компиляции или находить их динамически в процессе выполнения;

возможность вызова методов серверного объекта с использованием произвольного языка высокого уровня. Поскольку CORBA отделяет интер-

268

Часть 2. Проектирование и использование БД

фейс, от его реализации и предоставляет независимые от языка типы данных, это дает возможность вызывать объекты из любого языка и для любой ОС;

самоописываемостпь системы заключается в предоставлении метаданных на этапе выполнения для описания каждого известного серверного интерфейса;

прозрачность локальная и удаленная состоит в том, что ORB может выполняться в автономном режиме или взаимодействовать с другими ORB с помощью сервисов протокола ПОР (Internet Inter-ORB Protocol - Интернет-протокола взаимодействия ORB);

встроенная безопасность и механизм транзакций основаны на включе-

нии в сообщения соответствующей контекстной информации;

возможность полиморфных сообщений основана на реализации вызова функции целевого объекта;

возможность инкапсуляции существующих приложений, основанная на отделении определения объекта от его реализации в архитектуре системы.

В общем, CORBA можно определить как промежуточное программное обеспечение, потенциально связанное с другими формами клиент-серверных видов программного обеспечения. Программное обеспечение CORBA разработано для всех основных аппаратных и программных платформ. Поэтому клиентские приложения CORBA одной операционной системы легко взаимодействуют с сервером приложений в любой другой операционной системе.

Версия технологии CORBA Real-Time ориентирована на поддержку функционирования и повышение производительности распределенных систем в масштабе реального времени. С ее помощью предполагается задавать продолжительность функционирования отдельных компонентов и приоритеты выполнения, планировать работу компонентов и т. д.

Стандарты в продуктах ведущих фирм

Рассмотрим, как действующие стандарты используются в программных продуктах ведущих фирм IBM,, Microsoft и Borland.

Фирма IBM для обеспечения мобильности (переносимости) операцион-

ных систем разработала архитектуру SAA ('System Application

Architecture,).

Архитектура SAA предполагает наличие унифицированных

средств разра-

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

доступа конечного пользователя;

прикладного программирования;

телекоммуникационный (связи с удаленными пользователями и объектами сети).

9. Дополнительные вопросы применения баз данных

269

Интерфейс доступа конечного пользователя охватывает комплекс технических, организационных и программных решений, обеспечивающих простоту и унификацию взаимодействия конечного пользователя с различными моделями ЭВМ.

Интерфейс прикладного программирования, кроме стандартных языков и средств программирования, содержит генератор приложений, языки командных процедур, языки баз данных и запросов (SQL и QMF) и средства обеспечения диалога.

В качестве телекоммуникационного интерфейса предлагаются протоколы сетевой архитектуры SNA (System Network Architecture - сетевая архитектура системы), средства выхода в сети, поддерживающие протокол Х.25, а также протоколы потоков данных для устройств типа IBM 3270.

Фирма Microsoft на основе стандарта CAE разработала открытый интерфейс ODBC (Open DataBase Connectivity — совместимость открытых баз данных) доступа к базам данных из приложений.

Стандарт СЛ£(Common Application Environment — общая прикладная среда) был разработан группой SAG и Х/Open с целью разрешить противоречия множества схожих существующих стандартов прикладного программирования. Этот стандарт опирается на стандарты ANSI, ISO и собственные стандарты групп. Основное его назначение - обеспечение взаимодействия прикладных программ в открытых системах.

ODBC представляет собой интерфейс прикладного программирования в виде библиотеки функций, вызываемых из различных программных сред и позволяющих приложениям унифицированно обращаться на SQL к базам данных различных форматов.

Функции интерфейса ODBC включают следующие шесть основных групп:

назначение идентификаторов окружения, соединения и SQL-операторов; •соединение;

•выполнение SQL-операторов;

получение результатов;

управление транзакциями;

идентификация ошибок и смешанные функции.

При выполнении приложений, использующих ODBC, предусматриваются следующие этапы:

• инициализация (назначение идентификаторов окружения и соединений, соединение с сервером, назначение идентификаторов SQL-операторам);

• выполнение SQL-операторов с анализом результатов;

•завершение (освобождение идентификаторов SQL-операторов, разрыв соединения, освобождение идентификаторов соединений и окружения).

Интерфейс ODBC поддерживает общий набор функций языка SQL для доступа к базам данных и позволяет работать в так называемом прозрачном

270

Часть 2. Проектирование и использование БД

режиме по соглашениям конкретной базы данных. Кроме того, он содержит уровни функциональности или иерархии функциональных возможностей: минимальную, основную и расширенную.

Программные средства поддержки ODBC корпорация Microsoft обычно поставляет вместе с СУБД. Так, вместе с MS Access предоставляется менеджер драйверов и драйвер доступа к MS SQL Server. Драйверы доступа к форматам других БД берутся от фирм-разработчиков соответствующих СУБД.

Фирма Borland в основных программных продуктах Delphi, Paradox for Windows, dBase for Windows и других, использует собственное стандартизованное средство доступа к базам данных Borland Database Engine (BDE) - процессор баз данных фирмы Borland.

BDE включает следующие три основных компонента: стандартный интерфейс доступа к базам данных IDAPI(Integrated Database Application Program Interface), драйверы баз данных распространенных форматов и утилиты настройки драйверов и псевдонимов.

Интерфейс IDAPI насчитывает более 150 функций доступа к различным БД и позволяет просто и единообразно работать с локальными и с удаленными данными. В основе механизма доступа лежит понятие курсора (подраздел 3.9). IDAPI не ограничен минимальным набором функций, поддерживаемых БД. Как и в ODBC, здесь поддерживается расширенное множество функций в соответствии с возможностями форматов локальных и удаленных БД.

Важной особенностью интерфейса I DAP I является обеспечение программ пользователя средствами вторичного уточнения результатов запросов - фильтрами. Функционируя в среде клиентской части приложения, фильтры позволяют при работе с уделенными данными уменьшить объем передаваемой по сети информации. Фильтры IDAPI позволяют описывать сложные логические условия над данными БД.

Интерфейс IDAPI обеспечивает преобразование своих вызовов в вызовы функций интерфейса ODBC. Для обращения к функциям IDAPI можно пользоваться языками запросов SQL (из программ) и QBE (в диалоговом режиме).

9.4. Характеристика технологии ADO.NET

В этом подразделе рассматривается технология доступа к данным ADO.NET, указаны ее преимущества по сравнению с предыдущей технологией ADO, а также дана характеристика ее объектной модели. Технология ADO.NET является развитием технологии доступа к данным ADO и входит составной частью в Microsoft .NET.

9. Дополнительные вопросы применения баз данных

271

Характеристика Microsoft .NET

Соответственно, возникает вопрос, что представляет собой сама Microsoft

.NET. Прежде всего, это новый подход к разработке приложений, при котором разработчику, как правило, не нужно самостоятельно писать код, определяющий его функциональность. Вместо этого разработчику достаточно воспользоваться соответствующей службой (сервисом) сети Интернет. В состав Microsoft .NET входят следующие основные компоненты: библиотека классов .NET; языки .NET; общая языковая среда исполнения (CLR); интегрированная среда разработки приложений, например, Visial Studio .NET. Дадим краткую характеристику названным компонентам:

Библиотека классов .NET включает множество шаблонов для использования их в различных приложениях. Любой язык .NET может использовать возможности этой библиотеки, взаимодействуя с соответствующим набором объектов.

Common Language Runtime (CLR) — общеязыковая исполняющая среда, обеспечивающая единообразный доступ к сервисам Microsoft .NET.

Основной задачей CLR является загрузка и выполнение кода, написанного на любом языке программирования, поддерживаемом в Microsoft

.NET. В настоящее время поддерживаются языки Visual Basic, С++, С#, J Script из состава продуктов фирмы Microsoft, а также языки других фирм, в числе которых COBOL, Eiffel, Oberon, Perl, SmallTalk и др.

Технология ADO.NET

ADO.NET (ActiveX Data Object.NET) - набор классов, используемый для доступа к источникам данных в платформе .NET. ADO.NET представляет собой новую объектную модель, которая использует стандарт ХМ L для передачи данных. В ADO.NET реализована идея использования отсоединенных наборов данных, причем такой способ работы является основным. По сравнению с ADO, ADO.NET предполагает более легкое программирование, лучшую производительность и масштабирование, меньшую зависимость от источников данных.

ADO.NET можно использовать для доступа к реляционным СУБД, таким как SQL Server 2000, и ко многим дополнительным источникам данных, для работы с которыми предназначен провайдер OLE DB.

Одно из ключевых новшеств ADO.NET — замена ADO-объекта RecordSet

комбинацией объектов DataTable, DataSet, DataAdapter и DataReader.

Объект DataTable представляет набор (collection) записей отдельной таблицы и в этом отношении аналогичен RecordSet. Объект DataSet представляет набор объектов DataTable, а также содержит отношения и ограничения, используемые при связывании таблиц. На самом деле DataSet — это хранящаяся в памяти реляционная структура данных со встроенной поддержкой XML.

В ADO.NET поддержка реляционной модели осуществляется двумя способами. Первый способ реализует подсоединенную модель доступа к данным,

272 Часть 2. Проектирование и использование БД

в которой функционируют стандартные методы доступа к реляционной базе данных, включая поддержку параметрических запросов, хранимых процедур, SQL-операторов пакетного выполнения и транзакций. Этот способ полностью аналогичен способам, применяющимся в известных интерфейсах доступа к данным, таких, как OLE DB, ODBC, JDBC.

При втором способе доступ к данным осуществляется в отсоединенном режиме с помощью объекта DataSet, имитирующего базу данных. Над данными, содержащимися в этом объекте применимы все операции, характерные для баз данных. Объект DataSet может содержать любое количество реляционных таблиц, отношений и ограничений и даже позволяет получать подмножество таблиц с помощью SQL-подобного языка запросов. Кроме того, в отсоединенную модель входит объект DataAdapter, который играет роль связующего класса между реальной базой данных и объектом DataSet.

Преимущества ADO.NET

Технология ADO.NET создана для использования в управляемых проектах. Предыдущая технология ADO основана на технологии СОМ и при использовании из управляемых приложений требует дополнительных затрат на выполнение кода. К тому же ADO имеет меньшие возможности при работе с отключенными наборами данных и XML. Например, в ADO непросто сохранить изменения, произведенные в отключенном курсоре. Рассмотрим некоторые преимущества ADO.NET в сравнении с ADO.

Масштабируемость. При использовании объекта DataSet работа происходит с отсоединенными наборами данных. Это означает, что вы используете соединение с источником данных очень короткое время. Во многих системах количество подключений к базам данных является самым узким местом в

плане масштабируемости. Для таких систем ADO.NET является

хорошим

решением, резко повышающим их масштабируемость.

 

Независимость от источника данных. В ADO возможности

объекта

RecordSet сильно зависели от используемого источника данных. Теоретически ADO обеспечивал доступ к данным независимо от источника данных, на практике всегда необходимо было иметь хорошее представление о возможностях провайдера. В ADO.NET DataSet действительно не зависим от источника данных, и изменение провайдера, с помощью которого заполняется DataSet, не влияет на функциональность DataSet.

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