Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009
.pdf9. Дополнительные вопросы применения баз данных |
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-компонентам при использовании других компонентов и служб легко взаимодействовать с любой программой на любой платформе.