Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SQL - Informix SDK

Informix SDK

Линия средств разработки Informix не такая четкая, как у Oracle, здесь большое количество продуктов, которые выполняют сходные функции даже для одной платформы. Здесь рассматривается версия 7.20.UD1 для Linux.

Informix RDS.

Informix Rapid Development System (RDS) - это интегрированная среда, которая предназначена для полной разработки программного проекта (программы в терминах Informix). Среда разработчика Informix RDS включает в себя следующие компоненты: Informix 4GL, где пишутся как экранные формы, так и отчеты, отладчик Informix 4GL Interactive Debugger и Informix SQL, который выполняет функции SQL-консоли.

Программа состоит из одного или нескольких программных модулей, написанных на процедурном языке Informix 4GL. Интегрированная система отслеживает зависимости между ними по подобию make и компилирует их в случае обновления.

Informix 4GL

Informix 4GL представляет собой компилятор, который транслирует код. Код транслируется в промежуточный P-код, для версии RDS, который запускается интерпретатором (раннером в терминологии Informix) под названием fglgo. Для версии с компилятором C, исходный код 4GL транслируется в код на ESQL/C, который далее обрабатывается компилятором C и компонуется в монолитный исполняемый бинарный код.

Монолитный код и модульный псевдокод имеют как достоинства, так и недостатки. Модульный код проще сопровождать, особенно если требуется передавать измененные модули на удаленные сайты по медленным каналам связи. Модуль, который в псевдокоде занимает размер в 1,5Кб в исполняемом бинарном коде, при линковке со статическими библиотеками, что дает независимость от установленных системных библиотек, может занимать 1,2Мб. Почувствуйте разницу! Правда, при использовании бинарного кода предпочтительнее использовать компоновку с динамическими исполняемыми библиотеками, что также позволяет экономить место.

Сам 4GL представляет собой процедурный язык, внутри которого допустимо использование SQL-выражений. Создатели языка пошли по пути упрощения компилятора, поэтому Informix 4GL, Informix SQL (транслятор SQL-выражений в сервере СУБД) и SPL - язык сохраненных процедур (Stored Procedures Language) в сервере СУБД имеют отличия в синтаксисе. Мелочь, казалось бы, но иногда раздражает. Существенно отличается набор поддерживаемых функций для 4GL и для Informix SQL, в отличие от Oracle, где набор функций практически идентичен в PL/SQL и Oracle SQL. Для программиста в Informix это представляет определенную проблему.

Надо сказать, что 4GL не блистает богатством функций, коих программисту предлагается весьма ограниченный набор. Все остальное предлагается либо писать самому, либо, если сведущие люди вовремя надоумят, идти на www.iiug.org, сайт International Informix User's Group, где можно позаимствовать исходные тексты некоторых общеупотребительных функций на 4GL.

Кроме того, не факт, что те функции, которые вы используете сейчас, будут поддерживаться в будущих версиях. Как это было, например, с функциями NVL(), TO_DATE(), TO_CHAR() в версии 7.3x. В версиях 9.x они отсутствовали, правда, в Informix Foundation 2000 их пообещали поддержать.

К примеру, возможность организации вертикального меню (списка выбора) в Oracle SQL*Forms является встроенным свойством и называется оно LOV (List Of Values). Программирование списка значений в Oracle SQL*Forms занимает максимум пару минут. В Informix 4GL отсутствуют встроенные средства поддержки вертикальных меню (заметим, что на дворе, между прочим, 1999 год), а исходный текст, благополучно реализующий это дело, занимает порядка 40Кб. Причем то, что предлагалось на IIUG, меня не устроило и пришлось изобретать свое колесо.

Из меню Informix 4GL может предложить только горизонтальные кольцевые меню (ring menu). Делать большую иерархию на их основе сложно, и уж если при количестве модулей в две сотни начитаешь плутать по более удобной системе Oracle SQL*Menu, то в приложении на Informix заблудишься и подавно. Основной недостаток меню в Informix - низкая информативность. Если для вертикального меню в Oracle можно написать название элементов как: "Расчет норм отпуска по месяцам отбеливателя для тети Аси", "Возврат остатков отбеливателя от тети Аси", "Соотношение между количеством старого отбеливателя и размерами дырок в рубашках", то в Informix это сделать в принципе тоже можно, только ходить по такому меню будет сложно, т.к. в один момент времени на экране будет отображаться максимум один элемент. А вот "Abort, Retry , Ignore" в горизонтальном меню - это пожалуйста.

