Учебно-методические материалы для студентов кафедры АСОИУ

Унифицированные средства доступа к серверам баз данных

Внутренние механизмы доступа к БД

API СУБД

Например, функции PHP для работы dBase:

dbase_add_record -- Adds a record to a database
dbase_close -- Closes a database
dbase_create -- Creates a database
int dbase_create ( string filename, array fields ) - создает новую базу данных
dbase_delete_record -- Deletes a record from a database
dbase_get_header_info -- Gets the header info of a database
dbase_get_record_with_names -- Gets a record from a database as an associative array
dbase_get_record -- Gets a record from a database as an indexed array
dbase_numfields -- Gets the number of fields of a database
dbase_numrecords -- Gets the number of records in a database
dbase_open -- Opens a database
dbase_pack -- Packs a database
dbase_replace_record -- Replaces a record in a database

Поддержка SQL

собственные подмножества языка

Внешние средства интеграции приложений БД

Библиотека Borland Database Engine (BDE)

Ключевой механизм BDE (Borland Database Engine), обеспечивающий работу визуальных компонент баз данных, действует как интерфейс между вашим приложением и самой базой данных. BDE реализован в виде набора системных DLL файлов. Взаимодействие компонентных объектов с BDE никак не специфицирует конкретную базу данных и не зависит от реализации обмена информацией на нижнем уровне иерархии. Именно BDE обращается в свою очередь к драйверам, специфическим для базы данных указанного типа, возвращая вашему приложению запрошенные фактические данные. BDE играет роль, аналогичную контроллеру драйверов ODBC (Open Database Connectivity) производства фирмы Microsoft, изолируя приложения от нижнего уровня взаимодействия с базой данных и увеличивая общую производительность связи за счет использования кэш-памяти. Используя BDE, вы получаете доступ ко всем локальным стандартным базам данных вашего компьютера, к источникам данных ODBC и к SQL серверам баз данных в архитектуре сетевой связи клиент/сервер.

Унифицированная технология BDE применяется во всех продуктах производства корпорации Borland: C++Builder, Borland C++, Delphi, IntraBuilder и JBuilder. Чтобы получить доступ к содержимому базы данных, приложению необходимо знать только идентификатор ее псевдонима (alias).

Если созданное с помощью С++ Builder приложение в процессе работы обращается к базам данных, оно, как правило, использует для этой цели библиотеку BDE (Borland Database Engine), основанную на технологии IDAPI (Integrated Database Application Program Interface). Эта библиотека устанавливается автоматически при установке С++ Builder. По умолчанию она устанавливается в каталог C:\Program Files\Borland\Common Files\BDE.

Следует отметить, что файлы, входящие в состав библиотеки BDE, предназначены для использования не только приложениями, созданными с помощью С++ Builder, но и многими другими продуктами Borland (Visual dBase, Paradox, Delphi, Borland C++, IntraBuilder), созданными на их основе приложениями, а также офисными приложениями Corel (например, электронной таблицей Quattro Pro), генератором отчетов Crystal Reports (Seagate Software) . Поэтому при наличии нескольких использующих BDE приложений все 32-разрядные приложения (в том числе C++ Builder) используют установленную последней 32-разрядную версию BDE. В этом случае по умолчанию программа установки C++ Builder предложит поставить BDE в каталог, где установлена уже используемая версия BDE.

Связь приложений с источниками данных с помощью BDE

Рис.1. Связь приложений с источниками данных с помощью BDE

BDE обеспечивает для созданных приложений:

Microsoft Jet Database Engine

Эта статья о JET Red используется в Microsoft Access. Для осуществления JET Blue ISAM, см. Extensible Storage Engine.

Microsoft Jet Database Engine является Database Engine, на котором несколько продуктов Microsoft были построены. Базы данных является основным компонентом базы данных, сбор информации, хранящейся на компьютере на систематической основе. Первая версия Jet была разработана в 1992 году, состоящий из трех модулей, которые могут быть использованы для управления базой данных.

JET стоит совместных Engine Technology, иногда именуются Microsoft Jet Engine или просто Jet. Microsoft Access и Visual Basic используют или использовали Jet как лежащие в их основе базы данных. С тех пор он был заменен для общего использования, однако, сначала Microsoft Desktop Engine (MSDE), а потом по SQL Server Express. Jet сейчас является частью Microsoft Windows и больше не компонента Microsoft Data Access Components (MDAC). Для больших потребностей базы данных, базы данных Jet может быть повышен (или, в терминологии Microsoft, "до размера"), чтобы флагман Microsoft базу данных продуктов, SQL Server.

На протяжении многих лет, Jet стало почти синонимом Microsoft Access, в той степени, где многие люди относятся к базе данных Jet, как "доступ к базе данных". Даже Microsoft сотрудники делают это иногда. Есть партии, которые видят это как неправильное и заявляют, что Jet представляет собой базу данных, и доступ к базе данных разработки приложений инструмент (база данных строитель).

Архитектура Jet

Jet позволяет манипуляции реляционными базами данных и является частью реляционной системы управления базами данных (СУБД). Он предлагает единый интерфейс, что другое программное обеспечение можно использовать для доступа к базам данных Microsoft и обеспечивает поддержку для обеспечения безопасности, целостности, обработки транзакций, индексирование, записи и страницы замок, и репликации данных. В более поздних версиях, двигатель был расширен, чтобы иметь возможность запускать SQL запросы, хранить символьные данные в формате Unicode, создать базы данных мнений и позволяют двунаправленной репликации с Microsoft SQL Server.

Библиотеки Jet

Есть три модуля для Jet: Одним из них является родной Jet ISAM драйвер, динамические библиотеки (DLL), которые могут непосредственно управлять Microsoft Access файлы базы данных (MDB) с использованием индексированных последовательного метода доступа (ISAM). Еще один из модулей содержит драйверы ISAM, DLL, которые позволяют доступ к различным базам данных ISAM, среди них Xbase, Paradox, FoxPro и Btrieve, в зависимости от версии Jet. Окончательный модуль Data Access Objects (DAO) DLL. DAO предоставляет API, что позволяет программистам доступ JET баз данных с использованием любого языка программирования.

Компоненты Jet Engine

Рис. Компоненты MS Jet Database Engine

Open DataBase Connectivity (ODBC)

Тема нашего сегодняшнего разговора - ODBC. Если вы хоть раз писали СУБД (системы управления базами данных), то вам, наверное, знакома эта аббревиатура. Расшифровывается ODBC как Open DataBase Connectivity (вольный перевод - открытая система связи с базами данных). Open (открытая) в данном случае означает "расширяемая", "легко наращиваемая", "открытая для модификаций". Вы сами это поймете, если посмотрите на архитектуру построения ODBC:

Архитектура ODBC

Рис. Архитектура ODBC

Как легко заметить, она действительно легко наращиваемая. Для добавления нового типа БД нужно лишь написать драйвер и зарегистрировать его. Еще одно преимущество, вытекающее из такого построения ODBC - пользовательское приложение общается с физической БД через менеджер драйверов, фактически ничего не зная о типе используемой БД (общение менеджера драйверов и самих драйверов более менее стандартно, так что с точки зрения пользователя все источники данных обладают практически одинаковыми свойствами). Таким образом, вы легко можете поменять физический тип базы данных, а приложение даже не узнает об этом (конечно, существуют исключения из-за особенностей поддержки языка SQL различными типами БД, но они несущественны).

Физически ODBC представляет собой набор динамических библиотек DLL, которые обслуживают подключение и работу с конкретным типом базы данных.При запросе на подключение к определенной, заранее описанной базе "активизируется" определенная DLL - драйвер этого типа БД. Обращение к определенной базе данных происходит по имени так называемого источника данных ODBC (или DSN - data source name). Можно представить DSN как своего рода объявление БД на данном компьютере, причем DSN может быть пользовательским, т.е. находится в области видимости только одного польователя, в сеансе которого был создан этот DSN, и системным, т.е. видимым всеми пользователями данного компьютера.

Управление источниками данных ODBC (да и вообще настройкой всей системы ODBC) осуществляется с помощью специальной программы - ODBC-администратора. Давайте разберем, где его можно найти в различных версиях Windows:

Windows 9х - сам исполняемый файл odbcad32.exe лежит в каталоге Windows\System. Запускать его можно напрямую либо через Панель управления (значок "Источники данных ODBC (32-бит)"). Если на компьютере установлен BDE, запустите администратор BDE и из меню Object выберите пункт ODBC Administrator.

Windows 2000 - исполняемый файл odbcad32.exe лежит в каталоге WinNT\System32, а запускать его можно через Панель управления -> Администрирование -> Источники данных ODBC. К сожалению, у меня нет возможности проверить, как с ODBC в NT3.51 / 4 - не думаю, что там ребята из Microsoft сильно его спрятали.

Почему ODBC?

Ведь есть же BDE, скажете вы. Да, возможно вы правы. Однако здесь есть "но". У обоих движков есть свои преимущества и недостатки. ODBC намного лучше работает с "родными, от Microsoft" источниками данных продуктов Microsoft Office - типа Access, Excel, MS SQL Server (вообще-то из-за Access я и затеял всю эту писанину). Кроме того, в стандартный дистрибутив BDE, который можно на каждом шагу найти в Интернете, я что-то ни разу не встречал SQL Links, впрочем, как я ни разу не встречал и отдельного дистрибутива SQL Links. А именно после установки SQL Links в BDE появлется возможность создавать алиасы к Access, MS SQL Server, Oracle и др. типам баз данных. Устанавливать же полную версию C++Builder или Delphi на компьютер пользователя может не каждый. А ODBC на "голой" машине уже содержит драйверы Access, Excel, FoxPro и SQL Server. В общем, для общего развития не помешает освоить и ODBC, тем более что access'овские базы, с которыми мы будем работать через ODBC, очень надежны (не в пример стандартным BDE'шным paradox'овым, у которых то и дело сыпятся индексы, а про такое поле как счетчик я вообще молчу), практически на любом компьютере пользователя установлен Office, что позволяет вносить коррективы "на месте", да и удобство всей базы в одном файле тоже иногда сказывается.

JDBC

Архитектура JDBC

Рис. Архитектура JDBC

Рис. Совместное использование JDBC и ODBC

Контрольные вопросы

CC-BY-CA Анатольев А.Г., 31.01.2012