Достучаться до базы

Software / Программирование
17 октября 2005

В двух предыдущих статьях (Часть 1, Часть 2) мы останавливались на использовании для работы с персональной базой данных внедренного сервера Firebird и на средствах его администрирования. Сегодня, заканчивая так сказать, руководство к старту, остановимся на средствах доступа к базе из нашего приложения.

В начале вкратце остановлюсь на существующих компонентах и драйверах для работы с БД, а позже вкратце рассмотрю средство доступа, которое считаю оптимальным. Прошу заметить, что это мое мнение и я его никоим образом не навязываю.


Перво-наперво мы сталкиваемся с dbExpress и IBX, которые входят в поставку Delphi, а также с драйверами для любимого Майкрософтом .NET, которые идут в поставке Delphi 2005.
Также, возможен доступ с помощью БДЕ, но сама Borland отказалась от поддержки этой библиотеки и полагаться на нее при написании программ для работы с Interbase / Firebird, по меньшей мере неперспективно, к тому же БДЕ – это порядка 20 мегабайт дополнительных модулей, которые необходимо устанавливать и очень ограниченная функциональность при работе с базой.


Что касается dbExpress и IBX, то тут ситуация вполне определенная. Из них двоих предпочтительнее IBX – все-таки компоненты прямого доступа. А так как обе технологии доступа, так же как и сервер Interbase, продюссируются фирмой Borland и не тестируются на совместимость с бесплатным Firebird, то в какой-то момент IBX и Firebird станут несовместимы.
С .NET тоже не все однозначно. Хотя Microsoft и пророчит этой технологии светлое будущее, однако пока что-то не видно потока программного обеспечения для новой технологии, да и доступ к базе данных с помощью унифицированных драйверов не сможет обеспечить максимальной скорости доступа и поддержки всех возможностей сервера.


Очень неплохим набором компонент являются Interbase Objects (IBO), которые выигрывали награду читателей журнала Delphi Informant в разделе Best Database Connectivity product три года подряд – в 2000, 2001 и 2002. Это компоненты прямого доступа от Джейсона Вартона с весьма широким набором функций и дополнительных компонент, позволяющая использовать все возможности сервера Interbase/Firebird. Компоненты обладают возможностью создавать «живые» запросы к БД, неплохо управляются с транзакциями и обеспечивают приличную производительность. Присутствует и свой набор средств отображения и редактирования данных.
Существуют и драйвера для работы через ОДБС – платный EasySoft ODBC, бесплатные Gemini ODBC, Firebird ODBC, XTG ODBC.


Теперь о неприятном. Такие средства как BDE, ODBC, dbExpress или ADO скрывают многие особенности работы движка базы данных, приводя все действия к "наименьшему общему знаменателю". То есть, клиентское приложение, обращаясь к БД через промежуточное ПО, выполняющее такое «приведение», получает существенно урезанные возможности в работе движка БД. В частности, поскольку все действия в InterBase/Firebird происходят в контексте транзакций, этот подход существенно снижает выгоды в использовании возможностей этих серверов БД.


Из экзотики можно упомянуть: IBTCL - библиотека функций доступа к IB для языка Tcl; CConnectionIbase - класс-"обертка" для PHP; PythonIB и KInterbaseDB - модули для Python, а также InterClient, который входит в поставку JBuilder, и Firebird JCA-JDBC driver – драйвера для доступа из классов Java.
Теперь сформулируем основные требования к средству доступа к базе. Среда разработки – Delphi, прямой доступ к БД без дополнительных библиотек, простота установки и использования, естественно, поддержка пользователей разработчиками.


Всем этим требованиям, причем от А до Ω отвечают компоненты компании Devrace – FIB Plus. Библиотека получила награду читателей журнала Delphi Informant в разделе Best Database Connectivity product за 2004 год, подвинув таким образом своего ближайшего конкурента - IBO.
Разработчиком является наш с вами земляк, одесский программист Сергей Бузаджи, что тоже плюс.
Сразу оговорюсь, что FIB Plus не бесплатны, но жители ex-USSR могут приобрести полную лицензионную версию по сильно сниженным ценам и при коммерческой реализации своего продукта, вы вернете вложенные деньги в кратчайшие сроки.


