Процесс разработки и развития любой СУБД неизбежно приводит к необходимости
решать проблему взаимодействия с данными, созданными и управляемый в рамках
других программных систем, или, как еще говорят, к проблеме доступа к внешним
источникам данных. Это, в свою очередь, определяет принципиальное требование,
которому должны удовлетворять прикладные СУБД: программные процедуры обработки
информации, создаваемые в рамках СУБД, должны быть максимально независимыми
от формата хранимых данных.
Выполнение этого принципа позволяет:
- во-первых, с наименьшими затратами осуществлять переход от одной СУБД к другой,
потребность в чем, допустим, возникает при масштабировании ранее созданного
программного обеспечения для предприятий и фирм качественно иного размера;
- во-вторых, успешно решать задачи интеграции двух и более независимых программных
систем.
Важнейшим инструментом форматно независимого доступа к данным из программ стала
технология ODBC (Open Data Base Connectivity), созданная фирмой Microsoft. Ее
принципиальная схема изображена на рис. 30.
Как следует из рис. 30, в рамках ODBC:
- программное приложение непосредственно взаимодействует с диспетчером драйверов,
посылая ему ODBC-вызовы;
- диспетчер драйверов отвечает за динамическую загрузку нужного ODBC-драйвера,
через который обращается к СУБД (серверу баз данных);
Рис. 30. Принципиальная схема технологии ODBC
- ODBC-драйвер выполняет все вызовы ODBC-функций, "переводит" их
на язык источника данных;
- СУБД хранит и выводит данные в ответ на запросы со стороны ODBC-драйвера (или
же возвращает код ошибки).
В настоящее время в состав подавляющего большинства систем управления данными
входят соответствующие ODBC-драйверы.
Таким образом, при работе с базой данной через ODBC-драйвер она выступает как
некоторый виртуальный источник данных, которым можно управлять с помощью SQL-подобных
команд.
Рис. 31. Окно Администратора источников данных ODBC
Задание ODBC-источника данных (DSN - data source name) является действием,
которое осуществляется средствами операционной системы, управляющей компьютером.
В частности, в операционных средах Windows для этого в Панели
управления предусмотрен пункт Источники Данных ODBC (32 разр), из которого вызывается
Администратор источников данных ODBC.
С его помощью могут быть заданы:
- пользовательский DSN - источник данных, доступный только текущему пользователю
на текущем компьютере;
- файловый DSN - источник данных, которые могут применять совместно различные
пользователи, у которых установлены одинаковые ODBC-драйверы;
- системный DSN - источник данных, доступный всем пользователям и службам текущего
компьютера.
Окно Администратор источников данных ODBC показано на рис. 31.
3.2. Доступ из MS Access к источникам
данных в формате других программных приложений
В MS Access предусмотрены две принципиальные возможности работы с внешними данными.
Это импорт данных и связь с внешними таблицами данных. Оба режима доступны из
меню главного окна базы данных: Файл > Внешние данные.
В случае импорта происходит создание дубликата внешних данных во вновь создаваемой
таблице. Среди преимуществ такого решения могут быть названы:
- доступность всего арсенала средств СУБД Access при манипуляциях импортированными
данными;
- высокое быстродействие при обращении к ним;
- независимость от исходного источника данных.
Однако, приобретая указанные преимущества, мы одновременно получаем и потенциальные
проблемы, связанные с поддержанием актуальности и соответствия друг другу двух
параллельных копий одной и той же информации. Очень часто подобные проблемы
оказываются неразрешимыми.
Eсли актуальность данных является для нас критичным фактором, то необходимо
использовать другой способ работы с внешними данными - связь. В этом случае
в базе данных добавляется лишь ссылка на внешние источники данных и работа с
ними происходит с помощью специальных драйверов. В поставку MS Access традиционно
входят драйверы для работы с данными, созданными в форматах Paradox" Excel,
dBase, FoxPRO, а также в текстовом (*.txt) и гипертекстовом (*.htm) форматах.
Базы данных Paradox, Excel, dBase, FoxPRO и некоторых других форматов также
называют базами данных с индексно-последовательной организацией (англ. - ISAM
- Indexed Sequential Access Method). Специфические IS AM-драйверы, учитывающие
конкретные особенности перечисленных форматов организации данных, как правило,
обеспечивают высокую эффективность и быстродействие при работе с ними. Одновременно
в Access существует возможность работы с обширным множеством универсальных источников
данных, для которых установлены ODBC-драйверы. Для этого при указании типа файла,
с которым устанавливается связь, необходимо выбрать Базы данных ODBCQ (рис.
32).
Рис. 32. Выбор типа внешнего источника данных
"Платой" за применение технологии связывания с внешними данными являются ограничения возможностей по управлению структурой добавляемых таблиц, а также зависимость от состояния самого внешнего источника, к которому мы подключаемся.
3.3. Технологические решения по организации
доступа к данным
Рассмотрим чуть подробнее архитектуру доступа к данным в Access. Схематично
она представлена на рис. 33. В представленной схеме блок пользовательского
интерфейса олицетворяет видимую часть СУБД, то есть то, с чем пользователь взаимодействует
непосредственно (формы, отчеты и другие объекты). Под хранилищем данных понимаются
файл (файлы), содержащие таблицы данных (например, в Access это mdb-файлы).
Хранилище - это некоторый пассивный элемент, в нем данные просто содержатся.
Осуществлять манипуляции с ними - это задача процессора базы данных (или, как
еще говорят, ядра базы данных). Он транслирует команды приложения в физические
операции, непосредственно меняющие файл (файлы) хранилища данных. Основным достоинством
описанной схемы является независимость приложения от типа базы данных, к которой
она обращается: будут ли это данные во внутреннем формате Access или данные
какой-то другой структуры - в приложении используются одни и те же объекты и
методы доступа к ним.
Рис. 33. Архитектура доступа к данным в Access
В СУБД MS Access используется процессор, получивший название Jet (Join* Engine
Technology). Он реализован в виде набора файлов динамически компонуемых библиотек
(DLL), которые связываются с прикладной программой Access в период ее выполнения.
В состав процессора Jet входят процессор запросов SQL и процессор обработки
результатов, возвращаемых этими запросами.
Рассмотренная ранее модель объектного интерфейса доступа к данным ОАО представляет
собой программную надстройку над процессором Jet. Jet также реализует описанные
в 3.1 возможности по доступу к внешним данным в формате ISAM и источникам
данных ODBC.
Для работы СУБД MS Access 97 был использован процессор Jet версии 3.5 для 32-разрядных
приложений. Среди принципиальных преимуществ новой версии могут быть названы:
- ODBCDirect - альтернативный режим DAO, который предоставляет возможности прямого
обращения к источникам данных ODBC в обход ядра Jet. Это позволяет в некоторых
случаях оптимизировать процесс работы с данными за счет использования специфических
характеристик удаленных ODBC-источников;
- для баз данных, управляемых процессором Jet, определены новые объекты, свойства
и методы, позволяющие использовать новые возможности частичной репликаций.
Также следует отметить, что в Jet реализована технология Rushmore - специальная
методика управления запросами, которая позволяет очень эффективно отбирать Наборы
записей при использовании в их критериях определенных типов выражений.