Теория и практика построения баз данных (1088289), страница 124
Текст из файла (страница 124)
Набор записей имеет такие методы, как Ореп, »1очеГ?гй, Моче??ехт и Позе. Строго говоря, определение абстракции объекта называется объектным классам (оЬ!есг с1азэ), или просто классом. Объектом же называется экземпляр объектного класса, например конкретный набор записей. Все объекты одного класса имеют одни и те же методы и свойства, но значения этих свойств различны у разных объектов. Остался последний термин, которому предстоит дать определение, а именно коллекция. Коллекция (со11есйоп) — это объект, содержащий группу других объектов.
К примеру, набор записей содержит группу объектов, называемых паллии ??1е?бз). Коллекция имеет свойства и методы. Одно из свойств всех коллекций называется Совий Это свойство описывает количество объектов в коллекции. Так, гесоп?зет.яеЫюСаипт представляет количество нолей в коллекции. В АРО и 01 Е РВ имена коллекций образуются как форма множественного числа от имен объектов, в нпх содержащихся. Например, имеется коллекция ВеЫю состоящая из объектов ВеЫ, коллекция Еггогэ, состоящая из обьектов Еггог, коллекция Рагате?еп, состоящая из объектов Рагатегег, н т.
д, Важным методом коллекций является метод йегатаг, коз орый осуществляет перебор элементов коллекции или идентифицирует их каким-либо иным образом. Если вас испугали определения, не отчаивайтесь. Практическое использование этих понятий вы увидите в конце этой главы. Цели создания О~.Е ОВ Основные цели, преследовавшиеся при создании 01 Е РВ, перечислены в списке.
Во-первых, как уже говорилось, 01Е РВ разбивает функциональность СУБД на объекгные кусочки. Это разделение обеспечивает большую гибкость как для потре- бителей даиньст (г?ага сопзшпегз) — пользователей функциональности О1 Е РВ, так и для поставщиков данных (г?ага ргоуЫегз) — производителей продукгав, ко- торые предоставляют доступ к функциональности 01.Е РВ, Потребители данных имеют дело только с теми объектами и функциями, которые им нужны; мобиль- ное устройство для чтения базы данных может иметь весьма малые габариты. В отличие от случая с ОВВС, поставщикам данных трсбуется реализовать только некоторый фрагмент функциональности СУБД.
Это разделение означает также, что поставщики данных могут предоставлять доступ к возможностям и функци- ям СУБД через множество различных интерфейсов. 1. Создание объектных интерфейсов для элементов функциональности СУБД— запрос, обновление, управление транзакциями, 2.
Увеличение гибкости: дать потребителям данных возможность использовать только те объекты, которые им нужны; дать поставщикам данных возможность открывать доступ к элементам функциональности СУБД; 572 Глава 15. 00ВС, ОсЕ 0В, АОО и АВР 01.Е 0В 573 обеспечить возможность доступа к функциональности с помощью множества различных интерфейсов; сделать эти интерфейсы стандартизированными и расширяемыми. 3.
Создание объектных интерфейсов для любых типов данных: реляционных баз данных (через ОРВС или собственные интерфейсы СУБД), нереляционных баз данных, систем обработки файлов (Ч5АМ и др.), электронной почты и многого другого. 4. Реализация такой стратегии, при которой данные не должны преобразовываться в другие форматы или перемещаться из того места, где они находятся.
Последнее утверждение требует пояснений. Объектный интерфейс представляет собой как бы упакованный набор объектов. Интерфейс (1пгег1асе ) — это набор объектов плюс свойства и методы, доступ к которым они предоставляют. Объект не обязан открывать в интерфейсе все свои свойства и методы.
Так, в интерфейсе запроса набор записей будет поддерживать только чтение, а в интерфейсе обновления — создание, обновление и удаление. То, как объект поддерживает интерфейс, называется реализацией (ппр1егпепгаг1оп) интерфейса. Реализация полностью скрыта от пользователя. Фактически, разработчики объекта вольны менять ее, когда захотят. Однако если им вздумается изменить интерфейс, то заслуженное презрение со стороны пользователей будет им обеспечено! 01.Е РВ определяет стандартизированные интерфейсы.
Однако поставщики данных свободны в том, чтобы добавлять интерфейсы в дополнение к базовым стандартам. Такая расширяемость имеет первостепенное значение для достижения следующей цели — предоставить обьектньш интерфейс для любых юшов данных. Реляционные базы данных могут обрабатываться с помощью объектов 01.Е РВ, использующих ОРВС или собственные драйверы СУБД. В 01.Е РВ предусмотрена поддержка и других типов данных, как указано выше. Побочным следствием этих целевых установок является то, что данные не нужно нп преобразовывать из одного формата в другой, ни перемещать из одного источника данных в другой.
%еЬ-сервер на рис. 15.1 может использовать 0).Е РВ для обработки данных в любом из форматов прямо в тоьч месте, где эти данные находятся. Это означает, что транзакции могут затрагивать множество источников данных и быть распределенными по различным компьютерам. Для этого в 01Е РВ предусмотрено средство под названием МТ5 (М|сгозо(г Тгапзасйоп Беггег, сервер транзакций Мгсгозой), но его обсуждение выходит за рамки данной книпс Основные конструкции ОЕЕ РВ Как показывает следующий список, в 01.Е РВ имеется два типа поставщиков услуг. Лостави1ики табличных данных (гаЫе с1ага ргогЫегз) представляют своп данные через наборы строк, Примерами являются СУБД, электронные таблицы и обработчики файлов 15АМ, подобные ЙВазе и РохРго.
Кроме того, в виде набо- ров строк могут быть представлены и другие типы данных, например сообщения электронной почты. Поставщики табличных данных приносят данные определенного типа в мир 01.Е РВ. + Поставщик табличных данных + Предоставляет доступ к данным через наборы строк.
Примеры; СУБД, электронные таблицы, системы 15АМ, электронная почта. + Поставщик услуг Не имеет своих данных. Преобразует данные с помощью интерфейсов 01.Е РВ. Является одновременно и потребителем, и поставщиком данных. Примеры; обработчик запросов, генератор ХМ1:документов, Постави1ик услуг (зегч(се ргог|дег) занимается преобразованием данных. Поставщики услуг принимают данные 01.Е РВ ог поставщика табличных данных и некоторым образом их преобразуют. Поставщики услуг являются и потребителями данных (исходных), и поставщиками данных (преобразованных).
В качестве примера поставщика услуг можно привести службу, которая получает данные от реляционной СУБД и преобразует их в ХМ(.-документы. Объект, называемый набором строк (гоп'зе1), играет фундаментальную роль в 01.Е РВ: набор строк эквивалентен тому, что мы называли курсором в главе 11, и эти два термина фактически синонимичны. В списке перечислены основные интерфейсы, поддерживаемые набором строк. Интерфейс 1йоа5е1 предоставляет методы для последовательного передвижения по набору строк только в прямом направлении.
Когда вы объявляете последовательный курсор в 01.Е РВ, вы вызываете интерфейс 1Рон5е1. Интерфейс 1Ассез1ог используется для связывания программных переменных с полями набора строк. При использовании АРО этот интерфейс в значительной степени скрыт, потому что он используется сценарным ядром в своей работе. Но если вы работаете с библиотеками типов в УВ, вы можете использовать методы этого интерфейса + Иов'Бег Методы для последовательного перебора строк. + !Ассеззог Методы для установления связей между набором строк и переменными программы-клиента. + 1Со1шппз1п(о Методы для получения информации о столбцах набора строк.
+ Прочие интерфейсы Двунаправленные курсоры. Создание, обновление и улаление строк. Прямой доступ к конкретным строкам (закладки). Явные блокировки. И так далее... 574 Глава 15. 00ВС, ОСЕ 0В, Д00 и АЯР А00 575 Интерфейс 1СоЫвпз1п(о имеет методы для получения информации о столбцах набора строк. Мы будем использовать этот интерфейс в двух примерах применения АРО в конце этой главы. 1Рогч5ег, 1Ассеззог и 1Со(цвпз1п1о являются базовыми интерфейсами набора строк. Другие интерфейсы предназначены для более сложных операций — манипуляций с двунаправленнылги курсорами, обновления, прямого доступа к конкретным строкам, явных блокировок и многого другого.
Рассмотрим зги интерфейсы в контексте двух наборов строк — один из них взят из обычного отношения, а другой содержит коллекцию адресов электронной почты. Первые три интерфейса могут быть непосредственно использованьг с обоими наборами строк. Фуикции и возможности последних трех интерфейсов, скорее всего, будут различаться для этих двух наборов, а некоторые из них могут быль вообще не определены для какого-то из наборов. Последнее замечание: наборы строк могут содержать указатели на объекты, так что с их помощью можно создавать весьма сложные структуры. А00 АРО О (Асс(че Раса ОЬ)есгз) — зто простая объектная модель, которую могут использовать потребители данных для обработки любых данных ОСЕ РВ.
К ней можно обращаться из сценарных языков, таких как 15сг(рг и УВ5спрс, а также пз Унша1 Ваз1с, )ача, С№ и С++. Мкгозой постановила, что АРО заменит все остальные методы доступа к данным, поэтому изучение этой технологии важно не только для приложений баз данных, применяющих интернет-технологии, но и для любых приложений, использующих для работы с данными продукты М1сгоэо(ь Благодаря абстракциям ОСЕ РВ и объектной структуре объектная модель АРО А О и ее интерфеисы остаются одними и теми же независимо от типа обрабатываемых данных. Таким образом, разработчик, изучающий АРО в применении к обработке реляционных баз данных, сможет использовать эти знания и для обработки папки с сообщениями электронной почты.
Характеристики АРО перечислены в следующем списке. + Простая объектная модель для потребителей данных ОСЕ РВ. + Может использоваться из УВ5сг1рц З5сгйрц У(эца1 Ваз1с, 'зача, С№, С++. + Единый станларт М1сгоэай для доступа к данным. + г Объекты доступа к данным остаются одними и теми же для всех типов данных 01.Е РВ. Вызов АРО из АЗР-страниц В этой главе мы будем вызывать АРО на ччеЬ-сервере, используя АБР-страницы. Такие страницы содержат смесь РНТМ1.
(или ХМ1.) и программных конструкций на языках УВ5сПрс или 1ача5сг1рц В этой главе мы будем использо- вать УВ5сг(рй АБР-страницы можно писать в лгобом текстовом редакторе, но легче их писать в редакторе Ргопсрайе и подобных ему продуктах для создания я еЬ-страниц. П5 (1псегпег 1п1огшашъп 5егчег, информационный сервер Интернета)— это ччеЬ-сервер, встроенный в операционные системы Ъ'1пг(о~чз 2000 Рго1езз1опа1 и Ъ"1пг(очгэ НТ. Как уже говорилось в главе 14, АБР является 15АР1-расширением П5. С практическая точки зрения зто означает, что всякий раз, когда П5 получает файл с расширением .азр, опа посылает этот файл программе АБР для обработки.
Все операторы языков программирования, заключенные между символами <'й и '/о, будут обрабатываться на компьютере чаеЬ-сервера. Остальные операторы будут переданы на выполнение браузеру пользователя. Весь код, который мы будем писать в этой главе, будет обрабатываться на тчеЬ-сервере. Для вызова АБР-странпц поместите их в какую-нибудь папку, например С~Му01гес1огу. Затем откройте П5 и создайте виртуальную папку, указывающую на ту папку, в которую вы поместили ваши А5Р-странипы. Это можно сделать, шелкнув правой кнопкой мыши на значке Ое(аи(1 1УеЬ 5йе (Сайт по умолчанию) в окне 1лгегпег 1п(огваг1оп 5егчег.
Выберите команлу печа ь У)г1иа1 01гессогу (Создать ь Виртуальная папка), в результате чего запустится мастер, который предложит вам дать имя виртуальной папке н указать реальную папку (здесь С:~Му01гес1огу), в которой будут находиться ваши АБР-странипы, На третьей панели мастера выберите Резо (Чтение) и Рпп 5спр(з (Выполнять сценарии). Для примеров в этой главе мы будем использовать виртуальную папку с именем У1ечгР1дйеЕхавр1е1. Нет необходимости в том, чтобы СУБД и ч еЬ-сервер находились на одной и той же машине. Когда вы задаете пмя источника данных ОРВС, вы можете выбрать базу данных, которая находится на другом компьютере и доступна с компьютера тчеЬ-сервера. Это будет проще, еслп другой компьютер работает под управлением ЪПппочгз, но можно сделать зто и для других операционных систем.