Хороший источник информации Internet-конференция comp.databases.informix народ там дружный и вежливый, спросите: чем смогут, тем помогут. Правда, при слове Oracle аборигены начинают слегка подергиваться и вибрировать :-).

Informix 4GL Interactive Debugger

Это полноэкранный отладчик для программ на 4GL. Интерфейс сильнее, чем у gdb, но слабее в сравнении с борландовскими отладчиками. Чтобы его освоить, нужны некоторые усилия. В принципе, он поддерживает основные функции нормальных отладчиков. Хотя лично я чаще пользуюсь контрольной печатью J . В отладчике есть перенаправление вывода приложения на другой терминал.

Настройка терминалов.

Терминалы под Informix работают в двух режимах: через системное terminfo или через собственный termcap Informix. Для успешной настройки вашего терминала или терминального эмулятора необходим опыт программирования termcap и понимание принципов его работы, а это не так просто как хотелось бы. Termcap Informix имеет отличия от стандартного termcap. Они частично описаны в документации Informix 4GL Reference. При работе через системное terminfo отсутствует поддержка цвета в приложениях.

Informix-SQL и DBACCESS

Informix-SQL - это дополнительная опция, после установки которой, из среды разработки можно создавать и выполнять SQL-запросы по образу того, как они делаются в Oracle SQL*Plus, хотя и в гораздо менее удобной форме.

DBACCESS - это специальная утилита, которая в основном выполняет административные функции по аналогии с Oracle SQL*DBA. С ее помощью создаются базы данных, таблицы, выполняется просмотр всей связанной с ними информации и многое другое. Достоинством является то, что работа организована через кольцевые меню и достаточна удобна. DBACCESS понимает скрипты, поступающие со стандартного ввода, но не умеет форматировать вывод, что является существенным недостатком, в отличие от Oracle SQL*Plus.

Другие средства разработки Informix

Большое количество программных средств разработано на ESQL/C. Это предкомпилятор Informix для языка C, он транслирует SQL-выражения в вызовы библиотечных функций. На выходе получается исполняемый бинарный код. У Informix существуют средства разработки под Windows. Подробнее о них в книгах Мошков. "Учебник по СУБД Informix" (электронная версия на www.cit.ru) и Грачев А.Ю. "Введение в СУБД Informix" (электронная версия на www.informix.ua)

Организация меню

К сожалению Informix не имеет программного обеспечения для связи большого количества программных модулей в единое приложение. Метод, которым это будет делаться, лежит целиком на совести программиста.

Отчеты

Программирование отчетов для последующего вывода их в файл экран или принтер также делается при помощи программирования на 4GL.

Итого

Несмотря на всю сложность, в действительности дело обстоит несколько проще. Знание особенностей работы конкретного сервера СУБД является хоть и крайне полезным, но необходимо только в случае, когда нужно получить от сервера максимально высокую эффективность.

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

В 90% случаев программисту достаточно представлять себе, что он работает с системой один на один, ничего не зная про остальных пользователей. То же касается и пользователей: хорошо спроектированное приложение работает так, что сервер сделает все сам: заблокирует кого надо и откатит кого нужно. В этом большое достоинство SQL-серверов. Хотя для создания действительно эффективных приложений (оставшиеся 10% случаев) надо очень хорошо представлять, как это все внутри работает, а для этого не лениться читать документацию и печатаемые книжки. "RTFM, RTFM и RTFM" -как говорил Ленин В.И.

Многое из того, что предоставляют SQL-сервера, в принципе отсутствует на xBase-системах, в частности понятия транзакций, контроль целостности данных реализуемый непосредственно на сервере, централизованное управление ресурсами, автоматическое восстановление после сбоев, распределенные СУБД и многое другое.

SQL-сервер имеет более низкие требования к каналам передачи данных чем файловый сервер. Для файлового сервера, чем толще канал, тем лучше, поэтому xBase-система работает хорошо до тех пор, пока не потребуется отнести рабочее место хотя бы километров на десять. Это может потребоваться, например, при организации удаленного офиса или точки обслуживания. А без канала связи будут проблемы с репликацией нормативно-справочной информации.

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

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

1999-2000. Лукин А.С.

[ Назад ] [ Оглавление ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог