Читайте также:
|
|
ДОСТУП К БАЗАМ ДАННЫХ____________
Стандартные системы доступа к базам данных
Существует несколько способов доступа к данным из средств разработки и клиентских приложений Подавляющее большинство систем управления БД содержит в своем составе библиотеки, предоставляющие специальный прикладной программный интерфейс (Application Programming Interface — API) для доступа к данным этой СУБД. Обычно такой интерфейс представляет собой набор функций, вызываемых из клиентского приложения. В случае настольных СУБД эти функции обеспечивают чтение/запись файлов БД, а в случае серверных СУБД инициируют передачу запросов серверу БД и получение от сервера результатов выполнения запросов или кодов ошибок, интерпретируемых клиентским приложением. Библиотеки, содержащие API для доступа к данным серверной СУБД, обычно входят в состав ее клиентского программного обеспечения, устанавливаемого на компьютерах, где функционируют клиентские приложения.
В последнее время Windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности Microsoft SQL Server, Oracle, Informix, содержат также COM-серверы, предоставляющие объекты для доступа к данным и метаданным.
Использование клиентского API (или клиентских СОМ-объ-ектов) является наиболее очевидным (и нередко самым эффективным с точки зрения производительности) способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую (например, с целью расширения хранилища данных или перехода в архитектуру «клиент — сервер») повлечет за собой переписывание значительной части кода клиентского приложения — клиентские API и объектные модели не подчиняются никаким стандартам и различны для разных СУБД.
Другой способ манипуляции данными в приложении базируется на применении универсальных механизмов доступа к данным. Указанный механизм обычно реализован в виде библиотек и дополнительных модулей, называемых драйверами или провайдерами. Библиотеки содержат некий стандартный набор функций или классов, укомплектованный согласно той или иной спецификации. Дополнительные модули, специфичные для различных СУБД, реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.
Отметим, что достоинством универсальных механизмов является возможность применения одного и того же абстрактного API, а во многих случаях — СОМ-серверов, компонентов, классов для доступа к разным типам СУБД. Поэтому приложения, использующие универсальные механизмы доступа к данным, легко модифицировать при необходимости замены СУБД. Причем модификация, как правило, затрагивает не код приложения как таковой, а настройки доступа к данным, содержащиеся в реестре или внешних файлах. Недостатками универсальности являются невозможность доступа к уникальной функциональности конкретной СУБД, снижение производительности приложений, а также усложнение процедуры поставки приложения — ведь в его состав нужно включать библиотеки, ответственные за реализацию универсальных механизмов, драйверы для конкретных СУБД, а также обеспечивать настройки, необходимые для их правильного функционирования.
Ниже приведены наиболее популярные среди универсальных механизмов доступа к данным:
• Borland Database Engine (BDE);
• Open Database Connectivity (ODBC);. OLE DB;
• ActiveX Data Objects (ADO).
Универсальные механизмы ODBC, OLE DB и ADO фирмы Microsoft представляют собой по существу промышленные стандарты. BDE фирмы Borland так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным, поддерживаемым средствами разработки Borland на уровне компонентов и классов.
Графическая интерпретация механизмов доступа к данным из приложений приведена на рис. 4.1.
других продуктах, например Corel Paradox, Corel Quattro Pro, Seagate Software Crystal Reports.
BDE создан на основе библиотеки Paradox Engine, предназначенной для Borland Pascal и Borland C++. Приложения, разработанные с помощью последних, обеспечивали доступ к таблицам СУБД Paradox. После создания Paradox Engine компания Borland разработала несколько библиотек-драйверов под общим названием SQL Links. Эти библиотеки расширили функциональность BDE, позволив применять имевшийся в Paradox Engine набор функций для доступа к данным dBase, ODBC-источников, а также наиболее популярных серверных СУБД. Позже к этому набору были добавлены библиотеки для доступа к Access и FoxPro.
Механизм BDE широко использовался при создании приложений с помощью Borland Pascal 7.0 и Borland C++ 4.5 и 5. Затем средства разработки Borland были преобразованы в средства быстрой разработки приложений (Rapid Application Development — RAD), и большинство вызовов BDE API оказалось инкапсулировано в компонентах доступа к данным библиотеки Visual Components Library (VCL). BDE был фактически единственным механизмом доступа к данным в Delphi и C++ Builder, поддерживаемым на уровне компонентов, классов, а также визуальных компонентов для редактирования данных, вплоть до появления 5-й версии обоих продуктов.
Физически BDE представляет собой набор библиотек доступа к данным, реализующих BDE API — набор функций для манипуляции данными, вызываемых из приложения. Эти функции, в свою очередь, могут обращаться к функциям клиентского API (в случае, например, Oracle, Informix, IB Database) или ODBC API (Access 2000, Microsoft SQL Server 7.0, любые ODBC-источники), а также непосредственно манипулировать файлами некоторых СУБД (dBase, Paradox).
Для доступа к БД с помощью BDE на компьютере с клиентским приложением следует установить библиотеки BDE общего назначения, а также BDE-драйвер для данной СУБД. В случае серверных СУБД такие драйверы носят название SQL Links. Эти драйверы содержат BDE API — стандартный набор функций, созданных на основе функций клиентских API соответствующих СУБД.
Среди BDE-драйверов есть драйвер, созданный с использованием ODBC API, — так называемый ODBC Link, который применяется вместе с ODBC-драйвером для выбранной СУБД.
В отличие от ODBC-драйверов и OLE DB-провайдеров, выпускаемых как производителями СУБД, так и многими сторонними производителями, BDE-драйверы производятся только самой компанией Inprise. Число СУБД, для которых имеются BDE-драйверы, ограничено пятью наиболее популярными серверными СУБД, несколькими форматами данных настольных СУБД (в основном ранних версий СУБД) и сервером IB Database, входящим в комплект поставки средств разработки Borland. Для доступа к данным остальных СУБД с помощью BDE можно использовать только ODBC-драйвер и ODBC Link.
Рассмотрим теперь конкретные СУБД, доступные с помощью BDE-драйверов, причем настольных СУБД.
Paradox, dBase, текстовые файлы. Для доступа к данным Paradox, dBase и текстовым файлам существуют BDE-драйверы прямого доступа, осуществляющие считывание и запись файлов этих СУБД. Более того, фирма Microsoft прямо указывает, что для записи данных в файлы этих СУБД с помощью ODBC или OLE DB (в частности, из приложений Visual Basic или VBA, при использовании этих файлов в качестве присоединенных баз данных Access или Microsoft SQL Server) на компьютере, где используется подобное приложение, следует установить BDE соответствующей версии, так как только эти драйверы осуществляют запись в такие файлы. Таким образом, применяя указанные форматы данных в приложениях, созданных с помощью таких средств разработки, не только для чтения, но и для записи, необходимо установить BDE на компьютеры как было сказано выше. В табл. 4.1 приведены сведения о том, какие версии BDE требуются для доступа к данным Paradox и dBase различных версий с помощью ODBC или OLE DB.
Из вышеизложенного следует, что не имеет особого смысла использовать ODBC-драйверы этих СУБД и ODBC Link, no крайней мере, в средствах разработки, поддерживающих BDE (Delphi, C++ Builder), и в созданных с их помощью приложениях. Несмотря на то, что такой доступ к данным технически вполне осуществим, реально в приложении все равно используется BDE-драйвер прямого доступа. В этом случае между приложением и драйвером оказываются две «лишние» библиотеки, не добавляющие никакой дополнительной функциональности, а лишь создающие неудобства при поставке приложения и настройке доступа к данным, к тому же нередко еще и снижающие производительность приложения.
Доступ к данным Paradox или поздних версий dBase непосредственно с помощью BDE в Visual Basic, Visual C++ и иных средств разработки, не ориентированных на поддержку BDE на уровне визуальных компонентов и классов, возможен только на уровне вызовов BDE API.
Microsoft Access. BDE-драйвер прямого доступа в настоящее время доступен для Access 95 и Access 97. Оба эти драйвера работают только в том случае, когда на компьютере, где эксплуатируется использующее их приложение, установлена соответствующая версия библиотек Microsoft Jet Engine (она входит в комплект поставки Microsoft Access и Microsoft Visual FoxPro). Эти драйверы не способны работать с данными Access 2000.
Для доступа с помощью BDE к Access 2000 используют соответствующий ODBC-драйвер и ODBC Link, при этом на компьютере, где эксплуатируется использующее их приложение, требуется наличие Microsoft Jet Engine 4.0. Продукт входит в состав Microsoft Access 2000, а также в состав Microsoft Data Access Components (MDAC) (доступны на Web-сайте корпорации Microsoft). Следует отметить, что не все типы данных, используемые этой версией Access, поддерживаются BDE, поэтому какие-то из таблиц или их столбцов могут оказаться недоступными.
Однако, использование BDE — не самый эффективный способ доступа к данным Access. Применение его целесообразно для старых версий средств разработки Borland (Delphi 1.0—4.0, C++ Builder 1.0—4.0), ориентированных на применение BDE как единственного механизма доступа к данным на уровне компонентов и классов. В случае применения других средств разработки, а также последних версий Delphi и C++ Builder гораздо эффективнее осуществлять доступ к данным Access с помощью ADO и OLE DB, так как эти механизмы предоставляют по сравнению с BDE гораздо больше функциональных возможностей.
Microsoft FoxPro и Visual FoxPro. Доступ к данным FoxPro осуществим в первую очередь с помощью BDE-драйвера прямого доступа, позволяющего производить запись в файлы этой СУБД. Возможен также доступ через ODBC Link и соответствующий ODBC-драйвер. Доступ к данным Visual FoxPro осуществим только с помощью ODBC Link и соответствующего ODBC-драйвера, поскольку BDE-драйвер для БД Visual FoxPro (*.vfp) в настоящее время отсутствует.
Microsoft SQL Server и MSDE. BDE-драйвер прямого доступа существует сегодня для Microsoft SQL Server версий 4.x и 6.x. Он не всегда работает с Microsoft SQL Server 7.0 и MSDE, так как некоторые особенности Microsoft SQL Server 7.0, отсутствовавшие в прежних версиях этой СУБД, например ряд типов данных, не поддерживаются BDE.
Следует подчеркнуть, что, как и в случае с Access, несмотря на существование теоретической возможности доступа к данным этой СУБД с помощью ODBC Link и соответствующего ODBC-драйвера, практически это осуществимо не всегда по той же самой причине. Доступ к данным этой СУБД необходимо осуществлять с помощью ADO/OLE DB (либо с помощью объектной модели клиентской части этой СУБД).
Oracle, Sybase, IBM DB2, Informix, InterBase. Для всех перечисленных СУБД существуют BDE-драйверы прямого доступа (SQL Links). Кроме того, СУБД доступны с помощью ODBC Link и ODBC-драйверов в случае, когда в качестве средства разработки используется Delphi Professional или C++ Builder Professional, не имеющие SQL Links в своем составе. Для этих указанных СУБД нередко имеется по нескольку ODBC-драйверов разных производителей, иногда поддерживающих разную функциональность.
В случае использования объектно-ориентированных возможностей Oracle 8 на данный момент более предпочтительно применение BDE механизма доступа к данным, так как объектные типы данных этой СУБД поддерживаются ее BDE-драйвером прямого доступа (и не поддерживаются имеющимися версиями OLE DB-провайдеров). Однако поддержка этих возможностей на уровне компонентов и классов в Delphi и C++ Builder возможна только начиная с версии 4.0.
Дата добавления: 2015-11-04; просмотров: 305 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
В программе возможны изменения последовательности экскурсий или замена их на равноценные | | | Механизм ODBC |