Статические и динамические 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-страниц.