1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /122, 1995 г./ | Бонус | Поиск  

Обзоры

Интеграция SQLWindows 5.0 с Oracle?

Александр Брюзгин


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

Корпорация Gupta проектировала SQLWindows как среду разработки систем "клиент-сервер", независимую от СУБД, позволяющую создавать мощные, быстро функционирующие приложения и гарантирующую наивысшее качество работы во всех популярных СУБД, включая Oracle, Sybase, DB2, SQL Server, Informix и SQLBase Технология SQLNetwork, являющаяся частью SQLWindows, обеспечивает такое сопряжение с каждой конкретной СУБД, при котором особенности последней используются наиболее оптимально

Ниже будет рассмотрен реализованный в SQLWindows механизм поддержки СУБД Oracle? Важно отметить, что SQLWindows настолько же хорошо задействует все особенности СУБД Oracle?, насколько собственные продукты Oracle – инструменты СОЕ, причем в некоторых случаях возможности SQLWindows даже превосходят аналогичные показатели Oracle?

SQLWindows и GUI Windows

Пользователи приложений Microsoft Windows вправе рассчитывать на все ранее доступные им возможности, например DDE и OLE. В свою очередь, разработчики желают иметь в своем арсенале все стандартные средства программирования (скажем, VBX), облегчающие процесс разработки и повышающие возможность повторного использования кодов.

Весь этот потенциал доступен в SQLWindows среда разработки позволяет поддерживать в приложениях механизмы DDE, OLE и VBX, a благодаря революционной архитектуре QuickObjects стало возможным создавать приложения для работы с данными Oracle7, просто перемещая объекты по экрану (drag-and-drop), без написания программных кодов.

SQLWindows и BLOB

В БД Oracle7 поддерживается чтение и запись бинарных объектов (BLOB) неограниченного размера. Пользователи могут хранить в базе Oracle7 звук, изображения типа bitmap и даже видеозаписи и обращаться к ним из своих приложений, разработанных в SQLWindows.

Сопряжение SQLWindows

Чтобы выполнить транзакции, приложение SQLWindows обычно передает по сети на сервер базы данных Oracle7 четыре сообщения. Сначала в БД направляется SQL-запрос для синтаксического анализа Затем реализуются переменные связывания, определяющие критерии SQL-запроса. После этого приложение передает запрос на выполнение SQL-запроса и, наконец, производит выборку данных, полученных в результате его осуществления. В традиционных системах "клиент-сервер" каждое из этих сообщений передается и обрабатывается отдельно. Очевидно, что все эти дополнительные операции отражаются на производительности.

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

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

Обработка массивов. Эта возможность снижает временные затраты на вставку или выборку данных. Oracle7 объединяет строки данных при пересылке в один массив, а затем передает его по сети, что позволяет обойтись без массы ненужных подготовительных действий. Теперь приложение SQLWindows получает сразу большой блок данных, а не 100 строк по отдельности. Для конечных пользователей это означает повышение скорости работы приложения при вставке или выборке данных.

Отложенный анализ и обработка массивов, реализованные в приложениях SQLWindows, позволяют разработчикам значительно снизить время задержки при обработке данных, хранящихся в базе Oracle7. Это особенно важно при работе в глобальной вычислительной сети (WAN) без упомянутых средств снижения интенсивности сетевого трафика использование приложений, передающих данные с одного континента на другой, оказалось бы невозможным.

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

Чтобы исключить повторную перекачку данных с сервера, в SQLWindows реализована буферизация множества результатов на машине клиента. По мере того как пользователь просматривает данные, они помещаются в кэш-память на жестком диске его машины (при выходе из приложения SQLWindows этот файл автоматически удаляется), и в дальнейшем при "прокрутке" данных в обоих. направлениях система обращается именно к этому кэш-файлу, а не к БД (Примечание данная возможность реализована только в интегрированной версии SQLWindows-Oracle7 и отсутствует в CDE-Oracle7.)

Доступ к системам любого типа

Современным пользователям требуются приложения, работающие с информацией различных баз и нереляционных источников данных (например, E-mail или Lotus Notes). Поэтому SQLWindows как универсальная среда разработки систем "клиент-сервер" предоставляет возможности сопряжения со всеми популярными СУБД здесь можно создать приложение, одновременно использующее данные из Oracle7, Sybase, Informix или DB2, а поддержка ODBC позволит приложениям работать даже с персональными БД (скажем, dBASE или Paradox) и связывать их данные с данными Oracle7.

