Для установки параметров процесса связывания приложения с требуемым сервером SQL используется утилита конфигурации BDE. Естественно, что перед выполнением такой настройки необходимо иметь инсталлированный SQL Links с установленным драйвером для нужного сервера. Все настраиваемые параметры сосредоточены на странице Drivers утилиты конфигурации (см. рисунок 1.2).
Значение | Режим | Комментарий |
NULL | Сервер-локальный | Запрос направляется сначала на сервер, затем, при невозможности выполнения, выполняется локально |
SERVER | Только сервер | Запрос направляется только на сервер, в случае невозможности выполнения, отменяется |
LOCAL | Только локальный | Запрос выполняется исключительно локально |
Значение по умолчанию — NULL. На получаемый результат запросов может влиять установленный языковый драйвер, если локальные базы данных и базы SQL имеют различные кодовые страницы (см. выше). Для устранения подобных ошибок необходимо установить для параметра значение SERVER, блокируя таким образом, выполнение запросов в локальных базах данных.
Type определяет тип используемого сервера. Значение SERVER определяет использование SQL-сервера. Значение FILE определяет использование обычных серверов, основанных на файловой системе.
User Name — задает имя пользователя для доступа к серверу.
Version — версия драйвера SQL Links.
Для доступа к серверу SQL необходимо иметь соответствующий псевдоним. Базовый псевдоним для каждого используемого драйвера SQL Links создается автоматически при первом изменении параметров драйвера после инсталляции.
В этом разделе будут рассмотрены различные аспекты применения запросов SQL в приложениях, использующих базы данных. Для реализации запросов в Delphi 7.0 существует специальный компонент — TQuery, расположенный на странице Data Access Палитры компонентов. Он имеет много общих свойств с TTable и тоже используется для открытия наборов данных. В то же время TQuery обладает рядом свойств и методов, которые позволяют использовать все преимущества запросов SQL для работы с данными. Так, применение TQuery дает возможность работать с данными нескольких таблиц в одном запросе, отбирать данные сразу по нескольким критериям. Однако следует помнить, что использование SQL ведет к некоторому усложнению программного кода приложения. Кроме того, создание эффективного запроса — дело далеко не простое и требует наличия определенного опыта в этой области. Запросы SQL бывают статическими и динамическими. Статические запросы полностью создаются при отладке приложения, а динамические могут изменять свои параметры при выполнении приложения.
Приложения Delphi 7.0 при помощи механизма запросов SQL могут использовать данные:
• таблиц Paradox и dBase, используя синтаксис локального SQL;
• локального сервера Interbase, синтаксис языка поддерживается полностью;
• удаленных серверов SQL через драйверы SQL Links.
1.6 Особенности создания систем клиент/сервер
Возможность создания приложений для работы в составе систем клиент/сервер, бесспорно, стала большим преимуществом Delphi 7.0. Инструментарий для разработки таких приложений интегрирован в составе среды разработчика. Приложения Delphi 7.0, функционирующие на станции-клиенте, используя возможности BDE и драйверов SQL Links и ODBC, могут получать доступ к данным удаленных SQL-серверов. В качестве серверов могут быть использованы Informix, Interbase, Microsoft SQL Server, Oracle, Sybase. Кроме этого, через BDE и установленный драйвер ODBC возможен доступ к таким базам, как DB2, Btrieve, Microsoft Access и другим, для которых существует соответствующий драйвер ODBC.
Приложение, функционирующее на станции-клиенте, обычно создается отдельно и для уже работающих серверов баз данных. Поэтому, для создания работоспособной системы клиент/сервер необходимо решить ряд проблем связывания рабочих станций, совместимости данных при работе одного приложения-клиента с различными типами серверов, оптимизации производительности.
1.7 Совместимость / эффективность
Как известно, при создании приложений для систем клиент/сервер всегда приходится решать проблему выбора между универсальностью и производительностью. С одной стороны, чем большее количество типов серверов поддерживается приложением, тем лучше. Но в этом случае значительно понижается производительность. Впрочем, способ решения этой проблемы зависит от предназначения создаваемого приложения. Иногда можно пожертвовать совместимостью, а иногда оказывается не так уж и важна производительность.
Совместимость по данным в значительной степени зависит от используемых приложением компонентов. При применении ТТаblе проблем практически не возникает, а вот при использовании TQuery приходится накладывать ограничения на синтаксис предложений SQL в зависимости от диалекта SQL, используемого сервером.
Производительность приложения-клиента может быть повышена при использовании хранимых процедур сервера, однако это приводит к дополнительной специализации программы.
В зависимости от типа оборудования, на котором работает приложение, может возникнуть необходимость в поддержке нескольких коммуникационных протоколов. Эта проблема решается инсталляцией соответствующего программного обеспечения на станции-клиенте и сервере, однако, это решение должно быть предусмотрено еще на этапе проектирования системы клиент/сервер. Информацию об инсталлированном протоколе необходимо включить в драйве SQL Links.
В дальнейшем реализация архитектуры "клиент-сервер" будет рассматриваться для сервера Borland Interbase. Объяснить такой выбор нетрудно. Во-первых, Interbase - "родной" сервер для Delphi 7.0 (поэтому для доступа к нему не нужно устанавливать дополнительных драйверов SQL Links, что необходимо при работе из приложений, написанных на Delphi 7.0, с Oracle, Sybase и другими СУБД). Во вторых, в поставку Delphi входит локальный (однопользовательский, на 2 одновременных подключения) сервер Local Borland Interbase. Доступен также и Interbase для Windows 95 на 4 пользователя.
Локальный Interbase может использоваться для отладочных целей. После того, как приложение отлажено на локальной версии SQL-сервера, происходит масштабирование приложения (upsizing). БД переносится на сетевой сервер, а изменения в клиентских приложениях при этом минимальны - необходимо изменить псевдоним БД и, может быть, скорректировать некоторые параметры соединения приложения с сервером.