Статические и динамические Web-страницы

Введение в Интернет и среду WWW

Модификация таблиц баз данных с помощью курсоров

Курсор может быть предназначен как для чтения, так и для обновления таблиц баз данных. Обновлять данные в таблицах (об­новляемый курсор) курсор может с использованием оператора UPDATE или DELETE CURRENT.

Если курсор является обновляемым, то согласно стандарту ISO/EC 9075—2003 конкретные разработчики СУБД могут вно­сить в него свои функции.

Так, в СУБД Oracle для создания обновляемых курсоров ис­пользуют следующие дополнения к оператору DECLARE CURSOR:

 

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

 

В этом примере параметр cursorName представляет собой имя открытого обновляемого курсора. Конструкция WHERE исполь­зуется для определения строки, на которую в данный момент ука­зывает курсор, и все вносимые обновления будут выполняться только для этой строки. Каждое имя столбца обновляемой табли­цы в конструкции SET должно быть указано в операторе DECLARE CURSOR.

Удаление строк можно выполнять с помощью обновляемых курсоров, например имеющих следующую структуру:

 

Выполнение такого курсора приведет к удалению строки таб­лицы, связанной с текущим положением курсора propertyCursor.

Для того чтобы можно было применять позиционные операто­ры удаления (DELETE) и модификации (UPDATE), курсор дол­жен удовлетворять следующим требованиям:

• запрос, связанный с курсором, должен считывать данные из одной исходной таблицы, т.е. в предложении FROM запроса SELECT, связанного с определением курсора (DECLARE CURSOR), должна быть задана только одна таблица;

• в запросе не может присутствовать параметр упорядочения ORDER BY. Для того чтобы сохранялось взаимно-однозначное соответствие строк курсора и исходной таблицы, курсор не дол­жен идентифицировать упорядоченный набор данных;

• в запросе не должно присутствовать ключевое слово DISTINCT;

• запрос не должен содержать операций группировки, т.е. в нем не должно присутствовать предложение GROUP BY или HAVING;

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

Использование курсора для операций обновления значительно усложняет работу СУБД, поэтому операции, связанные с пози­ционной модификацией, выполняются гораздо медленнее, чем операции с курсорами, которые используются только для чтения. Именно поэтому рекомендуется обязательно указывать в операто­ре определения курсора предложение READ ONLY, если вы не собираетесь использовать данный курсор для операций модифи­кации. По умолчанию, если нет дополнительных указаний, СУБД создает курсор с возможностью модификации.

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

Чтобы свести к минимуму число требуемых блокировок, при работе интерактивных программ следует придерживаться следую­щих правил:

• •делать транзакции как можно короче;

• выполнять оператор завершения COMMIT после каждого зап­роса и как можно скорее после изменений, сделанных программой;

• избегать программ, в которых осуществляется интенсивное взаимодействие с пользователем или просмотр очень большого числа строк данных;

• по возможности не применять прокручиваемые курсоры (SCROLL), так как они требуют блокирования всех строк выбор­ки, связанных с открытым курсором;

• использовать простой последовательный курсор, который позволит системе разблокировать текущую строку, как только будет выполнена операция FETCH, что минимизирует блокировки дру­гих пользователей, работающих параллельно с вами и использу­ющих те же таблицы;

• по возможности определять курсор как READ ONLY;

• так как при рассмотрении модели клиент—сервер определе­но, что в развитых моделях серверов баз данных большая часть бизнес-логики клиентского приложения выполняется именно на сервере, следует использовать специальные объекты, называемые хранимыми процедурами и хранящиеся в БД, как таблицы и дру­гие базовые объекты.

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

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

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

Конечно, курсоры сервера более экономичны и выполняются быстрее, а следовательно, рекомендуется трансформировать ло­гику работы вашего приложения таким образом, чтобы как мож­но чаще вместо курсоров клиента использовать курсоры сервера.

ГЛАВА 11. WEB-ТЕХНОЛОГИИ В РАЗРАБОТКЕ УДАЛЕННЫХ БАЗ ДАННЫХ

Интернет представляет собой совокупность взаимосвязанных компьютерных сетей мирового масштаба, т.е. Интернет состоит из множества отдельных, но связанных между собой сетей, при­надлежащих коммерческим, образовательным и правительствен­ным организациям, а также поставщикам услуг, или так называ­емым провайдерам Интернета (Internet Service Provider — ISP).

Сегодня широко используются такие услуги Интернета, как электронная почта (e-mail), средства проведения конференций и бесед, средства удаленного доступа к компьютерам, средства пе­редачи и приема файлов.

Основы этой сети были заложены в конце 1960-х — начале 1970-х годов при выполнении экспериментального проекта ARPANET (Advanced Research Projects Agency Network) Мини­стерства обороны США, целью которого было исследование воз­можности создания сетей, сохраняющих работоспособность при частичных повреждениях (например, при взрывах ядерных бомб).

В 1982 г. в качестве стандартных протоколов связи для сети ARPANET приняты протоколы TCP/IP (Transmission Control Protocol/Internet Protocol). Протокол TCP обеспечивает беспере­бойную доставку сообщений с одного компьютера на другой, а протокол IP управляет передачей и приемом пакетов данных между разными компьютерами на основе четырехбайтового адреса на­значения (IP-адреса), который присваивается той или иной орга­низации уполномоченными представителями Интернета.

Термин TCP/IP иногда применяют к целому семейству прото­колов сети Интернет, работающих на основе протоколов TCP/IP:

• FTP (File Transfer Protocol) — протокол передачи файлов;

• SMTP (Simple Mail Transfer Protocol) — простой протокол электронной почты;

• Telnet (Telecommunication network) — телекоммуникацион­ная сеть;

• DNS (Domain Name Service) — служба доменных имен;

• POP (Post Office Protocol) — почтовый протокол и др.

Сеть Интернет имеет еще одно популярное название (особен­но в средствах массовой информации) — информационная су­пермагистраль (Information Superhighway). Это ее метафорическое название как будущей всемирной сети, которая обеспечит связь, доступ к информации и оперативным службам пользователям во всем мире.

World Wide Web (WWW), или коротко среда Web, — это ги­пермедийная система, предоставляющая возможность просматри­вать любую информацию в сети Интернет с помощью механизма гиперссылок.

Информация в среде WWW размещается на Web-страницах, оформленных в виде текста, графики, аудио- и видеоматериалов. Дополнительно Web-страница может содержать гиперссылки на другие Web-страницы.

Стандарты обмена электронной почтой и публикации Web-стра­ниц используются не только в глобальной сети Интернет, но и в закрытых корпоративных сетях, которые и принято называть внут­ренними.

Внутренняя сеть — это Web-узел или группа узлов, принадле­жащих одной организации и доступных только ее членам.

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

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

Защищенные внутренние сети являются наиболее быстро ра­стущим сегментом Интернета, так как они гораздо дешевле и про­ще в управлении, чем закрытее частные сети на основе специали­зированных протоколов.

Внешняя сеть — это внутренняя сеть, которая может быть дос­тупна внешним пользователям.

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

Доступ к внешней сети обычно возможен только при условии наличия у пользователя прав доступа (учетного имени и пароля) к тем или иным ресурсам внешней сети.

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

Успех технологии Web обусловлен в основном ее простотой, т. е. она позволяет без особых хлопот предоставлять, использовать и ссылаться на информацию, территориально распределенную по всему земному шару. Технология Web совместима также с другими существующими коммуникационными протоколами: Gopher, FTP, NNTP (Network News Transfer Protocol) и Telnet (для сеансов удаленного входа в систему). Среда Web состоит из сети компьютеров, которые могут дей­ствовать либо как серверы, предоставляющие информацию, либо как клиенты," запрашивающие информацию, и которые обычно называют броузерами.

Примерами Web-серверов являются такие программные па­кеты, как HTTP-сервер Apache, сервер IIS (Internet Information Server) компании Microsoft, Enterprise Server, WebLogic Server и др. Примерами броузеров являются программы Microsoft Internet Explorer и Netscape Navigator.

Основная часть информации в среде Web хранится в докумен­тах, описанных на языке HTML (HyperText Markup Language) — языке гипертекстовой разметки.

Протокол, с помощью которого происходит обмен информа­цией между Web-сервером и броузером, называется HTTP (HyperText Transfer Protocol) — протокол передачи гипертекста.

Документы и разделы документов обозначаются с помощью адреса, определенного как URL (Uniform Resource Locator) — унифицированный локатор информационного ресурса. На рис. 11.1 показана схема взаимодействия основных компонентов сре­ды Web.

 

 

Протокол HTTP действует по принципу запрос-ответ. В этом случае любая транзакция HTTP состоит из следующих этапов:

• подключение — клиент устанавливает соединение с Web-сер­вером;

• запрос — клиент посылает Web-серверу сообщение с запросом;

• ответ — Web-сервер посылает клиенту ответ (документ HTML);

• закрытие — соединение с Web-сервером закрывается.

Запрос HTTP включает в себя:

• заголовок, определяющий тип запроса;

• обозначение имени ресурса;

• версию протокола HTTP.

Протокол HTTP поддерживает следующие типы запросов: GET — запрос на выборку информации (на получение инфор­мации — get);

· POST — запрос на передачу информации (на отправку инфор­мации — post);

· HEAD — аналогичен запросу GET, но возвращает на сервер только заголовок HTTP, а не выбранные данные;

· PUT — выгружает ресурс на сервер;

· DELETE — удаляет ресурс с сервера;

· OPTIONS — запрашивает с сервера опции конфигурации.

· URL-локатор — это строка символов, обозначающая располо­жение или адрес некоторого ресурса в сети Интернет, а также спо­соб доступа к нему, т.е. URL-локатор определенным образом оп­ределяет местонахождение документа (или ресурса) в Интернете.

Идентичными понятиями URL-локатора являются идентифи­каторы URI и имена URN.

Идентификаторы URI (Uniform Resource Identifiers — универ­сальный идентификатор информационного ресурса) — это общий набор всех имен (адресов), которые относятся к ресурсам Интернет.

URN (Uniform Resource Name) — универсальное имя инфор­мационного ресурса, обозначающее некий ресурс Интернета. Име­на URN имеют общий характер и основываются на службах поис­ка имен, а следовательно, зависят от дополнительных служб, ко­торые не всегда широко доступны.

U RL-локаторы указывают на ресурс Интернета, используя схе­му, учитывающую расположение ресурса. Являясь самой распрост­раненной схемой идентификации ресурсов, они образуют основу функционирования HTTP-протокола и среды Web.

URL-локатор имеет простой синтаксис и состоит из трех час­тей: обозначения протокола, применяемого для создания соедине­ния, имени хоста и пути, по которому на этом хосте может быть найден данный ресурс.

Кроме того, URL-локатор может также указывать порт, ис­пользуя который можно подключиться к хосту (по умолчанию для HTTP-протокола используется порт 80), а также строку запроса, которая является одним из основных способов передачи данных от клиента к серверу.

Синтаксическая структура URL-локатора имеет следующий вид:

 

-Здесь <протокол > описывает механизм, используемый броузе­ром для доступа к ресурсу. Наиболее распространенными метода­ми доступа являются: HTTP, S-HTTP (защищенный протокол HTTP), file (т.е загрузка файла с локального диска), FTP, mailto (отправка электронного письма по указанному адресу электрон­ной почты), Gopher, NNTP и Telnet.

 

Документ HTML, хранимый в отдельном файле, является при­мером статической Web-страницы, т.е. его содержимое не изме­няется до тех пор, пока не изменится сам файл. Содержимое ди­намической Web-страницы генерируется всякий раз при ее от­крытии.

Динамическая Web-страница может обладать следующими воз­можностями, которых нет у статических Web-страниц:

• реагировать на данные, вводимые пользователем с помощью броузера. Например, динамические страницы способны возвра­щать данные, полученные после заполнения формы или в резуль­тате выполнения запроса к базе данных;

• настраиваться по требованиям конкретного пользователя. На­пример, если пользователь укажет собственные предпочтения при посещении некоторого Web-узла или Web-страницы (например, область своих интересов или уровень квалификации), эту инфор­мацию можно будет сохранить, и впоследствии возвращаемая пользователю информация будет отбираться с учетом указанных предпочтений.

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