1.    FROM. Эта фраза инициирует создание в рабочей памяти таблицы, являющейся декартовым произведением таблиц Блюда, Вид_блюд, Состав, Продукты и Наличие.

2.    WHERE. Эта фраза нужна для преобразования полученного декартова произведения в естественное соединение и удаления из последнего строк с кодами блюд, не обеспеченных продуктами. Естественное соединение образуется путем вычеркивания строк, где не совпадают: код блюда из таблицы Блюда с кодом блюда из таблицы Состав, код продукта из таблицы Состав с кодом продукта из таблицы Продукты и т.д. Обеспеченность блюда всеми продуктами проверяется с помощью последовательности подзапросов. Внутренний подзапрос выдает перечень кодов продуктов, которых нет в кладовой пансионата. Следующий подзапрос выдает коды тех блюд, в состав которых должны входить «отсутствующие» продукты. И, наконец, из естественного соединения вычеркиваются строки с кодами полученных блюд (точнее оставляются строки «Где код блюда не принадлежит перечню кодов блюд, полученному в подзапросе».

3.    SELECT. Из полученного соединения удаляются столбцы, не используемые в выражениях SELECT или других фразах. Если в списке SELECT есть выражения (константы), то для хранения их значений формируются дополнительные столбцы и инициируются операции по их заполнению. В рассматриваемом примере будут сохранены столбцы Вид, Блюдо, Белки, Углев, Жиры, Вес, Стоимость, К_во и созданы дополнительные столбцы для формирования и хранения значений стоимости и калорийности составляющих каждого блюда, а также для хранения текстовых констант 'калорий –' и 'руб'. Обратите внимание на прием, использованный при суммировании стоимостей продуктов, входящих в состав блюда, и стоимости его приготовления (Труд): можно ли заменить MIN на MAX или AVG?

4.    GROUP BY. Отредактированное естественное соединение группируется по видам блюд и их названиям. Создаются группы горячих блюд, десертов и т.д., а внутри каждой группы создаются подгруппы строк со сведениями о продуктах, относящихся к конкретному блюду группы.

5.    SELECT. Каждая подгруппа строк, полученная на предыдущем шаге, преобразуется в единственную строку для результата. В нее заносится вид блюда (общий для всех подгрупп группы), название блюда (общее для всех строк подгруппы), две текстовых константы ('калорий –' и 'руб') и две суммы. Последние формируются путем суммирования тех значений дополнительных столбцов, которые принадлежат подгруппе.

6.    HAVING. Сформированные строки, не удовлетворяющие условиям фразы HAVING

SUM(Стоимость/К_во*Вес/1000+MIN(Труд/100)) < 1.5 и

SUM(((Белки+Углев)*4.1+Жиры*9.3)*Вес/1000) < 400

исключаются из результата предыдущего шага.

7.    ORDER BY. Результат шага 6 упорядочивается в соответствии со списком фразы ORDER BY для получения окончательного результата. Сначала строки группируются по видам блюд (в алфавитном порядке), а затем – по значению элемента данных, указанного на четвертом месте фразы SELECT, т.е. по калорийности.

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

2.2.4. Модификация данных в таблицах SQL.

 

Особенности и синтаксис предложений модификации

Модификация данных может выполняться с помощью предложений DELETE (удалить), INSERT (вставить) и UPDATE (обновить). Подобно предложению SELECT они могут оперировать как базовыми таблицами, так и представлениями. Однако по ряду причин не все представления являются обновляемыми. Пока зафиксируем этот факт, отложив описание представлений и особенностей их обновления до главы 5, но будем помнить, что термин «представление» относится только к обновляемым представлениям.

Предложение DELETE имеет формат

DELETE

FROM базовая таблица | представление

[WHERE фраза];

и позволяет удалить содержимое всех строк указанной таблицы (при отсутствии WHERE фразы) или тех ее строк, которые выделяются WHERE фразой.

Предложение INSERT имеет один из следующих форматов:

INSERT

INTO {базовая таблица | представление} [(столбец [,столбец] …)]

VALUES ({константа | переменная} [,{константа | переменная}] …);

или

INSERT

INTO {базовая таблица | представление} [(столбец [,столбец] …)]

подзапрос;

В первом формате в таблицу вставляется строка со значениями полей, указанными в перечне фразы VALUES (значения), причем i-е значение соответствует i-му столбцу в списке столбцов (столбцы, не указанные в списке, заполняются NULL-значениями). Если в списке VALUES фразы указаны все столбцы модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы, то список столбцов в фразе INTO можно опустить. Однако не советуем этого делать, так как при изменении описания таблицы (перестановка столбцов или изменение их числа) придется переписывать и INSERT предложение.

Во втором формате сначала выполняется подзапрос, т.е. по предложению SELECT в памяти формируется рабочая таблица, а потом строки рабочей таблицы загружаются в модифицируемую таблицу. При этом i-й столбец рабочей таблицы (i-й элемент списка SELECT) соответствует i-му столбцу в списке столбцов модифицируемой таблицы. Здесь также при выполнении указанных выше условий может быть опущен список столбцов фразы INTO.

Предложение UPDATE также имеет два формата. Первый из них:

UPDATE (базовая таблица | представление}

SET столбец = значение [, столбец = значение] …

[WHERE фраза]

где значение – это

столбец | выражение | константа | переменная

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

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

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

UPDATE {базовая таблица | представление}

SET столбец = значение [, столбец = значение] …

FROM {базовая таблица | представление} [псевдоним],

{базовая таблица | представление} [псевдоним]

[,{базовая таблица | представление} [псевдоним]] …

[WHERE фраза]

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

В значениях, находящихся в правых частях равенств фразы SET, следует уточнять имена используемых столбцов, предваряя их именем таблицы (псевдонима).

Предложение INSERT

Вставка единственной записи в таблицу

Добавить в таблицу Блюда блюдо:

Шашлык (БЛ – 34, Блюдо – Шашлык, В – Г, Основа – Мясо, Выход – 150)

при неизвестной пока трудоемкости приготовления этого блюда.

INSERT

INTO Блюда (БЛ, Блюдо, В, Основа, Выход)

VALUES (34, 'Шашлык', 'Г', 'Мясо', 150);

Создается новая запись для блюда с номером 34, с неопределенным значением в столбце Труд.

Порядок полей в INSERT не обязательно должен совпадать с порядком полей, в котором они определялись при создании таблицы. Вполне допустима и такая версия предыдущего предложения:

INSERT

INTO Блюда (Основа, В, Блюдо, БЛ, Выход)

VALUES ('Мясо', 'Г', 'Шашлык', 34, 150);

При известной трудоемкости приготовления шашлыка (например, 5 коп) сведения о нем можно ввести с помощью укороченного предложения:

INSERT

INTO Блюда

VALUES (34, 'Шашлык', 'Г', 'Мясо', 150, 5);

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

В предыдущих примерах проводилась модификация стержневой сущности, т.е. таблицы с первичным ключом БЛ. Почти все СУБД имеют механизмы для предотвращения ввода не уникального первичного ключа, например, ввода «Шашлыка» под номером, меньшим 34. А как быть с ассоциациями или другими таблицами, содержащими внешние ключи?

Пусть, например, потребовалось добавить в рецепт блюда Салат летний (БЛ = 1) немного (15 г) лука (ПР = 10), и мы воспользовались предложением

INSERT

INTO Состав (БЛ, ПР, Вес)

VALUES (1, 10, 15);

Подобно операции DELETE операция INSERT может нарушить непротиворечивость базы данных. Если не принять специальных мер, то СУБД не проверяет, имеется ли в таблице Блюда блюдо с первичным ключом БЛ = 1 и в таблице Продукты – продукт с первичным ключом ПР = 10. Отсутствие любого из этих значений породит противоречие: в базе появится ссылка на несуществующую запись. Проблемы, возникающие при использовании внешних ключей, подробно рассмотрены в литературе, а здесь отме-тим, что все «приличные» СУБД имеют механизмы для предотв-ращения ввода записей со значениями внешних ключей, отсутст-вующих среди значений соответствующих первичных ключей.

Вставка множества записей

Создать временную таблицу К_меню, содержащую калорийность и стоимость всех блюд, которые можно приготовить из имеющихся продуктов. (Эта таблица будет использоваться шеф-поваром для составления меню на следующий день.)

Для создания описания временной таблицы можно, например, воспользоваться предложением CREATE TABLE

CREATE TABLE К_меню

( Вид CHAR (10),

Блюдо CHAR (60),

Калор_блюда INTEGER,

Стоим_блюда REAL);

а для ее загрузки данными – предложение INSERT с вложенным подзапросами:

INSERT

INTO К_меню

SELECT Вид, Блюдо,

INT(SUM(((Белки+Углев)*4.1+Жиры*9.3) * Вес/1000)),

(SUM(Стоимость/К_во*Вес/1000) + MIN(Труд/100))

FROM Блюда, Вид_блюд, Состав, Продукты, Наличие

WHERE Блюда.БЛ = Состав.БЛ

AND Состав.ПР = Продукты.ПР

AND Состав.ПР = Наличие.ПР

AND Блюда.В = Вид_блюд.В

AND БЛ NOT IN

( SELECT БЛ

FROM Состав

WHERE ПР IN

( SELECT ПР

FROM Наличие

WHERE К_во = 0))

GROUP BY Вид, Блюдо

ORDER BY Вид, 3;

В этом запросе предложение SELECT выполняется так же, как обычно, но результат не выводится на экран, а копируется в таблицу К_меню. Теперь с этой копией можно работать как с обычной базовой таблицей (Блюда, Про-дукты,…), т.е. выбирать из нее даннные на экран или принтер, обновлять в ней данные и т.п. Никакая из этих операций не будет оказывать влияния на исходные данные (например, изменение в ней названия блюда Салат летний на Салат весенний не приведет к подобному изменению в таблице Блюда, где сохранится старое название). Так как это может привести к противоречиям, то подобные временные таблицы уничтожают после их использования. Поэтому программа, обслуживающая шеф-повара, должна исполнять предложение DROP TABLE К_меню после того, как будет закончено составление меню.

Использование INSERT…SELECT для построения внешнего соединения

Рассмотренное в естественное соединение двух таблиц не включает тех строк какой-либо из них, для которых нет соответствующих строк в другой таблице. Например, если в таблицу Блюда были занесены под номером 34 сведения о Шашлыке, а рецепт его приготовления не был занесен в таблицу Рецепты, то при загрузке их естественного соединения в таблицу Временная:

CREATE TABLE Временная

( Вид CHAR (8),

Блюдо CHAR (60),

Рецепт CHAR (560));

INSERT

INTO Временная

SELECT Вид, Блюдо, Рецепт

FROM Блюда, Рецепты, Вид_блюд

WHERE Блюда.БЛ = Рецепты.БЛ

AND Блюда.В = Вид_блюд.В;

в ней не окажется строки с Шашлыком (в таблице Рецепты не обнаружен код 34, и строка с этим кодом исключена из результата).

Следовательно, в некотором смысле можно считать, что при обычном соединении теряется информация для таких несоответствующих строк. Однако иногда (как и в приведенном примере) может потребоваться способность сохранить эту информацию. В этом случае можно воспользоваться так называемым внешним соединением:

INSERT

INTO Временная

SELECT Вид, Блюдо, Рецепт

FROM Блюда, Рецепты, Вид_блюд

WHERE Блюда.БЛ = Рецепты.БЛ

AND Блюда.В = Вид_блюд.В;

INSERT

INTO Временная

SELECT Вид, Блюдо, «???»

FROM Блюда, Вид_блюд

WHERE Блюда.В = Вид_блюд.В

AND БЛ NOT IN

( SELECT БЛ

FROM Рецепты);

В результате будет создана базовая таблица

Вид

Блюдо

Рецепт

Закуска Салат летний Помидоры и яблоки нарезать…
Закуска Салат мясной Вареное охлажденное мясо, …

. . .

Напиток Кофе черный Кофеварку или кастрюлю спо…
Напиток Кофе на молоке Сварить черный кофе, как …
Горячее Шашлык ???

где первые 33 строки соответствуют первому INSERT и представляют собой проекцию естественного соединения таблиц Блюда и Рецепты по кодам блюд (БЛ), включающую три столбца. Последняя строка результата соответствует второму INSERT и сохраняет информацию о блюде Шашлык, рецепт котого пока не введен в таблицу Рецепты.

Заметим, что для внешнего соединения нужны два отдельных INSERT…SELECT. Однако тот же результат можно получить и одним INSERT…SELECT, используя фразу UNION, объединяющую предложения SELECT из двух INSERT:

INSERT

INTO Временная

SELECT Вид, Блюдо, Рецепт

FROM Блюда, Рецепты, Вид_блюд

WHERE Блюда.БЛ = Рецепты.БЛ

AND Блюда.В = Вид_блюд.В

UNION

SELECT Вид, Блюдо, «???»

FROM Блюда, Вид_блюд

WHERE Блюда.В = Вид_блюд.В

AND БЛ NOT IN

( SELECT БЛ

FROM Рецепты);

Предложение UPDATE

Обновление единственной записи

Изменить название блюда с кодом БЛ=5 на Форшмак, увеличить его выход на 30 г и установить NULL-значение в столбец Труд.

UPDATE Блюда

SET Блюдо = 'Форшмак', Выход = (Выход+30), Труд = NULL

WHERE БЛ = 5;

Обновление множества записей

Утроить цену всех продуктов таблицы поставки (кроме цены кофе – ПР = 17).

UPDATE Поставки

SET Цена = Цена * 3

WHERE ПР <> 17;

Обновление с подзапросом

Установить равной нулю цену и К_во продуктов для поставщиков из Паневежиса и Резекне.

UPDATE Поставки

SET Цена = 0, К_во = 0

WHERE ПС IN

(SELECT ПС

FROM Поставщики

WHERE Город IN ('Паневежис', 'Резекне'));

Обновление нескольких таблиц

Изменить номер продукта ПР = 13 на ПР = 20.

UPDATE Продукты UPDATE Состав

SET ПР = 20 SET ПР = 20

WHERE ПР = 13; WHERE ПР = 13;

UPDATE Поставки UPDATE Наличие

SET ПР = 20 SET ПР = 20

WHERE ПР = 13; WHERE ПР = 13;

К сожалению в единственным запросе невозможно обновить более одной таблицы, а так как код продукта входит в четыре таблицы, то пришлось выдать четыре сходных запроса. Это может привести к противоречию базы данных (нарушению целостности по ссылкам), поскольку после выполнения первого предложения таблицы Состав, Поставки и Наличие ссылаются на уже несуществующий продукт. База становится непротиворечивой только после выполнения четвертого запроса.

О конструировании предложений модификации

Для тех, кто достаточно хорошо понял предложение SELECT, несложно овладеть конструированием предложений DELETE, INSERT и UPDATE. Но в процессе такого конструирования следует учитывать, что:

1.    Если в WHERE фразе предложений DELETE и UPDATE используется вложенный подзапрос, то во фразе FROM этого подзапроса не должна упоминаться таблица, из которой удаляются (в которой обновляются) строки. Аналогично, в подзапросе предложения INSERT не должна упоминаться таблица, в которую загружаются данные.

Так, SQL отвергнет предложение

INSERT

INTO Выбрано

SELECT (33), Т, БЛ

FROM Выбрано

WHERE СМ = 17;

позволяющее ввести информацию о том, что отдыхающий, сидящий на 33-м месте, выбирает тот же набор блюд, что и отдыхающий, сидящий на 17-м месте. Ввод придется осуществить через какую-либо промежуточную таблицу, например, таблицу Выбор:

DELETE

FROM Выбор;

INSERT

INTO Выбор (СМ, Т, БЛ)

SELECT (33), Т, БЛ

FROM Выбрано

WHERE СМ = 17;

INSERT

INTO Выбрано

SELECT СМ, Т, БЛ

FROM Выбор;

2.    Составляя предложения модификации данных, необходимо все время помнить о сохранении непротиворечивости базы данных. Об этом упоминалось ранее и подробно говорилось в литературе.

Предложение DELETE

Удаление единственной записи

Удалить поставщика с ПС = 7.

DELETE

FROM Поставщики

WHERE ПС = 7;

Если таблица Поставки содержит в момент выполнения этого предложения какие-либо поставки для поставщика с ПС = 7, то такое удаление нарушит непротиворечивость базы данных. К сожалению нет операции удаления, одновременно воздействующей на несколько таблиц. Однако в некоторых СУБД реализованы механизмы поддержания целостности, позволяющие отменить некорректное удаление или каскадировать удаление на несколько таблиц.

Удаление множества записей

Удалить все поставки.

DELETE

FROM Поставки;

Поставки – все еще известная таблица, но в ней теперь нет строк. Для уничтожения таблицы надо выполнить операцию DROP TABLE Поставки.

Удалить все мясные блюда.

DELETE FROM Блюда

WHERE Основа = 'Мясо';

Удаление с вложенным подзапросом

Удалить все поставки для поставщика из Паневежиса.

DELETE

FROM Поставки

WHERE ПС IN

(SELECT ПС

FROM Поставщики

WHERE Город = 'Паневежис');

Предложение INSERT

Вставка единственной записи в таблицу

Добавить в таблицу Блюда блюдо:

Шашлык (БЛ – 34, Блюдо – Шашлык, В – Г, Основа – Мясо, Выход – 150)

при неизвестной пока трудоемкости приготовления этого блюда.

INSERT

INTO Блюда (БЛ, Блюдо, В, Основа, Выход)

VALUES (34, 'Шашлык', 'Г', 'Мясо', 150);

Создается новая запись для блюда с номером 34, с неопределенным значением в столбце Труд.

Порядок полей в INSERT не обязательно должен совпадать с порядком полей, в котором они определялись при создании таблицы. Вполне допустима и такая версия предыдущего предложения:

INSERT

INTO Блюда (Основа, В, Блюдо, БЛ, Выход)

VALUES ('Мясо', 'Г', 'Шашлык', 34, 150);

При известной трудоемкости приготовления шашлыка (например, 5 коп) сведения о нем можно ввести с помощью укороченного предложения:

INSERT

INTO Блюда

VALUES (34, 'Шашлык', 'Г', 'Мясо', 150, 5);

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

В предыдущих примерах проводилась модификация стержневой сущности, т.е. таблицы с первичным ключом БЛ. Почти все СУБД имеют механизмы для предотвращения ввода не уникального первичного ключа, например, ввода «Шашлыка» под номером, меньшим 34. А как быть с ассоциациями или другими таблицами, содержащими внешние ключи?

Пусть, например, потребовалось добавить в рецепт блюда Салат летний (БЛ = 1) немного (15 г) лука (ПР = 10), и мы воспользовались предложением

INSERT

INTO Состав (БЛ, ПР, Вес)

VALUES (1, 10, 15);

Подобно операции DELETE операция INSERT может нарушить непротиворечивость базы данных. Если не принять специальных мер, то СУБД не проверяет, имеется ли в таблице Блюда блюдо с первичным ключом БЛ = 1 и в таблице Продукты – продукт с первичным ключом ПР = 10. Отсутствие любого из этих значений породит противоречие: в базе появится ссылка на несуществующую запись. Проблемы, возникающие при использовании внешних ключей, подробно рассмотрены в литературе, а здесь отме-тим, что все «приличные» СУБД имеют механизмы для предотв-ращения ввода записей со значениями внешних ключей, отсутст-вующих среди значений соответствующих первичных ключей.

Предложение UPDATE

Обновление единственной записи

Изменить название блюда с кодом БЛ=5 на Форшмак, увеличить его выход на 30 г и установить NULL-значение в столбец Труд.

UPDATE Блюда

SET Блюдо = 'Форшмак', Выход = (Выход+30), Труд = NULL

WHERE БЛ = 5;

Обновление множества записей

Утроить цену всех продуктов таблицы поставки (кроме цены кофе – ПР = 17).

UPDATE Поставки

SET Цена = Цена * 3

WHERE ПР <> 17;

Обновление с подзапросом

Установить равной нулю цену и К_во продуктов для поставщиков из Паневежиса и Резекне.

UPDATE Поставки

SET Цена = 0, К_во = 0

WHERE ПС IN

(SELECT ПС

FROM Поставщики

WHERE Город IN ('Паневежис', 'Резекне'));

Обновление нескольких таблиц

Изменить номер продукта ПР = 13 на ПР = 20.

UPDATE Продукты UPDATE Состав

SET ПР = 20 SET ПР = 20

WHERE ПР = 13; WHERE ПР = 13;

UPDATE Поставки UPDATE Наличие

SET ПР = 20 SET ПР = 20

WHERE ПР = 13; WHERE ПР = 13;

К сожалению в единственным запросе невозможно обновить более одной таблицы, а так как код продукта входит в четыре таблицы, то пришлось выдать четыре сходных запроса. Это может привести к противоречию базы данных (нарушению целостности по ссылкам), поскольку после выполнения первого предложения таблицы Состав, Поставки и Наличие ссылаются на уже несуществующий продукт. База становится непротиворечивой только после выполнения четвертого запроса.

О конструировании предложений модификации

Для тех, кто достаточно хорошо понял предложение SELECT, несложно овладеть конструированием предложений DELETE, INSERT и UPDATE. Но в процессе такого конструирования следует учитывать, что:

3.    Если в WHERE фразе предложений DELETE и UPDATE используется вложенный подзапрос, то во фразе FROM этого подзапроса не должна упоминаться таблица, из которой удаляются (в которой обновляются) строки. Аналогично, в подзапросе предложения INSERT не должна упоминаться таблица, в которую загружаются данные.

Так, SQL отвергнет предложение

INSERT

INTO Выбрано

SELECT (33), Т, БЛ

FROM Выбрано

WHERE СМ = 17;

позволяющее ввести информацию о том, что отдыхающий, сидящий на 33-м месте, выбирает тот же набор блюд, что и отдыхающий, сидящий на 17-м месте. Ввод придется осуществить через какую-либо промежуточную таблицу, например, таблицу Выбор:

DELETE

FROM Выбор;

INSERT

INTO Выбор (СМ, Т, БЛ)

SELECT (33), Т, БЛ

FROM Выбрано

WHERE СМ = 17;

INSERT

INTO Выбрано

SELECT СМ, Т, БЛ

FROM Выбор;

4.    Составляя предложения модификации данных, необходимо все время помнить о сохранении непротиворечивости базы данных. Об этом упоминалось ранее и подробно говорилось в литературе.

2.3. Обзор основных SQL-серверов. 2.3.1. SQL-сервер Oracle.

Общая характеристика продуктов Oraсle

Все продукты Oracle (СУБД, средства разработки, средства для конечного пользователя, сетевые компоненты) являются открытыми, масштабируемыми и программируемыми. Они позволяют разрабатывать приложения, как уровня небольшой рабочей группы, так и уровня огромного предприятия с тысячами пользователей, террабайтными базами, размещенными в различных зданиях и даже странах.

Средства Oracle позволяют надежно защитить эти данные, обеспечить их целостность и непротиворечивость. Продукты Oracle работают более чем на ста вычислительных платформах (компьютер + операционная система), поддерживают все основные промышленные сетевые протоколы и графические оконные среды. Это позволяет с минимальными затратами переносить готовые приложения с одной платформы на другую. Например, разработав приложение на однопроцессорном персональном компьютере с MS Windows, Вы можете далее выполнять его на Unix – машинах, больших IBM машинах, SMP и MPP архитектурах, высоко надежных и кластерных архитектурах.

При повышении нагрузки на приложение, можно заменить сервер на более мощный, добавить еще один сервер, вынести часть обработки в другой узел и т. д. Если клиент работал через терминал, а затем решил перейти к архитектуре клиент – сервер или даже переместился в другой город, он сможет продолжать работать с теми же БД Oracle. Все это не потребует модификации кода приложений.

С помощью средств Oracle можно реализовать оперативную обработку (OLTP – системы), системы поддержки принятия решений (DSS – системы) и системы накопления и анализа больших объемов данных (Data Warehouse и OLAP – системы). Oracle поддерживает все основные стандарты:

·     FIPS 127-2, ANSI X3-135.1992 – для БД;

·     NCSC TDI C2, B1, ITSEC F – C2/E3, F – B1/B3 – по защите данных;

·     OSI, DNSIX (MaxSix), SNMP – для сети;

·     ODBC, TSIG, X/Open, DCE, DDE, OLE, OCX, VBX – для взаимодействия приложений.

Классификация продуктов Oracle

Все многообразие продуктов фирмы Oracle можно разделить на следующие группы:

·     Oracle7 Server – ядро СУБД и дополнительные компоненты ядра (опции). Они необходимы для хранения, поиска, извлечения, обработки и администрирования данных;

·     инструментальные средства разработки приложений. Это, в первую очередь, набор средств разработчика Developer/2000, а также прекомпиляторы с языков 3GL и библиотека CALL-интерфейса;

·     средства автоматизации проектирования и разработки (CASE-средства) – Designer/2000;

·     средства для конечных пользователей. Это набор средств Descoverer/2000, офисная система Oracle Office, средства хранения и обработки текстов Text Server (c Context и CoAutor);

·     средства для анализа данных и создания OLAP (online analyse processing) приложений – Express – продукты;

·     средства для обеспечения работы продуктов Oracle в компьютерной сети. Это SQL*Net с драйверами различных сетевых протоколов, средства управления сетью, кодирования данных, преобразования протоколов;

·     средства для взаимодействия с пакетами других фирм. Это шлюзы по данным (Transparent Gateway) к различным СУБД и процедурные шлюзы; ODBC драйвер, Oracle Objects for OLE, универсальный пакет связи Oracle Glue;

·     продукты для рабочих групп – Workgroup/2000. К этой группе относится нерасширяемое ядро Oracle для персональных компьютеров, однопользовательский персональный Oracle, средства разработки небольших приложений-Oracle Power Objects. Продукты для рабочих групп отличаются компактностью, простотой установки и использования, а так же низкими ценами;

·     готовые прикладные системы – Oracle Applications. Среди них наиболее известными являются: Oracle Financial – финансовые, Oracle Manufacturing – управление производством, Oracle Human Resources – кадры, бухгалтерия;

·     новые направления. К этой группе можно отнести продукты для работы с мультимедиа (Media Server, Media Net, Media Objects), средства для работы с БД по медленным и ненадежным сетям (радиомодемы, телефоны, сотовая связь) – Oracle Mobile Agents, средства для работы с БД по Internet (WWW Viewer и WWW сервер).

Oracle7 Server

Универсальный сервер Oracle позволяет хранить и обрабатывать самые разные типы данных. Кроме привычных структурированных данных (числа, строки, дата, время) можно работать с неструктурированными данными, такими как тексты, многомерные пространственные данные, изображения, видео, аудио. При этом Oracle обеспечивает надежность хранения и быстроту доступа к этим данным, а так же возможность создания приложений, работающих со всеми этими данными в комплексе.

Сегодня Oracle – это реляционная СУБД, поддерживающая язык SQL и его расширения для работы с различными типами данных, а так же механизм транзакций. Особенности архитектуры Oracle Server обеспечивают очень высокое быстродействие системы в многопользовательском режиме. Оригинальный механизм многоверсионной записи позволяет получать согласованные результаты при выполнении запросов без блокировки данных. Автоматически выполняется блокировка данных на уровне записи при модификации данных. Это позволяет увеличивать число пользователей системы без снижения ее производительности.

Встроенные оптимизаторы запросов, использование алгоритмов хеширования, битовых индексов и B-деревьев, возможность тонкой настройки СУБД на возможности среды эксплуатации также позволяют обеспечить очень высокое быстродействие. Дополнительная компонента ядра Parallel Query Option позволяет ускорить работу существующих приложений за счет использования возможностей многопроцессорных машин. Эта компонента резко снижает время выполнения отдельного запроса, загрузки данных, построения индекса и т. д. За счет разбиения операций (например, оператора Select) на части и выполнения этих частей параллельно на разных процессорах. Увеличение числа процессоров с 1 до 10 позволяет ускорить выполнение запроса в 8 раз, что очень важно для работы с очень большими БД.

Компоненты Oracle Parallel Server позволяет СУБД Oracle и приложениям работать на МРР и кластерных архитектурах. Наиболее часто кластер реализуется на базе компьютеров фирм DЕC, Sequent, HP, Sun, IBM (RS 6000). При этом все машины кластера могут работать с одной и той же БД (что ускоряет и распараллеливает работу), а при выходе из строя одного из узлов кластера, другие узлы аккуратно отработают отказ и возьмут на себя дальнейшую обработку данных. Использование Oracle на кластере компьютеров позволяет относительно недорого обеспечить высоконадежное и быстрое решение задач.

Oracle Server позволяет реализовать как односерверную, так и многосерверную архитектуру БД. В случае многосерверной архитектуры узлы могут отстоять на большое расстояние, размещаться на разных ОС и компьютерах, связываться по разным сетевым протоколам. На основе многосерверной архитектуры Oracle позволяет реализовать как распределенную базу данных, так и репликацию.

Компонента Distributed Option позволяет приложению работать с распределенной БД так же, как с локальной. Автоматически реализуемый протокол 2х-фазной фиксации позволяет одновременно модифицировать данные в разных узлах БД. Узлы всегда находятся в согласованном состоянии, однако для этого требуется постоянное наличие связи между узлами. Механизм репликации не требует постоянного наличия связи между узлами. Через заданные промежутки времени или при восстановлении связи, изменения, сделанные в данном узле, будут отрабатываться в копиях таблиц в других узлах. Можно реализовать не только простую репликацию (изменения распространяются от таблицы – мастер к копиям), но и сложную репликацию (когда в узлах хранятся копии одной и той же таблицы и их можно одновременно обновлять).

Сложную репликацию реализует компонента Advance Replcation Option, она же помогает задать механизм разрешения возникающих коллизий. Oracle Server имеет средства для реализации Backup копии Вашей базы, готовой быстро вступить в действие при уничтожении основной базы.

2.3.2. Microsoft SQL сервер.

Microsoft SQL Server для Windows NT является основным средством обработки больших объемов информации. Новая версия SQL Server значительно расширена для повышения производительности СУБД, упрощения администрирования, повышения надежности и скорости обработки данных.

Обзор продукта

Сейчас организации становятся все более динамичными. Это необходимо для быстрой реакции на меняющиеся условия ведения бизнеса. Все более активно идет процесс децентрализации принятия решений, а стремление повысить продуктивность принятия решений ведет к упрощению процедур реализации различного рода идей. Для создания средств поддержки подобного рода изменений организации обращаются к технологиям распределенной обработки информации. Эти технологии позволяют размещать данные как можно ближе к пользователям, которым информация необходима для принятия важных решений.


История развития SQL Server

SQL Server 4.21a

SQL Server 6.0 SQL Server следующие версии
NT Server NT Server Cairo

Симметричная архитектура сервера (SMP)

Графические средства администратора

Унифицированная регистрация в сети

Расширенные хранимые процедуры

Интеграция с эл. Почтой

SQL Object Manager

Service Manager

RPC для доступа к БД

Performance monitor

ANSI89 Level 1

Тиражирование данных

Параллельная обработка БД

Сканирование, индексирование, создание и восстановление страховых копий, загрузка

Поддержка очень больших БД

Оптимизатор, опережающее чтение, управление блокировками

Распределенное управление

OLE automation

ODBC курсоры

Расширения языка

ANSI92 (95.1)

X/A (95.1)

Унифицированное хранение данных

Параллельные запросы

Distributed joins

Доступ к данным OLE

Проверка версий, блокировка на уровне записи

Защита средствами Cairo, каталоги

Пользовательские функции

Интеграция с репозитарием объектов

Microsoft SQL Server 6.0 –специально разработана для удовлетворения требований, предъявляемых системами распределенной обработки данных (таких как тиражирование данных, параллельная обработка, поддержка больших баз данных (БД) на относительно недорогих аппаратных платформах, сохраняющая простоту управления и использования). Сервер имеет средства удаленного администрирования и управления операциями, организованные на базе объектно- ориентированной распределенной среды управления. Новые возможности, такие как OLE Automation и средства программирования административных задач на языке Visual Basic for Applications, обеспечивают интеграцию с приложениями, работающими на ПК. По-прежнему Microsoft уделяет очень большое внимание соответствию своих продуктов существующим промышленным стандартам, что отразилось в расширенной поддержке ANSI SQL и ODBC.

Microsoft SQL Server 6.0 входит в состав семейства Microsoft BackOffice, объединяющего пять серверных приложений, разработанных для совместного функционирования в качестве интегрированной системы. Она позволяет пользователям повысить производительность процесса принятия решений средствами систем, базирующихся на архитектуре клиент-сервер. Кроме того, Microsoft SQL Server 6.0 завершает линию средств разработки, включающих Microsoft Access, Visual FoxPro®, Visual Basic и Visual C++™.

2.3.3. MySQL-сервер.

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

MySQL был разработан компанией TcX для внутренних нужд, которые заключались в быстрой обработке очень больших баз данных. Компания утверждает, что использует MySQL с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более чем 500 имеют более 7 миллионов строк.

MySQL является идеальным решением для малых и средних приложений. Исходные тексты сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. На текущий момент MySQL все еще в стадии разработки, хотя версии 3.22 полностью работоспособны.

MySQL-сервер является бесплатным для некоммерческого использования. Иначе необходимо приобретение лицензии, стоимость которой составляет 190 EUR.

Возможности MySQL.

 

MySQL поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД.

Краткий перечень возможностей MySQL:

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

2.Количество строк в таблицах может достигать 50 млн.

3.Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих.

4.Простая и эффективная система безопасности.

MySQL – очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД.

В MySQL отсутствуют:

1.Поддержка вложенных запросов, типа SELECT * FROM table1 WHERE id IN (SELECT id FROM table2). Утверждается, что такая возможность будет в версии 3.23.

2.Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE.

3.Нет поддержки внешних (foreign) ключей.

4.Нет поддержки триггеров и хранимых процедур.

5.Нет поддержки представлений (VIEW). В версии 3.23 планируется возможность создавать представления.

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


2.4. Принципы работы web-серверов. 2.4.1. Web-сервер. Понятие, функции, характеристики.

Web-сервер – это программное обеспечение, отвечающее за прием запросов браузеров, поиск указанных файлов и возращение их содержимого.

В настоящее время в мире разработано и широко применяется несколько десятков программ, реализующих эти функции. Практически для каждой операционной системы существует целый ряд таких программ. Некоторые из них являются независимыми от операционной системы и могут использоваться одновременно в разных ОС. Но в подавляющем большинстве Web-серверы ориентированы на применение только в одной операционной системе. Среди них есть как коммерческие программы, так и распространяемые бесплатно. Иногда функции Web-сервера являются только частью функций, заложенных разработчиками в программу. Кроме минимального набора выполняемых задач, определяющих основные функции Web-сервера, большинство программ содержит в себе много дополнительных возможностей. К ним относятся ограничение прав доступа к отдельным документам, возможность криптографической защиты передаваемых и принимаемых данных, создания на одном компьютере нескольких Web-серверов с разными доменными именами, использования нестандартных портов входа для сервера. Кроме этого от Web-серверов часто требуется поддержка работы с системами управления базами данных и языками Perl и Java. Кроме набора функций, существенное влияние на выбор Web-сервера оказывают простота настройки и удобство в администрировании. Немаловажное значение для высоко посещаемых серверов имеет также быстрота ответа программы на запрос клиента. На сегодняшний день (по данным обзора Netcraft Web Server Survey) бесспорным лидером среди Web-серверов является бесплатно распространяемый сервер Apache. В пятерку лидеров входят также серверы Microsoft Internet Information Server, Netscape, NCSA и WebSite.

2.4.2. Трехзвенная архитектура клиент-сервер.

Обыкновенно для небольших организаций разработчики применяют двухзвенную архитектуру клиент-сервер, когда с рабочих станций осуществляется удаленный доступ к базе данных, и не более того. В самых простых, примитивных системах даже не используются возможности, предоставляемые пользователям РСУБД (Распределения Управления Базами данных), какие, как триггеры и сохраненные процедуры; и хотя разработчики именуют подобные системы клиент-серверами, они имеют весьма мало общего с истинными распределенными приложениями. Более того, идеология «толстого клиента» принуждает к установке на рабочих местах весьма дорогостоящих Wintel-компьютеров, способных произвести все основные вычисления обмен данными с удаленным сервером. Операция производится сквозь толстый многоуровневые слой провайверов, которые должны быть установлены на персональной рабочей станции и лицензированы их разработчиками для каждого рабочего места. Иногда получается совершенно нелепая вещь: если пропускная способность сети не достаточно велика или или недостаточно эффективно организован поток прохождения транзакций, то быстродействующие процессоры клиентских машин совершенно бездействуют; в противном же случае, наоборот, сервер базы данных «задыхается» и не успевает ответить каждому из многочисленных и буквально долбящих его, как дятлы, клиентов. При числе одновременно работающих клиентов более 30 необходимо переходит на трехзвенную архитектуру. В трехзвенной архитектуре всю логику работы с сервером можно возложить на специальный сервер приложения, а разделенные на отдельные фрагменты приложения уменьшают нагрузку на и на машину-клиента, и на сервер, перенося соответствующие операции на специальный сервер. Серверная часть приложения лучше защищена, а сами приложения могут либо непосредственно адресоваться к другим серверным приложениям, либо маршрутизировать запросы к ним (рис. 2.8).

2.4.3. Архитектура Internet/Intranet.

Достоинства этой архитектуры (рис 2.9) сводятся к достоинствам соответствующей части системы клиент-сервер.



Сервер баз данных

 

Клиент

 

Сервер приложений

 

 

Рисунок 2.8. Трехзвенная схема работы клиент-сервер.

Клиентская часть

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

Серверная часть

Приложения доступны любому пользователю сети Internet/Intranet, имеющему право образаться к ним. Поскольку все операции по сопровождению и усовершенствованию системы производятся на сервере, то пропадает необходимость сопровождать и модернизировать части приложения, находящиеся на машинах-клиентах. Такая конфигурация способна обеспечить работу десятка


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

Рисунок 2.9. Универсальная схема клиент-сервер для сетей Internet/Intranet.

2.2.4. Обзор серверных программ для различных ОС.

Сегодня выпускаются Web-серверы для всех основных платформ, в том числе различных версий UNIX, Windows NT, IntranetWare фирмы Novell (дополнительный компонент NetWare 4.x), OS/2 Warp, Mac OS и даже Windows 95. Web-серверы стали доступными для массового пользователя.

Функции Web-серверов не ограничиваются пересылкой статических HTML-страниц. Java и сопутствующие языки составления сценариев представляют собой идеальную платформу разработки для Web. Во все рассмотренные продукты, за исключением Apache и ICSS, входят средства для работы с прикладными программами Java, размещенными на сервере. Ряд Web-серверов предусматривают собственные API (Application Programming Interface), а некоторые из них снабжены широко известным интерфейсом Netscape Server API (NSAPI).

Наибольшее распространение среди этих серверов получил метод программирования для Web с применением языков сценариев. Фирмы Microsoft и Netscape включили в свои пакеты даже объектно-ориентированные инструменты для быстрой разработки программ (rapid applications development – RAD), рассчитанные на серьезных разработчиков.

Web-серверы все чаще выпускаются в виде комплексов функциональных средств, встраиваемых в ОС. Универсальность сетей на базе TCP/IP означает, что в интрасети допустимо применение различных типов серверов – например, подключение сервера UNIX к сети Windows NT, - но данный подход может оказаться не самым эффективным с точки зрения использования ресурсов.

Благодаря Web-браузерам для администрирования сервера вовсе не обязательно всегда находиться в непосредственной близости от него. В большинстве продуктов имеются функции дистанционного администрирования через Web-браузер.

Чем больше число Web-узлов, участвующих в обмене конфиденциальной информацией, тем острее необходимость в надежной защите и шифровании данных. Самая распространенная форма обеспечения безопасности, применяемая на Web-серверах, - простая аутентификация, во время которой каждый пользователь должен сообщить свой идентификатор и пароль. Средствами для базовой аутентификации снабжены все рассмотренные серверы. Разработчики некоторых серверов пошли дальше, позволив ограничивать доступ по IP-адресу и имени узла.

Для защиты от непрошеных посетителей можно подвергнуть информацию процедуре шифрования. На Web-серверах для шифрования данных служит протокол защиты на уровне гнезд – Secure Sockets Layer (SSL). Для организации защищенного, шифрованного канала связи между сервером и браузером по протоколу SSL выполняется проверка подлинности сертификата. Учреждения уполномоченные выдавать сертификаты, скажем VeriSign, за плату сертифицируют серверы при помощи протокола SSL.

2.4.5. Стандарты, облегчающие создание Web-узлов.

Трудности Web-дизайнеров ныне не ограничиваются написанием программ на JavaScript, подключающих пользователей к версиям одного и того же узла для браузера Netscape или Microsoft. Пользователи мобильных вычислительных устройств (например, персональных цифровых помощников), также получившие доступ к Web, нуждаются в наличии быстро работающих текстовых версий узлов, в то время как разработчики стараются создавать богатые графикой Web-страницы, быстро отображаемые лишь при наличии скоростных каналов.

Web-дизайнерам остается лишь надеяться, что одна из организаций, занимающихся установлением стандартов, например Консорциум World Wide Web (W3C), предложит способ, благодаря которому не придется создавать отдельных версий Web-узлов для каждого типа клиентов.

Между тем стандарт прозрачного выбора типа информационного наполнения существует, причем еще с 1989 года. Проблема в том, что полностью его не поддерживает почти ни один Web-сервер.

Функция выбора типа информационного наполнения является частью протокола HTTP. Она же используется для отправки пользователям загружаемых шрифтов, предусмотренных спецификацией Cascading Style Sheets 2.0.

Известны лишь два Web-сервера, полностью поддерживающих эту функцию, - Apache и Jigsaw. В частности, функция выбора типа информационного наполнения используется на Web-узле для локализации: сервер автоматически устанавливает язык текста согласно данным, полученным от браузера пользователя. Узел поддерживает несколько языков, но не содержит ссылок для выбора одного из них, поскольку этого не требуется.

2.4.6. Web-технологии.

HTML-страницы системы World Wide Web бывают динамические и статические. Средства, наращивающие функциональные возможности Web и позволяющие создавать динамические HTML-страницы, подразделяются на расширения серверной части и расширения клиентской части. Расширения серверной части – это программы, позволяющие повысить функциональность Web-серверов. Расширения клиентской части – это программы, позволяющие наращивать функциональные возможности браузеров. Расширения серверной части можно подразделить на следующие три категории:

·     Расширения, использующие обычный CGI. Common Gateway Interface (общий шлюзовой интерфейс), или CGI, был первым интерфейсом, позволившим создавать приложения, наращивающие функциональность Web-серверов. CGI-программы обладают наибольшей переносимостью между Web-серверами. Сервер общается с CGI-приложением через стандартные ввод и вывод операционной системы, а также переменные окружения. CGI-программы могут быть написаны на любом языке программирования, вплоть до языка командного интерпретатора операционной системы. Недостатком CGI является необходимость загружать при каждом запросе большую программу, что может привести к истощению ресурсов сервера и происходит достаточно медленно.

·     Расширения, использующие гибридный CGI. Использование гибридного CGI позволяет сохранить свойственную CGI переносимость, избавившись от присущих ему недостатков. Идея заключается в использование маленькой CGI-программы и некоторого процесса-партнера. CGI-программа получает данные от Web-сервера и передает их процессу-партнеру, который выполняет всю обработку. Процесс-партнер (например, демон в UNIX) загружается один раз при загрузке операционной системы и общается с CGI-программой при помощи межпроцессных коммуникаций.

·     Расширения, использующие API. В настоящее время широкое распространение получили Web-сервера, предоставляющие программам-расширениям сервера специальные API-интерфейсы. Программы-расширения, использующие API, должны быть созданы в виде разделяемых библиотек (например, DLL, Dynamic Link Library в среде Windows). Они исполняются в адресном пространстве Web-сервера. Очевидно, что расширения такого типа значительно экономнее по отношению к системным ресурсам, чем CGI-программы. Недостатками этого способа являются его небезопасность (ошибка в такой программе может привести к выходу из строя всего сервера) и низкая переносимость API-приложений между разными Web-серверами (т.к. разные сервера могут использовать разные API). Наиболее распространенными API-интерфейсами Web-серверов являются NSAPI фирмы Netscape и ISAPI компании Microsoft.

Ниже представлен список Web-серверов разных фирм-производителей.


ServerWatch и WebCompare

Netcraft Web Server Survey

Russian Web Survey

Apache http://www.apache.org

Russian Apache

AOL Server

Alibaba

Amiga Web Server

Boa

CERN httpd

Common Lisp Hypermedia Server

EMWAC HTTP server

GoServe

Internet Connection Secure Servers http://www.icss.raleigh.ibm./icsserver/.

Java Web Server

JAWS Adaptive Web Server

Jigsaw http://www.w3.org

Lotus Domino Web Server http://www.lotus.com.

MacHTTP

Internet Information Server http://www.microsoft.com/iis.

NCSA HTTPD

Netscape FastTrack http://www.netscape.com.

Netscape Enterprise http://www.netscape.com.

Novell Web Server http://www.novell.com.

Open Market Web Server

Oracle Web Application Server

Phttpd

Plexus

Purveyor WebServers

Roxen Challenger

RushHour

Sky Light

Stronghold

thttpd

The NetPublisher Server

Web-серверы для Macintosh

Web Commander http://www.luckman.com.

Web Server4D

WebSite Professoinal http://software.ora.com.

WebStar http://www.starnine.com.

WebQuest Web Server

ZBServer

Zeus Server


Рассмотрим более подробно наиболее популярные из них.

2.4.7. Web-сервер Apache.

Этот Web-сервер является самым распространенным в мире среди серверов для операционной системы Unix. Причин такой популярности много. Прежде всего, это возможность свободно получить его как с основного сервера проекта Apache, так и с «зеркал», расположенных во многих странах мира, в том числе и России. Имеется подробная документация по настройке и администрированию, включая FAQ. В рамках данного проекта ведется подробный учет и исправление найденных ошибок, чему посвящено несколько страниц сервера. Многие разработчики модифицируют код Apache, внося дополнительные функции, и предлагают для свободного распространения свои разработки. В частности, имеются версии Apache, в которые добавлены функции по работе с русскоязычными документами с учетом различных кодировок кириллицы.


Russian Apache это программный продукт, за основу которого был взят популярный HTTP-сервер Apache. К нему была добавлена функциональность, необходимая для корректной поддержки нескольких кодировок кириллицы одновременно, что потребовало внесени добавлений в основной код Apache.

2.2.8. Web-сервер Jigsaw.

Увеличение значимости технологии Java в области серверного ПО подготовил почву для появления Web-сервера на этом языке. Продукт, созданный совместными усилиями ряда разработчиков, носит название Jigsaw. В создании сервера приняли участие десятки ученых – специалистов повычислительной технике, связанных с консорциумом World Wide Web Consortium и с Массачусетским технологическим институтом Он относится к категории свободно распространяемого программного обеспечения. Хотя Jigsaw 2.0 и представляет собой полнофункциональный Web-сервер, его основная цель – показать в действии такие высокоэффективные серверные технологии, как HTTP 1.1, сервлеты и распределенные публикации, которые столь активно пытается пропагандировать W3C.

Jigsaw сервер, полностью написанный на Java. Это поможет ускорить его установку на таких операционных системах, как Windows 95, NT, OS/2 и Solaris. По этой же причине он обладает следующими характеристиками:

·     Расширяемость

·     Мобильность

·     Объектно-ориентированная разработка

Jigsaw будет работать на любой платформе, поддерживающей Java, без изменений; он состоит из ядра и модулей расширения, можно добавлять и свои собственные модули. При написании кода применен объектно-ориентированный подход все ресурсы являются объектами. В противовес большинству существующих серверов, которые рассматривают ресурсы либо как CGI-скрипты, либо как файлы, Jigsaw допускает доступ к любому объекту через HTTP или другой допустимый протокол.

Цель Jigsaw продемонстрировать новые возможности протоколов (таких, как HTTP/1.1.или PISC) и обеспечить платформу для экспериментирования в области серверного программного обеспечения. Java обладает возможностями, облегчающими решение этой задачи. Переносимость Java-кода может быть использована в будущих экспериментах с концепцией мобильного кода.

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

Кроме того, Jigsaw 2.0 активно использует HTTP 1.1 – стандарт, который теперь поддерживает проблемная группа Internet Engineering Task Force. Сейчас браузеры отключаются, ожидая ответа на серверные запросы. HTTP 1.1 позволяет одновременно обрабатывать несколько серверных запросов. HTTP 1.1 может поддерживать подготовку Web-публикаций, предоставляя пользователям возможность редактировать файлы через свои браузеры так, что их исправления не перекрываются друг с другом.

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

Будущий дополнительный модуль сервера Apache, о котором идет речь, свяжет между собой HTTP-сервер Apache и виртуальную Java-машину, так что пользователи смогут запускать любые серверные приложения, основанные на интерфейсе прикладного программирования Servlet API. Таким образом, Java сможет превратиться в серверный язык программирования, что позволит свести к минимуму проблемы с производительностью клиентских Java-приложений. Кроме того, этот модуль сможет выполнять функции связующего ПО, объединяющего продукты различных разработчиков, считают создатели Apache.

2.2.9. Web-сервер Netscape Enterprise.

Enterprise Server является типичным Web-сервером и, как все подобные серверы, управляет размещением Web-страниц, но помимо этого он может использоваться как сервер приложения, обеспечить мощную платформу для запуска прикладных программ, к которым можно обращаться пользователям навигатора, и связываться с реляционными базами данных или наследуемыми системами. Enterprise Server 2.0 обеспечивает следующие возможности.

Публикация содержимого и управление. Совместно с Netscape Navigator Gold Enterprise Server 2.0 облегчает доступ пользователей сетей Intranet к содержимому Web-сервера, которое может состоять из различного набора мультимедийных средств. Enterprise Server 2.0 является наиболее быстрым Web-сервером, доступным на обеих платформах: UNIX и Windows NT. В нем содержитcя автоматическая технология кэширования, поддержка симметричных мультипроцессорных систем, популярных HTTP-расширений, эффективное управление памятью и процессами, позволяющее реентерабельно выполнять программный код, запущенный на выполнение многими браузерами в контексте одного процесса в отличие от многих копий процессов программ CGI.

Интегрированный полнотекстовый поиск. Все содержимое, управляемое Enterprise Server, может автоматически индексироваться и становиться доступным для полнотекстового поиска, Поддерживается инкрементная индексация документов, многократные произвольные наборы и поддержка для многих типов документов, таких, как Adobe PDR.

Встроенное управление версиями. Enterprise Server 2.0 способен управлять версиями сохраняемых документов. Каждый раз, когда документ модифицируется, создается новая версия, но все старые версии также доступны. Enterprise Server 2.0 сравнивает любые две версии и может возвратиться обратно к предыдущей версии в любое время. Группы людей могут работать с одним и тем же документом, используя особенности блокировок, которые позволяют одному человеку проверять документ и не дават ь возможности другим изменять его, пока проверка не закончена.

Автокаталогизация на отдельных серверах. Enterprise Server 2.0 может автоматически сформировать содержательный каталог и потом управлять им. Этот каталог облегчает просмотр содержимого Web по автору, дате создания и т. д. Эта возможность реализована для одиночных серверов по сравнению с полнофункциональным каталогом-сервером, описанным ниже.

Среда разработки приложений. Enterprise Server 2.0 позволяет создавать интерактивные Web-страницы и прикладные программы, которые динамически генерируют информацию для реляционных баз данных, наследуемых систем или реализуют программную логику таким образом, чтобы часть приложения выполнялась на сервере, а часть – на клиенте. Использование Java и JavaScript позволяет при этом добиться платформенной независимости.

Java-сервер приложений. Enterprise Server 2.0 имеет встроенную Java-машину, позволяя вставлять в Web страницы и прикладные программы Java-апплсты, используя язык программирования Java. Быстродействующие Java-расширения могут выполняться на сервере «на лету» и обращаться к внешним С++/С-библиотекам. Код, написанный на Java, является кросс-платформенным, так что прикладная программа может быть выполнена на любой операционной системе, которая функционирует на серверах, без того, чтобы вносить в программы какие бы то ни было изменения.

JavaScript-ннтерпретатор. JavaScript может быть вставлен в HTML-документы и выполняться автоматически на Enterprise Server 2.0 с целью оживления или индивидуализации отдельных документов или для перемещения данных из реляционной базы данных или системы наследства в текущий документ. JavaScript также является кросс –платформенным средством, так что может выполняться на всех серверах и в любых операционных системах, которые поддерживают Java, без всяких изменений в программе. JavaScripts, выполняемый на сервере, может даже создавать JavaScripts, который будет выполняться в навигаторе, как только документ будет перемещен к пользователю.

Реляционный уровень доступа к базам данных. JavaScript, выполненный на Enterprise Server 2.0, может обращаться к любой реляционной системе базы данных, включая CA/Ingres, Informix, Microsoft, Oracle и Sybase. ODBC-подцержка также включена. JavaScript внутри HTML-документов может читать данные из реляционных таблиц базы данных или изменять данные в таблицах.

Интерфейсы NSAPI, CGI и WinCGI. Через быстродействующий локальный интерфейс NSAPI, промышленный стандарт CGI и Windows-специфический интерфейс WinCGI Enterprise Server 2.0 может легко адаптироваться к любым пользовательским платформам и расширять функциональные возможности программистов, применяющих общие среды разработки типа C++, Peri и Visual Basic.

Сервис управления. В дополнение к родному HTML-базированному управлению сервером, которое используют все серверы SuiteSpot, Enterprise Server 2.0 также включает поддержку SNMP, так что вы можете контролировать состояние и действия сервера из любой SNMP-базированной системы управления. HTML-интерфейс управления сервером делает возможным удаленное управление сервером из сети через навигатор. Enterprise Server 2.0 также поддерживает возврат  предыдущей версии конфигурации как процесс с одним шагом.

Служба безопасности. Enterprise Server 2.0 обеспечивает полную поддержку для протокола защиты SSL3.0 (включая установление подлинности сервера и пользователя через Х.509-сертификаты), двухстороннее шифрование и целостность данных. Enterprise Server 2.0 позволяет администратору устанавливать привилегии управления доступом для пользователей и документов., Используя Х.509-сертификаты, можно проверить имена и пароли пользователя, домены, его хосты, IP-адреса и принадлежность к определенным группам.

LiveWire-возможности. Enterprise Server 2.0 включает продукт LiveWire, который описан ниже.

Orion и будущие реализации

Реализация Enterprise Server следующих поколений, объединенных ныне под кодовым именем Orion, расширит возможности Enterprise Server как основной компоненты SuiteSpot, позволяя корпорациям развернуть более продвинутое содержание Intranet и прикладных программ, функционирующих в сети и являющихся функциями сети. Ниже перечислены некоторые из областей, где намечается расшить функциональные возможности будущих реализаций Orion.

Программируемые Web-страницы. Netscape обеспечит средства для программирования Web-страниц, разбивая их на части, составляющие статическое и динамическое содержание. В дополнение к полнотекстовому поиску, управлению версиями и быстродействующей публикации HTTP Web-ресурсы будут обеспечивать новые функциональные возможности в нескольких областях.

• Обработка форматов. Enterprise Server автоматически будет обработывать содержание в ряде форматов, включая преобразования к другим форматам, типа HTML. Поддерживаемые форматы будут включать Adobe PDF, Microsoft RTF, Word и др. Netscape будет также поддерживать индексацию и каталогизацию других форматов и документов.

• Управление метаданными и поиск. Пользователям будет предоставлена возможность работы с метаданными типа заголовка, ключевых слов, имени автора, даты создания и формата документа. Благодаря этому можно будет выполнять гибкие запросы в соответствии с теми параметрами, которые заданы в метаданных.

• Заказные представления(виды). Пользователи смогут генерировать заказные представления(виды) содержимого отдельных областей и каталогов Web. Например, они смогут отображать все документы размером больше 10 Кбайт или, например, все документы, содержащие «Южная Америка» в их заголовках.

Услуги каталога. Будет поддерживаться Lightweight Directory Access Protocol (LDAP), который будет использоваться для сохранения информации о пользователе, параметрах управления доступом и информации о конфигурации сервера.

• Услуги агента. Встроенная машина обслуживания агентов даст возможность пользователям и администраторам создавать агентов, которые могут быть выполнены на станции. Эти агенты способны взаимодействовать с Web. Простой агент мог бы наблюдать за некоторым документом, который будет изменен, и затем отправлять по почте пользователям этого документа копию новой версии. Более сложный агент мог бы анализировать содержание Web каждые полчаса и посылать пользователю электронную почту, содержащую связи с документами в базе, авторизированными любым из пяти других пользователей, которые содержат ключевые слова «Альфа-проект». Агенты могут быть вызваны, например, когда новые документы начинают читаться или когда их кто-нибудь изменяет.

Репликация. Репликация, или способность автоматически или явно копировать содержание одного сервера на другой, и в конечном счете способность разрешать конфликты между точными копиями, автоматически будет заложена в новые версии. Согласование первоначально произойдет на уровне файла, в последующих версиях Netscape добавит поддержку для уровня поля replication. Это сделает возможным использование одного сервера как организационного сервера, а другого – как производственного сервера или позволит копировать содержание центрального сервера по филиалам в разрезе тех сведений, которые там нужны.

Сервис разработки приложений. В новых реализациях будут расширены возможности открытой сетевой среды Netscape ONE, обеспечивая изощренный интерфейс пользователя API и библиотеки классов для Java и JavaScript. Пользовательским приложениям, например, не составит труда провести полнотекстовый поиск или выполнить запросы к метаданным, зарегистрировать новую версию документа, и его автора. Также дату создания документа, преобразовать формат документа, создать заказное представление (вид) всех документов в интеллигентной программируемой среде Web (Smart programmable content store) и копировать документ из одного сервера в другой. Netscape будет поддерживать интеграцию Java, JavaScript и встроенные в сервер средства LiveConnect. Более мощными реляционными возможностями доступа к базе данных и более эффективным выполнением виртуальной Java-машины будут расширены услуги разработки приложений, обеспечиваемых в Enterprise Server 2.0,.

Сервис управления. В дополнение к использованию встроенной машины каталога LDAP Enterprise Server 2.0 будет управляем через общие системы управления, включая CA/Unicenter, HP OpenView, IBM/Tivoli TME и Sun Solstice.

Служба безопасности. Netscape добавит более сложный список управления доступом (ACL) по модели, интегрированной с услугами каталога LDAP и интеллигентной программируемой средой Web. Все аспекты управления ресурсами Web и операций будут подчинены многоуровневому управлению доступом, включая поиски документа, полно текстовые поиски, metadata-запросы, управление версиями, преобразование форматов, заказные представления (виды) и агенты.


Рисунок 2.10. Схема работы пользовательских приложений на WEB.

12. Microsoft Internet Information Server.

Выход новой Windows NT 4.0 – огромный шаг в строну интеграции этой операционной системы и сетей Microsoft в Internet. Отныне стало возможно построение всех традиционных сервисов Internet: серверов Web, новостей, почтовых серверов, брандмауэров – на серверах под управлением Windows NT.

Начиная с версии 4.0 в состав Windows NT входит мощьный Web Internet Information Server (IIS), который реализует также серверы FTP и Gopher. Продукт прост в установке и администрировании. Удобный механизм виртуальных каталогов позволяет физически располагать страницы Web на разных компьютерах (что бывает полезно из соображении безопасности), при этом администратор достаточно легко может манипулировать ими.

Входящий в состав продукта Internet Information Manager позволяет настраивать все серверы web в организации, создавать области с конфиденциальной информацией, разрешая доступ к ним отдельным пользователям или группам пользователей. IIS позволяет писать Internet-приложения, используя CGI (Common Gateway Interface). Встроенная поддержка SSL (Secure Sockets Layer) позволяет шифровать трафик между сервером web и клиентом.

Для разработчиков существует открытый Internet Server API (ISAPI), позволяющий создавать приложения, работающие по протоколу HTTP под управлением ISS. ISAPI является реализацией серверной части технологии Active X. Написанные с использованием ISAPI программы работают гораздо быстрее, чем программы, написанные при помощи CGI. Применяя Internet DataBase Connector, на сервере Web можно размещать таблицы различных СУБД, поддерживающие стандарт ODBC (рис. 2.11).

Еще одна составная часть Windows NT 4.0 – Search Server, позволяющий автоматически создавать индексы и производить поиск по ключевым словам на файл-серверах, серверах Web, любых компьютерах внутри компании или где-либо в Internet. Автоматическое обновление информации сервером поиска позволяет сохранять актуальными индексы сводя скорость поиска к минимуму.

Все сервисы IIS имеют собственные счетчики в Perfomance Monitor, позволяющие в реальном времени отслеживать нагрузку на них объем передаваемых данных и т.п. Эти же статистические данные можно получить при помощи протокола SNMP.


Рисунок 2.11. Взаимодействие через интерфейс ISAPI

 

Рисунок 2.12. Ресурсы, доступные из браузеров.


Информация о работе «Организация Web-доступа к базам данных с использованием SQL-запросов»
Раздел: Информатика, программирование
Количество знаков с пробелами: 183471
Количество таблиц: 45
Количество изображений: 12

Похожие работы

Скачать
194681
23
7

... поставленной задачи показала правильность выбранного подхода. Тем не менее, работа требует дальнейше доработаки для организации постоянного доступа читателей к библиографическим ресурсам библиотекам города через Интернет. Литература 1.          Глушаков С.В., Ломотьков Д.В. Базы данных: Учебный курс. – К.: Абрис, 2000. -504с. 2.          Джейсон Мейнджер. Java: основы программирования :Пер ...

Скачать
108575
10
0

... в поставке Microsoft IIS 4.0 уже есть встроенный обработчик ASP. Разработка проекта: 4.1 Перенос базы данных на Microsoft SQL Server. Перенос базы данных компании «ТКС 008» осуществлялся с локального сервера в телефонной службе на WEB-сервер компании. Механизм передачи информации выглядит следующим образом: с сервера телефонной службы, с помощью специально написанной программы, информации из ...

Скачать
51476
2
0

... Java-совместимом Web-обозревателе. Необходимо использовать обозреватель, имеющий поддержку JDK (Java Development Kit √ стандарт Java) версии 1.1.x или выше. 3.2 Технология доступа к базам данных на стороне сервера с использованием механизма CGI В соответствии с идеологией CGI-интерфейсов, вся функциональность размещается на сервере приложений. Ее реализует один или несколько CGI-скриптов, ...

Скачать
20809
2
0

... поддержку пустых значений. Как реляционная СУБД Access обеспечивает доступ ко всем типам данных и позволяет использовать одновременно несколько таблиц базы данных. Система Access поддерживает обработку транзакций с гарантией их целостности. Кроме того, предусмотрена защита на уровне пользователя, что позволяет контролировать доступ к данным отдельных пользователей и целых групп. 5. Создание ...

0 комментариев


Наверх