5.5. Технология ODBC и ее
применение
В 4.4. отмечалось, язык SQL
позволяет вызывать SQL-запросы к базам дан¬ных из прикладных
программ, что удобно использовать при создании надстройки. Один из
вариантов использования этого приема был описан в 5.4. (доступ к
базам данных из web-сценариев). При этом мы намеренно не
интересовались тем, как такие возможности реализованы «изнутри».
На самом деле, применение языка SQL в прикладных программах на
практике реализовано двумя различными способами.
A) Внедренные SQL-операторы. Отдельные SQL-операторы внедряются
прямо в исходный текст программы и смешиваются с операторами
базового языка. Этот подход позволяет создавать программы,
обращающиеся непосредственно к базе данных. Специальные
программы-предкомпиляторы преобразуют исходный текст с целью замены
SQL-операторов соответствующими вызовами подпрограмм СУБД, затем он
компилируется и собирается обычным способом.
B) Использование прикладного интерфейса программирования (API).
Альтер¬нативный вариант состоит в предоставлении программисту
стандартного набора функций, к которым можно обращаться из
создаваемых им программ. Конкретный вариант API может предоставлять
тот же набор функциональных возможностей, который существует при
подключении встроенных операторов, но при этом устраняется
необходимость предкомпилирова- ния исходного текста. Кроме того,
некоторые разработчики указывают, что в этом случае используется
более понятный интерфейс и созданный программный текст более удобен
с точки зрения его сопровождения.
Оба способа предполагают использование операторов как статического
SQL, так и динамического SQL.
Что касается операторов статического SQL, то какого-либо изменения
после их однократного написания не предполагается. Они могут
храниться как в файлах, предназначенных для дальнейшего
использования, так и в виде хранимых процедур базы данных, но
программисты не получают всей той гибкости, кото¬рую предлагает им
динамический SQL. Несмотря на наличие большого числа запросов,
доступных конечному пользователю, может случиться так, что ни один
из этих «законсервированных» запросов не сможет удовлетворить его
текущим потребностям.
Динамический SQL дает возможность программисту или конечному
пользователю создавать операторы во время выполнения приложения и
передавать их базе данных, которая после выполнения этих операторов
помещает выходные данные в переменные программы (как это и
происходит в случае, описанном в 5.4). Динамический SQL часто
используется инструментальными средствами, предназначенными для
построения заранее незапланированных запросов, позволяющих
оперативно формировать тот или иной оператор SQL в зависимости от
особых требований, возникших в конкретной ситуации. После настройки
оператора SQL в соответствии с потребностями пользователя он
направляется серверу баз данных для проверки на наличие
синтаксических ошибок и необходимых для его выполнения привилегий,
после чего происходит его компиляция и выполнение.
Рассмотрим применение прикладного интерфейса программирования (API)
для выполнения операторов SQL.
Прикладной API включает набор библиотечных функций, предоставляющих
программисту разнообразные типы доступа к базе данных, а именно:
подключе¬ние, выполнение различных SQL-операторов, выборка отдельных
строк данных из результирующих наборов данных и т.д.
Чтобы не разрабатывать отдельные версии пользовательского приложения
для каждой из целевых СУБД, с которыми данное приложение планируется
использовать, Microsoft разработала стандарт, получивший название
Open Database Connectivity (ODBC). Технология ODBC предусматривает
применение единого интерфейса для доступа к различным базам данных
SQL, причем язык SQL рассматривается как основное стандартное
средство доступа. Этот интерфейс обеспечивает высокую степень
универсальности, в результате одно и то же приложение может получать
доступ к данным, хранящимся в базах различных целе¬вых СУБД, без
необходимости внесения изменений в его программный текст. Таким
образом, разработчики получили инструмент для создания и
распространения приложений архитектуры «клиент-сервер», способных
работать с широким спектром различных целевых СУБД, а связать
приложения с любой выбранной целевой СУБД можно посредством
соответствующего ODBC-драйвера.
В настоящее время технология ODBC фактически приобрела значение
отраслевого стандарта. Основной причиной ее популярности является
присущая ей гибкость, предоставляющая разработчикам следующие
преимущества:
• приложения больше не связаны с прикладным API какой-то одной СУБД;
• SQL-операторы могут явно включаться в исходный текст приложения
либо динамически создаваться непосредственно во время выполнения
программ;
• приложение способно игнорировать особенности используемых
протоколов передачи данных;
• данные посылаются и доставляются в том формате, который наиболее
удо¬бен для конкретного приложения;
• средства поддержки ODBC разработаны с учетом требований стандартов
X/Open и CGI (Call Level Interface);
• в настоящее время существуют драйверы ODBC для различных типов
самых распространенных СУБД.
Кроме ОDBC, существуют и другие технологии, позволяющие осуществлять
доступ к базам данных из прикладных программ. Одним из примеров
таких технологий является BDE, разработанная фирмой Borland. |