Далее Данные из Oracle7 можно переносить в Lotus Notes и наоборот Библиотеки классов Lotus Notes и QuickObjects для Lotus Notes, реализованные в SQLWindows, предельно облегчают задачу связывания вместе этих разнородных источников и позволяют просматривать разные данные на одном экране. Разработчики могут легко создать приложение, работающее с множеством различных СУБД и использующее возможности каждой из них. Эта способность к сопряжению с Lotus Notes также реализована только в SQLWindows и отсутствует в Oracle CDE.

SQLWindows поддерживает OracleG и Oracle7

Приложение SQLWindows автоматически распознает, какая из версий Oracle находится в работе, и использует уникальные возможности именно этой версии. По мере выхода новых версий (OracleS) SQLWindows продолжит поддержку приложений, спроектированных для более ранних версий. Вместе с тем инструментарий Oracle CDE не поддерживает OracleG и, возможно, с выходом OracleS CDE перестанет взаимодействовать с Oracle7. В то же время в SQLWindows такая поддержка сохранится.

SQLWindows и нестандартные возможности Oracle7

Трехуровневая архитектура представляет собой расширение традиционной схемы "клиент-сервер", реализованное за счет разделения приложений, позволившего оптимизировать их работу. Части приложения, требующие интенсивной работы процессора, могут быть запрограммированы и храниться на мощных серверах – UNIX или mainframe – для их более быстрого выполнения.

При работе в среде Oracle7 вклад SQLWindows в реализацию трехуровневой архитектуры выражается в использовании хранимых процедур Oracle7*. Сегменты выполняемого кода могут быть определены как хранимые процедуры на языке Oracle? PL/SQL**.

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

Хранимые процедуры, определенные на сервере СУБД Oracle7, являются прозрачными для SQLWindows. Поскольку обращение к процедуре происходит через вызов удаленной процедуры, то программист, работающий с SQLWindows, может и не знать, что вызываемая им функция в действительности хранится на другой машине. Встроенный компонент SQLWindows – SQLNetwork for Oracle7 – находит функцию в базе данных и автоматически выполняет ее. Отсюда следует, что множество разных приложений SQLWindows может вызвать одну и ту же процедуру, созданную разработчиком на сервере СУБД Oracle7.

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

В отличие от других продуктов, в которых также реализована поддержка хранимых процедур Oracle7, SQLWindows не ограничивает число строк, возвращаемых этими процедурами, и не требует, чтобы в базе данных Oracle7 создавалась временная таблица для хранения результатов до передачи их в приложение.

В ближайшем будущем в SQLWindows будут реализованы QuickObjects для хранимых процедур Oracle7, что значительно упростит процесс построения приложений с их использованием. Разработчики смогут выбирать нужные им хранимые процедуры и помещать их в свои приложения, пользуясь механизмом drag and-drop, а также без написания программных кодов создавать высокоскоростные приложения "клиент-сервер", в которых будут задействованы трехэтажная архитектура, мощные серверы СУБД и возможности модульного программирования.

Управление транзакциями

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

Современные приложения, использующие графический интерфейс (GUI), предоставляют доступ одновременно к нескольким экранам, причем зачастую возникает необходимость изменять данные на любом из них. Однако многие приложения, хоть и позволяют установить несколько связей с таблицами базы для поиска информации, обрабатывают эти связи по-прежнему с помощью единой транзакции. Из-за этого возникает множество проблем с командой COMMIT, влияющей на всю транзакцию в целом когда пользователь, находясь на одном из экранов, запускает эту команду для записи данных в БД, она выполняется и по отношению к данным на всех остальных экранах Таким образом, все изменения записываются в БД. Указанное действие очищает все активные ячейки памяти (handles), в которых хранятся указатели на базу данных для каждого экрана, открытого в данном приложении. После выполнения COMMIT у всех остальных экранов теряется "контекст", поскольку указатели на БД сброшены и больше не указывают на данные, до этого просматриваемые пользователем, поэтому при попытке прочитать следующую строку данных он получит сообщение об ошибке.

Чтобы исключить подобную ситуацию, разработчикам приходилось писать программный код, проверяющий содержимое каждого akW'a перед выполнением очередной команды COMMIT. Благодаря этому значения указателей для каждого экрана восстанавливались, и пользователь мог продолжать просмотр данных с того места, на котором остановился.

