В данной статье речь пойдет о нововведениях в последней, пятой, версии Delphi, связанных с интеграцией средств для работы с базами данных InterBase. А именно: о наборе компонентов под общим названием InterBase Express (IBX). Также рассматривается вопрос о целесообразности их использования.
Не секрет, что среди SQL-серверов InterBase не занимает первое место по производительности. И Oracle, и MS SQL Server будут, конечно, покруче, но, несомненно, существуют задачи, для которых и InterBase неплохо подходит. Принимая во внимание доступность (серверное и клиентское ПО InterBase поставляется вместе с Delphi с лицензией на пять пользователей), простоту установки, конфигурирования и администрирования, можно сказать, что спектр возможных областей применения InterBase достаточно широк: от изучения с его помощью технологии клиент-сервер до использования в основе относительно крупной информационной системы.
Подавляющее большинство приложений для работы с БД, написанных с помощью Delphi, используют Borland Database Engine (BDE). BDE представляет собой БД-энжин и связующее ПО для Delphi и некоторых других продуктов. Если приложение работает с каким-либо сервером БД, то еще используется SQL Links - набор DLL, функционирующих под управлением BDE. SQL Links эмулирует навигационные функции конкретного SQL-сервера, разрешая работать с ним привычным для борландовских приложений способом.
Таким образом, вместе со свежеприобретенной программой пользователю необходимо установить также и BDE. В этом нет ничего страшного, но если в системе уже были приложения, использующие BDE, то, насколько мне известно, существует вероятность возникновения проблем с этими приложениями из-за неполной совместимости между некоторыми версиями BDE.
InterBase Express не нуждается в BDE, он работает с СУБД InterBase без посредников. За счет этого достигается большая производительность и предоставляется доступ к продвинутым функциям сервера, недоступным ранее при использовании стандартных компонентов.
Следует отметить, что и прежде существовала возможность общаться с InterBase без помощи BDE. Можно было работать на уровне функций API-сервера, а можно было использовать продукты сторонних разработчиков, реализовавших, фактически, ту же функциональность, что и представляемый IBX. Например, набор компонентов FreeIBComponents, который, как видно из названия, является бесплатным, вместе со своими исходными текстами лежит на www.interbase.com/download, что говорит о признании его пригодности для определенных целей. Но лично меня отпугнули не уменьшающиеся от версии к версии списки исправляемых багов. Кстати, в исходниках InterBase Express написано, что именно набор FreeIBComponents "в некоторой степени лег в основу" IBX'а. Будем надеяться, что парни (а, может, и девушки) из Borland/Inprise серьезно поработали, и IBX не будет столь сырым.
К слову сказать, существует набор схожих компонентов и для СУБД Oracle (www.oracleobjects.com, вроде бы). Может, когда-нибудь в стандартной поставке Delphi появится и Oracle Express?
Далее следует описание новых IBX-компонентов, находящихся на вкладке InterBase. Хотя они имеют схожие имена с компонентами BDE, между ними существуют различия.
TIBDatabase используется для установления соединений с базой данных, которые могут включать в себя одну или более совместных транзакций.
В отличие от BDE, IBX контролирует транзакции с помощью отдельного компонента, а именно - TIBTransaction. Это позволяет разделять транзакции и соединения с БД. Таким образом, можно использовать преимущества двухфазного подтверждения изменений для транзакций, охватывающих несколько соединений с базами данных, а также иметь несколько транзакций в рамках одного соединения. Используя в конкретных ситуациях наиболее оптимальные опции транзакций, приложения, естественно, только выигрывают в производительности.
Следующие два компонента являются аналогами TTable и TQuery.
TIBTable применяется для получения "живого" набора данных (НД) по таблице.
TIBQuery используется для выполнения DSQL-операторов, получения НД, состоящего из нужных полей и записей одной или нескольких таблиц.
TIBDataSet аналогичен TIBQuery, за исключением того, что поддерживает "живые" НД. Это возможно благодаря свойствам SelectSQL, RefreshSQL, InsertSQL, UpdateSQL и DeleteSQL, наличие которых позволяет отказаться от совместного использования компонента TIBUpdateSQL.
TIBStoredProc следует использовать для выполнения хранимых процедур. Входные параметры для процедуры передаются через свойство Params этого компонента. Туда же помещается и результат, если он не превышает одной записи. Для хранимых процедур, которые возвращают более одной записи или SELECT-процедур, используется TIBQuery или TIBDataSet.
TIBSQL применяется для запуска SQL-операторов и получения данных с большой скоростью без накладных расходов на буферизацию данных и общение с data-aware-элементами управления. Это наиболее прямой способ доступа к данным InterBase'овских БД. TIBSQL следует использовать для операций, которые должны быть быстрыми и необъемными. Под это определение подходят, например, операции описания метаданных и перекачки данных из одной БД в другую.
TIBUpdateSQL. Полная аналогия с TUpdateSQL. Используется для обновления данных в НД, предназначенных только для чтения, полученных с помощью TIBQuery.
TIBSQLMonitor окажется полезен при разработке диагностических утилит для мониторинга взаимодействий приложения и InterBase-сервера.
TIBDatabaseInfo используется для получения различной информации о БД. Такой, например, как список пользователей, подключенных к БД в текущий момент, интервал чистки, версия ODS.
TIBEvents используется для регистрации приложением своего интереса в событиях, о которых уведомляет сервер, и асинхронной обработки этих событий. Такая система позволяет реагировать на изменения в БД, производимые другими приложениями, параллельно работающими с данной БД, без прямого взаимодействия с ними и без нужды регулярно "спрашивать" БД.
Итак, как видно из обзора, IBX-компоненты, наряду с полной поддержкой традиционных для дельфийских приложений способов работы с БД, привносят новую полезную функциональность, что не может не радовать приверженцев Delphi и InterBase, которые теперь стали еще дружнее.
Николай АРАПОВ,
nikaragua@mail.ru
Комментарии
Страницы
там лежит пример, как работать с jpeg.
Читайте матчасть.
Страницы