Теория и практика построения баз данных (1088289), страница 123
Текст из файла (страница 123)
+ Подготовка и выполнение БОЬ-операторов. + Получение данных пз набора результатов. + Фиксация или откат транзакций. + Получение информации об ошибках. Первый уровень (1.ече! 1 АР1) + Соответствие ОВВС на базовом уровне. + Соединение с источниками данных, содержащих информацию, специфичную для драйвера. + Отправка и прием частичных результатов. + Получение информации из каталога. + Получение информации о параметрах, возможностях и функциях драйвера.
Второй уровень (1.ече! 2 АР1) + Соответствие ОПВС на базовом и первом уровнях. + Обзор возможных соединений и источников данных. + Получение «родной» формы ЯОЬ. + Вызов библиотеки преобразований. + Обработка двунаправленных курсоров. Приложение может вызвать драйвер, чтобы определить, какой уровень соответствия ОПВС он предоставляет. Если приложение требует такого уровня соответствия, который не обеспечивается драйвером, оно может корректно прервать сеанс и выдать пользователю соответствующее сообщение.
Можно написать приложение так, чтобы оно использовало функции более высокого уровня соответствия, если онн доступны, а если нет, реализовывало их самостоятельно. Например, драйверы второго уровня должны предоставлять двунаправленный курсор. Приложение можно запрограммировать так, чтобы оно использовало курсоры, если онп доступны, а если нет, реализовывало бы отсутствующую функцию собственными средствами, используя предложения %НЕЙЕ с сильными ограничениями. Это гарантирует, что за один прием приложению будет возвращаться лишь небольшое количество строк, которые будут обрабатываться с помощью курсора, поддерживаемого самим приложением. Во втором случае производительность, скорее всего, будет ниже, зато, по крайней мере, приложение будет способно успешно выполни~ь задачу. Уровни соответствия ЗСП.
Уровни сооглввтстыия 5ЯЬ (БОЬ соп1огшапсе 1ече!з) описывают то, какие ЯЯЬ- операторы, выражения и типы данных может обрабатывать драйвер. Как показано в списке, определены трн уровня соответствия. Возможности минимального синтаксиса ЯЯЬ весьма ограничены, и большинство драйверов поддерживают по крайней мере базовый синтаксис.
Минилщльный синтаксис (пппппшп 5ЯЬ ягапнпаг) + СКЕАТЕ ТАВЬЕ, ПКОР ТАВЬЕ. + Простой оператор ЯЕЬЕСТ (без вложенных запросов). + 1ХЯЕКТ, ПРЕ)АТЕ, ПЕЬЕТЕ. + Простые выражения (А > В ч- С). + Типы данных СНАК, УАКСНАК, ЬОНССНАК. Базовый синтаксис (соге ЯОЬ нгапнпаг) + Минимальный синтаксис. + АЬТЕК ТАВЬЕ, СКЕАТЕ 1НПЕХ, ПКОР 1НПЕХ.
+ СКЕАТЕ ИЕЖ, ПКОР ИЕЪ'. + СКАУТ, КЕУОКЕ. + Полный синтаксис оператора ЯЕЬЕСТ (включая вложенные запросы). + Встроенные функции: Я3М, С013НТ, МАХ, М1Н, АЧС, Расширенный синтаксис (ехгепбей ЯОЬ нгапипаг) + Базовый синтаксис. + Внешние соединения. + ПРРАТЕ и ПЕЬЕТЕ с использованием позиции курсора. + Скалярные функции: ЯЗВБТК1о!О, АВК + Переменные для даты, времени и временная метка. + Пакетная обработка 501 -операторов. + Хранимые процедуры. Как и в случае с уровнями соответствия 01)ВС, приложение может вызвать драйвер, чтобы определить, какой уронень соответствия БОЬ он поддерживает. Имея эту информацию, приложение может затем опрсдслпть, какие ВЯЬ-операторы можно передавать на выполнение драйверу.
Если необходимо, приложение может прервать сеанс или использовать альтернативные, менее мощные способы получения данных. Задание имени источника данных ОРВС Источних данных — это структура данных ОПВС, идентифицирующая базу дан- ных, и СУБД, которая ее обрабатывает. Источники данных могут также иденти- фицировать другие типы данных — электронные таблицы, другие хранилища данных, не являющиеся базами данных, но нас они здесь не интересуют.
ОЕЕ 0В 669 О~Е 0В 668 Глава 15. 00ВС, ОЕЕ 0В, А00 и АЯР Есть три типа источников данных: файловые, системные и пользовательские. Файловый источник дагпихх ((1!е г!ага зоцгсе) — это файл, который может совместно использоваться пользователями базы данных.
Единственное требование состоит в том, чтобы пользователи имели один и тот же драйвер О!)ВС и одинаковый уровень доступа к базе данных. Файловый источник данных может распространяться среди потенциальных пользователей посредством электронной почты или другими способами. Системный источник даттых (зузгеш г!ага зоцгсе) — это источник данных, являющийся локальным для отдельного компьютера.
Системный источник данных может использовать операционная система и любой пользователь этой системы (обладаюший соответствующими полномочиями). Пользовательский источник данных (изет т!ага зоцгсе) доступен только для того пользователя, который его создал. Вообще говоря, для гнеЬ-приложений наилучшим вариантом является создание системного источника данных на гкеЪ-сервере. Пользователи обращаются к шеЬ-серверу посредством браузеров, а ткеЬ-сервер через системный источник данных устанавливает соединение с СУБД и базой данных. На рис.
15.7 показан процесс создания системного источника данных с помощью Администратора источников данных 01)ВС (00ВЕ Васа 5оигсе Абгп!и!11га1ог 5еплсе), который можно найти на Панели управления (Сов!го( Раве() Ъ'!пг!ошз. На рис. 15.?, а пользователь выбирает драйвер для базы данных Огас!е. Обрапгге внимание, что есть два таких драйвера: один предоставлен Мгсгозо(с, а другой— Огас1е.
Эти драйверы могут иметь различные возможноспп и пользователю следует обратиться к документации на каждый из них, чтобы определить, какой из них лучше подходит для его приложения. На рисунке показаны также драйверы для Рагадох, текстовых файлов и У!зца! ЕохРго. На рис. 15.7, б пользователь выбирает базу данных. В данном случае это ЧР1 — база данных Огас!е, созданная в главе 12.
Источник данных для работы с этой базой назван Ч!еггР!бде0гас1е. Мы будем использовать его далее в этой главе. Кроме того, мы будем использовать файловый источник данных под названием Ч!еигРЫВе55 для работы с базой данных БЯ!. Бегтег, созданной в главе 13. ОЕЕ П — это то, на чем основывается доступ к данным в мире М1сгозорс В связи с этим важно понять фундаментальные идеи ОБЕ !)В, даже если вы будете работать только с А!)О-интерфейсами, занимаюшими более высокий уровень.
В этом разделе мы изложим основные принпипы работы ОБЕ !)В. ОБЕ ЕгВ является реализацией разработанного М!сгозо(г объектного стандарта ОСЕ. ОБЕ-объекты являются СОМ-объектами и поддерживают все требуемые для таких объектов интерфейсы. В сущности, ОЕЕ 1)В разбивает всю совокупность возможностей и функций СУБД на отдельные фрагменты — СОМ-объекты с уакой специализацией.
Одни объекты выполняют запросы, другие производят обновления, третьи создают структурные элементы базы данных — таблицы, индексы и представления, четвертые занимаются управлением транзакциями— например, устанавливают оптимистическую блокировку. Рис. 1блк Создание системного источника данных, в — выбор драйвера; б — выбор базы данных Это свойство ОЬЕ ЕгВ позволяет преодолеть крупный недостаток О()ВС. Чтобы продукт мог считаться соответствуюшим стандарту 01)ВС, производитель должен создать драйвер почти для всех функций СУБД.
Это сложная задача, требующая значительных начальных вложений. Используя же ОЕЕ 1)В, производитель СУБД может реализовывать их функции в продукте частями, Можно, к примеру, реализовать только обработчик запросов, соадать для него 570 Глава 15. 00ВС, ОСЕ ОВ, АОО и АЯР ОСЕ ОВ 571 интерфейс О?.Е РВ, и в результате продукт будет доступен для клиентов, использующих АРО. Позже производитель может добавить другие объекты и интерфейсы О?.Е РВ, расширяющие функциональность продукта.
Поскольку данная книга не подразумевает знакомства читателей с объектноориентированным программированием, то прежде чем двигаться дальше, нам следует определить некоторые понятия. В частности, это понятия абстракции, метода, свойства и коллекции. Абстракция (айзггасс!оп) — это обобщение чего-то. Интерфейсы ОРВС являются обобщениями «родных» методов доступа к СУБД. Когда мы создаем абстракцию чего-либо, мы теряем детали, но получаем возможность раба~ать с более широким диапазоном типов. Например, ипгбар записей (гесогс?вес) является абстракцией отношения. В данной абстракции набор записей определен как объект, имеющий ряд характеристик, которые присущи всем отношениям.
Например, каждый набор записей содержит множество столбцов, которые в абстракции называются полями. Назначение абстракции состоит в том, чтобы передать все существенные черты и отбросить детали, не представляющие важности для тех, кто пользуется этой абстракппей. Так, отношения в Огас!е могут иметь некоторое свойство, которым не обладает набор записей; то же самое может быть справедливо и для отношений в ЯО?. Яегуег, АЯг 500, РВ2 и других СУБД. Этп уникальные характеристики будут потеряны в абстракции, но если абстракция является удачной, никто не будет возражать.
Теперь переместимся на один уровень вверх. Набор строк (гои зег) является в О?.Е РВ абстракцией набора записей. Зачем же понадобилось в О|Е РВ определять еще одну абстракцию? Дело в том, что О?.Е РВ обращается к источникам данных, катаргяе не являются таблицами, но имеют иекагларие из характеристик, присущих таблицам. Рассмотрим совокупность всех адресов электронной почты, солержащихся в вашей адресной книге.
Можно лп назвать эту совокупность отношением? Нет, но у нее есть определенные характеристики, свойственные отношениям. Каждый адрес электронной почты представляе~ собой семантически взаимосвязанную группу элементов данных. Подобно строкам таблицы, они упорядочены: есть первый адрес, второй, третий и т. д. Но в отличие от строк отношения, они не принадлежат к одному и таму же типу.
Некоторые из них являются адресами людей, а некоторые — адресами списков рассылки. Таким образом, ни одно действие с набором записей, критичное к тому, чтобы все элементы набора имели одинаковый тип, не может быть выполнено на наборе строк. Двигаясь от общего к частному, О?.Е РВ определяет набор свойств и признаков набора строк. Более того, О?.Е РВ определяет набор записей как подтип набора строк. Наборы записей обладают всеми свойствами и признаками, свойственнымн наборам строк, плюс еще некоторыми характеристиками, которые являются уникальными для наборов записей. Аастракции распространены и весьма полезны.
Вы можете услышать об абстракциях управления транзакциями, абстракциях запросов, абстракциях интерфейсов. Это просто означает, что некоторые характеристики набора вещей определены формально как тип. Объект в объектна-ориентированном программировании — это абстракция, определяемая своими свойствами и методами. Например, обьект, представляющий набор строк, имеет свойство А??о»уЕ6т, свойство кесогйе1?уре и свойство ЕОЕ Эти свойства (ргорегг?ез) представляют характеристики абстракции набора записей. Объект характеризуется также действиями, которые он способен выполнять. Эти действия называются.иетодасми (шегйоЖ).