SQL Access Group
SQL Access Group (SAG) — это консорциум независимых производителей программного обеспечения, основанный в 1989 году для разработки и продвижения открытого стандарта интерфейса доступа к реляционным базам данных. Основной целью группы было создание универсального программного интерфейса (API), который позволил бы приложениям взаимодействовать с различными системами управления базами данных (СУБД) без привязки к конкретному вендору. Результатом работы SAG стала спецификация Call-Level Interface (CLI), которая впоследствии легла в основу международного стандарта ISO/IEC 9075-3:1995 и промышленного стандарта Microsoft Open Database Connectivity (ODBC).
История
Предпосылки создания
К концу 1980-х годов рынок реляционных баз данных был фрагментирован. Ведущие производители, такие как Oracle, IBM (с DB2), Sybase, Informix и Ingres, предлагали собственные, несовместимые друг с другом API для доступа к данным. Разработчикам приложений приходилось писать отдельные модули для каждой СУБД, что увеличивало стоимость разработки и усложняло сопровождение программного обеспечения. Потребность в едином стандарте интерфейса стала очевидной.
Основание и состав
SQL Access Group была основана в 1989 году как некоммерческая организация с открытым членством. В число учредителей вошли компании, заинтересованные в создании открытого стандарта: Digital Equipment Corporation (DEC), Hewlett-Packard, Sun Microsystems, Informix, Ingres, NCR, Sybase и другие. Позднее к консорциуму присоединились такие крупные игроки, как IBM, Microsoft и Oracle. Участие в SAG позволяло компаниям влиять на развитие стандарта и обеспечивать совместимость своих продуктов.
Разработка спецификации Call-Level Interface (CLI)
Основной технической работой SAG стала разработка спецификации CLI. В отличие от встраиваемого SQL (Embedded SQL), который требовал предварительной компиляции и был привязан к языку программирования, CLI представлял собой набор функций (API), которые приложение вызывало во время выполнения. Это обеспечивало динамическое связывание с драйвером СУБД и позволяло подключать разные базы данных без перекомпиляции кода.
Первая версия спецификации CLI была опубликована SAG в 1991 году. Она определяла:
- Функции для подключения к базе данных (SQLConnect).
- Функции для выполнения SQL-запросов (SQLExecDirect, SQLPrepare, SQLExecute).
- Функции для получения результатов (SQLFetch, SQLGetData).
- Функции для управления транзакциями (SQLTransact).
- Функции для получения метаданных о базе данных (SQLTables, SQLColumns).
Переход к стандартизации
В 1992 году SAG передала спецификацию CLI в Американский национальный институт стандартов (ANSI) и Международную организацию по стандартизации (ISO) для официальной стандартизации. Это привело к принятию международного стандарта ISO/IEC 9075-3:1995 (SQL/CLI). Параллельно Microsoft, будучи членом SAG, использовала спецификацию CLI как основу для своего собственного API — Open Database Connectivity (ODBC), который был выпущен в 1992 году. ODBC стал де-факто стандартом для доступа к базам данных в среде Windows, но его ядро оставалось совместимым со спецификациями SAG.
Роспуск и наследие
После передачи спецификации в ISO и ANSI, а также после широкого распространения ODBC, необходимость в существовании отдельного консорциума SAG отпала. В середине 1990-х годов группа была распущена. Однако её наследие оказалось значительным: принципы, заложенные в CLI SAG, используются в современных технологиях доступа к данным, таких как ODBC, JDBC (Java Database Connectivity) и ADO.NET.
Ключевые принципы и архитектура
Архитектура «клиент-драйвер-СУБД»
Архитектура, предложенная SAG, была основана на трёхуровневой модели:
- Клиентское приложение: Программа, написанная на языке высокого уровня (C, C++, COBOL), которая использует вызовы функций CLI.
- Драйвер (или менеджер драйверов): Библиотека, реализующая спецификацию CLI для конкретной СУБД. Драйвер переводит вызовы CLI в протокол, понятный конкретной базе данных.
- СУБД: Сама система управления базами данных, которая обрабатывает SQL-запросы.
Эта модель обеспечивала независимость приложения от конкретного производителя СУБД: приложение взаимодействовало только с драйвером, а драйвер отвечал за трансляцию вызовов.
Основные компоненты спецификации CLI
Спецификация SAG CLI включала следующие ключевые компоненты:
- Обработчики (Handles): Указатели на структуры данных, используемые для управления соединениями, операторами и транзакциями. Основные типы: среда (environment), соединение (connection), оператор (statement) и дескриптор (descriptor).
- Функции подключения: SQLConnect, SQLDriverConnect — для установления соединения с базой данных.
- Функции выполнения запросов: SQLExecDirect, SQLPrepare, SQLExecute — для подготовки и выполнения SQL-операторов.
- Функции извлечения данных: SQLFetch, SQLGetData, SQLBindCol — для получения строк результата и привязки их к переменным приложения.
- Функции управления транзакциями: SQLTransact — для фиксации (COMMIT) или отката (ROLLBACK) транзакций.
- Функции метаданных: SQLTables, SQLColumns, SQLGetTypeInfo — для получения информации о структуре базы данных (таблицы, столбцы, типы данных).
Влияние и значение
Стандартизация доступа к данным
SQL Access Group сыграла ключевую роль в стандартизации интерфейса доступа к реляционным базам данных. До появления SAG каждая СУБД имела свой уникальный API, что создавало серьёзные проблемы для разработчиков. Работа консорциума привела к созданию единого, открытого и документированного стандарта, который был принят как международный (ISO/IEC).
Влияние на ODBC и JDBC
Спецификация CLI SAG стала непосредственной основой для ODBC от Microsoft. Хотя ODBC добавил ряд расширений (например, поддержку асинхронных вызовов и более сложное управление драйверами), его ядро — набор функций, типов данных и модель обработки — было полностью заимствовано из SAG CLI. В свою очередь, JDBC (Java Database Connectivity), разработанный Sun Microsystems, также испытал сильное влияние ODBC и, косвенно, SAG. JDBC использует аналогичную архитектуру «драйвер-менеджер» и набор функций для выполнения запросов и извлечения результатов.
Упрощение разработки приложений
Благодаря работе SAG, разработчики получили возможность создавать приложения, которые могли работать с различными СУБД (Oracle, DB2, Sybase, Informix, Microsoft SQL Server) без изменения исходного кода. Для переключения на другую базу данных было достаточно заменить драйвер и, возможно, изменить строку подключения. Это значительно снизило стоимость разработки и повысило гибкость корпоративных информационных систем.
Критика и ограничения
Производительность
Одним из основных ограничений подхода CLI (и, как следствие, ODBC) была потенциально более низкая производительность по сравнению с нативными API. Драйверы SAG/ODBC добавляли дополнительный уровень абстракции, который мог приводить к накладным расходам при выполнении запросов. Для критичных по производительности приложений (например, высоконагруженных OLTP-систем) использование нативных API часто было предпочтительнее.
Сложность реализации драйверов
Разработка качественного драйвера SAG/ODBC была сложной задачей. Требовалось реализовать большое количество функций (сотни), обеспечить корректную обработку всех типов данных, управление транзакциями, поддержку метаданных и обработку ошибок. Многие ранние драйверы имели ошибки и неполную реализацию спецификации.
Ограниченная функциональность
Спецификация CLI SAG была ориентирована на стандартный SQL и не поддерживала многие расширенные возможности конкретных СУБД (например, специфические типы данных, хранимые процедуры с особыми параметрами, или уникальные операторы). Для использования таких возможностей разработчикам приходилось прибегать к нативным API или использовать расширения драйверов, что нарушало принцип переносимости.
Источники
- ISO/IEC 9075-3:1995 — Information technology — Database languages — SQL — Part 3: Call-Level Interface (SQL/CLI).
- Microsoft Corporation. (1992). ODBC 1.0 Programmer's Reference.
- Melton, J., & Simon, A. R. (1993). Understanding the New SQL: A Complete Guide. Morgan Kaufmann.
- Date, C. J. (1995). An Introduction to Database Systems (6th ed.). Addison-Wesley.
- Статья «SQL Access Group» в архивах Open Group (1994).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →