|
Алексей Федоров, Наталия Елманова
В предыдущих двух статьях данного цикла, опубликованных в КомпьютерПресс № 4, 5’2000, мы обсудили наиболее характерные особенности современных настольных и серверных СУБД и предоставляемые ими возможности. Мы также рассмотрели наиболее популярные настольные СУБД — dBase, Paradox, FoxPro, Access, MSDE, а также наиболее популярные серверные СУБД — Oracle, Informix, DB2, Sybase, Microsoft SQL Server.
Отметим, что при выборе СУБД необходимо иметь представление, с помощью каких средств разработки будет создаваться информационная система на основе данной СУБД, а также о том, каким образом разработанные приложения будут манипулировать данными. От того, правильно ли выбран механизм доступа к данным, зависит очень многое, в частности производительность приложений, возможность применения тех или иных функциональных особенностей данной СУБД, простота разработки пользовательского интерфейса и ряд других факторов.
Существует несколько способов доступа к данным из средств разработки и клиентских приложений.
Подавляющее большинство систем управления базами данных содержит в своем составе библиотеки, предоставляющие специальный прикладной программный интерфейс (Application Programming Interface, API) для доступа к данным этой СУБД. Обычно такой интерфейс представляет собой набор функций, вызываемых из клиентского приложения. В случае настольных СУБД эти функции обеспечивают чтение/запись файлов базы данных, а в случае серверных СУБД инициируют передачу запросов серверу баз данных и получение от сервера результатов выполнения запросов или кодов ошибок, интерпретируемых клиентским приложением. Библиотеки, содержащие API для доступа к данным серверной СУБД, обычно входят в состав ее клиентского программного обеспечения, устанавливаемого на компьютерах, где функционируют клиентские приложения.
В последнее время Windows-версии клиентского программного обеспечения наиболее популярных серверных СУБД, в частности Microsoft SQL Server, Oracle, Informix, содержат также COM-серверы, предоставляющие объекты для доступа к данным и метаданным.
Использование клиентского API (или клиентских COM-объектов) является наиболее очевидным (и нередко самым эффективным с точки зрения производительности) способом манипуляции данными в приложении. Однако в этом случае созданное приложение сможет использовать данные только СУБД этого производителя, и замена ее на другую (например, с целью расширения хранилища данных или перехода в архитектуру «клиент-сервер») повлечет за собой переписывание значительной части кода клиентского приложения — клиентские API и объектные модели не подчиняются никаким стандартам и различны для разных СУБД.
Другой способ манипуляции данными в приложении базируется на применении универсальных механизмов доступа к данным. Универсальный механизм доступа к данным обычно реализован в виде библиотек и дополнительных модулей, называемых драйверами или провайдерами. Библиотеки содержат некий стандартный набор функций или классов, нередко подчиняющийся той или иной спецификации. Дополнительные модули, специфичные для той или иной СУБД, реализуют непосредственное обращение к функциям клиентского API конкретных СУБД.
Отметим, что достоинством универсальных механизмов является возможность применения одного и того же абстрактного API, а во многих случаях — COM-серверов, компонентов, классов для доступа к разным типам СУБД. Поэтому приложения, использующие универсальные механизмы доступа к данным, легко модифицировать, если необходима смена СУБД. При этом нередко модификация затрагивает не код приложения как таковой, а настройки доступа к данным, содержащиеся в реестре или внешних файлах. Однако за подобную универсальность порой приходится платить невозможностью доступа к уникальной функциональности, специфичной для конкретной СУБД, снижением производительности приложений, а также усложнением процедуры поставки приложения — ведь в его состав нужно включать библиотеки, ответственные за реализацию универсальных механизмов, драйверы для тех или иных СУБД, а также обеспечивать настройки, необходимые для их правильного функционирования.
Наиболее популярными среди универсальных механизмов доступа к данным можно назвать следующие:
Универсальные механизмы ODBC, OLE DB и ADO фирмы Microsoft представляют собой по существу промышленные стандарты. Что касается механизма доступа к данным BDE фирмы Borland, то он так и не стал промышленным стандартом, однако до недавнего времени применялся довольно широко, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным, поддерживаемым средствами разработки Borland на уровне компонентов и классов.
Наиболее часто используемые в приложениях способы доступа к данным схематически изображены на рис. 1.
Рис. 1. Возможные механизмы доступа к данным из приложений и средств разработки
Как видно из приведенной схемы, в общем случае приложение, использующее базы данных, может применять следующие механизмы доступа к ним:
Помимо этих существуют и иные способы доступа к данным, обычно в той или иной степени использующие перечисленные универсальные механизмы или непосредственно клиентские API.
Ниже мы кратко остановимся на наиболее широко используемых универсальных механизмах, а затем рассмотрим Borland Database Engine и наиболее популярные продукты третьих фирм, способные его заменить.
ODBC (Open Database Connectivity) — широко распространенный программный интерфейс фирмы Microsoft, удовлетворяющий стандартам ANSI и ISO для интерфейсов обращений к базам данных (Call Level Interface, CLI). Для доступа к данным конкретной СУБД с помощью ODBC, кроме собственно клиентской части этой СУБД, нужен ODBC Administrator (приложение, позволяющее определить, какие источники данных доступны для данного компьютера с помощью ODBC, и описать новые источники данных), и ODBC-драйвер для доступа к этой СУБД. ODBC-драйвер представляет собой динамически загружаемую библиотеку (DLL), которую клиентское приложение может загрузить в свое адресное пространство и использовать для доступа к источнику данных. Для каждой используемой СУБД нужен собственный ODBC-драйвер, так как ODBC-драйверы используют функции клиентских API, разные для различных СУБД.
С помощью ODBC можно манипулировать данными любой СУБД (и даже данными, не имеющими прямого отношения к базам данных, например данными в файлах электронных таблиц или в текстовых файлах), если для них имеется ODBC-драйвер. Для манипуляции данными можно использовать как непосредственные вызовы ODBC API, так и другие универсальные механизмы доступа к данным, например OLE DB, ADO, BDE, реализующие стандартные функции или классы на основе вызовов ODBC API в драйверах или провайдерах, специально предназначенных для работы с любыми ODBC-источниками.
Говоря об ODBC, нельзя не отметить, что спецификация ODBC подразумевает несколько стандартов на ODBC-драйверы (обычно в этом случае употребляются термины Level 1, Level 2 и т.д.). Эти стандарты отличаются различной функциональностью, которая должна быть реализована в таком драйвере. Например, драйверы, соответствующие стандарту Level 1, не обязаны поддерживать работу с хранимыми процедурами, а некоторые ODBC-драйверы не поддерживают двухфазное завершение транзакций (применяемое в том случае, когда требуется согласованное изменение данных в нескольких различных серверных СУБД).
OLE DB и ADO — часть универсального механизма доступа к данным Microsoft (Microsoft Universal Data Access), позволяющая осуществить доступ как к реляционным, так и к нереляционным источникам данных, таким как файловая система, данные электронной почты, многомерные хранилища данных и др.
Microsoft ActiveX Data Objects (ADO) — это набор библиотек, содержащих COM-объекты, реализующие прикладной программный интерфейс для доступа к таким данным и используемые в клиентских приложениях. ADO использует библиотеки OLE DB, предоставляющие низкоуровневый интерфейс для доступа к данным. OLE DB предоставляет доступ к данным с помощью COM-интерфейсов. Можно также использовать OLE DB непосредственно, минуя ADO.
Для доступа к источнику данных с помощью OLE DB требуется, чтобы на компьютере, где используется клиентское приложение, был установлен OLE DB-провайдер для данной СУБД. OLE DB-провайдер представляет собой DLL, загружаемую в адресное пространство клиентского приложения и используемую для доступа к источнику данных. Для каждого типа СУБД нужен собственный OLE DB-провайдер, так как эти провайдеры базируются на функциях клиентских API, разных для различных СУБД.
Среди OLE DB-провайдеров для разных источников данных имеется специальный провайдер Microsoft OLE DB Provider for ODBC Drivers. Этот провайдер использует не API клиентской части какой-либо СУБД, а интерфейс ODBC API, поэтому он применяется вместе с ODBC-драйвером для выбранной СУБД.
Отметим, что ADO становится все более популярным способом доступа к данным, так как входит в состав таких широко используемых продуктов, как Microsoft Office 2000 и Microsoft Internet Explorer 5.0, а также включен в ядро операционных систем семейства Windows 2000.
Более подробно об OLE DB и ADO будет рассказано в следующей статье данного цикла.
Обсудив наиболее популярные универсальные механизмы доступа к данным, можно перейти к предмету данной статьи — Borland Database Engine.
BDE (Borland Database Engine) — универсальный механизм доступа к данным, применяемый в средствах разработки фирмы Borland (а именно — Delphi и C++Builder), а также в некоторых других продуктах, например 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.
Механизм Borland Database Engine широко использовался при создании приложений с базами данных с помощью 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-й версии обоих продуктов — Delphi и C++Builder.
Физически 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 и текстовым файлам существуют BDE-драйверы прямого доступа, осуществляющие считывание и запись файлов этих СУБД. Более того, в документах Microsoft, посвященных доступу к данным Paradox и dBase, прямо указывается, что для записи данных в файлы этих СУБД с помощью ODBC или OLE DB (например, из приложений Visual Basic или VBA, при использовании этих файлов в качестве присоединенных баз данных Access или Microsoft SQL Server) на компьютере, где используется подобное приложение, следует установить BDE соответствующей версии, так как только эти драйверы осуществляют запись в такие файлы. Поэтому, применяя эти форматы данных в приложениях, созданных с помощью таких средств разработки, не только для чтения, но и для записи, необходимо установить BDE на компьютеры, где эти приложения будут эксплуатироваться (а еще лучше — подумать о смене формата данных). В таблице приведены сведения о том, какие версии BDE требуются для доступа к данным Paradox и dBase различных версий с помощью ODBC или OLE DB.
Версия dBase или Paradox | Чтение | Чтение и запись |
---|---|---|
dBase III | + | BDE 4.x или более поздняя версия |
dBase III+ | + | BDE 4.x или более поздняя версия |
dBase IV | + | BDE 4.x или более поздняя версия |
dBase 5 | + | BDE 4.x или более поздняя версия |
dBase 7 | BDE 4.x или более поздняя версия | BDE 4.x или более поздняя версия |
dBase 7.5 | BDE 5.x или более поздняя версия | BDE 5.x или более поздняя версия |
Paradox 3 | + | BDE 4.x или более поздняя версия |
Paradox 4 | + | BDE 4.x или более поздняя версия |
Paradox 5 | + | BDE 4.x или более поздняя версия |
Paradox 7 | BDE 4.x или более поздняя версия | BDE 4.x или более поздняя версия |
Paradox 8 | BDE 4.x или более поздняя версия | BDE 4.x или более поздняя версия |
Paradox 9 | BDE 5.x или более поздняя версия | BDE 5.x или более поздняя версия |
Из вышеизложенного следует, что не имеет особого смысла использовать ODBC-драйверы этих СУБД и ODBC Link, по крайней мере в средствах разработки, поддерживающих BDE (Delphi, C++Builder), и в созданных с их помощью приложениях. Несмотря на то что такой доступ к данным технически вполне осуществим, реально в приложении все равно используется BDE-драйвер прямого доступа. В этом случае между приложением и драйвером оказываются две «лишние» библиотеки, не добавляющие никакой дополнительной функциональности, а лишь создающие неудобства при поставке приложения и настройке доступа к данным, к тому же нередко еще и снижающие производительность приложения.
Доступ к данным Paradox или поздних версий dBase непосредственно с помощью BDE в Visual Basic, Visual C++ и иных средств разработки, не ориентированных на поддержку BDE на уровне визуальных компонентов и классов, возможен только на уровне вызовов BDE API, что в принципе технически осуществимо, однако представляется несколько экзотическим подходом к решению проблемы.
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 гораздо больше функциональных возможностей.
Доступ к данным FoxPro осуществим в первую очередь с помощью BDE-драйвера прямого доступа, позволяющего производить запись в файлы этой СУБД. Помимо этого возможен также доступ через ODBC Link и соответствующий ODBC-драйвер. Доступ к данным Visual FoxPro осуществим только с помощью ODBC Link и соответствующего ODBC-драйвера, ибо BDE-драйвер для баз данных Visual FoxPro (*.vfp) в настоящее время отсутствует.
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 (либо с помощью объектной модели клиентской части этой СУБД).
Для всех перечисленных СУБД существуют 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.
Как уже было отмечено выше, для доступа с помощью BDE к источникам данных, отличным от перечисленных выше, следует использовать ODBC-драйвер и ODBC Link.
В таблице приведен список ODBC-драйверов, сертифицированных для использования с Delphi 5/C++Builder 5 и BDE.
Сертификация применимости с BDE | Версия ODBC Driver Manager | СУБД | Производитель ODBC-драйвера | Версия ODBC- драйвера |
---|---|---|---|---|
Полностью сертифициро- ванные драйверы | 3.5 | Access 95/97 | Microsoft | 3.40 |
FoxPro | Microsoft | 3.40 | ||
Microsoft SQL Server 6.5 | Microsoft | 3.00 | ||
Microsoft SQL Server 6.5 | Intersolv | 3.01 | ||
Oracle 7.3 | Intersolv | 3.01 | ||
3.51 | Access 95/97 | Microsoft | 3.51 | |
FoxPro | Microsoft | 3.51 | ||
Microsoft SQL Server 6.5 | Microsoft | 3.6 | ||
Microsoft SQL Server 6.5, 7.0 | Intersolv | 3.11 | ||
Oracle 7.3 | Intersolv | 3.11 | ||
Драйверы, сертифициро- ванные как реализующие основную функциональ- ность | 3.5 | Informix 7.20 и 9.11 | Intersolv | 3.01 |
DB2 (IBM v5 client 6/98) — протестирован с серверами 2.12 и 5.0 (UDB) | Нет сведений об ODBC-драйверах | |||
Sybase 11.02 | Intersolv | 3.01 | ||
3.51 | DB2 (IBM v5 client 6/98) — протестирован с серверами 2.12 и 5.0 (UDB) | Нет сведений об ODBC-драйверах | ||
Sybase 11.02 | Intersolv | 3.11 | ||
Oracle 7.3 и 8.0.4 | Intersolv | 3.11 |
В целом доступ к наиболее популярным СУБД может быть осуществлен с помощью BDE следующими способами.
СУБД | ODBC-драйвер + ODBC Link | BDE-драйвер |
---|---|---|
Paradox | + | + |
dBase | + | + |
Microsoft Access 95 | + (требуется Microsoft Jet Engine 3.0) | + (требуется Microsoft Jet Engine 3.0) |
Microsoft Access 97 | + (требуется Microsoft Jet Engine 3.5) | + (требуется Microsoft Jet Engine 3.5) |
Microsoft Access 2000 | Частично (требуется Microsoft Jet Engine 4.0) | - |
Microsoft FoxPro | + | + |
Microsoft Visual FoxPro | + | - |
Microsoft SQL Server 6.5 | + | + |
Microsoft SQL Server 7.0 | + | - |
Microsoft Data Engine | + | - |
Oracle 7 | + | + |
Oracle 8 | + | + (начиная с версии 8.0.4) |
Sybase 4.0 (с интерфейсом DB-Lib) | + | + |
Sybase System 10 и более поздние версии с интерфейсом CT-Lib Interface | + | + (начиная с версии 10.0.4 EBF7264) |
Informix | + | + |
IBM DB2 | + | + |
IB Database 4.0, 5.х | + | + |
Суммируя все сказанное выше, отметим, что по сравнению с другими универсальными механизмами доступа к данным применение BDE оправданно, когда:
Применение BDE абсолютно не оправданно, когда:
Мы видим, что применение BDE в ряде случаев связано с определенными ограничениями, причиной которых часто является отсутствие необходимых BDE-драйверов, которые, в отличие от ODBC-драйверов и OLE DB-провайдеров, не производит никто, кроме фирмы Borland. Этот недостаток отчасти могут восполнить другие продукты третьих фирм, имеющиеся сегодня в достаточном количестве.
Внушительный список подобных продуктов (порядка пятидесяти, по большей части коммерческих) можно найти на сайте http://www.kylecordes.com. В основном это наборы VCL-компонентов для Delphi и C++Builder, иногда – наборы DLL, cодержащие функции доступа к данным, изредка – COM-серверы и элементы управления ActiveX.
Ниже мы рассмотрим наиболее известные из них.
Так как ODBC является на данный момент наиболее часто используемым универсальным механизмом доступа к данным (ODBC-драйвер нынче можно найти практически к чему угодно, и нередко не один), хорошие перспективы применения подобных компонентов очевидны. Производительность приложений, использующих компоненты для доступа к ODBC-источникам, обычно выше производительности приложений, которые используют BDE и ODBC Link, за счет отказа от использования дополнительных библиотек BDE. По этой же причине упрощена поставка таких приложений, поскольку не требуется включать BDE в дистрибутив и обеспечивать его настройку на компьютере пользователя. Однако об установке ODBC, наличии соответствующего ODBC-драйвера и описании ODBC-источника данных тем не менее следует позаботиться.
ODBCExpress представляет собой набор компонентов и классов для Delphi и C++Builder, применяемых для доступа к ODBC-источникам данных и инкапсулирующих вызовы ODBC API. Для работы приложений, использующих эти компоненты и классы, требуются библиотеки ODBC (доступные на Web-сервере Microsoft) и ODBC-драйвер для выбранной СУБД. Сами компоненты и классы ODBCExpress располагаются внутри исполняемого файла приложения.
ODBCExpress совместим со стандартными компонентами отображения данных и генераторами отчетов, наиболее часто применяемыми с этими средствами разработки, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
Эксперты, тестировавшие продукт, отмечают его отличную работу вместе с ODBC-драйверами для Microsoft SQL Server и Microsoft Access и неудовлетворительную работу с ODBC-драйверами для Sybase SQL Anywhere и IB Database.
ODBC98, как и ODBCExpress, представляет собой набор компонентов и классов для Delphi и C++Builder, обеспечивающих доступ к ODBC-источникам и использующих для этой цели ODBC API. Для применения этих библиотек также требуются библиотеки ODBC и ODBC-драйвер для выбранной СУБД. Сами компоненты и классы ODBC98 также располагаются внутри исполняемого файла приложения.
ODBC98 cовместим со стандартными компонентами отображения данных и генераторами отчетов, наиболее часто применяемыми с этими средствами разработки, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
Хотя ODBC98 — относительно новый продукт, он успел получить неплохие отзывы экспертов, особенно в отношении высококачественной технической поддержки. Достоинством продукта можно считать и наличие регулярных публикаций результатов его тестирования совместно с вновь выходящими ODBC-драйверами, что избавляет потребителей от многочисленных утомительных «экспериментов».
Несмотря на неплохую поддержку Oracle в BDE, компоненты прямого доступа к Oracle имеют хорошие перспективы применения, так как не требуют приобретения дорогих Enterprise-версий Delphi или C++Builder и предоставляют дополнительную функциональность, специфичную для данной СУБД.
Производительность приложений, использующих компоненты прямого доступа к Oracle (как и к любым другим серверным СУБД), обычно выше, чем приложений, использующих BDE, за счет отказа от использования дополнительных библиотек BDE. Поставка приложений, использующих такие компоненты, не представляет трудностей – в состав дистрибутива приложений не нужно включать ни BDE, ни ODBC. Однако клиентская часть Oracle на компьютере пользователя, безусловно, должна присутствовать – эти компоненты используют функции или объекты из ее библиотек.
Oracle Data Access Components (ODAC) представляет собой набор невизуальных компонентов для Delphi и C++ Builder, позволяющих осуществить доступ к Oracle без использования универсальных механизмов доступа к данным. Для доступа к объектам Oracle ODAC использует непосредственно API клиентской части Oracle — Oracle Call Interface (OCI). Отказ от применения универсальных механизмов доступа к данным позволяет повысить производительность приложений и использовать при создании приложений Delphi Professional или C++Builder Professional, более дешевые по сравнению с Enterprise-версиями, обычно применяемыми для этой цели.
ODAC может быть использован совместно со стандартными компонентами отображения данных, QuickReport, ReportBuilder Pro, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
Компоненты ODAC могут быть использованы с Oracle 7.3, Oracle 8, Oracle 8i, включая Personal Oracle и Personal Oracle Lite.
http://www.allroundautomations.nl
Direct Oracle Access представляет собой еще один набор компонентов, использующий клиентский API для доступа к данным Oracle. Эти компоненты не требуют применения каких-либо универсальных механизмов доступа к данным, тем самым повышая производительность создаваемых приложений, а также позволяют применять Professional-версии средств разработки Borland для создания приложений, использующих Oracle. Кроме того, Direct Oracle Access позволяет выполнять блоки PL/SQL и использовать объектные расширения Oracle 8.
Direct Oracle Access может быть использован совместно со стандартными компонентами отображения данных, генераторами отчетов типа QuickReport, ReportBuilder Pro, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
Данный набор компонентов совместим со всеми версиями клиентов Oracle и со всеми версиями Oracle – от Personal Oracle Lite до Oracle 8i.
Компоненты прямого доступа к IB Database (как и аналогичные компоненты для Oracle) имеют неплохие перспективы применения, так как не требуют приобретения Enterprise-версий Delphi или C++Builder, предоставляя дополнительную функциональность, специфичную для IB Database. Один из таких наборов уже входит в комплект поставки Enterprise-версий Delphi 5 и С++Builder 5, но при наличии Professional-версий этих продуктов (или более ранних их версий) стоит обратить внимание на продукты сторонних фирм, реализующие аналогичную функциональность.
Производительность приложений, использующих компоненты прямого доступа к IB Database, обычно выше производительности приложений, которые используют BDE. При поставке таких приложений следует позаботиться о наличии на компьютере пользователя клиентской части IB Database — эти компоненты используют клиентский API, содержащийся в ее библиотеке.
IB Objects представляет собой набор из более чем 40 компонентов прямого доступа к IB Database для Delphi (начиная с версии 2.0) и С++Builder (начиная с версии 3.0), использующих клиентский API этой СУБД. Этот набор совместим со стандартными компонентами отображения данных и генераторами отчетов, наиболее часто применяемыми с этими средствами разработки, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower), однако содержит и собственные визуальные компоненты, в том числе реализующие поиск данных в таблицах и результатах запросовов. IB Objects позволяет использовать специфические особенности IB Database, в частности связанные с обработкой транзакций в этой СУБД.
Помимо этого в комплект поставки IB Objects входит сервер приложений, позволяющий создавать Web-приложения с применением этих компонентов, а также средство просмотра SQL-запросов, генерируемых приложением.
http://www.interbase.com/downloads/summaries/47.html
FreeIBComponents — набор VCL-компонентов прямого доступа к IB Database 4.2 и 5 для Delphi (начиная с Delphi 3). Помимо собственно компонентов доступа к данным, содержит Pascal-версию заголовочного файла API клиентской части IB Database.
Эксперты отмечают быстрое исправление ошибок и недостатков, несмотря на то что данный продукт распространяется бесплатно.
Компоненты Titan фирмы Reggatta Systems для доступа к Btrieve, Microsoft Access, Sybase SQL Anywhere используют клиентский API этих СУБД, что исключает необходимость использования других библиотек доступа к данным (BDE, ODBC и др.) и позволяет достичь приемлемой производительности.
Titan Btrieve представляет собой набор компонентов прямого доступа к данным Btrieve 6.x и выше, а также Pervasive.SQL. Эти компоненты используют непосредственно Btrieve API и требуют наличия соответствующих библиотек на клиентском компьютере, где используется такое приложение.
Компоненты Titan Btrieve совместимы со всеми компонентами отображения данных Delphi и C++Builder.
Среди особенностей Titan Btireve следует отметить возможность добавлять в исполняемый файл сведения о метаданных используемой этим приложением базы данных (имена таблиц, наименования и типы полей и др.). Это позволяет снизить число обращений к базе данных и тем самым уменьшить сетевой трафик. Помимо этого при использовании Titan Btireve можно вызывать процедуры сжатия базы данных и восстановления ее после сбоев.
Titan Access представляет собой набор компонентов прямого доступа к данным Access. Эти компоненты используют библиотеки Microsoft Jet, которые должны быть установлены на компьютере пользователя.
Компоненты Titan Access совместимы со всеми компонентами отображения данных Delphi и C++Builder.
Titan SQL Anywhere представляет собой набор компонентов прямого доступа к данным Sybase SQL Anywhere. Эти компоненты используют API клиентской части SQL Anywhere, в том числе недокументированные функции.
Компоненты Titan SQL Anywhere совместимы со всеми компонентами отображения данных Delphi и C++Builder.
Эксперты, тестировавшие данный продукт, отмечают его высокую производительность.
Компоненты доступа к dBase имеют неплохие перспективы применения по очень простой причине – dBase и его «клоны» были на протяжении многих лет самыми популярными в мире форматами данных (об этом мы уже писали во второй статье данного цикла, опубликованной в апрельском номере журнала). Количество данных, хранящихся в этом формате, а также информационных систем, до сих пор базирующихся на применении формата данных dBase, по-прежнему очень велико, особенно в нашей стране. На российских предприятиях, особенно на периферии, можно обнаружить немало продуктов, написанных на FoxBase и Clipper, которые продаются и покупаются, эксплуатируются на любых компьютерах, в том числе на безнадежно устаревших, при этом вполне удовлетворяя пользователей, и которые по этим причинам никто в ближайшее время не планирует заменять на что-то другое. Но создавать новые приложения, использующие накопленные таким образом данные, все же иногда приходится...
TOPAZ представляет собой набор компонентов, классов и функций для Delphi и C++Builder, позволяющих осуществить прямой доступ к данным ранних версий формата dBase, а также применять в приложениях, созданных с помощью Delphi, функции, характерные для xBase-языков (они реализованы в библиотеках TOPAZ).
TOPAZ совместим со стандартными компонентами отображения данных, QuickReport, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower), однако содержит и собственные визуальные компоненты, предназначенные для печати некоторых специализированных отчетов (типа почтовых и других этикеток) и редактирования данных в стиле «старых» dBase-приложений.
Поставка приложений, использующих TOPAZ, не представляет трудностей – в состав дистрибутива приложений не нужно включать ни BDE, ни ODBC. Сами же компоненты находятся внутри исполняемого файла, использующего их приложения, и не требуют никаких дополнительных библиотек.
Помимо библиотек компонентов и функций для манипуляции данными, в комплект поставки TOPAZ входит ряд полезных утилит, например для редактирования dBase-таблиц и их структуры и др.
Apollo представляет собой набор VCL-компонентов для Delphi и C++Builder, позволяющих осуществлять прямой доступ к таблицам и индексам FoxPro и Clipper (файлы с расширениями .DBF, .DBT, .NTX, .FPT, .IDX, .CDX), а также к собственному формату данных Vista Software (файл с расширением .NSX). При поставке приложений, кроме исполняемого файла, требуются две динамически загружаемые библиотеки размером 350 Kбайт.
Особенностью Apollo является поддержка режима блокировок, характерного для DOS-приложений, созданных с помощью FoxPro и Clipper. Это позволяет совместно использовать одну и ту же базу данных приложениями, созданными с помощью Apollo, и приложениями, созданными с помощью FoxPro и Clipper. Помимо этого Apollo поддерживает оптимизацию запросов наподобие применяемой в FoxPro, шифрование данных, использование функций, определяемых пользователем, в запросах и индексах (что широко применялось в dBase, Clipper, FoxPro, но сейчас практически не используется в универсальных механизмах доступа к данным; с этой точки зрения Apollo – практически единственный инструмент, позволяющий манипулировать dBase-таблицами с индексами, основанными на выражениях).
Apollo cовместим со стандартными компонентами отображения данных, наиболее популярными генераторами отчетов, используемыми с этими средствами разработки, а также с наиболее популярными коммерческими компонентами отображения данных, такими как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
http://www.advantagedatabase.com/
Advantage Database Server является одним из некогда «модных» решений – надстройкой над dBase-данными, представляющей собой отдельный процесс, функционирующий наподобие сервера баз данных и управляющий dBase-таблицами (мы упоминали о таких решениях в предыдущей статье данного цикла, опубликованной в майском номере журнала). Клиентские приложения обращаются к этому серверу, а не непосредственно к таблицам. Иными словами, применяя этот продукт, мы можем получить некоторые преимущества архитектуры «клиент-сервер» (например, обработку запросов на сервере, увеличение объема хранимых данных) при сохранении устаревшего формата данных; надо отметить, что это решение пока еще довольно популярно, по крайней мере в США.
Advantage Database Server содержит компоненты и классы для Delphi и C++Builder, позволяющие использовать стандартные компоненты отображения данных, наиболее популярные генераторы отчетов, используемые с этими средствами разработки, а также наиболее популярные коммерческие компоненты отображения данных, такие как InfoPower (Woll2Woll Software) и Orpheus (TurboPower).
Для использования Advantage Database Server с другими средствами разработки в комплект поставки продукта входит ODBC-драйвер.
Серверная часть Advantage Database Server (без клиентских утилит) входит в комплект поставки Visual dBase начиная с версии 7.5.
На компьютере, где эксплуатируются приложения, использующие Advantage Database Server, требуется наличие его клиентской части.
В настоящей статье мы рассмотрели некоторые механизмы доступа к данным. Мы узнали, что существует несколько способов доступа к данным из средств разработки и клиентских приложений, которые условно можно разделить на две категории:
Мы также узнали, что:
Далее мы рассмотрели BDE и возможности, предоставляемые этим механизмом доступа к данным. Мы выяснили следующее:
Мы также узнали, что применение BDE в ряде случаев связано с определенными ограничениями, причиной которых нередко является отсутствие необходимых BDE-драйверов. Однако существует возможность выбора продуктов третьих фирм, способных заменить BDE в приложениях, созданных с помощью средств разработки Borland. В данном обзоре мы рассмотрели в качестве таких продуктов:
Следующая статья нашего цикла будет посвящена OLE DB и ADO – универсальным механизмам доступа к данным, доступным практически во всех популярных средствах разработки и являющимся составной частью операционных систем семейства Windows 2000.
КомпьютерПресс 6'2000