Предметом обсуждения данного учебного пособия являются различные способы доступа к базам данных многоплатформных многопользовательских СУБД. Речь пойдет о том, на чем можно написать программу, использующую или обрабатывающую базу данных, и, возможно, поддерживающую еще и пользовательский интерфейс. Говоря о возможности обращения к различным СУБД из прикладных программ, будем иметь в виду не произвольные СУБД, а лишь системы управления базами данных, поддерживающие язык SQL. К счастью, время по сути сделало язык SQL стандартом de-facto в области работы с базами данных, а международные стандарты языка SQL (стандарты SQL/89, SQL2 и разрабатываемый стандарт SQL/3) позволяют в значительной степени унифицировать средства доступа к данным вне зависимости от используемой СУБД. Описанию SQL с той или иной глубиной изложения посвящены множество источников [1-7], а для начального знакомства можно использовать [8].
Не вдаваясь в детали технологии, перечислим кратко уровни доступа к базам данных:
Первый самый низший уровень доступа не предполагает каких-либо специальных средств для организации данных, и все пишется на обыкновенном языке программирования (например, Си или Паскале), а данные хранят в обычных файлах, и доступ к ним осуществляется посредством системных вызовов open(), close(), read(), write(). Хотя такая примитивность некоторым может показаться смешной, но и ничего в этом странного нет и некоторые специфические задачи обработки достаточно сложной информации можно и нужно решать именно на этом уровне, не привлекая никаких СУБД. Мы не будем далее останавливаться на этом уровне доступа, но принципиальную возможность его существования необходимо иметь в виду.
Следующий более совершенный уровень доступа к СУБД основан на использовании интерфейса CLI (Call-Level Interface). Все программирование выполняется на обычном языке третьего поколения, а для работы с данными используется специально для этого написанная библиотека функций, специфичная для каждой конкретной СУБД, которые могут вызываться прикладной программой. Сами эти библиотечные функции могут реализовать уже очень сложный метод доступа и поиска данных, индексацию, защиту, разделение данных в многопользовательском режиме. Интерфейс программиста с данными состоит из последовательности вызовов функций, в которые нужно вставить требуемый набор параметров. И выглядят такие вызовы примерно так:
call open_cursor_for_read (curs,,Ncol,buf1,buf2,pole3,pole4,,1)
В целом интерфейс CLI подобен использованию других стандартных библиотекам, которые большинство программистов уже привыкли использовать.
Корпорация Microsoft пошла дальше в этом направлении, предложив унифицированный CLI-интерфейс, получивший название ODBC (Open Database Connectivity) и позволяющий обращаться к данным любых СУБД и других источников данных. Для обращения к базе данных используется язык запросов (SQL). Его синтаксис гораздо более понятен для программиста, чем выписывание множества вызовов функций со сложными названиями и множеством параметров.
Через ODBC работает и множество программных средств, позволяющих создавать программу, не занимаясь непосредственно кодированием, а используя диалоговый режим, систему меню, мышь и различные клавиши для получения на выходе окончательного варианта программы. Перечень таких средств обширен: Delphi, C++Builder, Visial C++, Visial Basic, Visial FoxPro.
Следующий уровень доступа, носящий название встроенного SQL (Embadded SQL), предполагает, что само программирование ведется опять же на обычном языке программирования третьего поколения, а операторы языка запросов SQL непосредственно вставляются в текст программы. Естественно, что при этом возникает необходимость использования препроцессора, который будет читать текст программы со вставленными в нее предписаниями языка запросов и подставлять вместо них вызовы функций СУБД. Полученная после этого программа передается обычному компилятору, который присоединяет к ней библиотеку подпрограмм, реализующих этот самый метод доступа. Примерами средств разработки такого уровня являются INFORMIX-ESQL, UNIFY.
Еще один уровень общения с базой данных заключается в использовании специализированного процедурного языка, в котором интегрируется и язык запросов, и средства порождения отчетов, и средства обычного программирования, и средства порождения пользовательского интерфейса (экранные формы, меню, окна, горячие клавиши). То, что в одном языке объединены и объектно-ориентированные команды и обычные средства программирования, дало основание называть их "языками четвертого поколения". Примером может являться всем небезызвестный DBase и его производные, язык программирования баз данных INFORMIX-4GL, описанию которого посвящено учебное пособие [9].
И, наконец, следует отметить очень популярный в настоящее время уровень доступа к базам данных из среды Internet-Intranet, включающий обилие технологий, языков и средств разработки приложений: CGI-, Java-скрипты, языки Perl, PHP и пр.
Безусловно, перечисленный список не охватывает всех технологий доступа к базам данных, которые бурно развиваются в последнее время. Сюда относятся и средства создания объектно-распределенных приложений на основе технологий COM/DCOM, Corba, JDBC, и новые стандарты Microsoft OLE DB, ADO (Active Data Objects), и активно развивающийся стандарт XML. Но это уже второй этап овладения средствами доступа к базам данных.