Украина |
Проектирование баз данных и работа с ними Веб-приложений. Введение в БД, SQL Server, ADO.NET
9.1.5. Технологии для доступа к базам данных в Веб
При обеспечении Веб-доступа к существующим БД, возможен ряд путей – комплексов технологических и организационных решений [25]. Практика использования Веб-технологии для доступа к существующим БД предоставляет широкий спектр технологических решений, по-разному связанных между собой – перекрывающих, взаимодействующих и т.д. Выбор конкретных решений при обеспечении доступа зависит от специфики конкретной СУБД и от ряда других факторов, как то: наличие специалистов, способных с минимальными издержками освоить определенную ветвь технологических решений, существование других БД, Веб-доступ к которым должен осуществляться с минимальными дополнительными затратами и т.д.
Веб-доступ к существующим базам данных может осуществляться по одному из трех основных сценариев. Ниже дается их краткое описание и основные характеристики.
9.1.5.1. Преобразование содержимого БД в статические документы
В случае однократного или периодического преобразования содержимого БД в статические документы содержимое БД просматривает специальная программа, создающая множество файлов – связных HTML-документов. Полученные файлы могут быть перенесены на один или несколько Веб-серверов. Доступ к ним будет осуществляться как к статическим гипертекстовым документам сервера.
Этот вариант характеризуется минимальными начальными расходами. Он эффективен на небольших массивах данных простой структуры и редким обновлением, а также при пониженных требованиях к актуальности данных, предоставляемых через Веб.
9.1.5.2. Динамическое создание гипертекстовых документов
В случае динамического создания гипертекстовых документов на основе содержимого БД доступ к БД осуществляется специальной программой (например, CGI-программой), запускаемой Веб-сервером в ответ на запрос Веб-клиента. Эта программа, обрабатывая запрос, просматривает содержимое БД и создает выходной HTML-документ, возвращаемый клиенту.
Это решение эффективно для больших баз данных со сложной структурой и при необходимости поддержки операций поиска. Показаниями также являются частое обновление и невозможность синхронизации преобразования БД в статические документы с обновлением содержимого. В этом варианте возможно осуществлять изменение БД из Веб-интерфейсов. К недостаткам этого метода можно отнести большое время обработки запросов, необходимость постоянного доступа к основной базе данных, дополнительную загрузку средств поддержки БД, связанную с обработкой запросов от Веб-сервера.
9.1.5.3. Создание информационного хранилища на основе СУБД
В случае создания информационного хранилища на основе высокопроизводительной СУБД с языком запросов SQL и периодической загрузки данных в хранилище из основных СУБД для обработки разнообразных запросов, в том числе и от Веб-сервера, используется промежуточная БД высокой производительности. Информационное наполнение промежуточной БД осуществляется специализированным программным обеспечением на основе содержимого основных баз данных.
Данный вариант свободен ото всех недостатков предыдущих схем. Более того, после установления синхронизации данных информационного хранилища с основными БД возможен перенос пользовательских интерфейсов на информационное хранилище, что существенно повысит надежность и производительность, позволит организовать распределенные рабочие места. Несмотря на кажущуюся громоздкость такой схемы, для задач обеспечения Веб-доступа к содержимому нескольких баз данных накладные расходы существенно уменьшаются.
9.1.6. Язык SQL
SQL является инструментом, предназначенным для обработки и чтения данных, содержащихся в компьютерной базе данных. SQL – это сокращенное название структурированного языка запросов (Structured Query Language) [26]. SQL основывается на реляционной алгебре.
Вопреки существующим заблуждениям, SQL в его чистом (базовом) виде является информационно-логическим языком, а не языком программирования [27]. Вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений, с учетом которых язык уже вполне может рассматриваться в качестве языка программирования.
На рис. 9.4 изображена схема работы SQL
SQL используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно:
- Организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных.
- Чтение данных. SQL дает пользователю или приложению возможность читать из базы данных содержащиеся в ней данные и пользоваться ими.
- Обработка данных. SQL дает пользователю или приложению возможность изменять базу данных, т.е. добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
- Управление доступом. С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
- Совместное использование данных. SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу.
- Целостность данных. SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.
Таким образом, SQL является достаточно мощным языком для взаимодействия с СУБД.
Все операторы SQL в общем виде можно представить так, как это показано на рис. 9.5.
Каждый оператор SQL начинается с глагола, представляющего собой ключевое слово, определяющее, что именно делает этот оператор ( SELECT, INSERT, DELETE...). В операторе содержатся также предложения, содержащие сведения о том, над какими данными производятся операции. Каждое предложение начинается с ключевого слова, такого как FROM, WHERE и др. Структура предложения зависит от его типа – ряд предложений содержит имена таблиц или полей, некоторые могут содержать дополнительные ключевые слова, константы или выражения.
Язык SQL делится на несколько частей [27, 28]:
- операторы определения данных ( Data Definition Language, DDL, табл. 9.2);
- операторы манипуляции данными ( Data Manipulation Language, DML,табл. 9.3);
- операторы определения доступа к данным ( Data Control Language, DCL,табл. 9.4);
- операторы управления транзакциями ( Transaction Control Language, TCL,табл. 9.5);
- операторы определения курсора (Cursor Control Language, CCL, табл. 9.6).
- независимость от конкретных СУБД;
- переносимость с одной вычислительной системы на другую;
- наличие стандартов;
- реляционная основа;
- высокоуровневая структура, напоминающая английский язык;
- возможность выполнения специальных интерактивных запросов:
- обеспечение программного доступа к базам данных;
- возможность различного представления данных;
- полноценность как языка, предназначенного для работы с базами данных;
- возможность динамического определения данных;
- поддержка архитектуры клиент/сервер;
- декларативность.
Недостатки [27]:
- Несоответствие реляционной модели данных [29]:
- Сложность;
- Отступления от стандартов в конкретных реализациях СУБД;
- Сложность работы с иерархическими структурами.
Поскольку SQL не является языком программирования, вводимые разными производителями расширения касались в первую очередь процедурных расширений. Это хранимые процедуры (stored procedures) и процедурные языки-"надстройки". Практически в каждой СУБД применяется свой процедурный язык. Стандарт для процедурных расширений представлен спецификацией SQL/PSM). Перечень процедурных расширений для самых популярных СУБД приведен в табл. 9.7.
9.1.7. Ключевые термины
База данных, Система управления базами данных, Модель данных, Иерархическая модель данных, Сетевая модель данных, Реляционная модель данных, Постреляционная модель данных, Объектно-ориентированная модель данных, Объектно-реляционная модель данных, Таблицы, Столбы, Строки, Первичный ключ, Внешний ключ, Индексирование, Нормальная форма, Нормализация, Транзакция, ACID, Проектирование баз данных, SQL.