, традиционно привязаны к центральному серверу базы данных одного поставщика, и требуют дорогостоящей инсталляции клиентских компонентов, специальных средств разработки и интерфейсов. Ставшая уже привычной для пользователей среда доступа к информации с помощью браузера в данном случае редко оказывается применимой. Об использовании базы данных с любой рабочей станции корпоративной сети или подключении внешних партнеров к нужной информации остается только мечтать. В какой-то степени эту мечту может осуществить система DB4Web позволяющая обеспечивать одновременный доступ к данным из различных источников: ODBC и Oracle, Access и СА/Ingres, R/3 и Microsoft SQL Server.
Компания Siemens предлагает способ консолидации технологий web и баз данных: ее система DB4Web обеспечивает шлюз между ними и Internet-приложением. Пользователь продолжает работать в копоративной сети или Internet, а с помощью браузера получает доступ к нужному источнику данных. DB4Web обеспечивает возможность обращения к множеству реляционных баз, в том числе Oracle, Informix, Ingres, Microsoft SQL-Server, DB2 и Access. Помимо этого, пользователь сможет запрашивать данные из систем SAP R/2 и R/3, а также сетевых каталогов по протоколу LDAP.
DB4Web поддерживает работу как приложений с доступом к данным только по чтению, так и систем, читающих и записывающих данные в соответствующий источник. В результате удается создать сложные динамические Web-страницы, содержимое которых будет извлекаться из базы данных, сетевого каталога или другого приложения непосредственно при выводе страницы на экран. Таким образом, пользователь всегда будет получать самую свежую информацию.
DB4Web дает возможность использовать несколько источников данных одновременно. Шлюз позволяет добиться оптимальной производительности доступа к данным, обеспечивает возможность работы с информацией, размещаемой на различных платформах, поддерживает мощные механизмы защиты и совместим с любым Web-браузером и web-сервером. Теперь остается понять, каким образом реализуются все его возможности.
Архитектура DB4Web
На рис. 1 показаны основные компоненты DB4Web: клиентская система, web-сервер, DB4Web-клиент, менеджер виртуальных баз данных (Virtual Database Manager. - VDM), DB4Web-сервер, супервизор виртуальных баз данных (Virtual Database Supervisor. - VDS) и источники данных (серверы баз данных, приложения и каталоги). Из рисунка видно, что функции различных серверов в составе DB4Web могут выполняться на одном компьютере или распределяться на две или даже три машины. Выбор того или иного решения будет зависеть от вычислительных возможностей конкретной среды и требований к производительности системы. Но, как правило, функции Web-сервера и серверов DB4Web и баз данных выполняют разные машины, поскольку на web-сервер и без того приходится большая нагрузка. Важно только отметить, что все компоненты системы, размещенные в одном прямоугольнике на рис. 1, на самом деле также должны выполняться на одном компьютере.
Рис. 1. Архитектура DB4Web |
Вкратце механизм работы шлюза DB4Web можно описать следующим образом. Пользователь через Internet-браузер получает доcтуп к нужным данным. По выбранному адресу URL устанавливается соединение с web-сервером. Web-сервер запускает CGI-программу - клиента DB4Web, который, в свою очередь, инициирует один или несколько процессов сервера DB4Web - так называемые виртуальные базы данных, осуществляющие доступ к источникам информации. Распределение запросов к виртуальным базам данных выполняется на основе информации, предоставляемой - менеджером виртуальных баз данных. Наконец, фактические действия по доступу к данным описываются в файле методов, интерпретируемом DB4Web-сервером, который инициирует все запросы к базам данных и другим источникам, форматирует и возвращает результат. Нормальное функционирование процессов DB4Web-сервера контролирует супервизор виртуальных баз данных.
Клиентская система
В качестве клиента приложения баз данных, построенного при помощи шлюза DB4Web, может использоваться любой Internet-браузер. Уточним, о каких приложениях идет речь. DB4Web - средство создания динамических Web-страниц, содержимое которых извлекается из источника данных непосредственно при очередном обращении к этой странице. Тем самым гарантируется получение самых последних версий данных. Если приложения помимо простого чтения допускают ввод информации от пользователя, то они предъявляют более высокие требования к способам просмотра страницы и должны иметь средства интерактивной проверки полей пользовательского ввода. Простейший случай - страницы на HTML, которые используют механизм форм для запроса информации и передают введенные данные CGI-программе. По такому принципу с использованием шлюза DB4Web созданы, например, HTML-приложения, реализующие календари событий.
Дополнительные возможности навигации по странице обеспечивает язык JavaScript, который позволяет, например, выбрав одну гиперссылку, переходить к нескольким фреймам (страницам) одновременно или проверять введенные пользователем данные при помощи диалоговых блоков. В комбинации с HTML JavaScript позволяет простейшими средствами организовать эффективный диалог с пользователями. Для того чтобы получить более сложный пользовательский интерфейс или реализовать интерактивные графические элементы, прибегают к помощи Java-апплетов, которые загружаются Web-сервером по требованию и выполняются под управлением интерпретатора, встроенного в web-браузер. Типичный пример - база данных об услугах и товарах компании, предоставляющая информацию по сети. Изменения в эту «потребительскую корзину» вносит владелец базы данных, наделенный соответствующими правами. Реализация такого приложения на Java позволяет создать удобный пользовательский интерфейс и избежать перегрузки сети. Однако надо помнить, что апплеты Java, хотя и имеют небольшой объем, могут довольно долго загружаться, поэтому такое решение будет оптимальным только в случае достаточной пропускной способности сети.
Если есть-соответствующая виртуальная Java-машина, можно выполнять автономное Java-приложение с доступом к центральной базе данных посредством DB4Web.
Web-сервер и DB4Web-клиент
Когда в приложении выбрана гиперссылка на определенную страницу, браузер связывается по протоколу HTTP с Web-сервером, указанным в универсальном адресе ресурса URL. Web-серверу пересылается символьное имя URL, по которому он определяет, какая страница запрашивается - статическая или динамическая. В первом случае нужная страница загружается из файловой сиcтемы и передается браузеру. Однако нас интересует способ доступа к динамической странице, когда данные, последовательно отображаемые у Web-клиента, передаются web-серверу другой программой. Такие программы называются CGI-сценариями, и для их запуска используются СGI-интерфейсы.
В нашем случае CGI-программой является DB4Web-клиент, который по протоколу TCP/IP свяжется с DB4Web-сервером, получит от него нужные данные и возвратит их web-серверу, а тот, в свою очередь, передаст их в Internet-браузер. Рассмотрим пример для доступа к данным с помощью DB4Web.
Пример 1. Простой пример для метода, определяющего число записей в таблице emp базы данных Oracle пользователя с именем Scott
Content type: text/html .SET index= «Oracle select data from scott/tiger data»
:index
.SQL «oracle» «scott» «tigger»
select
count(*) as THECOUNT
from
emp
.ENDSTATEMENT
.FETCH
.ENDSQL
The database contains :THECOUNT entries Клиент по протоколу http передает символьный адрес URL web-серверу на компьютере с именем erlm.siemens.de. По оставшейся части URL web-сервер определяет, что необходимо инициировать CGI-программу - клиента DB4Web. Имя DB4Web преобразуется в вызов программы db4web_c, которая находится в одном из специальных каталогов web-сервера. Это преобразование выполняется на основе информации из конфигурационного файла web-сервера. DB4Web-клиент в качестве параметров получает оставшуюся часть URL, по которой определяет, что необходимо инициировать серверный процесс DB4Web для доступа к виртуальной базе данных db4web1. Этот процесс будет интерпретировать файл методов, описывающий непосредственный доступ к источнику данных. Метод определяет, какие столбцы из какой таблицы и в какой базе данных должны быть выбраны и в каком формате данные должны быть возвращены клиенту (см. пример1). После имени файла методов могут быть также указаны дополнительные CGI-переменные. Для доступа к базе данных из Java-приложения DB4Web предоставляет стандартные библиотеки классов. Специальный класс DsDB содержит все действия, связанные с доступом к базе данных посредством методов DB4Web. Java-апплет или Java-приложение создает экземпляр класса DsDB, которому в качестве параметров передаются имя web-сервера, имя DB4Web-клиента, имя виртуальной базы данных и имя файла метода на компьютере DB4Web-сервера (см. пример 2). После этого инициируется метод AccessDB() для фактического доступа к базе данных. Пример 2. Доступ к базе данных из Java-приложения Апплет Date.java запускается под управлением web-браузера и получает адрес URL из HTML-страницы «Data.html»: |
Date from the database
Доступ к базе осуществлятся с помощью метода DateSelect. Первая строка файла метода задает тип данных и передается клиенту как часть HTTP-заголовка, гарантируя, что данные интерпретируются как текстовые. Далее загружается таблица преобразования, так что данные, пересылаемые в Java-апплет, предварительно подвергаются CGI-преобразованию. Подпрограмма ONERROR обеспечивает повторный просмотр базы данных в случае неправильного SQL-запроса. Значение переменной _returnStatus оценивается в методе AcceessDB(). Фактический запрос к базе данных содержит оператор SQL. Переменные, передаваемые апплетом, определяют СУБД, пользователя и пользовательский пароль. Оператор FETCH формирует из полученных данных строку, которая будет анализироваться апплетом.
Content-Type: text/plain .INCLUDE ./app/tdit/include/JavaTableFull #————————————————— Error !!! .SET _returnStatus= :status .ROLLBACK .EXIT .ENDONERROR #————————————————— .SQL :vendor :database :user :login select dictinct date (?now?) as datum from wako_system_technik .ENDSTATEMENT # .FETCH date=:datum .ENDSQL #————————————————— .COMMIT .EXITuwУстанавливается URL-соединение с web-сервером и запускается вся оставшаяся цепочка действий. Извлеченные из базы данные передаются Java-приложению не в формате HTML, а во внутреннем представлении, поддерживаемом библиотекой классов.
DB4Web может использоваться со всеми Web-серверами, поддерживающими спецификацию CGI. Cервер - должен быть специальным образом настроен, так чтобы иметь возможность интерпретировать адреса URL для работы с DB4Web, в частности, установить соответствие между именем DB4Web-клиента в URL и программой в каталоге cgi-bin, CGI или scripts.
Виртуальные базы данных
DB4Web-клиент с компьютера web-cервера пересылает поступивший запрос так называемым виртуальным базам данных. Механизм виртуальных баз данных - важнейшая часть шлюза DB4Web, именно он, по существу, обеспечивает возможность доступа из произвольного web-браузера к любому источнику данных на любом компьютере в корпоративной сети или в Internet.
Виртуальные базы данных - это параллельные процессы DB4Web-сервера, реализующие доступ к базам данных, приложениям и каталогам. Эти процессы могут устанавливаться на любой системе, что позволяет разделять нагрузку между компьютером Web-сервера и компьютером сервера DB4Web. Кроме того, сами процессы DB4Web-сервера можно распределить на несколько машин и использовать для доступа к базам данных различные операционные системы (NT и Unix).
Основные свойства виртуальных баз данных:- для каждой виртуальной базы данных может быть сконфигурирован один или более процессов DB4Web-сервера;
- каждый из процессов DB4Web может быть привязан к одному или более источнику данных.
Все процессы DB4Web-сервера, которые поддерживают общую виртуальную базу данных, должны иметь возможность работать с данными из одного и того же источника. Это надо учитывать при распределении процессов по различным машинам, поскольку для источников данных с доступом по стандарту ODBC, например, в качестве DB4Web-сервера может использоваться только NT, а для баз данных Oracle и Ingres - NT и Unix. Но главный смысл первого свойства виртуальных баз данных состоит в том, что с помощью DB4Web можно построить масштабируемую систему с разумным распределением нагрузки на серверные компоненты. В каждый момент времени виртуальную базу данных может обслуживать несколько процессов DB4Web-сервера, возможно, распределенных на несколько компьютеров. Если произойдет сбой в одном из процессов или выйдет из строя одна из машин, то обработка информации из данного источника будет перенаправлена на оставшиеся процессы или компьютеры. На работе приложения сбой практически не отразится, если не считать возможного снижения производительности до того момента, как будет восстановлена работа вышедшего из строя компонента.
Вторая характеристика виртуальных баз данных, способность устанавливать соединение одного процесса с несколькими реальными источниками данных, обеспечивает возможность одновременного вывода на Web-страницу информации из разных баз данных или приложений.
Благодаря таким принципам организации DB4Web-сервера его реализация на многопроцессорных машинах или в кластерах позволит добиться оптимальной производительности системы DB4Web. А, как известно, быстрый доступ к данным - важнейшая составляющая эффективной работы приложения в целом. Еще одна особенность DB4Web состоит в том, что каждый процесс DB4Web-сервера может работать в специальном режиме отладки или использоваться только для разработки приложения. Таким образом, механизм DB4Web может применяться не только в рабочей среде, но и в ходе разработки или последовательной отладки приложения. DB4Web позволяет выбрать один из нескольких уровней отладки, в зависимости от которого полученная на выходе информация будет передаваться непосредственно в Web-браузер или записываться в журнальный файл DB4Web-сервера.
За конфигурацию процессов DB4Web-сервера и установление связи между процессом и виртуальной базой данных отвечает менеджер виртуальных баз данных (VDM), который, также как и DB4Web-клиент, выполняется на машине Web-сервера. Именно от VDM DB4Web-клиент получает подробную информацию о том, с каким DB4Web-сервером, на каком компьютере и через какой порт он может установить связь для доступа к запрашиваемой виртуальной базе данных. Для этого VDМ инициализирует разделяемый сегмент памяти (shared memory segment. -SHM), из которого DB4Web-клиент получает всю необходимую информацию. В процессе загрузки компьютера, на котором выполняются Web-сервер, DB4Web-клиент и VDM, менеджер виртуальных баз данных передает в SНM данные из конфигурационного файла. Поскольку эта область памяти является разделяемой, все клиентские процессы DB4Web, имеющие к ней доступ, могут использовать SHM для обмена информацией друг с другом.
Virtual Database (виртуальная база данных). Имя виртуальной базы данных, которое находится в URL сразу после имени DB4Web-клиента. В данном примере uspdbg - виртуальная база данных, серверные процессы которой работают в режиме отладки.
Host Name (имя хоста) . Имя компьютера, на котором есть активный серверный процесс, поддерживающий указанную виртуальную базу данных. В этом столбце может быть полное доменное имя компьютера.
Port (номер порта). Номер выделенного ТCP/IP-порта серверного процесса DB4Web на указанном хост-компьютере.
Prediction Default (исходный прогноз). Начальное значение, которое используется для поиска самого быстрого процесса DB4Web-сервера, работающего с указанной виртуальной базой данных.
Prediction Increment (инкремент прогноза). Это значение прибавляется к счетчику прогнозов всякий раз, когда используется указанный DB4Web-сервер.
Prediction Count (счетчик прогнозов). Число заданий, которые выполняет сервер в данный момент времени. Use Count (счетчик использования). Счетчик использования фиксирует общее число заданий, полученных данным сервером.
В SHM содержится также общий для всех серверов параметр Call_timeout, который указывает максимально допустимое время обработки метода.
Когда DB4Web-клиент получает в качестве параметра оставшуюся часть URL с именем виртуальной базы данных, вступает в действие алгоритм оптимизации, который позволяет выбрать оптимальный для данной задачи DB4Web-сервер. Клиент ищет в таблице SHM элемент, соответствующий заданной в URL виртуальной базе данных. При этом он выбирает ту строку, в которой счетчик прогнозов имеет наименьшее значение. Счетчик информирует клиента DB4Web, для какого серверного процесса наиболее велика вероятность ответить на новый запрос быстрее других.
После получения запроса счетчик прогнозов будет увеличен на значение инкремента прогноза, а когда будет завершено выполнение удаленной процедуры обработки метода, счетчик прогнозов уменьшается на то же значение.
Значения параметров «исходный прогноз» и «инкремент прогноза» считываются в SHM из файла конфигурации менеджера виртуальных баз данных. Эти параметры могут быть заданы таким образом, чтобы сбалансировать использование быстрых и медленных машин, поддерживающих одну и ту же виртуальную базу данных. Все запросы будут в первую очередь пересылаться на сервер с высоким быстродействием, и медленный компьютер не получит задания до тех пор, пока все серверные процессы производительной машины не будут задействованы.
Таким образом, клиент установит связь с машиной с наименьшим временем отклика серверных процессов или с наименьшей нагрузкой на эти процессы за последнее время. Процессы DB4Web-сервера, которые, в принципе, тоже могут использоваться для доступа к нужному источнику данных, но только что были заняты интенсивной обработкой других запросов, как правило, игнорируются. С большой степенью вероятности можно предположить, что будут отвергнуты даже те процессы, которые недостаточно быстро обрабатывают запросы к источникам данных. Кроме того, программным путем реализуется отображение информации о производительности аппаратуры в данные о процессах, так чтобы при выборе DB4Web-сервера преимущество было отдано высокопроизводительной многопроцессорной машине.
DB4Web реализует настраиваемый механизм балансировки нагрузки, который будет успешно работать даже при очень большой интенсивности запросов к источникам данных, поскольку позволяет быстро (благодаря обращению к сегменту памяти SHM) найти оптимальное число компонентов DB4Web для данной задачи.
Как только выбран подходящий компьютер и серверный процесс, DB4Web-клиент устанавливает с ним связь и передает ему имя метода, который должен быть реализован для доступа к данным, а также другие необходимые параметры. При этом DB4Web-клиент запускает счетчик активности выбранного DB4Web-сервера. Когда обработка файла метода завершена, данные, используемые для выбора оптимального серверного процесса, обновляются, и только что закончивший работу сервер можно использовать для других задач.
DB4Web-сервер
DB4Web-сервер - это ядро системы DB4Web, исполняемый модуль, который читает и выполняет файл методов, заданный в URL. Функции DB4Web-сервера включают чтение файла методов, интерпретацию инструкций в этом файле, генерацию запросов к источникам данных, а также форматирование и вывод результирующих данных в соответствии с инструкциями из файла методов. DB4Web-клиент соединяется с DB4Web-сервером по протоколу TCP/IP, используя механизм RPC, соответствующий спецификации открытой сетевой вычислительной модели от Sun ONC. Для этого DB4Web-клиент с помощью VDM определяет компьютер и номер TCP/IP-порта процесса, который работает с виртуальным источником данных, заданным в адресе URL. Как правило, на компьютере выполняется несколько серверных процессов с выделенными номерами портов. Если процесс не имеет выделенного TCP/IP-порта, перед установкой соединения вызывается специальная программа portmapper, которая выделит порт нужному серверу.
Ключевую роль в создании динамической Web-страницы играет файл методов. В нем определяется не только то, как будет выглядеть страница, но и количество выводимых данных и способ их представления. Фактически, файл методов описывает функции HTML-приложения и определяет тип и объем данных, которые будут передаваться Java-приложению. Кроме того, файлы методов контролируют права доступа к данным. Схема авторизации обычно хранится в базе данных. Инструкции файла методов проверяют соответствие запроса этой схеме и тем самым гарантируют, что только пользователь с необходимыми правами сможет найти «нужные» ему данные.
Синтаксически файл методов представляет собой смесь HTML, SQL и специальных инструкций DB4Web, которые выполняют роль «клея» между операторами HTML и операторами доступа к базам данных.
DB4Web-сервер выполняет синтаксический разбор текста и затем интерпретирует полученное дерево объектов, которое содержит как HTML-коды, так и инструкции SQL. Для выполнения SQL-операторов подсистеме SQL предоставляются данные об имени базы данных, драйвере, пользователе и пароле. Затем проверяется наличие соединения с нужной базой и оценивается его эффективность. Если скорость соединения оказывается неприемлемой, устанавливается новое, и только после этого происходит обращение к базе данных или другому источнику информации. Интерпретатор DB4Web-сервера также отвечает за обработку всех сообщений об ошибках, поступивших от сервера базы данных. После завершения работы инетрпретатора данные в формате, определенном разработчиком метода, передаются DB4Web-клиенту, который с помощью Web-сервера препроводит их клиентскому браузеру.
Правда, не все драйверы доступны на всех операционных системах (полный список поддерживаемых источников данных им СУБД содержится на сервере http://www.db4web.de). Кроме того, воспользовавшись интерфейсом EDAPI, пользователь может создавать собственные драйверы, удовлятворяющие его специфическим требованиям.
В реальной среде серверный процесс DB4Web редко запускается непосредственно. Для этого используется специальное приложение- супервизор виртуальных баз данных (VDS), который выполняет функции администратора процессов DB4Web-сервера на данном компьютере. VDS хранит список всех серверных процессов и следит за их работой. Он должен обеспечивать круглосуточную работу DB4Web-серверов, проводя для этого постоянный мониторинг и перезапуская, при необходимости, сервер. Мониторинг реализован как циклический опрос: VDS циклически инициирует запрос ко всем сконфигурированным серверам на его машине и ждет обратной связи. Если связь установлена, то с сервером все в порядке. В противном случае VDS завершает серверный процесс и затем перезапускает его.
В задачу супервизора виртуальных баз данных входит также конфигурация серверов для отладки, наличие которых обеспечивает продуктивность разработки приложений. Однако, как показывает практика, иметь дополнительный отладочный DB4Web-сервер полезно даже в уже работающей системе. Тогда в случае какого-либо сбоя для перехода в режим отладки Web-клиенту достаточно будет изменить URL доступа к данным. Дополнительный сервер может помочь также в ситуациях внезапной перегрузки системы при слишком интенсивном потоке пользовательских запросов.
Выводы
Система DB4Web открывает перед разработчиком сетевых приложений баз данных богатые возможности. Используя уже существующую TCP/IP-инфраструктуру, он сможет организовать доступ к произвольным источникам информации с произвольных клиентских платформ из обычного Web-браузера. В результате пользователь получит в свое распоряжение насыщенные самым актуальным содержанием динамические Web-страницы.