Интеграция Oracle? и SQLWindows позволила избежать столь громоздких действий SQLWindows поддерживает именованные транзакции с Oracle7, что позволяет разработчикам уникальным образом определять для каждого экрана отдельную транзакцию.

Например, экран "Ввод заказа" (SCREENJ) может быть связан с транзакцией TRANSACTION_1, а экран "Информация о клиентах" (SCREEN_2) – с транзакцией TRANSACTION_2. Теперь, когда пользователь, находясь на экране SCREEN_1, нажимает кнопку "OK" для записи изменений в базу данных, приложение выполняет явный COMMIT транзакции TRANSACTION_1, которая связана с этим экраном.

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

Использование именованных транзакций также позволяет передавать транзакции из одного приложения в другое, не создавая их заново, в то время как в традиционных средах разработки приложений передача транзакции из одного приложения в другое не разрешалась. Например, если первое приложение изменяло информацию о клиенте, и вы хотели запустить второе, которое обрабатывало заказы этого клиента, пересылка транзакции с данными о клиенте во второе приложение была невозможна. Вместо этого первое приложение должно было передать всю информацию о транзакции и затем дать команду второму приложению создать ее заново. Этот процесс был очень сложным в смысле кодирования. Теперь же, с появлением именованных транзакций, проблема решается транзакции можно передавать из одного приложения в другое, просто указывая их имена, а приложения SQLWindows, работающие с базами данных Oracle7, можно писать, не задумываясь над тем, каким образом тот или иной разработчик задает транзакцию. Все, что требуется, чтобы передать транзакцию из одного приложения в другое, – это знать ее имя.

Таким образом экономится время, затрачиваемое на разработку, и совершенствуется процесс модульного программирования.

Триггеры, двухфазный commit, репликация, блокировка строк

Триггеры Oracle7 позволяют выполнять на сервере действия, связанные с валидацией или выполнением автоматических изменений данных. Тем самым уменьшается нагрузка на приложение SQLWindows, а благодаря поддержке двухфазного COMMIT'a оно может выполнять транзакции между несколькими БД, не нарушая целостности данных. Репликация, реализованная в Oracle7, позволяет дублировать данные из приложений SQLWindows и записывать их в разные БД. Наконец, блокировка на уровне строк, устанавливаемая в Oracle7 по умолчанию, позволяет организовать эффективный доступ к данным при работе в многопользовательском режиме, что снижает вероятность конфликта.

Групповое программирование

SQLWindows предоставляет возможность нескольким программистам работать в группе в среде программирования TeamWmdows. Разработчики могут контролировать версии, анализировать влияние и совместно использовать программный код с помощью открытого репозитория Gupta, входящего в поставку TeamWmdows.

Теперь, в версии 5.0 SQLWindows, появилась возможность инсталляции открытого репозитория Gupta в базах данных Oracle7. Разработчикам не нужен дополнительный файловый сервер или сервер БД для хранения множества версий создаваемого ими приложения TeamWmdows совместно с Oracle7 позволяет им строить приложения и управлять процессом их разработки с использованием одного сервера базы данных.

Заключение

Итак, SQLWindows использует возможности, предоставляемые СУБД Oracle, настолько же полно, насколько это делает инструментарий Oracle CDE. Поддерживаются хранимые процедуры и именованные транзакции, обработка массивов и отложенный анализ позволяют SQLWindows достичь того же уровня работы приложений с базами данных Oracle, который обеспечивает инструментарий CDE. Кроме того, в SQLWindows реализованы возможности, отсутствующие в CDE, например множества результатов (result sets), создаваемые на машине клиента, "прокручиваемые" курсоры и др. Если учесть высокий уровень, на котором реализована поддержка различных баз данных – Oracle, Sybase, Informix, SQL Server, Netware SQL и Lotus Notes, – то можно сказать, что SQLWindows представляет собой мощную среду разработки приложений "клиент-сервер", отвечающих современным требованиям Интеграция SQLWindows и Oracle7 позволяет разработчикам сохранить высокую производительность и отслеживать все запросы конечных пользователей.

За технической помощью по продуктам фирмы Gupta и, в частности, SQLWindows можно обращаться в Центр технической поддержки Gupta по телефонам 135 55 00,135 25 19.

______________________

* Gupta ищет и другие пути поддержки трехуровневой архитектуры, используя для этого такие продукты, как ParallelSal и др.

** PL/SQL – процедурный язык программирования Oracle7.

 


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /122, 1995 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru