Разработка структур основных видов обеспечения программно-технического комплекса (ПТК) “Web- интерфейс к базам данных”.
Введение.
Сегодня множество людей неожиданно для себя открывают для себя существование глобальных сетей, объединяющих компьютеры во всем мире в единое информационное пространство, которое называется Internet. Что это такое, определить непросто. С технической точки зрения Internet - это объединение транснациональных компьютерных сетей, работающих по различным протоколам, связывающих всевозможные типы компьютеров, физически передающих данные по всем доступным типам линий - от витой пары и телефонных проводов до оптоволокна и спутниковых каналов. Большая часть компьютеров в Internet связано по протоколу TCP/IP. Можно сказать, что Internet- это сеть сетей, опутывающая весь земной шар.
Протокол TCP/IP позволяет передавать информацию, а его используют разнообразные сетевые сервисы, по- разному обращающиеся с этой информацией. Internet не решила проблемы хранения и упорядочения информации, но решила проблему её передачи, дав возможность получать её когда и где угодно. Поскольку Сеть (здесь и далее Сеть- с большой буквы- будет означать Internet) децентрализована, то отключение даже значительной части компьютеров не повлияет на её функциональность. По оценкам аналитиков, в 1995 году число полноценно подключённых к Сети компьютеров составило около 7 миллионов и продолжает стремительно расти. По тем же оценкам, в начале следующего века Сеть может стать столь же доступна, как телефон или телевидение сегодня.
Как уже упоминалось, в Сети существует большое число сервисов. Нас в дальнейшем будет интересовать WWW или просто Web (Word-Wide Web- всемирная паутина). Это самый популярный сервис Сети и удобный способ работы с информацией. Сегодня существует по меньшей мере 30 тыс. серверов WWW. Именно за счет WWW Сеть растёт так стремительно. Пользуясь несложным языком описания, можно составлять гипермедийные документы для их последующей публикации в Сети (под гипермедийным я подразумеваю документ, который может содержать все виды информации - от простого текста до мултимедийных роликов). Чтобы увидеть содержание документа так, как его представляет себе его автор нужно иметь на компьютере- клиенте программу просмотра- браузер. Наиболее популярен сегодня Netscape Navigator, поддерживающий многие расширения HTML (Hyper Text Markup Language- язык гипертекстовой разметки документов - именно с его помощью оформляется информация в WWW). Далее под словами браузер или программа просмотра я буду подразумевать именно эту программу, хотя и не исключено, что и какая- либо другая программа сможет отображать всё так, как было задумано.
Теперь немного информации о технологии “клиент- сервер”. Она известна уже довольно длительное время, но раньше чаще всего использовалась в крупных сетях масштаба предприятия. Сегодня, с развитием Internet, эта технология все чаще привлекает взоры разработчиков программного обеспечения. В мире накоплено огромное количество информации по различным вопросам. Чаще всего эта информация хранится в базах данных (БД). Чтобы опубликовать её в Сети приходилось экспортировать БД в HTML- документы, что требовало больших затрат и усложняло поиск информации. Сегодня имеется большой опыт подобных работ. Практически любой пользователь Сети не раз сталкивался с подобными БД. Например, главное в работе популярного поискового сервера Yahoo (адрес- http::\\www.yahoo.com)- это запросы к базе данных WWW- сервера по ключевым словам. Ответ сервера- список гипертекстовых ссылок на найденные в Сети страницы, содержащие нужную информацию. Именно сегодня проблема Web- интерфейса к БД как никогда актуальна.
Обзор ПТК данного вида.
Сначала коротко о технологии “клиент- сервер”. Её можно представить так:
клиент формирует и посылает запрос к базе данных сервера, вернее - к программе, обрабатывающей запросы.
эта программа производит манипуляции с БД, хранящейся на сервере, в соответствии с запросом, формирует результат и передаёт его клиенту.
Клиент получает результат, отображает его на дисплее и ждет дальнейших действий пользователя. Цикл повторяется, пока пользователь не закончит работу с сервером.
В настоящее время, в связи с бурным развитием Internet остро стоит проблема связи БД и клиентов Сети. Многие фирмы- производители программных продуктов выпускают или разрабатывают средства публикации БД в Сети. Основные функции ПТК данного вида таковы:
обеспечить отображение интерфейса пользователя в формате HTML для отображения программой просмотра клиента,
обеспечить формирование запросов к БД наиболее простыми для неподготовленного пользователя средствами,
обеспечить аутентификацию пользователя (для разграничения доступа),
обеспечить обработку запроса и возврат результата в HTML формате для отображения программой просмотра пользователя.
При этом необходимо помнить о защите передаваемой по Сети информации и о привлекательности и понятности интерфейса.
Для серийно выпускаемых ПТК данного типа характерны высокая стоимость самого программного обеспечения (ПО), аппаратной платформы, самой СУБД (насколько мне известно, ПО для связи с WWW пока не включается в поставку СУБД). К достоинствам можно отнести хорошую документированность, наличие технической поддержки, низкую стоимость дальнейших обновлений программного обеспечения. Хотя в последнее время начинают появляться программы такого типа для “настольных” СУБД типа Visual FoxPro, Paradox и т.д. Но здесь другая проблема - при низкой стоимости (некоторое ПО можно получить по Сети бесплатно - нужно лишь иметь СУБД) отсутствует мощность и гибкость. Такое ПО годится разве что для публикации небольших по объёму и несложных БД.
Из известного мне ПО такого типа можно упомянуть следующие СУБД:
SQL-server фирмы Microsoft (требует мощного сервера БД под управлением ОС Windows NT server той же фирмы )
Sybase System фирмы Sybase (требует мощного UNIX- сервера)
Informix фирмы Informix Software (также требует мощного UNIX- сервера)
Progress фирмы Progress Software (работает на той же аппаратной платформе, что и два предыдущих)
InterBase фирмы Borland (есть вариант для Windows NT и для UNIX)
Кроме вышеперечисленных достоинств можно также отметить хорошую масштабирумость (наращиваемость), устойчивость в работе, защиту от несанкционированного доступа и мощность этих программных продуктов. Всё это ПО, как мне кажется, очень хорошо подходит для работы с крупными проектами в области БД. Например, в последнее время, всё чаще упоминают Intranet (“внутренняя” Сеть). Это крупные корпоративные вычислительные сети, основанные на технологиях Internet, использующие те же протоколы, форматы данных и т.д., но не открытые в глобальную сеть. Достоинства Intranet в том, что не надо переучивать персонал при переходе на новое ПО (можно, в принципе, оставить старые интерфейсы), так как научив один раз человека пользоваться Internet’ ом, можно легко обучить его работе с ПО предприятия - для отображения информации можно воспользоваться теми же браузерами.
К общим чертам вышеперечисленных ПТК можно отнести поддержку стандартного языка запросов к БД- SQL, что облегчает в случае надобности переход от одной СУБД к другой, практическое отсутствие ограничений на размеры файлов БД (кто-нибудь видел файл БД размером, например в 1000 Tбайт?), размеры объектов, количество одновременно подключенных клиентов и т.д. Все зависит от конфигурации сервера.
Конкретное сравнение характеристик привести не представляется возможным. Автор никогда не работал с вышеперечисленными программными продуктами, а в прессе чаще всего приводится очень общая информация, а о реализации конкретных проектов ничего не пишут.
Но можно ожидать, что написание подобного ПТК с использованием современных средств проектирования и реализации интерфейсов и программ в стиле RAD (Rapid Application Development- быстрая разработка приложений) не займет много времени и сил.
Техническое задание на разработку структур ПТК.
Наименование и область применения ПТК.
Рабочее название разрабатываемого ПТК - “Web- интерфейс к БД”. После окончания разработки он будет применяться для ведения базы данных о сотрудниках НИИ Ядерной Физики (НИИЯФ МГУ). Часть информации планируется сделать доступной пользователям одного из Web- серверов для того, например, чтобы можно было найти человека, занимающегося той или иной научной работой. Но, поскольку в БД будет храниться вся информация о персонале НИИЯФ, то этот ПТК также планируется для автоматизации кадровой деятельности. Универсальность обеспечивается за счёт разграничения полномочий пользователей.
Основания для разработки ПТК.
Основанием для разработки ПТК является устное распоряжение директора “группы Махаон”- фирмы, занимающейся Internet- технологиями, расположенной на территории НИИЯФ (с Web- сервером группы можно ознакомиться по адресу http:://www.machaon.ru) от 20 апреля 1996 года.
Условная тема разработок - использование баз данных в Internet. Разработка ведется с целью получения опыта работы с БД в Сети, для повышения навыков в программировании в среде под управлением ОС UNIX, для привлечения новых пользователей на Web сервер группы и для разработки собственных технологий в области публикации БД.
Назначение разработки ПТК.
Функционально, разрабатываемый ПТК служит для связи с сервером баз данных Postgres95 (не путать с Progress), для занесения, модификации, удаления и поиска информации в БД. Интерфейс представляется в виде HTML- документа для просмотра браузером клиента и его внешний вид зависит от ОС, под управлением которой работает программа просмотра (но он содержит все элементы стандарта GUI- поля ввода, кнопки, радио кнопки, кнопки с независимой фиксацией и т.д.).
Эксплуатационное назначение ПТК - сбор и хранение информации о сотрудниках НИИЯФ и предоставление части этой информации для просмотра внешними клиентами.
Требования к ПТК.
Требования к функциональным характеристикам.
Функции, выполняемые ПТК:
отображение интерфейса пользователя в виде HTML- документа
обработку запроса пользователя с исключением неправильно заданных форматов, неверно заполненных полей запроса и т.д.
в соответствии с запросом поиск в БД, модификация или удаление данных в БД (поиск - для любого клиента, а всё остальное - для имеющего соответствующие права)
отображение результатов работы.
Все выходные данные представляются в формате HTML. Входные данные - ключевые слова, список целевых полей, дальнейшее действие получаются после заполнения клиентом формы, полученной от ПТК и отображенной программой просмотра.
По времени процесс манипуляций с БД не должен занимать много времени, иначе на сервере может быть сгенерирован сигнал “time out” и задача может быть снята с обработки.
Требования к программному обеспечению.
ПТК разрабатывается на языке PERL (Practical Extraction and Report Language). Это стандартный язык для написания сценариев работы WWW- сервера. Язык этот интерпретируемый, похож на нечто среднее между языками C , Pascal и Basic. Интерпретатор распространяется по Internet бесплатно. Последние версии объектно- ориентированные. В PERL присутствует возможность использования библиотек, написанных на других языках программирования в т.ч. возможность динамической загрузки- выгрузки библиотек. Язык безопасен для использования - случайное нарушение защиты памяти сильно затруднено.
ПТК должен работать под управлением ОС BSD UNIX. Эта ОС написана студентами и их руководителями в университете Беркли, Калифорния, США. Распространяется бесплатно вместе с исходными текстами. Полностью совместима с большинством стандартов ОС UNIX. Имеется масса дополнительных компонентов, написанных другими коллективами. Многие UNIX- программы работают под управлением этой ОС без перекомпиляции. Система устойчива в работе, легко восстанавливается после сбоев, является многозадачной, многопотоковой, многопользовательской сетевой ОС с поддержкой множества сетевых протоколов (в т.ч. TCP/IP). Версия для процессора х86 работает на любом совместимом с i386 процессоре - от i386SX до Pentium. При запуске без графической оболочки X-Window эта ОС не требовательна к аппаратным ресурсам. Поэтому WWW- сервер работает под управлением этой ОС.
Для работы ПТК в системе должна быть установлена СУБД Postgres95. Эта СУБД также была разработана в университете Беркли как исследовательский проект группой студентов. Распространяется бесплатно. В настоящее время доступна версия 1.1- объектно- ориентированная СУБД поддержкой всех современных возможностей - SQL, большие бинарные объекты, расширяемая архитектура. Имеются программные библиотеки для написания программ, использующих эту СУБД.
Для ускорения операций поиска на сервере, где установлен ПТК должно быть установлено ОЗУ ёмкостью не менее 16 Мбайт. Размер жесткого диска зависит от количества данных в БД.
На клиентской ЭВМ должен работать браузер для отображения информации. Типичный клиент- это компьютер класса 486DX с 4-8 Мбайт ОЗУ, жестким диском порядка 210 Мбайт. 84% пользователей Сети пользуются браузером фирмы Netscape.
Требования к информационному обеспечению.
Web- интерфейс к БД должен:
отображать всю информацию на браузере пользователя в формате HTML
проводить аутентификацию пользователя с целью выяснения его привилегий
для пользователей с низким уровнем привилегий давать возможность видеть часть информации, для пользователей с высоким уровнем - возможность редактирования, добавления и удаления
должна быть обеспечена высокая скорость и надежность работы программы
В процессе работы создаётся база данных, для чего используется реляционная модель БД. Она содержит набор плоских таблиц, связанных по ключевым полям. В процессе работы все таблицы представляются как единое целое (вместо ключей из одной таблицы сразу отображается информация из информационных полей других таблиц).
Требования к информационной и программной совместимости.
Программный модуль совместим с интерпретатором PERL версии не ниже 5.001. Для работы необходимо наличие некоторых библиотек (интерфейс для работы с СУБД Postgres95, интерфейс для работы с HTML- форматированным текстом) и нужно, чтобы на сервере был запущен монитор БД (фоновый процесс, реагирующий на обращения к БД и обрабатывающий их - поставляется вместе с Postgres95).
Требования к техническому обеспечению.
В настоящее время СУБД Postgres95 и Web- интерфейс к ней работают на сервере со следующими характеристиками:
процессор- Intel 486DX2 с тактовой частотой 66 МГц
объем ОЗУ- 32 Мбайт
жёсткий диск объёмом 1,2 Гбайт с интерфейсом SCSI
Системная шина- ISA + EISA
присутствует сетевая карта Ethernet2000- EISA
операционная система- BSD UNIX
Сервер включен в локальную сеть, содержащую множество различных типов компьютеров (от Sun SPARKstation до i386) и других серверов (под управлением различных версий UNIX и NetWare). Аппаратное обеспечение сервера вполне справляется с нагрузкой, обеспечивая хорошее время реакции. Эти требования не являются минимально допустимыми, но тестирование на других конфигурациях сервера не проводилось.
Требования к надежности.
Для обеспечения устойчивого функционирования ПТК проверяются входные данные. При аварийном завершении программы система возвращается в первоначальное состояние, для чего имеется специальная процедура, реагирующая на соответствующий сигнал (аналог программного прерывания в DOS).
При отказе время восстановления зависит от сложности неисправности. В случае программного сбоя время восстановления равно времени, нужному перезагрузки сервера. При аппаратном сбое оно равно времени восстановления информации с резервной копии.
Дополнительные требования.
Для работы с ПТК к квалификации персонала не предъявляется особенных требований. Единственный необходимый навык- умение работы с программой просмотра для WWW. Для занесения информации в БД планируется задействовать одного человека.
Необходимо периодическое резервное копирование информации для чего написана программа, экспортирующая содержимое БД в текстовые файлы и программа восстановления. Это выполняется системным администратором по мере необходимости.
Компьютер клиента может быть практически любой и необходимым требованием является лишь подключение к Сети и наличие браузера, поддерживающего HTML версии 2.0 (программа просмотра Netscape Navigator подходит как нельзя лучше, тем более существуют её модификации для множества аппаратных платформ и операционных систем при схожести интерфейса).
Используемые для написания программы библиотеки:
CGI.pm- библиотека для манипуляции информационными элементами (поля ввода, кнопки, радио кнопки, скрытые поля и т.д. в формате HTML, отображение информации на браузере клиента и ввод ответа от него)
Pg.pm- библиотека для манипуляции БД (подключение к программе- монитору, посылка запросов, обработка результата и т.д.)
Пользователь на клиентском компьютере в программе просмотра заполняет предложенную форму или выбирает дальнейшее действие.
Браузер по нажатию одной из кнопок в форме пересылает данные из заполненной формы или отображает вновь полученные в результате какой- либо операции.
Не важно, к какой из сетей подключен клиент (он даже может быть удалённым пользователем и соединиться по модему).
Программа принимает данные, проверяет их и формирует запрос к монитору БД или получает от него результат.
Получив запрос, монитор обрабатывает его. Если не произошло ошибок, ждёт запроса от программы на отправку программе результата.
На диске сервера хранится БД, модифицируемая по запросу клиента.
Технический проект структуры ПО ПТК.
Программа логически разделена на несколько модулей. Ниже приведено краткое описание модулей и функций, содержащихся в них.
Модуль Npi_people. Основная часть программы. Этот модуль вызывается при начале работы. Доступ к нему разрешён всем пользователям. Содержит рад подпрограмм общего назначения:
setup- функция первоначальной настройки. Определение, какой пользователь подключён и что разрешено ему видеть
set_mode- установка режима работы, т.е. что дальше будет делать программа - искать, модифицировать или удалять информацию из БД
connect_db- подключение к нужной БД через монитор. В случае ошибки - аварийное завершение
prepare_sql- подготовка SQL- запроса к БД
handler- обработчик аварийных сигналов
Модуль html_output. Содержит подпрограммы вывода форм, форматирования и вывода результатов в формате HTML, приёма и обработки информации от пользователя.
print_form- По установленному режиму вызвать функцию вывода той или иной формы
search_form- вывод формы для поиска
modify_form- вывод формы для модификации
del_form- вывод формы для удаления
print_result- выдача результата
good_bye- выдача сообщения об аварийном завершении программы
Модуль Pg_dbi. Содержит подпрограммы работы с монитором БД.
dbi_con- подсоединение к указанной БД
dbi_rowsmatched- функция возвращает количество строк в результате
do_sql- выполнение SQL- запроса
dbi_disconnect- отсоединение от монитора БД
dbi_nextrow- получение следующей строки результата
Модуль constants. Содержит набор необходимых для работы констант. Вынесен в отдельный модуль, чтобы не загромождать текст программы.
Технический проект структуры ТО ПТК.
Программа может работать как с внутренними клиентами (Intranet), так и с внешними (Internet). Типичная ЭВМ, за которой автор разрабатывал и тестировал ПТК - это процессор Intel 486DX2 66 МГц, 4 Мбайт ОЗУ, жесткий диск 100 Мбайт. ОС- MS DOS 6.22 и Windows3.1
Сеть на базе NetWare- это витая пара + карты Ethernet2000 на рабочих станциях
Сервер NetWare по конфигурации не сильно отличается от UNIX- сервера, конфигурация которого описана ранее.
Заключение.
Разработанный ПТК в целом соответствует ТЗ, полученному в начале работы. ПТК ещё нуждается в доработке, но уже выполняет основные функции. Вполне возможно, что развитием этой работы будет полный WWW- интерфейс к БД, позволяющий создавать свою собственную БД и без программирования манипулировать ей (по аналогии с FoxPro, например). Есть идеи по воплощению WWW средства для построения запросов в стандарте QBE (Query By Example). Но наиболее близок к воплощению проект WWW- календарь, содержащий все праздники и позволяющий находить праздник по дате или дату известного праздника в диалоговом режиме.
Сравнивать этот ПТК с аналогичными не логично, потому что всё в нём написано маленьким коллективом разработчиков для конкретной цели, а не целой армией программистов и для общих целей, как в случае с продуктами, перечисленными в начале.
В последнее время на рынке Internet успешно продвигается технология Java, разработанная фирмой Sun. Java- это объектно- ориентированный язык, схожий с C++. Сама фирма характеризует его как “простой, объектно- ориентированный, распределяемый, интерпретируемый, надёжный, защищённый, не зависящий от архитектуры, высокопроизводительный, многопоточный и динамичный”. На Java разрабатывают небольшие программы, которые можно загружать из Сети и выполнять на клиентском компьютере. Недавно появилась информация о выпуске спецификации JDBC (по аналогии с ODBC фирмы Microsoft)- стандарта для доступа из программы, написанной на Java к БД любого производителя, поставляющего драйвер, соответствующий JDBC для своей СУБД. С выпуском подобных драйверов упроститься доступ и модификация БД, появятся стандартные способы работы, что сильно упростит разработку ПТК, подобного описываемому здесь. Но пока не все производители ПО для клиентов поддержали начинания фирмы Sun, поэтому только браузер Netscape Navigator умеет выполнять Java- приложения.
Если Java станет стандартом, то можно будет переписать ПТК на этом языке, сделав его более надёжным, быстрым и привлекательным в смысле интерфейса пользователя.
Библиографический список.
Компьютер Пресс N4 1996г.
Компьютер Пресс N5 1996г.
Computer Week Москва N38(196) 1995г.
Computer Week Москва N4(210) 1996г.
Computer Week Москва N17(223) 1996г.
Computer Week Москва N18(224) 1996г.
PC Magazine russian edition спецвыпуск N2(41) 1995г.
PC Magazine russian edition N6(34) 1995г.
Компьютерра N15(142) 1996.