English version Russian version




Рады приветствовать вас на страницах нашего обновленного сайта. За прошедшие два с половиной месяца мы не стояли на месте, поскольку конкуренция - весьма эффективный стимул к движению вперед. Если в марте 2000 года IBProvider был единственным рабочим вариантом OLEDB для IB, то сейчас существует уже три официальных драйвера этого типа. Кроме того, новые драйверы ODBC совместно с MSDASQL (OLEDB провайдер для ODBC) тоже, с нашей точки зрения, ведут борьбу за место под этим солнцем. Пока единственным нашим отличием от других является то, что мы не ограничиваемся только одним провайдером и ADO как средством доступа к нему.

Разработанная нами библиотека классов для С++ позволяет полностью использовать возможности OLEDB, а не довольствоваться профильтрованными через ADO. При этом затраты на написание кода идентичны, хотя в это и трудно поверить. Мы не стали останавливаться и на этом. На основе этой библиотеки был написан TOLEDBDataSet. И хотя это была "детская" попытка, она показала, что OLEDBExpress - это реальность, хотя и отдаленная по времени. "Побочным" эффектом всего этого направления является более полная совместимость со спецификацией OLEDB, поскольку пока ADO сглаживает и устраняет недочеты нижнего уровня. Но в будущем это наверняка изменится и требования станут более жесткими. Поэтому мы не особенно расстраиваемся из низких темпов работы. Затраты окупаются уже сейчас. Итак.

Изменения в IBProvider

На текущий момент, благодаря тотальной реконструкции, мы сдвинулись с мертвой точки в отношении управления результирующими множествами. Теперь провайдер может самостоятельно обеспечивать произвольный доступ к выбранному множеству, и начинает использовать временный файл, если превысит лимит на допустимый объем памяти (не зависимо от режима доступа). По умолчанию создается объект с последовательным однонаправленным доступом.

 cmd.CommandText="select * from people" cmd.Properties("IRowsetLocate")=true ' разрешаем произвольный доступ set rs=cmd.Execute 

После этого можно пользоваться методами Recordset: MoveLast, MoveFirst и т.д.

Другое большее изменение касается команд. Поддержка именованных параметров вещь достаточно тривиальная, если не принимать во внимание, что ADO наотрез отказывается передавать эти имена в провайдер. Поэтому, имя указываемое в Command.CreateParameter - только для удобства пользования ADO, не более. Хорошо, что InterBase имеет возможность самостоятельно определять типы параметров запроса, которые провайдер, вместе с именами, и возвращает ADO компонентам.

 cmd.CommandText="select * from people where id<id" cmd("id")=100 set rs=cmd.Execute 

Для контроля и выявления ошибок в тексте запроса у команд определено свойство "prepare stmt", в котором хранится преобразованный текст запроса с '?' вместо имен. При тестировании была выявлена одна неприятность: в ADO нельзя использовать имена для BLOB параметров. Технический аспект этой ошибки известен - ADO пытается установить информацию о параметрах обратно, но без указания имен. Провайдеру это не нравится. Выходом является использование неименованных параметров ('?'). Смешивать в тексте запроса именованные и неименованные параметры запрещено.

В процессе определения типов параметров, провайдер проводит контроль одновременного использования разных типов для одного имени. Определено четыре группы, внутри каждой определяется "наибольший" тип, который и будет назначен именованному параметру:

  • CHAR, VARCHAR ("лучший" выбирается по возрастанию длины)
  • SMALLINT, INTEGER, INT64, FLOAT, DOUBLE PRECISION
  • TIME, DATE, TIMESTAMP
  • BLOB

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

Определение параметров проводится только по требованию. Вы можете самостоятельно определить их описание (например, через Command.Parameters.Append) для уменьшения числа запросов к InterBase. Как уже говорилось, в ADO для именованных параметров это не работает. С этим связана еще одна проблема - если вы повторно используете запрос с именованными параметрами, не закрывая ранее созданное результирующее множество, ADO создаст новую OLEDB-команду, но просить определить типы параметров уже не будет. Короче, число недостатков сравнивается с числом достоинств.

Кроме "полезного" кода в провайдере появилась новая партия "параноидальных" ловушек на ошибки. По нашим наблюдениям, на скорость это мало влияет. Зато является гарантией качества и более простого способа выявления виноватого. Тем не менее, на этот раз вы можете скачать и "чистый" код. Наши изуверские тесты ничего не нашли и мы решились на этот шаг.

