ТЕХНОЛОГИЯ ДОСТУПА К ДАННЫМ DBEXPRESS
Технология dbExpress позволяет проектировать приложения, переносимые между различными SQL-серверами, и в тоже время в полной мере использовать уникальные особенности каждого из серверов.
Технология dbExpress была разработана, чтобы решить следующие задачи:
- — минимизировать объем и количество используемых ресурсов;
- — получить максимальную скорость работы;
- — обеспечить кросс-платформенность;
- — легкость распространения и разработки драйверов;
- — дать разработчику больше управления памятью и сетевым трафиком.
Технология dbExpress обеспечивает взаимодействие приложения с серверами БД. Драйверы dbExpress используют для получения данных исключительно запросы SQL. При этом на клиентской стороне отсутствует кэширование данных, вследствие этого здесь применяются исключительно однонаправленные курсоры и отсутствует возможность прямого редактирования наборов данных.
Для функционирования компонентов dbExpress необходим только один драйвер, который взаимодействует напрямую с клиентским программным обеспечением для выбранного сервера БД. В поставку входят драйверы для следующих серверов БД: DB2, InterBase, MySQL, Oracle и Microsoft SQL Server 2000.
Драйверы реализованы в виде динамических библиотек, а при необходимости могут быть перекомпилированы непосредственно к исполняемому файлу приложения. Поэтому проблема распространения совместно с приложением средств доступа к данным в случае с dbExpress снимается полностью. Естественно, на компьютере должно быть установлено клиентское программное обеспечение соответствующего SQL- сервера.
Кроме того, технология dbExpress обеспечивает доступ к данным в кроссплатформенных приложениях для Windows и Linux, т. к. применяется и в Delphi, и в Kylix, а способы ее применения идентичны.
Таким образом, технология dbExpress является наилучшим решением для приложений, в которых необходим быстрый и необременительный просмотр данных серверов SQL. И вряд ли он подойдет для сложных клиент-серверных или многоуровневых приложений, обеспечивающих серьезную работу с данными.
Технология dbExpress представляет собой совокупность драйверов, компонентов, инкапсулирующих соединения, транзакции, запросы и наборы данных, а также интерфейсов, обеспечивающих универсальный доступ к функциям dbExpress.
Компоненты dbExpress располагаются в Палитре компонентов на одноименной странице.
Для создания соединения с сервером приложение должно использовать компонент TSQLConnection. Это обязательный компонент, все остальные связаны с ним и используют его для получения данных. TSQLConnection позволяет выполнять некоторые операции с подключенными наборами данных и следить за их состоянием. Подобно своим аналогам в BDE и ADO, компонент TSQLConnection поддерживает механизм транзакций и делает это сходным образом.
Набор компонентов dbExpress, инкапсулирующих набор данных, вполне обычен и сравним с аналогичными компонентами BDE, ADO, IBX: TSQLDataSet, TSQLTable, TSQLQuery, TSQLStoredProc, TSimpleDataSet.
Необходимость создания легкой технологии доступа к данным, какой является dbExpress, наложила на эти компоненты ряд ограничений. Хотя общим предком всех рассматриваемых здесь компонентов является класс TDataSet, который обладает полным инструментарием для работы с набором данных, компоненты dbExpress используют только однонаправленные курсоры и не позволяют редактировать данные. Однонаправленные курсоры ограничивают навигацию по набору данных и обеспечивают перемещение только на следующую запись и возврат на первую. Также здесь недоступны любые операции, требующие буферизации данных — это поиск, фильтрация, синхронный просмотр.
Таким образом, для выключения ряда механизмов класса TDataSet понадобился еще один промежуточный класс — TCustomSQLDataSet, который является общим предком для компонентов, инкапсулирующих запросы, таблицы и хранимые процедуры. Его задачей является не столько внесение новой функциональности, сколько корректное ограничение возможностей, заложенных в TDataSet.
Отображение данных при помощи компонентов со страницы Data Controls также ограничено. Нельзя использовать компоненты TDBGrid и TDBCtrlGrid, а в компоненте TDBNavigator необходимо отключить кнопки возврата на одну позицию назад и перехода на последнюю запись. Также не рекомендуется применять компоненты синхронного просмотра. Остальные можно использовать обычным способом.
Компонент TSQLDataSet является универсальным и позволяет выполнять запросы SQL (подобно TSQLQuery), просматривать таблицы целиком (подобно TSQLTable) или выполнять хранимые процедуры (подобно TSQLStoredProc). Для определения режима работы компонента используется свойство ConimandType.
Компонент TSQLTable предназначен для просмотра таблиц целиком и по основным функциям подобен своим аналогам - TTable, TADOTable, TIBTable. Для получения табличного набора данных компонент TSQLTable самостоятельно формирует запрос на сервер, используя для этого возможности, унаследованные от предка TCustomSQLDataSet.
Компонент TSQLQuery повторяет функциональность своих аналогов в BDE, ADO, IBX и позволяет выполнять на сервере запросы SQL клиента.
Компонент TSQLStoredProc инкапсулирует функциональность хранимых процедур для их выполнения в рамках технологии dbExpress. Он подобен другим своим аналогам.
Компонент TSimpleDataSet обеспечивает кэширование полученных данных и сделанных изменений на стороне клиента и последующую передачу их на сервер для фиксации. В отличие от компонента TClientDataSet, основным назначением которого является обслуживание набора данных, полученного от удаленного сервера при помощи серверных компонентов DataSnap, компонент TSimpleDataSet призван быть лишь средством редактирования набора данных в технологии dbExpress. Компонент использует двунаправленный курсор и позволяет редактировать данные, правда только в режиме кэширования. Таким образом, компонент TSimpleDataSet позволяет исправить основные недостатки технологии dbExpress.
Технология dbExpress основана на использовании четырех базовых интерфейсов, методы которых применяются во всех компонентах dbExpress:
- 1. ISQLDriver инкапсулирует всего три метода для обслуживания драйвера dbExpress. Экземпляр интерфейса создается для соединения и обеспечивает его связь с драйвером.
- 2. ISQLConnection обеспечивает работу соединения. Он передает запросы серверу и возвращает результаты, создавая экземпляры интерфейса ISQLCommand, управляет транзакциями, поддерживает передачу метаданных при помощи интерфейса ISQLMetaData.
- 3. ISQLCommand обеспечивает функционирование запроса dbExpress. Компоненты dbExpress, работающие с наборами данных, используют его для реализации своих методов.
- 4. ISQLCursor обладает совокупностью методов, которые помогут получить информацию о полях курсора, а также значения этих полей. Все эти методы имеют одинаковое представление. Для получения нужной информации необходимо задать порядковый номер поля в структуре курсора.
Наряду с обычными методами отладки исходного кода в dbExpress существует возможность контроля запросов, проходящих на сервер через соединение. Для этого используется компонент TSQLMonitor.
Технология dbExpress предназначена для создания приложений, требующих быстрого доступа к БД, хранящимся на серверах SQL. Драйверы dbExpress небольшие по объему и быстрые, т. к. они обеспечивают достаточно небольшую функциональность. Каждый драйвер выполнен в виде .dll (на платформе Windows) или как .so (shared library на Linux).
Технология dbExpress реализована на основе использования стандартных типов компонентов доступа к данным, проста в распространении (исполняемый файл приложения или одна-две динамические библиотеки). Поддерживает кросс- платформенную разработку для Linux.
К недостаткам технологии можно отнести использование однонаправленных курсоров и ограниченные возможности по редактированию (возможно только при кэшировании изменений на клиенте или выполнением специальных модифицирующих запросов).
- Ш ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
- 1. Опишите технологию доступа к данным dbExpress.
- 2. Перечислите основные компоненты технологии dbExpress для подключения БД.
- 3. Опишите иерархию классов наборов данных технологии dbExpress.
- 4. Выделите достоинства и недостатки использования технологии dbExpress.
- 5. Назовите драйверы серверов БД, входящих в технологию.