ТОЧКА ЗРЕНИЯ
Будущие версии API станут частью архитектуры OLE
Корпорация Microsoft выпустила ODBC почти три года назад в качестве средства для связи Windows-приложений с различными серверами баз данных. С тех пор интерфейс Open Database Connectivity (открытое взаимодействие с базами данных) стал жизненно важным методом получения доступа к данным на уровне предприятия, а его производительность, функциональность и, самое важное, поддержка разработчиков были значительно улучшены.
Впрочем, ODBC постоянно изменяется. Microsoft собирается скомбинировать будущие версии ODBC со своей архитектурой OLE (Object Linking and Embedding).
Достоинства и недостатки ODBC проистекают из того, что он находится под контролем Microsoft. Хотя Microsoft достаточно велика для того, чтобы сделать ODBC самоценным продуктом, другие поставщики, влияющие па разработку ODBC, оказываются в тени этой компании.
ИСТОРИЯ ODBC
Своим происхождением ODBC обязан SAG (SQL Access Group), консорциуму поставщиков систем и ПО, созданного для решения проблем взаимодействия различных серверов баз данных (например,СУБД Oracle, Sybase и DB2) и ускорения процесса создания стандарта SQL API. Работая в сотрудничестве с консорциумом Х/Ореп, в апреле 1991 года SAG выпустила спецификацию SAG CLI (call-level interface - метод формирования запросов к базам данных), которая стала основой для создания ODBC.
Microsoft приняла, а затем расширила спецификацию SAG. В августе 1992 года Microsoft выпустила свой первый набор средств для разработки ODBC SDK. Хотя это начинание получило широкую поддержку поставщиков, при работе с ODBC 1.0 возникали некоторые проблемы, поэтому обычно он не применялся в среде клиент-сервер и не рассматривался как высокопроизводительный способ связи с серверами.
ODBC. 1.0 был замкнут на Windows и не работы в других операционных средах. Кроме того, ODBC работают значительно медленнее, чем "родные" драйверы системы, и был недостаточно документирован.
КАК РАБОТАЕТ ODBC
В настоящий момент ODBC является промежуточным (middleware) ПО. Он находится между клиентским приложением и обрабатывающим (back-end) сервером, обеспечивая стандартный интерфейс с различными серверами баз данных, использующими SQL, обмен общими элементами между ними, обработку ошибок, системные каталоги и тины данных. Для разработки ODBC-совместимых приложений, таких как электронные таблицы или заказное ПО, разработчики должны использовать либо Си++ в сочетании с ODBC SDK, либо Visual Basic или Access корпорации Microsoft, пользуясь при этом для баз данных ее механизмом Jet.
Эволюция ODBC
Между ODBC-совместимым приложением и данными па сервере находятся менеджер драйвера ODBC и драйвер выходной базы данных. Этот менеджер драйвера, носящий название ODBC.DLL, управляет всеми связями между приложением и драйвером базы данных. Разработчик должен написать специальный драйвер для каждой базы данных, чтобы ODBC-приложение могло получить доступ к какой-либо из них. Кроме того, каждый драйвер должен быть совместим с ODBC API (Application Programming Interface - интерфейс прикладного программирования). Работа драйвера состоит в том, чтобы переводить, например, условия запросов в термины, которые понятны конкретной базе данных. От качества этого драйвера в большой степени зависит производительность и функциональность ODBC.
ЗАЧЕМ НУЖНА ODBC
Драйверы ODBC предлагают поставщикам приложений и баз данных для серверов некий компромисс. Каждый поставщик базы данных приспосабливает свою базу для единой среды, создавая специальные языки и особый набор инструментов разработки. С другой стороны, разработчики обязаны программировать свои приложения, не зная того, какую базу данных их клиенты предпочтут. Поэтому им приходится использовать различные API, чтобы включить в свою программу взаимодействие с каждым сервером баз данных, дописывать и переписывать свои приложения - долгий и дорогостоящий процесс.
В настоящий момент основным методом связывания баз данных является специализация. Разработчики должны программировать конкретные вызовы функций базы данных из каждого приложения. Чтобы ускорить этот процесс, разработчики используют такие библиотеки, как DB Library и QELib. Однако эти библиотеки, в основе своей представляющие собой набор Windows DLL (dynamic link libraries - динамически загружаемые библиотеки) и подпрограммы на языке Си, требуют от разработчиков овладения большим количеством разновидностей языка SQL и специальных внутренних процедур, характерных для каждой серверной базы данных. ODBC, впрочем, это единый API. Он находится между клиентом и сервером базы данных и даже может сам связываться с упомянутыми выше специальными библиотеками. При работе с интерфейсом ODBC, для того чтобы привязать приложения к любой базе данных, разработчикам достаточно знать только его API. Поэтому одному приложению Mогут быть доступны различные исходные данные вне зависимости от их формата.
ЭВОЛЮЦИОННЫЕ ИЗМЕНЕНИЯ В ODBC 2.0
ODBC 2.0, который вышел в апреле 1994 г., оказался большим шагом в области открытых вычислений. В этой версии устранены многие из проблем, возникавших при работе ODBC ранее, и добавлена поддержка 32-разрядных драйверов, первый из которых вышел в декабре. Благодаря этим изменениям ODBC 2.0 лучше подходит для работы на уровне предприятия. ODBC 2.0 обладает большей гибкостью при работе с исходными данными, чем узкоспециальные решения. Хотя ODBC 2.0 по структуре идентичен первой версии, на всех трех уровнях совместимости со своей первоначальной спецификацией функциональность его увеличена. Core API, который соответствует SAG CLI, включает 23 основные функции, необходимые для выполнения минимальных требований по ODBC-совместимости. В эти функции входят возможность исполнять операторы SQL, совершать и отменять транзакции, а также получать с хост-сервера информацию об ошибках.
График выпуска ODBC
ODBC 2.0 Level 1 и Level 2 являются сделанными Microsoft расширениями CLI, спецификации SAG. Level 1 включает 19 дополнительных функций. Наиболее важная их особенность заключается в том, что приложение получает возможность доступа к каталогизированной информации, например к данным из столбца.
Кроме этого Level 1 обеспечивает доступ к информации специфических драйверов базы данных. Большинство совместимых с ODBC 2.0 приложений совместимы и с Level 1. Level 2 включает 19 дополнительных (функций, например таких, как доступ к прокручиваемым табличным курсорам, которые являются массивами табличных данных. Level 2, кроме того, расширяет доступ к функциям защиты баз данных.
В целом ODBC 2.0 обладает большей производительностью, чем предыдущая версия, благодаря расширению возможностей своего драйвера баз данных, который дает ODBC производительность, почти равную производительности собственного драйвера данной базы. Например, тесты, проведенные IBM, показали, что производительность ODBC при подключении к DB2 на системе AS/400 не более чем на 10 процентов уступает производительности оригинального драйвера. Менеджер драйвера ODBC 1.0 был причиной некоторых недостатков предыдущей версии, т. к. он сбрасывал ODBC.DLL всякий раз, когда приложение выполняло функцию ODBC под названием SQLDisconnect. Напротив, менеджер драйвера ODBC 2.0 сохраняет DLL драйвера активным до тех пор, пока не будет установлена связь с другим сервером. В ODBC 2.0 устранено замедление при начале установления связи. Он работает с массивом функций драйверов баз данных, а в версии 1.0 каждая функция загружалась отдельно.
БУДУЩЕЕ ODBC
ODBC 3.0, о котором впервые было объявлено в феврале, предположительно будет содержать еще больше функций. Хотя Microsoft еще не определила, каковы будут эти добавления, известно, что ODBC будет включать функции, определяющие, соответствуют ли приложения спецификациям ODBC. Эти функции позволят разработчикам гарантировать взаимодействие различных ODBC-совместимых приложений. Microsoft также собирается включить ODBC 3.0 в OLE в рамках стратегии вычислений на уровне предприятий. Полный набор ODBC API станет подмножеством OLE DB (прежде носившей кодовое название Nile), которая должна выйти до конца этого года. Кроме того, менеджер драйвера ODBC, имеющий кодовое название Kagera, будет включать модификации, которые соответствуют спецификации OLE (см. график). Приложения, использующие OLE DB, получат доступ к данным из большего числа источников, можно будет делать одновременные запросы в базах данных, электронных таблицах и текстовых процессорах.
Уже существует предварительная версия OLE DB.Access 2.0 и Visual Basic выпускаются с набором OLE-объектов, носящим название Data Access Objects, где ODBC используется для обеспечения связи с механизмом базы данных Access. Microsoft утверждает, что новая спецификация останется совместимой с нынешними версиями ODBC-приложений.
Впрочем, разработчики должны быть осторожны: хотя OLE и объектные компоненты хорошо выглядят на бумаге, OLE, кажется, будет медленной, неэкономной технологией, доступной только в специальных версиях Windows. Однако Microsoft справилась с основными недостатками ODBC, сделав его самой надежной стратегией.
ДЖОН ТАШЕК