На этот раз начальство дало свое согласие, и вы получаете полноценную версию для IB6x. В том, что мы могли откомпилировать его и под IB5, можете убедиться сами: в каталоге lib\interbase находятся обновленные исходные тексты низкоуровневой библиотеки доступа к IB. Но защиты до сих пор нет. Поэтому наши правила игры продолжают действовать. Как уже было сказано - существует свобода выбора. Более того, на базе нашей библиотеки вы можете написать свое творение.

Новое в клиентской библиотеке

Основным изменением является начало перехода на STL. Этот процесс затрагивает достаточно много файлов, поэтому полностью он завершится только в следующем тысячелетии. А использование Borland расширений в виде __property и __closure делает процесс переноса на VC достаточно затруднительным. Хотя нет, для property в VC уже существует решение. Благодаря архитектурным особенностям STL, теперь для библиотеки можно определить собственный менеджер памяти. Исходя из аналогичного опыта с низкоуровневой библиотекой, использование отдельной Win32 кучи дает около 10 процентов увеличения скорости работы.

Исходя из того, что новые возможности провайдера будут доступны только через изменения свойств его объектов, нужно иметь возможность это делать. Новый класс t_db_obj_props упрощает эту задачу до минимума.

В процессе стыковки с VCL обнаружилось, что у большинства классов "душа нараспашку" и с их объектами можно делать даже то, что делать нельзя. Поэтому был определен новый класс t_db_base_row и изменено назначение t_db_base_dataset, в которых все стало на свои места.

И наконец, наш новый "детеныш" - TOLEDBDataSet. С точки зрения профессиональных пользователей и создателей, компонент этой категории - достаточно ограниченный по функциональности и содержит потенциальные ошибки. Да и создается он динамически, а не в дизайнере. Но с другой стороны - главное начать. Возможно, кто-нибудь захочет занять эту нишу и создать OLEDBExpress.

Примеры для работы с провайдером также постепенно трансформируются и расширяются, поскольку мы их используем для тестирования.

Остальные новости

Была выяснена причина сбоев MSDASQL, которая заключается в непереваривании параметров с типом DBTYPE_STR.Тип DBTYPE_BSTR проходит, но радости это не прибавляет. Как только решили эту проблему - возникли другие. Возможно, с 2.6 у нас что-нибудь получится.

Обнаружили, что ADO и MSDASQL поддерживают "неофициальные" отношения, благодаря которым становится возможным использования ODBC от Intersolv. Использование драйвера от Алексея Карякина решило проблему с необходимостью указания Precision для параметров.

Ради интереса был скачан провайдер для IB из Бразилии. Одно разочарование. Он честно объявлен как "Apartment", поэтому издеваться над ним мы не стали. Удалось только подключиться к базе, а потом он стал требовать имена для параметров (использовались '?'). Написан, по все видимости, на Delphi (на чем же еще?).На сайте www.ibphoenix.com этот провайдер гордо назван не beta - куда катится наш мир?

Был скачан MDAC SDK 2.6. Судя по всему, в Microsoft решительно настроены относительно 64 битной платформы. В остальном, судя по количеству интерфейсов, мы обеспечены работой до конца жизни. Еще и детям останется. Интересно, они сами успевают их реализовывать? В IBProvider до сих пор используются интерфейсы из OLEDB 1.1. Полезной вещью оказался "Rowset Viewer", нашли ошибку в ловушке для ошибок :).

На этом, пожалуй, и остановимся. В настоящий момент мы вернулись к нашему основному проекту, и, думается, до его завершения никаких сообщений о новых возможностях IBProvider не будет. Так что у наших конкурентов по OLEDB есть время где-то до марта 2001 года.


Забобрить эту страницу! Добавить на Memori.ru Mr Wong Добавить в закладки МоёМесто.ru Добавить на Rumarkz Добавить на Rucity Digg It Reddit Technorati Del.icio.us Google Bookmarks Slashdot StumbleUpon Yahoo MyWeb Все

Дата публикации: 01.12.2000. Права на материал принадлежат: IBProvider. При перепечатке ссылка на сайт http://www.ibprovider.com обязательна.