Не знаю, есть ли такое понятие, как западный и наш, скажем так – славянский (ex-USSR), стили программирования, но те же FIB Plus реализованы как-то более понятно и ближе к нашим стандартам кодирования, чем, к примеру, IBO или IBX.
Немаловажным фактором является также скорость реакции группы поддержки при решении возникших проблем, а в этом плане у разработчиков все в порядке – реагируют быстро и по-существу. А еще большим плюсом в данном процессе есть то, что разработчики общаются с вами на русском языке.


На данный момент последняя версия продукта FIB Plus 6.25, который является полностью самодостаточной библиотекой компонент прямого доступа к БД Firebird, то есть все, что нужно для работы находится и настраивается в нашем приложении и его проще устанавливать, настраивать и сопровождать.
Сразу видно, что библиотека писалась под нужды простого прикладного разработчика – в ней простым и понятным способом реализованы все функции, необходимые для быстрого начала работы, не углубляясь в дебри свойств и методов. Хотя это ни в коей мере не означает, что в FIB-ах заложена минимальная функциональность или они в чем-то ограничены. Даже опытный разработчик может открыть в них что-то новое и полезное, что сильно облегчит жизнь и позволит не изобретать велосипед, а сосредоточиться на процессе разработки.


Вкратце рассмотрим наиболее интересные особенности.



  • FIB Plus полностью поддерживает все возможности Borland Interbase и Firebird, поскольку работает через API этих серверов.
  • Поддерживаются «живые», то есть с возможностью редактирования, запросы к нескольким таблицам, поля-массивы.
  • Одной из особенностей является работа компонент сразу с двумя транзакциями – одна на чтение данных, другая – на запись. Это позволяет сильно снизить нагрузку на сервер БД, а также практически полностью избежать взаимоблокировок при работе.
  • Присутствует возможность выбирать клиентскую библиотеку доступа к БД.
  • Компоненты содержат множество настраиваемых параметров: запросов, форматов отображения, наименования полей - причем все они могут храниться в базе в так называемом репозитарии и извлекаться оттуда при старте приложения автоматически .
  • Встроенный редактор SQL запросов позволяет автоматически генерировать на основании запроса на выборку запросы на добавление, обновление, изменение записей БД. Есть возможность задать только запрос на выборку данных, а на его основе в процессе выполнения программы автоматически будут генерироваться запросы на обновление, вставку или удаление данных, что очень сокращает время при разработке БД с не сложными таблицами.
  • Помимо фильтрации и сортировке данных сервером, возможна локальная сортировка и фильтрация средствами библиотеки.
  • Реализован очень удобный механизм автоматической генерации уникальных значений с помощью механизма генераторов.
  • Очень полезная возможность использовать макросы в текстах запроса, а потом при работе обращаться к ним как к параметрам. Таким образом можно заменять очень большие куски запроса на необходимые вам, что позволяет при минимальных затратах создавать весьма навороченные программы.
  • Очень популярная в народе связка основная - подчиненная таблица создается практически с трех кликов.
  • Библиотека совместима со стандартными db-aware компонентами, входящими в состав Delphi. Следовательно, можно без проблем пользоваться как входящими в состав среды разработки так и сторонними средствами редактирования, отображения и генераторами отчетов.
  • Легко и понятно организована работа с кэшированными данными, то есть все изменения делаются в локальном кэше и при необходимости пакетом отправляются на сервер, что сильно снижает нагрузку на сеть.
  • Из незаметного - компоненты содержат механизмы для оптимизации работы с сетевым трафиком в многопользовательских приложениях и приложениях, работающих на медленных каналах связи (кэширование мета-данных и часто повторяющихся запросов, оптимизация связки вида "мастер-деталь", локальная сортировка и фильтрация данных), также реализована оптимизированная модель работы с оперативной памятью.

    Исходя из вышесказанного, FIB Plus является наиболее предпочтительным средством доступа к БД Interbase/Firebird, позволяя легко и непринужденно создавать приложения и для работы через Интернет, и для больших организаций, и для персональных нужд.


    Данную статью можно рассматривать как бесплатную рекламу замечательным компонентам доступа к БД. Используйте в работе «правильные» средства от «наших» разработчиков, чтобы потом не было мучительно больно. 

    Cat's cry