Все новости IBProvider:
06.11.2008 Новый IBProvider – поддержка 49 кодовых страниц, возможность работы без регистрации провайдера, предотвращение утечки памяти в Firebird клиенте.
03.10.2008 В новой версии IBProvider Professional Edition добавлено 7 кодовых страниц, исправлены ошибки, улучшен механизм работы с памятью и доступ к BLOB-полям
25.08.2008 6 мировая конференция по Firebird пройдет в Бергамо с 25 по 27 сентября 2008 года. Открыта регистрация
30.07.2008 Доступны новые версии IBProvider. Улучшена работа с NUMERIC-типами и с пулом подключений. В схемах метаданных добавлена поддержка внешних и временных таблиц. В 2,5 раза повышена производительность с отключенным кешем метаданных.
08.07.2008 Выпущен IBProvider Release Candidate 3. Поддержка аутентификации Windows для Firebird 2.1, поддержка длинных имен и Boolean типа для Interbase 7 и Interbase 2007, и т.д.
17.06.2008 Новые версии IBProvider. Поддержка бинарных данных и кодовой страницы OCTETS, 64 битные колонки в схемах метаданных, релиз конвертора типов.
12.05.2008 Доступны новые версии IBProvider. Полностью обновлен конвертор типов.
07.04.2008 Новый IBProvider v3 для 64 битных ОС.
11.03.2008 Новая версия IBProvider v.3.0 RC2 [buid 3965].
08.02.2008 Доступны новые версии IBProvider. Улучшена поддержка Visual Studio 2008, реализован новый механизм распределенных транзакций, исправлены ошибки и улучшена совместимость с различными серверами Firebird и Interbase.
26.12.2007 Изменились лицензии на IBProvider, а так же появилась возможность покупать IBProvider со скидкой.
08.11.2007 23 ноября 2007 года в Москве пройдет вторая российская конференция по Firebird и Interbase. Специальная акция для участников.
30.10.2007 Новая версия IBProvider Free Edition (3.0.0.3313 Release Candidate 2 [RC2]).
29.10.2007 Новая версия IBProvider v3 Release Candidate 2 (RC2).
18.10.2007 Новая версия IBProvider Professional Edition. Улучшена интеграция с Microsoft Office. Исправлены известные ошибки.
13.09.2007 Новые версии провайдеров в составе IBProvider Professional теперь могут работать в среде Microsoft SQL Server 2005 Business Intelligence Development Studio.
20.07.2007 Выпущены редакции IBProvider Professional Edition и IBProvider Free Edition поддерживающие Firebird 2.1.
25.05.2007 Возобновлена работа механизма скачиваний. Персональная доставка новых версий будет более оперативной.
27.04.2007 Новые редакции IBProvider Professional и IBProvider Free уже на сайте!
13.12.2006 Новая версия библиотеки классов C++ для работы с OLE DB-провайдерами. Реализована поддержка Unicode проектов.
04.12.2006 Опубликованы последние релизы: IBProvider Professional Edition - профессиональное решение для создания приложений баз данных для Interbase и Firebird. IBProvider Free Edition - обновленная бесплатная версия на базе третьей версии IBProvider
07.10.2006 Новые версии IBProvider 3.0.0.2385 [RC1] и IBProvider 2.5.0.2088 [Релиз]. Добавлены псевдонимы Charset, PSWD. Оптимизация чтения метаданных и парсера SQL запросов. Поддержка работы с массивами в ADO .Net.
28.08.2006 Новые версии провайдеров: IBProvider 3.0.0.2065 [Beta] и IBProvider 2.4.7.2034 [Релиз]. Улучшенная интеграция с MSSQL 2000/2005.
13.08.2006 IBProvider 3.0.0.1959 [Beta]. IBProvider 2.4.6.1989 [Релиз]. Библиотека классов С++ для работы с OLEDB провайдерами теперь поддерживает VC8 (VS2005).
25.05.2006 IBProvider 3.0.0.1324 [Beta]. IBProvider 2.4.5.1953 [Релиз]. Клиентская библиотека для C++.
05.05.2006 Изменение цены на IBProvider. Доступны новые демо версии
30.03.2006 IBProvider release v.2.4.4 (v.1.7.26) build 1885 now available. IBProvider v.3 [сборка 1107. бета]
27.02.2006 IBProvider v.1/v.2 [cборка 1877 Release Candidate 1]. IBProvider v.3 [сборка 1062. бета]
30.11.2005 IBProvider 2.4.3.1859. Релиз.
01.11.2005 Решение проблемы с арифметическими ошибками в .NET приложениях.
28.09.2005 IBProvider v3 [сборка 913] [beta version].
22.09.2005 IBProvider v3 [сборка 890] [beta version]. IBProvider v2/v1 [сборка 1811].
01.09.2005 Журнал для разработчиков под Interbase и Firebird.
28.07.2005 IBProvider v3 [сборка 789] [beta version]. IBProvider v2/v1 [сборка 1802].
15.06.2005 IBProvider v3 [сборка 779] [beta version]. IBProvider v2/v1 [сборка 1795].
12.04.2005 Открыт форум для пользователей IBProvider
22.03.2005 IBProvider 2.4.2.1772. Релиз.
28.02.2005 IBProvider 3.0.0.639 beta. Изменение корпоративной лицензии.
11.02.2005 IBProvider 3.0.0.573 beta.
24.12.2004 IBProvider 3.0.0.449 beta.
12.11.2004 IBProvider 2.4.1.1720/1.7.23.1720. Релиз.
31.05.2004 IBProvider 2.4.0.1607/1.7.22.1607. Релиз.
14.05.2004 Релиз кандидат 2.4.0.1588/1.7.22.1588
30.04.2004 Версия 2.3.3.1523 beta
29.03.2004 Версия 2.3.3.1416 beta
17.12.2003 Версия 2.3.3.1300
18.10.2003 Версия 2.3.2.1233
22.08.2003 Версия 2.3.1.1184
25.06.2003 Версия 2.3.0.1134 - расширена поддержка MS AS, MS SQL
23.04.2003 Версия 2.2.0.969 - поддержка диалога Data Links, локализация.
31.03.2003 Версия 2.1.2.
26.03.2003 Версия 2.1.1.
04.03.2003 Версия 2.1. Полностью переписан механизм обработки ошибок.
26.02.2003 Скидки на IBProvider.
18.02.2003 Изменение в сроках лицензии
23.01.2003 Версия 2.0.1.735. Исправление ошибок, оптимизация, HTML help
10.12.2002 IBProvider второго поколения
21.11.2002 Версия 1.7.11.584 и 1.8.0.584 beta
06.11.2002 Версия 1.7.10.542 и 1.8.0.542 beta
20.10.2002 Версия 1.7.9.481 и 1.8.0.481 beta
12.08.2002 Версия 1.7.6.350 и 1.8.0.350 beta
30.07.2002 Версия 1.7.5.311 - Исправление ошибок
10.07.2002 Версия 1.7.4.289
20.06.2002 Версия 1.7.3.269
30.05.2002 Версия 1.7.2.255
08.05.2002 Версия 1.7.1
22.04.2002 Версия 1.7.0.227. Поддержка UNICODE. Новые цены.
29.03.2002 Версия 1.6.3.213
28.02.2002 Версия 1.6.2.201
08.02.2002 Версия 1.6.2.199
19.01.2002 Версия 1.6.1.185
24.12.2001 Free Версия 1.5.2
13.12.2001 Версия 1.6
14.11.2001 1.5.1 - Смена компилятора. оптимизация. IColumnsRowset и другое ...
30.08.2001 IN-OUT параметры. массивы. ....
16.07.2001 Ошибка с проверкой подключения в Data Links
21.05.2001 Поддержка хранимых процедур
16.05.2001 Примеры на Delphi от Андрея Семака
14.05.2001 Последний штрих для RowSet
30.04.2001 Выпуск коммерческой версии
20.04.2001 Поддержка DTC и Пула ресурсов
04.04.2001 Поддержка строк. содержащих нулевые символы
16.03.2001 Реализация IOpenRowset::OpenRowset
15.03.2001 Поддержка DECIMAL и NUMERIC
12.03.2001 Исправление ошибок
01.03.2001 Устранены ошибки: специфические и не очень
03.01.2001 Реализация автоматического старта и подтверждения транзакции.
01.12.2000 Тотальная реконструкция IBProvider'а и его клиентской библиотеки.
15.09.2000 Создание версии для IB6. которую Вы увидите только 1 декабря 2000г.

Интересные статьи по Firebird, Interbase



Назад Вперед Сборка сайта № 3.0.0.1660