УМК по СРОД-10-12

213
Министерство образования и науки Российской Федерации Казанский государственный технический университет им.А.Н.Туполева И.С.Ризаев СИСТЕМЫ РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ ДАННЫХ Учебное пособие

Upload: anon769843966

Post on 03-Mar-2015

155 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: УМК по СРОД-10-12

Министерство образования и науки Российской ФедерацииКазанский государственный технический университет им.А.Н.Туполева

И.С.Ризаев

СИСТЕМЫ РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ ДАННЫХ

Учебное пособие

Казань 2009

Page 2: УМК по СРОД-10-12

УДК 681.3.06(075.8)

Ризаев И.С. Системы распределенной обработки данных: Учебное пособие. - Казань: 2009. - 158 с.

В учебном пособии дается классификация систем распределенной обработки данных, модели удаленного доступа, архитектура систем управления распределенными базами данных, проблемы параллельных процессов. Также рассматриваются вопросы безопасности данных, средства предоставления привилегий на языке SQL. Язык программирования PL/SQL в среде СУБД OR-ACLE. Многомерное представление данных и хранилище данных. Языки HTML, PHP в системе WWW как средства доступа к информации в глобальной сети Internet, сервер баз данных MySQL.

Пособие ориентировано на студентов, обучающихся по направлению “Информационные системы“.

2

Page 3: УМК по СРОД-10-12

Введение

Учебно-методический комплекс (УМК) соответствует дисциплине

«Системы распределенной обработки данных» инновационного учебного плана

по направлению 230200 «Информационные системы». Данная дисциплина

читается на 4 курсе и является продолжением и развитием курса «Управление

данными» (аналогичный курс «Базы данных» имеется в учебном плане 230100

– Информатика и ВТ), который читается для студентов 2-го курса.

УМК ориентирован на подготовку специалистов по профессиям

«Системный архитектор», «Специалист по информационным системам»,

«Администратор баз данных» в соответствии с квалификационными

требованиями стандарта Standart Occupational Classification (SOC).

Предметом данного курса является распределенная обработка данных.

Как правило, термины «распределенная обработка» и «параллельная

обработка» считаются синонимами. Однако, когда говорят только о

параллельной обработке как правило понимают под этим распараллеливание

процессов на многопроцессорных машинах. Когда используют термин

«распределенная обработка», то обычно понимается процесс

распараллеливания процессов в сетях. В настоящее время исследования в

области распределенной обработки заключаются в создании и обслуживании

распределенных баз данных и проектировании приложений, позволяющих

организовать распределенные вычисления.

Основное назначение данного курса - систематическое введение в идеи и

методы, используемые в современных системах распределенной обработки

данных.

В первой главе рассматриваются методы и подходы к распределенной

обработке данных. Рассматривается переход от монопроцессорных машин с

фоннеймановской архитектурой к мультипроцессорным машинам,

3

Page 4: УМК по СРОД-10-12

мультимашинная архитектура, как совокупность компьютеров, связанных в

сеть. Модели удаленного доступа. Архитектура «клиент-сервер».

Во второй главе приведено описание распределенных БД. Факторы,

стимулирующие развитие распределенной обработки данных. Критерии

построения РБД. Классификация и стратегия обработки и размещения данных

по узлам сети. Свойства, которым по К.Дейту, должны удовлетворять РБД. В

качестве основы этого описания были представлены двенадцать целей

распределенной базы данных, хотя при этом отмечалось, что их достижение не

всегда оправдано.

Рассматривается архитектура системы управления РБД и приводится

построения РБД на примере ВУЗа.

Третья глава посвящена проблемам параллельных процессов. Показано,

что единицей взаимодействия с базой данных является транзакция.

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

Конфликты транзакций, возникающие при параллельных процессах и пути их

решения. Показано, что для ускорения обработки данных, необходимо, что бы

расписание выполнялось параллельно, но при этом результат должен

соответствовать последовательному расписанию.

В четвертой главе рассматривается структурированный язык запросов

SQL, как продолжение тех вопросов, которые рассматривались ранее на

младших курсах в дисциплинах «Управление данными» и «Базы данных».

Здесь язык SQL рассматривается в плане его применения в системах MS SQL

Server и Oracle, как встроенный язык с использованием понятия курсора.

Пятая глава посвящена мерам безопасности баз данных. В ней

рассматриваются причины возможных опасностей и пути устранения.

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

данных, предоставление полномочий, введение ограничений целостности и

даже кодирование.

4

Page 5: УМК по СРОД-10-12

В шестой главе приводится информация о таком новом понятии, как

хранилище данных. Из-за огромного количества информации очень малая ее

часть будет когда-либо увидена человеческим глазом. Надежда, это применение

технологий OLAP и Data Mining.

Седьмая глава посвящена применению Web-технологии для доступа к

базам данных в Интернете. Рассматриваются средства взаимодействия

сценарии и возможные языки сценариев.

В восьмой главе рассматривается распределенная СУБД ORACLE.

Системная глобальная область – SGA. Программная область - PGA.

Табличные пространства. Структурированный язык запросов SQL. Основные

операторы. Запросы. Операторы DML. Стандартные функции. Встроенный

SQL. Оптимизация запросов. Процедурный язык PL/SQL ORACLE. Среда

программирования. Команды управления в PL/SQL. Процедуры и функции.

Выполнение запросов в ORACLE. Схема взаимодействия клиентских

приложений с машиной

1. Методы распределенной обработки данных

Прогресс в области средств вычислительной техники предоставил

широкие возможности в области средств управления и обработки данных.

В целях увеличения вычислительных возможностей и для достижения

большего параллелизма по сравнению с мультипрограммированием,

предлагаемым операционными системами, на классические монопроцессорные

машины с фон-неймановской архитектурой были установлены дополнительные

процессоры. Системы, разработанные для мультипроцессорных машин,

называются параллельными операционными системами (Parallel Operating

Systems). Мультипроцессорные машины подразделяются на два семейства:

- жестко связанные или жестко соединенные мультипроцессоры (tightly

5

Page 6: УМК по СРОД-10-12

coupled), в которых процессоры связаны через общую память (рис.1.1.);

- слабо связанные или слабо соединенные мультипроцессоры (loosely coupled),

в которых процессоры связаны через средство связи (как правило, шину),

отличное от общей памяти (рис.1.2.).

Необходимо отметить, что эти виды архитектуры могут сочетаться между

собой: каждый процессор может обладать локальной памятью и делить с

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

обладают одним или двумя уровнями кэширования...

Рис1.1. Жестко связанные мультипроцессоры

Рис 1.2.Слабо связанные процессы

Появление сетей, предназначенных для взаимной связи различных

компьютеров, привело к разработке средств, а затем и операционных систем,

позволяющих осуществлять управление, так называемой, мультимашинной

архитектурой (рис.1.3.), то есть совокупности полносоставных компьютеров

(процессоры, память, вводы-выводы...), связанных в сеть. В этом случае речь

идет о распределенных вычислительных системах.

6

Page 7: УМК по СРОД-10-12

Рис 1.3.Мультимашинная организация

Следует отметить большое сходство между мультимашинной

организацией и архитектурой слабо связанных мультипроцессоров; в обеих

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

Различия заключаются в следующем:

- в случае распределенных систем (мультимашинная архитектура) связь между

процессорами осуществляется относительно медленно (сеть), а системы

независимы;

- в случае параллельных систем (мультипроцессорная архитектура) связь

осуществляется быстро (шина), а системы относительно сильно связаны между

собой.

Возможность взаимодействия подразумевает понятие "открытых систем",

то есть систем, способных к коммуникации в неоднородной среде.

Распределенная обработка данных, таким образом, представляет собой

программу, выполнение которой осуществляется несколькими системами,

объединенными в сеть. Как правило, расчетная часть программы выполняется

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

станции с улучшенной эргономичностью. Разделение опирается на модель

"клиент-сервер".

7

Page 8: УМК по СРОД-10-12

1.1. Цели распределенной обработки данных

Целью распределенной обработки данных является оптимизация

использования ресурсов и упрощение работы пользователя. Что достигается за

счет следующих методов или средств;

- Оптимизация использования ресурсов.

Термин ресурс, в данном случае используется в самом широком смысле:

мощность обработки (процессоры), емкость накопителей (память или диски),

графические возможности (2-х или 3-х мерный графический процессор, в

сочетании с растровым дисплеем и общей памятью), периферийные устройства

вывода на бумажный носитель (принтеры, плоттеры). Эти ресурсы редко

бывают собраны на одной машине: Одна ЭВМ обладает мощными расчетными

возможностями, но не имеет графических возможностей, а также возможностей

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

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

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

программы.

- Упрощение работы пользователя.

Действительно, распределенная обработка данных позволяет:

- повысить эффективность посредством распределения данных и видов

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

- предложить новые возможности, вытекающие из повышения эффективности;

- повысить удобство пользования. Пользователю более нет необходимости

разбираться в различных системах и осуществлять перенос файлов.

Основные недостатки этого подхода заключаются в следующем: -

зависимость от характеристик и доступности сети. Программа не сможет

работать, если сеть повреждена. Если сеть перегружена, эффективность

8

Page 9: УМК по СРОД-10-12

уменьшается, а время реакции систем увеличивается. - проблемы безопасности.

При использовании нескольких систем увеличивается риск, так как появляется

зависимость от наименее надежной машины сети.

C другой стороны, преимущества весьма ощутимы:

- распределение и оптимизация использования ресурсов. Это основная причина

внедрения распределенной обработки данных;

- новые функциональные возможности и повышение эффективности при

решении задач;

- гибкость и доступность. В случае поломки одной из машин, ее пытаются

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

Распределение и параллелизм

Следует отметить, что распределение (или разделение) не является

синонимом параллелизма. Распределение видов обработки состоит в том, чтобы

поручить их машинам, которые наилучшим образом, приспособленным к

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

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

Прозрачность

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

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

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

независимо от местонахождения службы или необходимого ресурса. У

пользователя имеется только один прикладной интерфейс, и он видит перед

собой только один компьютер. С более концептуальной точки зрения,

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

организм, а не как собрание независимых друг от друга объектов. Различают

несколько разновидностей прозрачности, в частности:

- прозрачность доступа: к локальным или удаленным объектам можно

9

Page 10: УМК по СРОД-10-12

обращаться посредством одинаковых операций;

- прозрачность местонахождения: объекты должны быть доступны без

необходимости знать их физическое местоположение;

- прозрачность одновременности доступа: несколько пользователей должны

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

последствий;

- прозрачность копирования: должна существовать возможность копировать

данные из файлов или из других объектов в целях повышения эффективности

или обеспечения доступности незаметно для пользователей;

- прозрачность при неисправностях: пользователи или прикладные программы

должны иметь возможность завершить свои задания, даже в случае

неисправностей аппаратной или программной части;

- прозрачность при динамических изменениях конфигурации: система может

динамически менять свою конфигурацию, в целях повышения эффективности и

в зависимости от нагрузки.

1.2. Модель "КЛИЕНТ-СЕРВЕР"

Клиентом называется объект, запрашивающий доступ к службе или

ресурсу. Сервер - это объект несущий службу или обладающий ресурсом.

Клиент и сервер могут находиться на одной и той же машине

(использование локальных механизмов коммуникации) или на двух разных

машинах (использование сетевых средств). В рамках нашего исследования,

клиентом и сервером являются два процесса UNIX, связанные между собой

через механизм IPC (Interprocess Communication), локальный или сетевой

(рис.1.4.).

Рис 1.4. Модель клиент-сервер10

Page 11: УМК по СРОД-10-12

Клиент и сервер не играют в данном случае симметричную роль.

Процесс-сервер инициализируется и, затем, переходит в состояние ожидания

запросов от возможных клиентов. Как правило, процесс-клиент запускается в

интерактивном режиме и посылает запросы серверу. Сервер исполняет

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

может, и нет. Затем сервер вновь переходит в состояние ожидания других

клиентов.

Различают два типа процессов-серверов:

- итеративные серверы: процесс-сервер сам обрабатывает ответ. Этот тип

сервера используется в случае, если время обработки весьма непродолжительно

или если сервер используется единственным клиентом;

- параллельные серверы: процесс-сервер вызывает для обработки вызова

клиента другой процесс. Этот процесс создается системным вызовом fork ().

Порождающий процесс не блокируется по окончании выполнения

порожденного процесса и может, таким образом, ждать другие запросы.

С каждым сервером связан служебный (сервисный) адрес. Клиент

посылает запросы по этому адресу. В зависимости от вида осуществляемой

обработки данных, различают серверы без состояния (stateless) и серверы с

состоянием (statefull). Сервер без состояния не сохраняет о своих клиентах

никакой информации. Сервер с состоянием сохраняет информацию о состоянии

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

запуск проще у серверов без состояния, но иногда это может привести к

случайным срабатываниям.

11

Page 12: УМК по СРОД-10-12

1.3. Архитектура удаленного доступа

Сервер – это собственно СУБД. Он поддерживает все основные функции

СУБД: определение данных, обработку данных, защиту и целостность данных.

        Клиент – это различные приложения, которые выполняются под СУБД.

Приложения – это программы, написанные на языках программирования С,

Pascal и т.д. Клиент и сервер запускаются на разных машинах.   

    Существуют 2 способа:

1.    Клиент может получать доступ к любому количеству серверов, но лишь к

одному в одно и то же время. При этом пользователь должен знать, на какой

именно машине, какая часть данных содержится (рис.1.5а ).

2.    Клиент может получать доступ к любому количеству серверов

одновременно. В этом случае серверы рассматриваются клиентом как один (с

логической точки зрения), и пользователь может не знать, на какой именно

машине какая часть данных содержится (рис.1.5б).

                                                                                                                              а) б)

Рис.1.5. Модели взаимодействия “клиента” и “сервера”

12

Page 13: УМК по СРОД-10-12

        Появилась возможность использовать ресурсы каждого компьютера

в сети.

Основной принцип технологии «клиент-сервер» применительно к

технологии баз данных заключается в разделении функций стандартного

интерактивного приложения на 5 групп:

1.    Функции ввода и отображения данных (Presentation Logic);

2.    Функции решения задач приложения (Business Logic);

3.    Функции обработки данных внутри приложения (Database Logic);

4.    Функции управления информационными ресурсами (Database Manager

System); (СУБД) (DBMS)

5.    Служебные функции (для связывания первых 4-х групп).

Структура типового приложения, работающего с БД представлена на

рис.1.6.

Рис.1.6. Структура типового приложения “клиента”       

Функции 1-й группы Presentation Logic: 

•    формирование экранных изображений;

•    чтение и запись в экранные формы информации;

•    управление экраном;

•    обработка движений мыши и нажатия клавиш клавиатуры.

Бизнес-логика определяет алгоритм решения конкретных задач

приложения. Обычно этот код пишется с использованием различных языков

программирования, таких как C, C++, Cobol, Visual-Basic.

13

Page 14: УМК по СРОД-10-12

Логика обработки данных - связана с обработкой данных внутри

приложения. Данными управляет собственно СУБД (DBMS). Для обеспечения

доступа к данным используется язык запросов и средства манипулирования

данными стандартного языка SQL. Обычно операторы языка SQL встраиваются

в языки 3-го или 4-го поколения (3GL, 4GL), которые используются для

написания кода приложения.

1.4. Модели удалённого доступа

Модель файлового сервера “файл-сервер”(File Server, FS)

В этой модели презентационная логика и бизнес-логика располагаются 

на клиенте (рис.1.7). На сервере располагаются файлы с данными и

поддерживается доступ к файлам. Функции управления информационными

ресурсами находятся на клиенте.

Рис.1.7. Модель файлового сервера

        В этой модели файлы БД хранятся на сервере, клиент обращается к

серверу с файловыми командами, а механизм управления всеми

информационными ресурсами, собственно база метаданных, находится на 14

Page 15: УМК по СРОД-10-12

клиенте (метаданные – это данные о данных). Информация о хранимых данных:

таблицы описания данных и связей, адресные таблицы и т.п. Достоинства этой

модели в том, что мы имеем  разделение монопольного приложения на два

взаимодействующих процесса. При этом сервер может обслуживать множество

клиентов, которые обращаются к нему с запросом. Собственно СУБД должна

находиться в этой модели на клиенте.  

      Каков алгоритм выполнения запроса клиента? Запрос клиента

формируется в командах ЯМД. СУБД переводит этот запрос в

последовательность файловых команд. Каждая файловая команда вызывает

передачу блока информации на клиента, далее на клиенте СУБД анализирует

полученную информацию, и если в полученном блоке не содержится ответа на

запрос, то принимается решение о передаче следующего блока информации и

т.д.

Достоинства:

Простота логики

Низкие требования к аппаратному обеспечению

Малый объем требуемой памяти

Невысокая цена СУБД

Недостатки

Отсутствие многопользовательского режима

•    высокий сетевой трафик, который связан с передачей по сети

множества блоков и файлов, необходимых приложениям;

•    узкий спектр операций манипулирования с данными;

•    отсутствие адекватных средств безопасности доступа к данным.

Модель «клиент-сервер» с бизнес-логикой на клиенте

Здесь БД хранится на сервере и ядро СУБД на сервере (рис.1.8). На

клиенте располагаются презентационная логика и бизнес-логика приложения.

Клиент обращается к серверу с запросами на языке SQL.

15

Page 16: УМК по СРОД-10-12

Рис.1.8. Модель “клиент-сервер”Преимущества:

Резко уменьшается загрузка сети, так как по ней от клиентов к серверу

передаются не запросы на ввод/вывод файлов, а запросы SQL, а их объём

существенно ниже. В ответ на запросы клиент получает только данные,

релевантные запросу, а не блоки файлов, как в FS-модели.

Недостатки:

•    SQL – запросы при интенсивной работе клиентских приложений могут

существенно загрузить сеть;

*   Дублирование кода приложения при одинаковых запросах для каждого

клиентского приложения;

•    Сервер в этой модели играет пассивную роль.

Данная модель и предыдущие модели называются моделями с «толстым

клиентом».

Модель «клиент-сервера» с бизнес-логикой на сервере

        Данную модель поддерживает большинство современных СУБД:

Informix, Ingres, SyBase, Oracle, MS SQL Server. Основу данной модели

составляет механизм хранимых процедур (ХП) как средство программирования

SQL-сервера, механизм триггеров как механизм отслеживания текущего

16

Page 17: УМК по СРОД-10-12

состояния информационного хранилища и механизм ограничений на

пользовательские типы данных (рис.1.9).

Рис.1.9. Модель “сервера БД”

В этой модели бизнес-логика разделена между клиентом и сервером. На

сервере бизнес-логика реализована в виде хранимых процедур – ХП. Хранимые

процедуры это специальные программные модули, которые хранятся в БД и

управляются непосредственно из СУБД. Клиент обращается к серверу с

командой запуска ХП, а сервер выполняет эту процедуру и регистрирует все

изменения в БД. Сервер возвращает клиенту данные, релевантные его запросу.

Трафик обмена информацией резко уменьшается. Централизованный контроль

выполняется и с использованием механизма триггеров.

        Триггер в БД является как бы некоторым тумблером, который срабатывает

при возникновении определённого события в БД. При возникновении

соответствующего события, сервер запускает соответствующий триггер.

Триггеры могут вызывать ХП.

       Для написания ХП и триггеров используется расширение стандартного

языка SQL, так называемый, встроенный SQL. Недостаток - большая загрузка

сервера. Данную модель называют с «тонким клиентом» в отличие от

предыдущих моделей.

Хранимые процедуры (ХП)

17

Page 18: УМК по СРОД-10-12

          ХП – это подпрограммы, которые выполняются на сервере. ХП

хранятся в БД. Удобство, что одна процедура может быть использована в

любом количестве клиентских приложений. Хранимые процедуры могут быть

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

   ХП могут быть написаны на собственных ЯП СУБД. Так в СУБД Oracle

для этого используется язык PL/SQL, а в MS SQL Server используется язык

Transact SQL.   

      Пример.         Create proc pr1   As   Select *           From stud            Where spec=”2201”ХП вызывается оператором EXEC <имя проц.><значение входного

параметра><имя переменной для выходного параметра>

EXEC pr1

Триггеры

Триггер – это специальный вид ХП, который вызывается при выполнении

операций модификации соответствующих таблиц. Триггер автоматически

активизируется при выполнении операции, с которой он связан. Для создания

триггеров используется специальная команда:     

Create trigger <имя триггера>

On <имя таблицы>  For {[insert][update][.delete]}   - [with encripting] AS

     SQL – операторы (тело триггера)

Достоинства

Пониженные требования к пропускной способности сети.

Более простой процесс создания бизнес-логики.

Недостатки

Повышенные требования к серверу БД.

Требования большей памяти.

Невысокая переносимость (мобильность) системы на другие

серверы БД.

18

Page 19: УМК по СРОД-10-12

1.5. Многоуровневые модели. Модель сервера приложений

        Эта модель является расширением двухуровневой модели и в ней

вводится дополнительный промежуточный уровень между клиентом и

сервером. Этот промежуточный уровень содержит один или несколько

серверов приложений (рис.1.10).

Рис.1.10. Модель сервера приложений

•    Сервер приложений (СП) составляет новый промежуточный уровень

архитектуры. Они спроектированы для исполнения общих не загружаемых

функций для клиентов. СП хранят и исполняют наиболее общие правила

бизнес-логики, поддерживают каталоги с данными, обеспечивают обмен

сообщениями и поддержку запросов.    Сервер БД в этой модели занимается

исключительно функциями СУБД.        Эта модель обладает большей

гибкостью. В этой модели большая часть бизнес-логики клиента изолированы

от возможностей встроенного SQL, реализованного в конкретной СУБД. Это

повышает переносимость системы.

Достоинства

Высокая производительность.

Возможность создания системы с массовым параллелизмом.

Повышенная защищенность.

Легкость развития и модификации.

Легкость администрирования.19

Page 20: УМК по СРОД-10-12

1.6. Физическая модель СРОД

В настоящее время в области телекоммуникационных технологий

высокопроизводительные компьютерные сети - наиболее динамично

развивающееся звено. Сейчас, практически в любом офисе, организации

компьютеры объединены в локальные сети, многие - имеют выходы в

глобальную мировую сеть по интернетовскому протоколу или другим LAN

протоколам.

Наиболее популярной и распространенной сетью является стандарта

Ethernet. На рисунке 1.11. приведены подсемейства Ethernet с разной скоростью

передачи данных и некоторые стандарты кабельных соединений.

Рис.1.11. Сеть Ethernet

Основные понятия сетевой терминологии

1. Устройство, являющееся источником/приемником сетевого

трафика называется узлом. Узел всегда имеет сетевой адрес. Примеры

узлов: компьютер, принтер, маршрутизатор, HUB.

20

Page 21: УМК по СРОД-10-12

2. Кабелем называется несколько проводников, объединённых общей

защитной оболочкой. Проводниками могут быть как медные или

стальные провода, так и стекловолокна.

3. Участок сети, выполненный из кабеля одного типа, называется

кабельным сегментом.

4. Подсоединение узлов по длине коаксиального сегмента называется

шинной топологией.

5. Подсоединение узлов к центральному концентратору

(многопортовому повторителю) посредством витой пары или

оптоволоконного кабеля точечного сегмента называется звездообразной

топологией.

6. Концентратор (HUB) - устройство, повторяющее все сигналы (в том

числе и коллизионные) по всем портам.

7. Маршрутизатор - устройство, позволяющее определять и назначать

маршрут следования сигналов.

8. Мост - устройство, позволяющее фильтровать сигналы сети и

пропускать определённые пакеты.

9. Локальная вычислительная сеть (ЛВС) - это набор соединённых

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

данных (трафик) в виде стандартных сигналов.

Вопросы

1. Методы распределенной обработки данных.

2. Отличие мультимашин от мультипроцессоров

3. Цели распределенной обработки данных.

21

Page 22: УМК по СРОД-10-12

4. Стандартные функции модели «клиент-сервер»

5. Каковы основные функции Presentation Logic?

6. Какая функция определяет алгоритм решения задач приложения?

7. Каковы недостатки модели файлового сервера?

8. В чем отличие модели файлового сервера (FS) от модели удаленного

доступа (RDA).

9. Недостатки модели удаленного доступа (RDA).

10. Какие модели называются моделями с «толстым клиентом» и почему?

11.Какие модели можно отнести к моделям с “толстым клиентом” и к

моделям с “тонким клиентом”.

12.Какие объекты составляют основу модели «сервера БД»?

13.Преимущества модели “сервера БД”.

14.С какой целью используются хранимые процедуры (ХП) и триггеры?

15.Что такое сервер приложений?

16.Назовите основные понятия сетевой терминологии.

2. Распределенные базы данных

2.1. Предпосылки возникновения РБД

Основная задача систем управления распределенными базами данных

состоит в

22

Page 23: УМК по СРОД-10-12

обеспечении средства интеграции локальных баз данных,

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

пользователь, работающий в любом узле сети, имел доступ ко всем этим базам

данных как к единой базе данных.

При этом должны обеспечиваться:

• простота использования системы;

• возможности автономного функционирования при нарушениях

связности сети или при административных потребностях;

• высокая степень эффективности.

Фундаментальный принцип. Для пользователя распределенная система

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

Иначе говоря, работу пользователей в распределенной системе следует

организовать таким же образом, как если бы она не была распределенной. Все

связанные с распределенными системами проблемы являются (или должны

быть) внутренними и должны возникать только на внутреннем уровне или

уровне разработки, а не на внешнем уровне или на уровне пользователей.

Возникновением РБД обусловлены двумя противоположными

тенденциями обработки данных: интеграцией и децентрализацией. Интеграция

обеспечивает единый взгляд на данные, централизацию управления и ведения

баз данных. Децентрализация позволяет приблизить хранение данных к местам

их возникновения или обработки, ускоряет и удешевляет обработку.

Под распределенной (Distributed DataBase - DDB) обычно понимают базу

данных, декомпозированную и фрагментированную на несколько узлов

вычислительной сети, с возможным управлением различными СУБД.

2.2. Режимы работы с БД

На рис.2.1 приведены режимы работы с базой данных при удаленном

доступе. Параллельный доступ к одной БД нескольких пользователей в том

23

Page 24: УМК по СРОД-10-12

случае, если БД расположена на одной машине, соответствует режиму

распределённого доступа к централизованной БД. (Такие системы называются

системами распределённой обработки данных).

Рис.2.1. Режимы работы с БД        Если же БД распределена по нескольким компьютерам, расположенным в

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

имеем дело с параллельным доступом к распределённой БД. Подобные системы

называются системами распределения баз данных.        В 90-х годах наметили

переход от отдельных mainframe – систем к открытым распределённым

системам. На первых порах при использовании модели «клиент-сервер»

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

некоторым монопольным блоком. Но при монопольном исполнении

используются ресурсы только одного компьютера, а остальные компьютеры в

сети рассматриваются как терминалы. Но теперь в отличие от эпохи

майнфреймов при распределённой обработке используется архитектура

«клиент-сервер».

РБД представляет собой базу данных, отдельные части которой

размещены (возможно, с дублированием) на нескольких ЭВМ сети. 60-е - 70-е –

24

Page 25: УМК по СРОД-10-12

80-е гг. - появление и развитие централизованных вычислительных систем. 80-

90 – появились распределённые системы. Широко используемые ранее в 60-70-

х годах иерархические и сетевые модели данных плохо приспособлены для

организации РБД. Так как там требуется использование явных адресных

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

языка манипулирования данными (ЯМД), что ведёт к увеличению

периодических сообщений по ЛВС. 80-90г. - используются реляционные базы

данных, которые не требуют поддержки явных адресных указателей, наличие

непроцедурного языка даёт возможность упростить формулировку сложных

запросов. При проектировании РБД обязательно выполняется фрагментация

данных – разбиение исходного объекта глобального типа на отдельные части и

размещение их на разных ЭВМ. Для получения информации о размещении

данных по сети вводится специальный словарь-справочник данных (ССД).

Фрагментация может быть горизонтальной (a, b) или вертикальной (1,2 - 3,4),

см. рис.2.2.

Рис.2.2. Фрагментация данных

        При проектировании РБД выдвигается ряд требований: быстрая обработка

запросов, безопасность, секретность, логическая и физическая независимость

данных, прозрачность.

Эти требования означают, что пользователи не замечают

распределенность данных, что при одновременной модификации одних и тех

же данных разными пользователями сохраняется целостность данных. А также

понимается независимость пользователей и ПП от типа ЛВС и применяемого

сетевого программного обеспечения. Пользователь не должен замечать, что его

запрос обрабатывается, возможно, на нескольких ЭВМ.

25

Page 26: УМК по СРОД-10-12

Существуют понятия системы распределенных баз данных (СРБД) и

системы распределения обработки данных (СРОД). В СРБД базы данных

распределены между несколькими (возможно, территориально разобщенными)

ЭВМ. В СРОД возможен параллельный доступ нескольких пользователей к

централизованной базе данных. Основной целью СРБД является обеспечение

управляемого доступа и независимого обращения к данным, распределённым в

сети ЭВМ. Под управляемым доступом понимается степень безопасности,

необходимая для защиты данных от неавторизованного доступа. Независимость

обращения или разделимость, позволяет пользователям получить доступ к

данным через различные, подчас значительно удалённые вычислительные

средства. Сеть ЭВМ представляет совокупность неоднородных

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

каналами связи.

Технологические проблемы в РБД делят на 2 категории: 1. проблемы

проектирования; 2. проблемы реализации, затрагивающие функционирование

распределённой системы.

Факторы, стимулирующие развитие распределённой обработки данных.

• Снижение стоимости процессора (мини ЭВМ);

• Повышение квалификации конечного пользователя;

• Неудовлетворённость пользователя работой централизованных групп;

• Творчество пользователей;

• Высокая стоимость телефонных каналов;

• Теледоступ к базам данных;

• Развитие сетевого программного обеспечения;

• Секретность. В распределённых системах легче обеспечить секретность,

поскольку в них не складываются, «все яйца в одну корзину»;

• Перегрузка центральных процессоров.

РБД должна обладать (требования):

26

Page 27: УМК по СРОД-10-12

- Локальными и глобальными(распределенными) средствами доступа к

данным(СУБД).

- Единообразной логикой прикладных программ во всех АРМах сети.

- Малым временем реакции на запросы пользователей

- Надежностью, исключающей разрушения целостности системы в случае

выхода из строя ее отдельных компонент(узлов)

- Открытостью, позволяющей наращивать объем локальных БД и добавлять

новые АРМ

- Развитой системой backup-пирования и восстановления данных на случай

сбоев

- Защищенностью, следящей за соблюдением привилегий доступа к данным

- Высокой эффективностью, за счет выбора оптимальных алгоритмов

использования сетевых ресурсов

- Развитым репликационным механизмом, позволяющим размещать

обновленные копии данных в сети оптимальным образом.

- Минимизация интенсивности обмена данными (сетевого трафика)

- Оптимальным размещением серверных и клиентских приложений в сети

- Декомпозиция данных на часто и редко используемые сегменты (для

правильной настройки репликации - размещение наиболее часто

используемых данных на АРМ конечных пользователей)

- Периодическое сохранение копий данных и выполнение действий по

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

Критерии построения РБД.

1. Всесторонний анализ информационных потребностей предметной

области с выявлением объемов хранимых данных их сложности,

достоверности, взаимосвязанности.

2. Моделирование предполагаемого сетевого трафика при работе РБД

с различными моделями репликации данных.

27

Page 28: УМК по СРОД-10-12

3. Кластеризация элементов данных и программ их обработки. Цель-

добиться максимальной автономности и слабосвязанности кластеров.

4. Привязка кластеров данных к вероятным пользователям или АРМ.

5. Поддержка эталонной копии данных и ограничение

репликационного механизма

6. Разработка и реализация правил приведения локальных и

центральной БД в непротиворечивое состояние.

2.3. Классификация систем по способам обработки данных

Данные могут храниться двумя способами – непосредственно в виде

файлов или в базах данных. Файлы обычно создаются для работы с одной

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

программиста о файле практически соответствует физической структуре файла.

Распределённые данные часто организуются в форме файлов, а не в форме баз

данных. Данные могут храниться централизовано или децентрализовано, что

диктуется существом самих хранимых данных. Например, если файл

непрерывно обновляется, а территориально разобщённые пользователи должны

получать всякий раз последнее состояние данных (как в файле резервирования

авиабилетов), то естественно такой файл централизовать. Данные обычно

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

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

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

обновления или при автономном обновлении (off-line) допустимо хранение

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

        Рассмотрим различные типы систем, различающихся по характеру

распределения данных.

1.    Системы с централизованными данными:

28

Page 29: УМК по СРОД-10-12

Рис.2.3. Системы с централизованными данными

При наличии нескольких Хост-машин они могут либо находиться в том

же месте, где размещены и данные, либо быть удалены от них.

2.     Иерархические системы (рис.2.4)

Различают:  иерархии - зависимые системы и иерархии – независимые системы

        В схеме иерархии зависимых системах данные в машинах нижнего

уровня тесно связаны с данными в машине верхнего уровня. Зачастую они

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

локальных приложениях. Эталонная копия данных (master copy) при этом

может храниться на верхнем уровне. При внесении изменений в данные на

нижнем уровне эти изменения должны передаваться в машину верхнего уровня

– иногда немедленно, иногда позднее. В других системах такого типа нижний

уровень может содержать те же данные, что и верхний, и ещё свои

собственные, которые никогда не передаются наверх. Например, на нижнем

уровне могут храниться адреса клиентов и более детальная информация о них.

Эти данные, занимающие большой объём, обычно не требуются на верхнем

уровне. Верхний же уровень может хранить номера клиентов, их имена,

сведения о кредитах и заказах. Это - избыточная информация. Она повторяется

на обоих уровнях, и любая её модификация на нижнем уровне должна

передаваться на верхний уровень. 

В схеме иерархии независимых данных все процессоры представляют

собой независимые замкнутые системы обработки данных. Структура данных

на машинах нижнего уровня отличается от структуры на верхнем уровне.

29

Page 30: УМК по СРОД-10-12

Пример: нижний уровень предназначен для рутинных повторяющихся

(массовых) операций: приёма заказов, контроля выпуска продукции,

управления складом и т.п. В машинах верхнего уровня, расположенной

возможно, при главном управлении предприятием, находится информационная

система, которая должна снабжать необходимой информацией руководство,

планирующие подразделения, отделы, разработчиков новых изделий и

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

суммируются, редактируются, реорганизуются с помощью вторичных индексов

или иных методов поиска, чтобы обеспечить ответы на разнообразные, часто

заранее непредвиденные вопросы.

Рис.2.4. Иерархические системы

3. Расщепленные данные:

30

Page 31: УМК по СРОД-10-12

       Рис.2.5. Системы с расщепленными данными

В схеме, соответствующей системе с расщеплёнными данными имеются

несколько систем с идентичными структурами данных. Система в районе А

хранит данные района А, система в районе В хранит данные района В и т.д.

Большинству обрабатываемых транзакций требуются только те данные,

которые находятся в обрабатывающей системе, но в некоторых случаях для

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

данные из другого района. В системах с расщеплёнными данными прикладные

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

программирование для всех машин выполняет одна общая группа

разработчиков.

4.    Разделенные данные:

31

Page 32: УМК по СРОД-10-12

Рис.2.6. Системы с разделенными данными

В системах с разделёнными данными (рис.2.6) объединённые в сеть

подсистемы содержат разные данные и разные программы и, как правило,

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

одну и ту же частную корпорацию или государственное учреждение.

Компьютеры получают возможность запрашивать данные друг у друга.

    На схеме одна из подсистем связана с производством, другая – со

снабжением (закупками), а третья – с бухгалтерией. Подсистема

территориально разделена. Подсистема управления производством,

расположенная возможно, на заводе, формирует заявки на поставки,

передаваемые подсистеме снабжения. И производственная подсистема, и

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

главную бухгалтерию.

4. Реплицированные (дублированные) данные:

32

Page 33: УМК по СРОД-10-12

Рис.2.7. Системы с дублированными данными

В системе с реплицированными данными идентичные копии данных

хранятся в разных местах, потому что дублирование памяти позволяет

избежать передачи больших объёмов данных, и это оказывается дешевле. Такая

организация имеет смысл только в тех случаях, когда объём обновлений

невелик.

Достоинство: при дублировании очень высокая надежность.

Недостаток: приходится  часто обновлять информацию, копировать.

6.    Гетерогенные системы:

Рис.2.8. Гетерогенные системы

33

Page 34: УМК по СРОД-10-12

    На рис.2.8 приведена гетерогенная система. Она состоит из

независимых вычислительных систем, установленных различными

организациями для решения своих специфических задач.

7. Комбинированные формы распределённых данных

Рис.2.8. Комбинированные системы

РОД ставит много новых проблем: Какие функции должны быть

централизованы, а какие децентрализованы? Где должны храниться данные?

Какая конфигурация больших машин, малых машин и интеллектуальных

терминалов окажется наилучшей для обслуживания заказчика?

2.4. Однородные и неоднородные системы БД

Распределённые системы часто строятся путём «интеграции»

разнородных аппаратных и программных средств. Следовательно, должен быть

сделан выбор между однородной и неоднородной вычислительной системой. В

случае однородных СУБД нет проблем ни с моделями данных, ни с языками

запросов, ни с другими средствами. Всё это совпадает с тем, что

34

Page 35: УМК по СРОД-10-12

поддерживается несколько СУБД. Для неоднородных СУБД вопросы

усложняются. Использования неоднородных СУБД обычно является

следствием формирования РБД из ряда существовавших ранее автономных баз

данных. Стоящая перед разработчиками цель – достичь прозрачного доступа,

что представляет собой нечто большее, чем простое обеспечение доступа к

удалённым СУБД и их базам данных.

Прозрачность может быть реализована двумя методами:

1. Дать пользователю интерфейс, предоставляемой данной локальной

СУБД. То есть, имеющаяся схема должна быть расширена для включения

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

каждом узле возможность обращения к данным любого другого узла

независимо от модели данных. Схемы других узлов должны преобразовываться

в схему данного узла. Таких преобразований будет n(n-1), где n – число узлов.

При большом числе n такая схема будет слишком сложной.

2. Использование единого для всей сети стандартного пользовательского

интерфейса (единого протокола). В этом случае все пользователи используют

общий интерфейс. Должна существовать единая схема сетевой БД. Каждому

типу локальной СУБД должен соответствовать свой тип преобразования схемы.

При этом используется лишь n типов преобразований. Недостаток –

пользователь должен изучить новую систему – сетевую СУБД.

В настоящее время для взаимодействия с различными СУБД

используются специальные средства:

1. ODBC (Open Date Base Connectivity) – разработка фирмы

Microsoft.

2. BDE (Borland Database Engine) – фирма Borland.

3. CGI (Common Gateway Interface) – сценарий в рамках

Интернета.

35

Page 36: УМК по СРОД-10-12

Дифференциальные файлы (ДФ)

ДФ в БД аналогичны списку опечаток в книге. Вместо того, чтобы

печатать новое издание книги, всякий раз, когда требуется внести изменения в

текст, составляется список исправлений с указанием страниц. При достаточно

большом списке опечаток производится реорганизация, т.е. создаётся новая

книга.

Обновление больших баз данных ставит аналогичную задачу. Вместо того,

чтобы каждый раз модифицировать БД при каждой транзакции удобнее

использовать файл изменений (ДФ).

Предварительное обращение к ДФ при операциях выборки является

эффективным средством к самому последнему состоянию БД. Когда ДФ

достигнет достаточно больших размеров, проводится реорганизация.

2.5. Стратегия размещения данных в РБД по узлам сети

Достоинства и недостатки.

Стратегия распределения данных по узлам сети ЭВМ могут

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

наличия дублирования информации, а также архитектурой системы и

программным обеспечением СУБД. Рассмотрим четыре альтернативные

стратегии распределения данных:

1. Централизация (единственная копия базы данных,

расположенная в одном узле).

Достоинства. Все операции под контролем центрального узла.

Недостатки. - Затраты на связь и временные задержки.

- Ограничения при параллельной обработке.

- Ограничения объема.

- Ограничения доступа к данным и надежности.

36

Page 37: УМК по СРОД-10-12

2. Расчленение (единственная копия БД, непересекающиеся

подмножества распределены по различным узлам).

Достоинства. – Увеличение объема памяти.

- Снижение стоимости связи.

- Время отклика меньше по сравнению с

централизованной БД.

- Выше доступность и надежность.

- Локализация ссылок (так как, данные располагаются в

узлах таким образом, что запрашиваются пользователями только

этих узлов).

3. Дублирование (несколько копий БД, в каждом узле располагается

полная копия всех данных).

Достоинство. - Надежность, доступность и эффективность выборки.

- Простота восстановления.

Недостаток. - Большие затраты в объеме памяти.

- Необходимость синхронизации для согласования копий.

4. Смешанная (несколько копий подмножеств БД, в каждом узле

может содержаться произвольный фрагмент БД).

Достоинство. Гибкость. Например, архивные данные могут хранится в

одном месте, а критические данные могут дублироваться для повышения

надежности).

Недостаток. – Необходимо хранить информацию о том, где находятся

данные в сети.

- Необходимость согласования произвольного количества

хранимых фрагментов данных.

Принципы построения РБД.

Распределенные архитектуры БД принято подразделять по типам на

37

Page 38: УМК по СРОД-10-12

Системы недублирующего разбиения (при большом объеме

часто меняющихся данных)

Системы частичного дублирования (при небольшом объеме

часто меняющихся данных)

Системы полного дублирования (при небольшом объеме

редко меняющихся данных)

2.6. Свойства распределенных баз данных

В заключении сформулируем ряд свойств, которым по К. Дейту1) должна

удовлетворять РБД:

Локальная автономия

Это качество означает, что управление данными на каждом из узлов

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

на одном из узлов, является неотъемлемым компонентом распределенной

системы. Будучи фрагментом общего пространства данных, она, в то же время

функционирует как полноценная локальная база данных; управление ею

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

Независимость узлов

В идеальной системе все узлы равноправны и независимы, а

расположенные на них базы являются равноправными поставщиками данных в

общее пространство данных. База данных на каждом из узлов самодостаточна -

она включает полный собственный словарь данных и полностью защищена от

несанкционированного доступа.

Непрерывные операции

Это качество можно трактовать как возможность непрерывного доступа к

данным (известное "24 часа в сутки, семь дней в неделю") в рамках DDB вне

зависимости от их расположения и вне зависимости от операций, выполняемых

38

Page 39: УМК по СРОД-10-12

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

всегда, а операции над ними выполняются непрерывно".

Прозрачность расположения

Это свойство означает полную прозрачность расположения данных.

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

физическом размещении данных в узлах информационной системы. Все

операции над данными выполняются без учета их местонахождения.

Транспортировка запросов к базам данных осуществляется встроенными

системными средствами.

Прозрачная фрагментация

Это свойство трактуется как возможность распределенного (то есть на

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

единое целое. Существует фрагментация двух типов: горизонтальная и

вертикальная. Первая означает хранение строк одной таблицы на различных

узлах (фактически, хранение строк одной логической таблицы в нескольких

идентичных физических таблицах на различных узлах). Вторая означает

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

Прозрачное тиражирование

Тиражирование данных - это асинхронный (в общем случае) процесс

переноса изменений объектов исходной базы данных в базы, расположенные на

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

тиражирования означает возможность переноса изменений между базами

данных средствами, невидимыми пользователю распределенной системы.

Данное свойство означает, что тиражирование возможно и достигается

внутрисистемными средствами.

Обработка распределенных запросов

Это свойство DDB трактуется как возможность выполнения операций

выборки над распределенной базой данных, сформулированных в рамках

обычного запроса на языке SQL. То есть операцию выборки из DDB можно

39

Page 40: УМК по СРОД-10-12

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

локальной базой данных.

Обработка распределенных транзакций

Это качество DDB можно трактовать как возможность выполнения

операций обновления распределенной базы данных (INSERT, UPDATE,

DELETE), не разрушающее целостность и согласованность данных. Эта цель

достигается применением двухфазового или двухфазного протокола фиксации

транзакций (two-phase commit protocol), ставшего фактическим стандартом

обработки распределенных транзакций. Его применение гарантирует

согласованное изменение данных на нескольких узлах в рамках распределенной

(или, как ее еще называют, глобальной) транзакции.

Прозрачность сети

Доступ к любым базам данных может осуществляться по сети. Спектр

поддерживаемых конкретной СУБД сетевых протоколов не должен быть

ограничением системы с распределенными базами данных. Данное качество

формулируется максимально широко - в распределенной системе возможны

любые сетевые протоколы.

Независимость от оборудования

Это свойство означает, что в качестве узлов распределенной системы

могут выступать компьютеры любых моделей и производителей - от

мэйнфреймов до "персоналок".

Независимость от операционных систем

Это качество вытекает из предыдущего и означает многообразие

операционных систем, управляющих узлами распределенной системы.

Независимость от систем управления

Это качество означает, что в распределенной системе могут мирно

сосуществовать СУБД различных производителей, и возможны операции

поиска и обновления в базах данных различных моделей и форматов.

40

Page 41: УМК по СРОД-10-12

2.7. Функции и архитектура СУРБД

1. Автоматическое определение ЭВМ, на которой хранятся требуемые в

запросе данные;

2. Декомпозиция общего запроса на частные подзапросы к БД;

3. Планирование обработки запросов;

4. Передача частных подзапросов и их исполнение на удалённых ЭВМ;

5. Поддержание копий дублированных данных;

6. Управление параллельным доступом к РБД многих пользователей;

7. Обеспечение целостности РБД.

    Архитектура распределённых СУБД имеет многоуровневую архитектуру

(5 уровней).( См.рис.2.9.)

1 часть.  Верхние 4 уровня: процессоры – пользовательский, глобальный

логический, фрагментный и распределённый. Они входят в сетевую СУБД.

2 часть.  Нижний уровень – процессор узлового уровня. Относят к локальной

СУБД.

Каждый из этих уровней поддерживает различные представления базы

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

смежными уровнями представления. Самым верхним уровнем структуры

является интерфейс прикладной программы или интерфейс процессора

запроса.   Второй уровень дает глобальное представление базы данных.

Существование 3 и 4-го уровней представления объясняется

распределённой природой базы данных и решением использовать управляемую

избыточность. Третий уровень представления – фрагментное представление.

Используя это представление, АБД определяет несвязанное подмножество базы

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

подмножеством строк в таблице.

          

41

Page 42: УМК по СРОД-10-12

Рис.2.9. Архитектура распределенной СУБД Каждый уровень представления БД необходим для того, чтобы в явном

виде представлять определённый аспект логической или физической структуры

базы данных.

2.8. Распределенная база данных на примере ВУЗа

Далее показаны логические фрагменты базы данных. В рассмотренном

примере таблица Географическое расположение экземпляров каждого

фрагмента определены на 4-м уровне представления – представления

распределения. В этом представлении разрешается существование нескольких

физических копий одного фрагмента.

Ниже приведён пример «Вузовская БД», иллюстрирующий задачи

уровней представления данных. В этом примере БД представлена в виде

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

представления  1-й уровень, называемый глобальным логическим уровнем

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

как она представляется с точки зрения администратора БД. Этот уровень

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

42

Page 43: УМК по СРОД-10-12

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

использования. Эта часть является подмножеством глобального логического

представления и подобна внешнему представлению.

Имеются три отношения: Студенты, факультеты, Дисциплины.

Студенты (N, ФИО, Факультет, Стипендия)

Факультеты (Nф, Наим)

Дисциплины (Nд, Наим_Д, Кол_час)

Глобальный уровень:

Рис.2.10. Глобальный уровень представленияФ1,Ф2,Ф3 – фрагменты табл.Студенты, Фа-фрагмент табл.Факультеты,

ФА,ФВ,ФС – фрагменты табл.Дисциплины

Распределенный уровень:

43

Page 44: УМК по СРОД-10-12

Рис.2.11. Распределенный уровень         Иллюстрирует распределение и дублирование хранимых фрагментов в

трёхузловой системе в соответствии с факультетами 1,2,3.

Хранимые фрагменты являются физической реализацией логических

фрагментов. Размещение фрагментов представлено в таблице (рис.2.12.)

Таблицы Фрагменты УзлыСтуденты Ф1

Ф2

Ф3

12,13,1

Факультеты Фa 1,2,3Дисциплины ФА

ФВ

ФС

123

Рис.2.12. Таблица размещения фрагментов базы данных.

Уровень узлового представления:

Рис.2.13. Узловое представление базы данных.

44

Page 45: УМК по СРОД-10-12

Конечное, или локальное, представление есть представление части базы

данных, существующей в конкретном узле (отсюда «локальные»). Безусловно,

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

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

логической структурой, а физическая структура при этом является скрытой.

Вопросы

1. Режимы работы с базой данных.

2. Стратегия размещения данных по узлам сети.

3. В чем отличие расщепленных данных от разделенных.

4. Иерархические системы.

5. Свойства распределенных баз данных.

6. Функции систем управления РБД.

7. Архитектура распределенных СУРБД.

8. Пример РБД.

9. Укажите достоинства и недостатки централизованных систем.

10. Каковы преимущества расчлененных баз данных?

11. Укажите отличительные черты однородных и неоднородных БД.

12. С какой целью используются дифференциальные файлы.

13. Укажите достоинства и недостатки различных стратегий размещения

данных.

3. Параллельные процессы (или процесс транзакций)

3.1. Транзакции

    Транзакцией называется последовательность операций, произведённых

над БД и переводящих БД из одного непротиворечивого (согласованного)

состояния в другое непротиворечивое (согласованное) состояние.

45

Page 46: УМК по СРОД-10-12

      Транзакция – это логическая единица работы. Транзакция – это

разовый прогон программы.         Транзакция - это единица взаимодействия с

базой данных. Логическая единица работы - не просто одиночная операция

системы, а скорее согласование нескольких таких операций (например,

добавление + изменение какого-либо кортежа). В общем, это преобразование

одного согласованного состояния базы данных в другое, причём в

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

        Из этого следует, что не допустимо, чтобы одно из обновлений было

выполнено, а другое нет, так как БД останется в несогласованном состоянии. В

идеальном случае должны быть выполнены оба обновления. В плохом случае,

система между двумя обновлениями может быть разрушена.

        Но система, обеспечивающая процесс транзакции гарантирует, что

если во время выполнения неких обновлений произошла ошибка, то все эти

обновления будут аннулированы. Таким образом, транзакция или выполняется

полностью, или полностью отменяется.

Оператор COMMIT TRANSACTION сигнализирует об успешном

окончании транзакции. Оператор ROLLBACK TRANSACTION сигнализирует о

неудачном окончании транзакции. Все обновления должны быть

аннулированы.

Для этого используется файл регистрации (журнал), где записываются

детали всех операций обновления. Оператор COMMIT и ROLLBACK

завершают транзакцию, а не программу. Программа может выполнять

несколько транзакций. Сама программа завершается оператором RETURN.

Модели транзакций

        В стандарте ANSI/ISO SQL определена модель транзакций. Стандарт

определяет, что транзакция начинается с первого SQL-оператора. Все

последующие SQL-операторы составляют тело транзакции. Транзакция

46

Page 47: УМК по СРОД-10-12

завершается оператором COMMIT (успешное завершение) или ROLLBACK

(прерывает транзакцию) (рис.3.1).

a) b)Рис.3.1. Выполнение транзакций

а) успешное выполнение, в)аварийное завершение       В некоторых СУБД (например SYBASE) транзакции начинаются явно

оператором BEGIN TRANSACTION.

    Иногда транзакция откатывается полностью, иногда (в некоторых

СУБД) в промежуточные точки. Для сокращения промежуточных состояний,

используется журнал транзакций.

Рис.3.2. Выполнение программы Р; Т1 Т2 Т3 - транзакции

47

Page 48: УМК по СРОД-10-12

Транзакция – это не только логическая единица работы, но также единица

восстановления. 

Свойства транзакций

Транзакция обладает 4 свойствами: атомарность, согласованность,

изоляция и долговечность (АСИД)

  Атомарность означает, что выполняется всё или ничего.

Согласованность. Транзакция защищают БД согласованно, т.е. переводят

одно согласованное состояние в         другое без обязательной поддержки

согласованности во всех промежуточных точках.  

  Изоляция. Транзакции отделены одна от другой. Т.е. любое обновление

одной транзакции будет скрыто от     остальных до тех пор, пока эта транзакция

выполняется. Пусть имеем Т1 и Т2. Тогда справедливо  утверждение: Т1

сможет увидеть обновление Т2 только после выполнения Т2, а Т2 сможет

увидеть обновление Т1 только после выполнения Т1.

Долговечность. Когда транзакция выполняется, её обновления

сохраняются, даже если в следующий момент      происходит сбой системы.

Восстановление системы

        Система должна быть готова к восстановлению не только после

небольших (например, невыполнение операций какой-либо транзакции), но и

после глобальных нарушений типа сбоев в питании ЦПУ.        Глобальные

нарушения поражают сразу все транзакции. Существуют два вида глобальных

нарушений.

·    отказ системы (например, сбои в питании). Их называют аварийным

отказом программного обеспечения.

·    отказы носителей (например, поломка готовок дискового накопителя).

48

Page 49: УМК по СРОД-10-12

аварийный отказ аппаратуры.

        В 1-м случае для восстановления системы вводятся контрольные точки,

которые фиксируются в журнале (см.рис.3.3). Пусть в момент времени Т2

происходит сбой системы.

Рис.3.3. Этапы выполнения транзакций. Транзакция Т1 – полностью сохраняется; Т2, Т4 – перезапускаются;

Т3 и Т5 – отменяются.

3.2. Параллелизм операций над БД

        Термин параллелизм означает возможность одновременной

обработки в СУБД многих транзакций с доступом к одним и тем же данным,

причём в одно и то же время. В такой системе для корректной обработки

параллельных транзакций без возникновения конфликтных ситуаций

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

     В системе продажи авиабилетов, например, продавать билеты и изменять,

списки пассажиров и число свободных мест могут одновременно несколько

агентов. Главная проблема состоит в том, что если не позаботиться о правилах,

регулирующих доступ к базе данных двух или более программ, то не

исключается возможность продажи билетов на одно и то же место двум

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

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

значение одного и того же объекта.49

Page 50: УМК по СРОД-10-12

        Другим примером может служить статистическая база данных

переписи населения. К такой базе данных одновременно может обращаться

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

беспокоиться о том, в каком порядке их читают процессы. Здесь можно

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

осуществляется лишь чтение, для экономии времени желательно в

максимальной степени использовать параллелизм операций.

       В системе же продажи билетов, где выполняется как чтение, так и

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

одновременное использование двух программ.

           Существуют различные модели параллельных процессов

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

основном, степенью подробности описания доступа к её элементам. Как

правило, чем в большей степени детализировать модель, тем большей

параллелизм можно надёжно обеспечить.

3.3. Проблемы параллельных процессов

       

При обработке правильно составленных транзакций возникают

ситуации, которые могут привести к получению неправильного результата из-

за взаимных помех среди некоторых транзакций. Это следующие проблемы:

1 – проблема потери результатов обновления,

2 – проблема незафиксированной зависимости,

3 - чтение «грязных» данных,

4 – проблема несовместимого анализа.

50

Page 51: УМК по СРОД-10-12

1).    Проблема потери результатов обновления

Рис.3.4. Потеря результатов обновления.

А – элемент БД; Т1, Т2 – транзакции; t-время

Транзакция  Т1 извлекает кортеж А в t1; Транзакция Т2 извлекает кортеж

А в t2;

Транзакция Т1 обновляет кортеж А (на основе значений, полученных в момент

времени t1) в t3; Транзакция Т2 обновляет тот же кортеж А (на основе

значений, полученных в момент t2, которые имеют те же значения, что и в t1) в

момент t4. Однако результат операции обновления, выполняемой транзакцией

Т1 будет утерян, поскольку в момент времени t4 она не будет учтена и потому

будет «отменена» операцией обновления, выполненной транзакции Т2.

Пример 3.1. Пусть имеем две транзакции Т1 и Т2, обе эти транзакции

представляют собой прогон программы Р.

 P:    А =5;     READ A;     A=A+1;     WRITE A;

Выполнение программы представлено на рис.3.5.

51

Page 52: УМК по СРОД-10-12

Рис.3.5. Выполнение программы Р.

Легко заметить (см.рис.3.5.), что хотя каждая транзакция добавляла к А

единицу, его значение возросло лишь на 1. Это представляет серьёзную

проблему, если, например А – число мест, проданных на определённый

авиарейс.

2). Незафиксированная зависимость.

Возникает, если с помощью некоторой транзакции осуществляется

извлечение (или обновление) некоторого кортежа, который в данный момент

обновляется другой транзакцией, но это обновление ещё не закончено.

Рис.3.6. Незафиксированная зависимость

Транзакция Т1 выполняется на основе фальшивого предположения, что

кортеж А имеет некоторое значение в момент времени t2, тогда как на самом

52

Page 53: УМК по СРОД-10-12

деле он имеет некоторое значение, существовавшее ещё в момент времени t1. В

итоге после выполнения Т1 будет получен неверный результат.        Надо иметь

ввиду, что отмена выполнения Т2 может произойти не по вине Т2, а, например,

в результате краха системы.

3). Чтение «грязных» данных (фиктивные элементы - фантомы):

Рис.3.7. Чтение «грязных» данных

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

частью данными были произведены действия.

Транзакция Т1 дважды выполняет выборку строк с одним и тем же

условием. Между выборками вклинивается транзакция Т2, которая добавляет

строку, удовлетворяющую условию отбора α. Т1 ничего не знает о

существовании Т2, и так как сама она ничего не меняет в базе данных, то

ожидает, что после повторного отбора будут отобраны те же самые строки.

Результат: Транзакция Т1 в двух одинаковых выборках строк получит разные

результаты.

4).    Проблема несовместимого анализа

Транзакция Т1 выполняет анализ по всей таблице, например,

подсчитывает общую сумму денег на счетах клиентов банка для главного 53

Page 54: УМК по СРОД-10-12

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

1000у.е. Пусть имеются три счёта S1, S2, S3 и везде по 1000у.е.. Транзакция Т2

в этот момент выполняет перевод 500у.е. c счёта S3 на S1. Общая сумма по

всем счетам не меняется.

Рис.3.8. Несовместимый анализТ1 – подводит баланс. Т2 – переводит суммы с одного счета на другой.

Результат: Sum=2500, а должно быть Sum=3000. Это произошло из-за

параллельной работы.

Конфликт транзакций

        Анализ проблемы параллелизма показывает, что если не

предпринимать специальных мер, то при совместной работе нарушается

свойство (И) транзакций - изолированность. Транзакции реально мешают друг

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

одним и тем же данным.        В результате конкуренции за данными возникают

конфликты доступа к данным.

54

Page 55: УМК по СРОД-10-12

Различают конфликты:

·    W-W (Запись-Запись). Первая транзакция изменила объект и не закончилась.

Вторая пытается изменить этот объект. Результат – потеря обновления.

·    R-W (Чтение-Запись) Первая транзакция прочитала объект и не

закончилась. Вторая транзакция пытается изменить этот объект. Результат –

несовместный анализ.

·    W-R (Запись-Чтение). 1-я транзакция изменила объект и не закончилась. 2-я

пытается прочитать этот объект. Результат – чтение двух «грязных» файлов.

Конфликты типа R-R (Чтение-чтение) отсутствуют, т.к. данные при чтении не

изменяются.

Графики запуска транзакций могут быть:

1.    Последовательные – если транзакции выполняются строго по

очереди.

2.    Чередующиеся – если график содержит чередующиеся элементарные

операции транзакций.

В первом случае процесс замедляется, но зато выполняется правило.

Два графика называются эквивалентными, если при их выполнении будет

получен один и тот же результат.     График запроса транзакции называется

верным (сериализуемым), если он эквивалентен какому-либо

последовательному запросу.

Замечание:

        При выполнении двух различных последовательных (а, следовательно,

верных) графиков, содержащих один и тот же набор транзакций, могут быть

получены различные результаты. Пусть Т1 выполняет действие «сложить X с

1», а транзакция Т2 – «Удвоить X». Тогда последовательный график {Т1,Т2}

даст результат 2(Х+1), а последовательный график {Т2,Т1} даст результат

2Х+1. Таким образом, может существовать несколько верных графиков запуска

транзакций, приводящих к разным результатам при одном и том же начальном 55

Page 56: УМК по СРОД-10-12

состоянии базы данных. Существуют два способа разрешить конкуренции

между транзакциями.

1.    «Притормаживать» некоторые транзакции (таким образом

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

2.    Предоставить конкурирующим транзакциям «разные» экземпляры

данных

1-ый реализуется путём использования блокировок

2-ой реализуется путём использования данных из журнала транзакций.

3.4. Элементы блокировки.

    База данных может быть разбита на элементы, то есть на части,

которые можно блокировать. Блокируя некоторый элемент, транзакция может

препятствовать доступу других транзакций к этому элементу до тех пор, пока

они не разблокируют его.

       Природа и размер элементов являются спорными вопросами. Можно видеть

большие элементы, подобные отношениям, или малые, такие как отдельные

кортежи и даже компоненты кортежей. Выбор больших элементов сокращает

накладные расходы системы по поддержанию блокировок, тогда как выбор

малых элементов даёт возможность параллельного исполнения многих

транзакций. Если типичная транзакция читает или модифицирует один кортеж,

который она находит с помощью индекса, то целесообразно трактовать

кортежи как элементы. Если же типичная транзакция производит соединение

двух или более отношений и тем самым требует доступа ко всем кортежам этих

отношений, уместно в качестве элементов выбрать отношения.

    Рассмотрим теперь программу, которая при взаимодействии с базой данных

не только читает, но и записывает её элементы, но и блокирует и разблокирует

их. Условимся, что элемент должен быть блокирован до начала чтения или

записи и что операция блокировки действует как примитив синхронизации. Это

56

Page 57: УМК по СРОД-10-12

означает, что если транзакция пытается блокировать уже блокированный

элемент, ей приходится ждать, пока блокировка не будет снята по команде

разблокирования, которая выполняется транзакцией, устанавливающей

блокировку.

    Каждая программа, в конце концов, должна разблокировать любой элемент,

который она блокировала. Расписание элементарных шагов двух или более

транзакций, такое, что выполняются указанные выше правила, касающиеся

блокировок, называются легальным. 

Пример 3.2. Программу Р из примера 3.1 можно было бы записать с

блокировками следующим образом:

P: LOCK A; READ A; A:=A+1; WRITE A; UNLOCK A;

Пусть Т1 и Т2 - две исполнимых программы Р. При выполнении Т1

произойдёт блокировка. Если Т2 начинается до завершения Т1, то система

заставит её ждать            A:=A+1                                  

Т1 |----------------------|  

Т2  - - - - - - - - |--------------------| 

Совместным результатом окажется увеличение А на 2.

Бесконечное ожидание и тупики

    Пусть существует механизм блокировки. В примере 2 блокировка

предоставляется Т2 после снятия её транзакцией Т1. Рассмотрим теперь иную

ситуацию. Пусть во время пребывания Т2 в состоянии ожидания транзакция Т3

только запрашивает блокировку А, и этот запрос выполняется раньше, чем

запрос Т2. Далее, в то время, когда блокировку установила транзакция Т3, её

запрашивает Т4, чьё требование удовлетворяется после разблокирования А

транзакцией Т3 и т.д. Очевидно, при этом не исключена возможность того, что

57

Page 58: УМК по СРОД-10-12

Т2 будет бесконечно находиться в состоянии ожидания.

Т1: LOCK A; UNLOCK A;

T2: – – – – – – –  -– – – – – – –  - - - - - - - - -

T3: LOCK A; UNLOCK A; T4:LOCK A; UNLOCK A; T5:. .

    Тогда как некоторые другие транзакции постоянно осуществляют

блокировку А, хотя и существуют неограниченное число моментов, когда

транзакция Т2 имеет шансы заблокировать А.    Состояние такого рода

называют  бесконечным ожиданием. Подобная проблема потенциально может

возникнуть в любой обстановке, предусматривающей параллельное исполнение

процессов. Простой способ избежать бесконечного ожидания заключается в

том, что система предоставления блокировок должна регулировать все

неудовлетворённые немедленно запросы и предоставлять возможность

блокировки элемента А после его разблокирования первый запросившей её

транзакции из числа ожидающих. Эта стратегия ("первым вошёл - первым

обслуживается") устраняет бесконечные ожидания.

Более серьёзная проблема, которая возникает при параллельной

обработке - это так называемые «тупики».

Пример 3.3. Пусть имеются две транзакции Т1 и Т2, основными

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

Т1: lock A; lock B; unlock A; unlock B;

T2: lock B; lock A; unlock B; unlock A;

        Здесь не имеет значения, что конкретно делают с элементами А и В

эти транзакции. Пусть они начинают использоваться примерно в одно и то же

время. Транзакция Т1 запрашивает блокировку А и её запрос удовлетворяется.

Точно так же удовлетворяется запрос транзакции Т2 на блокировку В затем Т1

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

заблокирован транзакцией Т2. Аналогично Т2 запрашивает блокировку А и

должна ждать, пока Т1 разблокирует А. Таким образом ни одна транзакция не

58

Page 59: УМК по СРОД-10-12

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

требуемый для неё элемент. Поэтому Т1 и Т2 будут ждать бесконечно.

    Ситуация, при которой каждая из множеств S двух или более транзакций

ожидает, когда ей будет предоставлена возможность заблокировать элемент,

заблокированный в данный момент времени какой-либо иной транзакцией их

данного множества S, называют тупиком.

       Так как все транзакции находятся в состоянии ожидания, то одна из них не

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

транзакции из S. Поэтому ожидание для них становится бесконечным.

Способы предотвращения тупиков

1).    Потребовать, чтобы каждая транзакция единовременно запрашивала

все нужные ей блокировки. В нашем примере система предоставила бы

блокировку как А, так и В для транзакции Т1, если бы она запросила

блокировку первой. После завершения Т1 обе эти блокировки могли бы быть

установлены для Т2, то есть Т2 должна ждать.

2).    Ввести произвольное линейное упорядочивание элементов и потребовать,

чтобы все транзакции запрашивали блокировки в этом порядке.

Пусть в нашем примере А предшествует В, тогда затребовав блокировку

А перед В, Т2 обнаруживает, что А уже заблокирована Т1. Элемент В не был

ещё заблокирован для Т2. поэтому для Т1 доступна блокировка В, когда она

будет запрашиваться. При завершении Т1 блокировки на А и В снимаются и Т2

может продолжаться.

3).    Ничего не предпринимать для их предотвращения, а периодически

проверять запросы на блокировки и выявлять, не возникло ли тупиковой

ситуации. Облегчает предотвращение такой проверки алгоритм построения

графа, вершины которого представляют транзакции, а дуга T1->Т2 означает,

что транзакция Т2 ожидает выполнения её запроса на блокировку элемента,

59

Page 60: УМК по СРОД-10-12

заблокированного в данный момент транзакцией Т2. каждый цикл указывает

тупик. Если же циклов нет, не существует и тупиков. В случае обнаружения

тупика следует произвести рестарт хотя бы для одной из попавших в него

транзакций и её воздействие на БД должно быть аннулировано.

3.5. Расписание транзакций

        Последовательное исполнение транзакции при использовании блокировок

элементов замедляет процесс работы с БД, хотя и работает правильно.

Т1: LOCK A; UNLOCK A; 

---------------------------------------------------------T2:LOCK A; UNLOCK A; 

Будем называть расписанием для транзакций порядок, в котором

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

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

называется расписанием.

Расписание считается последовательным, если все шаги каждой

транзакции выполняются последовательно, и сериализуемым, если его

результат эквивалентен результату некоего последовательного расписания.

Пример 3.4. Рассмотрим, например, следующие две транзакции, которые

могут быть частью бухгалтерской операции по переводу денежных средств с

одного счёта на другой.

Т1: READ A; A:=A-10; WRITE A; READ B; B:=B+10; WRITE B; 

T2: READ B; B:=B-20; WRITE B; READ C; C:=C+20; WRITE C; 

Понятно, что любое последовательное расписание обладает свойством

постоянства суммы A+B+C.

60

Page 61: УМК по СРОД-10-12

Пример расписания: А+В+С  

Последовательное:      Т1                                      Т2 READ A                         A=A-10                          WRITE A                      READ B                          B=B+10                         WRITE B                                                                                                                            READ B                                              B=B-20                                            WRITE B                                            READ C                                              C=C+20                                              WRITE CСериализуемое:Т1                                                                    Т2READ A                                                                  

  READ BA=A-10                                                                    

B=B-20WRITE A                                                                  

WRITE BREAD B                                                                    

READ CB=B+10                                                                    

C=C+20WRITE B                                                                 

WRITE CНесериализуемое:Т1                                                                       Т2READ AA=A-10                                                                      READ BWRITE A                                                                      B=B-20READ B                                                                     WRITE BB=B+10                                                                       READ CWRITE B

61

Page 62: УМК по СРОД-10-12

                                                                       C=C+20                                                                       WRITE C

        Рис.3.9. Расписания транзакций

Отметим, что в последнем случае величина  B увеличивается, а не

уменьшается на 10 в силу того, что Т1 читает В прежде, чем Т2 записывает

новые уменьшенные значения В. Предотвратить это сложно.  

В случае, когда допускаются произвольные операции с элементами

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

начальных значениях элементов. На практике делаются некоторые

упрощающие предположения относительно операций, выполняемых над

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

можно получить только при одной и той же последовательности операций.

Поэтому нельзя считать, что (А+10)-20 и (А+20)-30 продуцируют одни и те же

значения. Игнорируя алгебраические свойства арифметики, мы совершаем

лишь «нефатальные» ошибки. Но зато расписание никогда не рассматривается

как сериализуемое, если оно не является таким («фатальная» ошибка).

        Нефатальные ошибки могут исключить некоторые параллельные операции

и тем самым сделать систему более медленной. Однако в отличие от фатальных

ошибок, при этом никогда не могут быть получены некорректные результаты.

Протоколы и расписания

Как было показано выше, произвольные транзакции при их

параллельном исполнении могут приводить к бесконечному ожиданию,

тупиковым ситуациям и несериализуемому расписанию.   Для исключения

подобных ситуаций имеются два инструмента.

·    1-й планировщик - часть системы базы данных, которая служит арбитром

между конфликтующими запросами. Планировщик может основываться на

стратегии "первым вошёл - первым обслуживается" исключения бесконечного 62

Page 63: УМК по СРОД-10-12

ожидания. Планировщик может также справляться с тупиками и

несериализуемостью при помощи рестарта одной или более транзакций.

·  2-й подход – использование протоколов. Протокол представляет собой

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

транзакция. Например, протоколом является исключающая тупики стратегия

запрашивания блокировок элементов в некотором фиксированном порядке.

Модель транзакции

Рассмотрим простейшую модель транзакции, которая, однако,

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

рассматривается как последовательность операторов блокирования и

разблокирования (LOCK и UNLOCK).

      Сопоставляя каждой паре шагов LOCK A и последующего за ним UNLOCK

A однозначную функцию f, можно более формально рассмотреть поведение

транзакций. Отметим, что для данного элемента А транзакция может иметь

более одной такой пары, то есть мы можем блокировать и разблокировать один

и тот же элемент более одного раза. Пусть А0 – начальное значение А до

исполнения любых транзакций. Значения, которые может принимать А,

являются тогда формулами вида: f1f2…fn (А0) где fi – функции, ассоциируемые

с парами шагов LOCK A – UNLOCK A соответствующих транзакций. 

Блокировка: LOCK A

Разблокировка: UNLOCK A

fn … f3 f2 f1 (A0)

Пример 3.5. На рис. 3.10 приведены три транзакции и функции,

ассоциированные с каждой парой LOCK A – UNLOCK A соответствующих

транзакций.

63

Page 64: УМК по СРОД-10-12

Рис.3.10. Модели транзакций

На рис.3.11 показано возможное расписание этих транзакций и результат их воздействия на элементы A,B,C. 

Рис.3.11. Расписание транзакций:

Является ли данное расписание сериализуемым. Пусть Т1 предшествует

Т2, тогда

64

Page 65: УМК по СРОД-10-12

1) Т1Т2: Т1 предшествует Т2. Тогда конечным значением В

было бы  f3(f2(B0)), а не f2(f3(B0)

2) Если Т2Т1: Т2  предшествует Т1. Не может быть f6

(f1(f5(A0))).

3) 2Т3Т1: Т2  предшествует Т3 и Т1, Т3 предшествует Т1. Не может

быть       f1(f7(f5)).

4) Т3Т2Т1: Т2  предшествует Т3 и Т2, Т2 предшествует Т1. Не может

быть       f1(f5(f7)).

        Для этого анализируется предусмотренный в расписании порядок, в

котором различные транзакции блокируют данный элемент. Этот порядок

должен соответствовать гипотетическому эквивалентному последовательному

расписанию транзакций. Если для двух различных элементов необходимо

исполнение каких-либо двух транзакций в разном порядке, то мы имеем

парадокс, поскольку оба таких порядка не могут соответствовать  одному

последовательному расписанию. Выявление этой ситуации может быть

сформулировано как задача обнаружения циклов в ориентированном графе.

Формальное описание метода её решения даёт следующий алгоритм.

        Алгоритм 1. Проверка сериализуемости расписания.

Входные данные. Расписание S для совокупности транзакций T1, …, Tk.

Метод. Построим ориентированный граф G, называемый графом

предшествований, узлы которого соответствуют транзакциям.        Определим

дуги графа G. Пусть S есть a1;a2;…,an, где ai – действие вида Tj: LOCK Am или

Tj: UNLOCK Am и Tj указывает транзакцию, к которой относится данный шаг.

Для ai имеющего вид Tj: UNLOCK Am ищем следующее за ним действие ap

вида Ts: LOCK Am. Если оно существует, то строим дугу от Tj к Ts.

Интуитивный смысл этой дуги заключается в том, что в любом

последовательном расписании, эквивалентном S, Tj должно предшествовать

Ts..

        Если в графе G имеется цикл, то S-не сериализуемо. При отсутствии

65

Page 66: УМК по СРОД-10-12

циклов находим такой линейный порядок транзакций, чтобы Ti предшествовала

бы Tj всякий раз, когда существует дуга Ti -> Tj. Это всегда может быть

сделано при помощи процесса так называемой топологической сортировки,

определяемого следующим образом. Из ациклического G следует, что в нём

существует некоторый узел Tj, который не имеет входящих дуг. Запишем Tj в

список, удалив его из графа. Процесс повторяется до тех пор, пока в графе не

останется узлов. Порядок перечисления узлов в списке даёт последовательный

порядок транзакций.

Пример 3.6. Рассмотрим расписание, приведенное на рис.3.11. В графе G,

изображенном на рис.3.12 имеются узлы Т1,Т2, и Т3.

Рис.3.12. Граф предшествований для транзакций расписания на рис.3.11.

Поскольку в графе существует цикл, расписание представленное на

рис.3.11 не является сериализуемым.

Протокол, гарантирующий сериализуемость

    Этот протокол представляет собой просто требование, согласно

которому в каждой транзакции все операции блокировки должны

предшествовать всем операциям разблокирования. Подчиняющиеся этому

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

блокирования, а вторая – фаза разблокирования.

Например, на рис.3.10 транзакции T1 и T3 – двухфазные, а T2 – нет.

66

Page 67: УМК по СРОД-10-12

Утверждение. Любое расписание S двухфазных транзакций является

сериализуемыми. Доказательство в книге Дж.Ульмана. «Основы систем БД».

В некотором смысле двухфазный протокол – наилучший среди реально

возможных расписаний. Можно показать, что для любой транзакции T1, не

являющейся двухфазной, найдётся какая-либо транзакция T2, совместно с

которой T1 сможет выполняться в несериализуемом расписании. Пусть

транзакция T1 – не двухфазная. Тогда в T1 существует шаг UNLOCK A,

предшествующий шагу LOCK B. Пусть T2, имеет вид T2: LOCK A; LOCK B;

UNLOCK A; UNLOCK B;    Легко видеть, что расписание на рис.3.13 не

сериализуемо, поскольку обработка А требует, чтобы Т1 предшествовала Т2, в

то время как обработка В требует обратного порядка (см. рис. 3.14 - граф

предшествований).

1 Т1:LOCK A            

2 T1:UNLOCK A       |

3 T2:LOCK A             

4 T2:LOCK B                                               

5 T2:UNLOCK A                                                

6 T2:UNLOCK B                                         

7 T1:LOCK B                                                

8 T1:UNLOCK B         

                  Рис.3.13. Расписание транзакций

67

T2T1

Page 68: УМК по СРОД-10-12

Рис.3.14. Граф предшествований.

Так как в графе существует цикл, расписание не сериализуемо

В общем, могут существовать некоторые совокупности транзакций не

являющиеся двухфазными, но соответствующие последовательным

расписанием. Но поскольку сложно разобраться в этой совокупности

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

3.6. Модели с блокировками для чтения и записи

    Проводя различия между доступами только чтения и для чтения и

записи, можно разработать более детальную модель транзакций, которая будет

допускать некоторые виды параллелизма. Различают два вида блокировок:

1.    Блокировки для чтения. RLOCK A (READ-LOCK A), что

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

чтения А транзакций Т. Однако блокировку А для чтения может одновременно

установить любое число транзакций.

2.    Блокировки для записи. WLOCK A (WRITE-LOCK). При блокировках для

записи никакая другая транзакция не может установить для этого элемента

блокировку для чтения, ни блокировку для записи. И блокировки для чтения, и

блокировки для записи снимаются операторами UNLOCK (разблокировать).

Два расписания эквивалентны, если

-   они продуцируют одно и то же значения для каждого элемента;

-    каждая блокировка для чтения, применяемая данной транзакцией,

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

же значение.

В системе поддерживается два типа блокировок:

1.    Х – блокировка (XLOCK – exclusive lock) – блокировка без взаимного

доступа. WLOCK обозначает то же самое.

68

Page 69: УМК по СРОД-10-12

2.    S – блокировка (SLOCK- shared lock) – блокировка с взаимным

доступом. RLOCK обозначает то же самое.

X – блокировка записи S – блокировка чтения

1.    Если транзакция Т блокирует кортеж А (Х-блокировка), то запрос

любой другой транзакции к А будет отменён.

2.    Если транзакция Т, блокирующая элемент А (S – блокировка), то

·    запрос со стороны транзакции Т2 на Х-блокировку будет отвергнут

·    запрос со строки Т2 на S-блокировку будет принят 

Эти правила можно представить в виде матрицы совместимости (рис.3.15).

Запрос транзакций Т1 и Т2 к одному элементу А. N-означает конфликтную

ситуацию. Т2 – находится в состоянии ожидания. Y – полная совместимость,

«–» - отсутствие блокировок.

Рис.3.15. Матрица совместимости транзакций

Проверка сериализуемости:

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

чтения/записи.

Входные данные. Расписание S для совокупности транзакций T1,…,Tk.

Выходные данные. Получение ответа, является ли S сериализуемым.

Метод. Строим граф предшествований G следующим образом. Узлы, как и

прежде, соответствуют транзакциям. Дуги определяются следующими

правилами:

1.    Пусть в S транзакция Ti устанавливает блокировку элемента А для чтения,

а Tj – следующая за ней транзакция (если она существует) – устанавливает

блокировку А для записи. Тогда строим дугу из Ti  в Tj.  

2.    Пусть транзакция Ti  в S блокирует А для записи, а Tj – следующая за ней

69

Page 70: УМК по СРОД-10-12

(если, конечно, такая существует) транзакция – устанавливает блокировку А

для записи. Тогда строим дугу Ti -> Tj.

3.    Пусть далее Tm – какая-либо транзакция, блокирующая А для чтения после

того, как Ti снимает свою блокировку для записи, но перед тем, как Tj

устанавливает блокировку А для записи (если Tj не существует, то Tm – любая

транзакция, которая блокирует А для чтения после того, как Ti разблокирует

его. Тогда строим дугу Ti -> Tm.

     Если граф G имеет циклы, то S не сериализуемо. Если же G ацикличен, то

любая его топологическая сортировка определит последовательный порядок

для транзакций.

        Процесс топологической сортировки определяется следующим образом.

Из ацикличности G следует, что в нём существует узел Ti, который не имеет

входящих дуг. Занесём Ti  в список, удалив его из графа. Процесс повторяется

до тех пор, пока в графе не останется узлов. Порядок перечисления узлов в

списке даёт последовательный порядок транзакций.

Пример 3.7: Показано расписание 4-х транзакций.

70

Page 71: УМК по СРОД-10-12

        Рис.3.16. Расписание транзакций

Первый оператор UNLOCK A выполняется на шаге 3, когда T3 снимает

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

чтения транзакциями Т1 и Т2 (шаги 4 и 7) и блокировка этого элемента для

записи транзакцией Т4 на шаге (12). Таким образом Т1, Т2 и Т4 должны

следовать за Т3 и мы строим дуги из Т3 в эти узлы.

Рис.3.17. Граф проверки сериализуемости

71

Page 72: УМК по СРОД-10-12

В связи с тем, что Т4 снимает блокировку В для записи на шаге 5, а

следующую блокировку В для записи устанавливает Т3 строится дуга из Т4 и

Т3. Образуется цикл, свидетельствующий о том, что расписание не является

сериализуемым.

    Как и в модели, приводимой ранее, достаточной гарантией

сериализуемости является двухфазный протокол, в соответствии с которым

установление блокировок для чтения и записи предшествует всем операциям

разблокирования.

Упражнение для самостоятельного выполнения:

Дано расписание 4-х транзакций (рис.3.18). Постройте граф

предшествований и определите, является ли это расписание сериализуемым.

N T1 T2 T3 T4

1 RLOCK A2 RLOCK A3 WLOCK B4 UNLOCK A5 WLOCK A6 UNLOCK B7 RLOCK B8 UNLOCK A9 RLOCK B10 RLOCK A11 UNLOCK B12 WLOCK C13 UNLOCK A14 WLOCK A15 UNLOCK A16 UNLOCK B17 UNLOCK C

Рис.3.18. Расписание транзакций

72

Page 73: УМК по СРОД-10-12

3.7. Блокировки в Visual FoxPro

В Visual FoxPro можно устанавливать блокировки на всю таблицу или на

отдельные записи таблицы.

Существуют: 1. Полная блокировка 2. Блокировка изменений

Для установки полной блокировки используется команда

SET EXCLUSIVE ON/OFF

Для установки блокировки изменений таблицы используется функция

FLOCK – блокировка таблицы

Разрешается чтение посторонним клиентам

LOCK (RLOCK) – блокировка записи

Пример 3.8:        SET EXCLUSIVE ON        SELECT 0        USE SORT        DO WHILE .T.            If FLOCK (“SOTR”)                * вызов процедуры                DO PROC                * снимаем блокировку            UNLOCK IN SOTR                EXIT            ELSE                @ 10,10, SAY “Устанавливается блокировка, подождите”            ENDIF        ENDDO

Вопросы

1. Транзакция, это - ?

2. Какие действия совершает транзакция по отношению к БД?

3. Что происходит с системой в случае аварийного завершения

транзакции?

4. Какие операторы сигнализируют об успешном и неудачном

завершении транзакции?

73

Page 74: УМК по СРОД-10-12

5. Назовите основные свойства транзакции.

6. Что означает термин параллелизм в среде СУБД?

7. Какие существуют проблемы параллельных процессов?

8. Причина потери результатов обновления элементов БД?

9. Из-за чего возникают “грязные данные”?

10. Какие конфликты возникают при параллельной работе

транзакций?

11. Назовите графики запуска транзакций.

12. Какой график транзакций называется сериализуемым?

13. Назовите способы разрешения конкуренций между

транзакциями.

14. Проблемы блокировок транзакций?

15. Назовите способы предотвращения «тупиков».

16. Какова формальная модель транзакций?

17. Как осуществляется проверка сериализуемости транзакций?

18. Протокол, гарантирующий сериализуемость?

19. Представьте матрицу совместимости транзакций при

использовании блокировок для чтения и записи.

4. Структурированный язык запросов SQL(Structure Query Language)

Первый международный стандарт языка SQL был принят в 1989г. Его

назвали SQL/89 или SQL1, стандарт ANSI/ISO. В 1992г. был принят новый

международный стандарт SQL/92 или SQL2. В 1999г. появился новый стандарт

SQL3. Если SQL1 и SQL2 отличались количественно, то SQL3 отличается

качественно. В __ введены новые типы данных, появилась возможность

задания сложных структурированных типов данных и т.д. Язык SQL

74

Page 75: УМК по СРОД-10-12

представляет собой наиболее распространенный язык управления базами

данных типа клиент/сервер. SQL является языком реляционных баз данных, а

не языком системного программирования. SQL - это язык, ориентированный на

работу с массивами данных. Надо иметь в виду, что SQL является

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

управления выполнением программ (ветвлений и циклов), ни средств, для

создания форм или отчетов. Однако в некоторые версии SQL, например, в

Transact-SQL, используемый в Microsoft SQL Server, добавлены два оператора

(IF ELSE и WHILE).

4.1. Основные операторы

Операторы определения данных:

CREATE TABLE – создать таблицу

DROP TABLE – удалить таблицу

ALTER TABLE изменить таблицу

CREATE VIEW – создать представление

DROP VIEW– удалить представление

CREATE INDEX– создать индех

DROP INDEX – удалить индех

Операторы манипулирования данными:

INSERT – вставить запись

DELETE – удалить запись

UPDATE – изменить запись

SELECT – выбрать запись

Язык запросов:

SELECT

75

Page 76: УМК по СРОД-10-12

Управление транзакцией:

COMMIT – удачное завершение транзакции

ROLLBACK – откат транзакции

SAVE POINT – сохранить контрольную точку

Программный SQL:

DECLARE – объявить курсор

OPEN – открыть курсор

FETCH – передать поля записи в переменные

CLOSE – закрыть курсор

PREPARE - подготовить

EXECUTE - выполнить

4.2. Синтаксис оператора SELECT

SELECT [ALL | DISTINCT]

    [Alias.] Select_Item [AS Column_Name]

    [, [Alias.] Select_Item [AS Column_Name] ...]

FROM [DatabaseName!]Table [Local_Alias]

    [, [DatabaseName!]Table [Local_Alias] ...]

[[INTO Destination]

    | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]]

[PREFERENCE PreferenceName]

[NOCONSOLE]

[PLAIN]

[NOWAIT]

[WHERE JoinCondition [AND JoinCondition ...]

    [AND | OR FilterCondition [AND | OR FilterCondition ...]]]

[GROUP BY GroupColumn [, GroupColumn ...]]

[HAVING FilterCondition]76

Page 77: УМК по СРОД-10-12

[UNION [ALL] SELECTCommand]

[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]

Проще

SELECT [ALL/DISTINCT](<Список полей>/*)

From <Список таблиц>

[WHERE <Предикат>]

[GROUP BY <Список полей результата>]

[HAVING <Предикат-условие для группы>]

[ORDER BY <Список полей, по которым упорядочивают вывод>]

4.3. Примеры запросов на языке SQL

Даны три отношения: Студенты, Дисциплины и Успеваемость с

атрибутами NS-номер студента, FIO-ФИО, GR-группа, SPEC-специальность,

ND-номер дисциплины, NAMED-наименование дисциплины, OC-оценка

STUD(NS, FIO, GR, SPEC)

DISC(ND, NAMED, GR)

SD(NS, ND, OC)

Простые запросы.

1. SELECT *

FROM STUD

ORDER BY FIO

2. SELECT NS, FIO

FROM STUD

WHERE GR=4305

3. Выборка с использованием оператора AND

SELECT NS, FIO

77

Page 78: УМК по СРОД-10-12

FROM STUD

WHERE GR=4305 AND FIO=”Иванов”

4. Выборка учебных групп без повторений

SELECT DISTINCT GR

FROM DISCP

5. SELECT *

FROM STUD

WHERE FIO LIKE “%ОВ%”

6. Объединение таблиц

SELECT STUD.FIO, STUD.GR, DISC.NAMED

FROM STUD, DISC

WHERE STUD.GR=DISC.GR

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

SELECT NAMED

FROM DISC

WHERE GR IN(“4301”,”4506”)

8. Использование оператора BETWEEN

Выдать список студентов с номерами от 101 до 140

SELECT NS, FIO

FROM STUD

WHERE NS BETWEEN 101 AND 140

9. Вложенные запросы

Выдать список студентов имеющих двойки

SELECT DISTINCT FIO, GR

FROM STUD

WHERE NS IN

(SELECT NS

FROM SD

WHERE OC=2)

78

Page 79: УМК по СРОД-10-12

10. Выдать список студентов, не явившихся на экзамен

SELECT DISTINCT FIO, GR

FROM STUD

WHERE NS IN

(SELECT NS

FROM SD

WHERE OC IS NULL)

11. Выдать список студентов, получивших 5 по Базам данных

SELECT FIO

FROM STUD

WHERE NS IN

(SELECT NS

FROM SD

WHERE OC=5.AND.ND IN

(SELECT ND

FROM DISC

WHERE NAMED=”Базы данных”))

Агрегатные функции

COUNT, SUM, AVG, MIN, MAX

12. Подсчитать количество различных дисциплин

SELECT NAMED, COUNT(*)

FROM DISC

GROUP BY DISC.ND

13. Подсчитать количество студентов, сдавших экзамены по дисциплинам

SELECT NAMED, COUNT(*)

FROM DISC

79

Page 80: УМК по СРОД-10-12

WHERE ND IN

(SELECT ND

FROM SD

WHERE SD.OC IS NOT NULL

GROUP BY SD.ND)

14. Получить суммарное значение стипендий по группам

SELECT GR, SUM(STIP)

FROM STUD

GROUP BY GR

Операторы манипулирования данными

INSERT-вставить, UPDATE-изменить, DELETE-удалить

INSERT

INTO имя_табл.[<список полей>]

VALUES (<список значений>)

15. INSERT

INTO STUD(NS, FIO, GR)

VALUES(201, “Котов”, 4405)

DELETE

FROM имя_табл.

[WHERE <условие>]

16. DELETE FROM STUD

WHERE FIO=”Котов”

17. Исключить неуспевающих студентов, имеющих по 2 и более двоек

DELETE FROM STUD

80

Page 81: УМК по СРОД-10-12

WHERE NS IN

(SELECT NS

FROM SD

WHERE OC=2.OR.IS NULL

GROUP BY NS

HAVING COUNT(*)>=2)

UPDATE имя_табл.

SET имя_поля=новое значение

[WHERE условие отбора]

18. UPDATE STUD

SET GR=4407

WHERE GR=4307

Объединение результатов запроса с помощью предложения UNION

Предложение UNION производит слияние результатов первого запроса с

результатами второго запроса, неявно удаляя повторяющиеся строки. Запросы

должны иметь одинаковое количество столбцов и общий столбец,

определенный в каждой таблице.

SELECT поле_1, … , поле_n

FROM таблица_1, …, таблица_n

WHERE предикат

[GROOP BY …]

[HAVING …]

UNION

SELECT поле_1, … , поле_n

FROM таблица_1, …, таблица_n

WHERE предикат

81

Page 82: УМК по СРОД-10-12

[GROOP BY …]

[HAVING …]

[ORDER BY …]

Пусть имеются два отношения

Книги(ИдКн, Название, Стр, Цена, КолИзд, Серия, ИдАв)

Авторы(ИдАв, Имя)

Где ИдКн, ИдАв – идентификаторы книги и автора, Стр – количество

страниц, КолИзд – количество изданий

Произведем запрос на слияние

SELECT ИдАв

FROM Авторы

UNION

SELECT ИдАв

FROM Книги

ORDER BY ИдАв

Строковые функции

Строковые функции предназначены для выполнения различных операций

с двоичными данными, символьными строками и арифметическими

выражениями. Ниже перечислены некоторые строковые функции,

используемые в Transact-SQL.

ASCII (символ) возвращает значение кода ASCII

CHAR (целое_выражение) преобразует код ASCII в символ

LOWER (символьное_выражение) переводит заглавные буквы

символьной строки в строчные

UPPER (символьное_выражение) преобразует строчные буквы

символьной строки в заглавные

82

Page 83: УМК по СРОД-10-12

LTRIM удаляет пробелы в начале строки

RTRIM удаляет пробелы в конце строки

CHARINDEX (символьное_выражение, выражение) - возвращает

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

строки. Выражение – это обычно имя столбца.

PATINDEX (‘%подстрока%’, имя_столбца) возвращает начальную

позицию первого вхождения подстроки в строке, например, значения в столбце

таблицы.

REPLICATE возвращает несколько наборов символов, заданных в первом

аргументе функции.

Пример 4.1. SELECT REPLICATE (‘a’,7)

-----------

Результат: Aaaaaaa

REVERS (символьная строка) возвращает символы строки в обратном

порядке.

SPACE (n) возвращает строку пробелов из n символов

STUFF(строка_символов_1, начальная_позиция, длина,

строка_символов_2) вставляет вторую строку в первую

Пример 4.2. SELECT STUFF(‘123456’, 2, 4, ‘abcdef’)

-----------------

1abcdef6

SUBSTRING(строка_символов, начальная_позиция, длина) используется

для возвращения подстроки из исходной строки.

Арифметические функции

Арифметические функции работают с числовыми типами данных. В

Transact-SQL существует большое количество математических функций,

некоторые из них приведены ниже

83

Page 84: УМК по СРОД-10-12

COS(), COT(), SIN(), TAN() – тригонометрические функции,

CELLING(числовое_выражение) Наименьшее целое, большее либо

равное значению выражения,

FLOOR(числовое_выражение) Наибольшее целое, меньшее либо равное

значению выражения,

EXP(), LOG(), LOG10(),

PI() – 3.14159….,

POWER(числовое_выражение, y) Значение выражения в степени y,

ABS(), RAND(), ROUND(), SIGN(), SQRT().

Основы Transact-SQL

(MS SQL Server)

Корпорация Microsoft, как и многие другие производители, разработала

свою версию языка SQL, назвав его Transact-SQL. Данный язык удовлетворяет

требованиям ANSI SQL-92, но предлагает и еще ряд дополнительных

возможностей. В SQL Server появилось новое условное средство – CASE,

которое может использоваться в условиях поиска.

CASE

WHEN условие1 THEN результат1

WHEN условие2 THEN результат2

. . .

WHEN условиеn THEN результатn

END

Пример 4.3. Пищевой рацион.

84

Page 85: УМК по СРОД-10-12

UPDATE Пища (Продукты питания)

SET Норма = CASE

WHEN жир<1

THEN ‘очень мало жиров’

WHEN жир<5

THEN ‘мало жиров’

WHEN жир<20

THEN ‘среднее количество жиров’

WHEN жир<50

THEN ‘высокое количество жиров’

ELSE ‘сплошные жиры’

END

В цифрах указано количество жиров в граммах на 100 грамм.

Оператор CASE проверяет по порядку условие WHEN, пока не

встретится первое истинное значение, после чего он игнорирует оставшиеся

условия.

Пример 4.4. Запрос о погоде в городе, куда Вы собираетесь ехать, и,

соответственно, какую одежду надо взять.

Пусть имеются два отношения:

Г.Города(NГ, Город)

С.Сводка_погоды(NС, NГ, Дата, Температура)

SELECT Г.NГ, Г.Город, Дата, Температура)

«Взять одежду»=

CASE

WHEN С.Температура<0

THEN “Зимняя одежда”

WHEN С.Температура

85

Page 86: УМК по СРОД-10-12

BETWEEN 0 AND 10

THEN “Весенняя одежда”

WHEN С.Температура<0

BETWEEN 11 AND 30

THEN “Летняя одежда”

ELSE

THEN “Погода неопределенная”

END

FROM Г, С

WHERE Г.NГ=С.NГ

4.4. Встроенный язык SQL.

При включении операторов SQL в базовый язык программирования

необходимо чтобы операторы SQL включались непосредственно в текст

программы исходного языка программирования.

Во встроенном SQL запросы делятся на два типа:

Однострочные запросы,

Многострочные запросы

Однострочный запрос во встроенном SQL, вызвал

необходимость модификации оператора SQL – SELECT:

SELECT [ALL | DISTINCT] <список полей>

INTO <список переменных базового языка>

FROM <список исходных таблиц>

[WHERE <предикат>]

86

Page 87: УМК по СРОД-10-12

Пример 4.5. Пусть имеется отношение: STUD (NS, FIO, GR,

SPEC)

Для описания локальных переменных в языке Transact SQL

(СУБД Ms SQL Server) используется символ @

DECLARE @p1 int,

DECLARE @p2 char(20), @p3 char(4), @p4 char(30)

SET @p1=205

SELECT *

INTO @p2, @p3, @p4

FROM STUD

WHERE NS=@p1

Для реализации многострочных запросов, вводится новое понятие –

понятие курсора. Для работы с курсором добавляется несколько

новых операторов SQL.

DECLARE <имя курсора> CURSOR – объявление некоторого

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

FOR <подзапрос>

OPEN <курсор> - оператор открытия курсора, дает команду СУБД

выполнить запрос

FETCH <курсор> INTO <список переменных> используется для

выборки записей

CLOSE <курсор> - оператор закрытия курсора

Пример 4.6.

        DECLARE q CURSOR

        FOR SELECT *

87

Page 88: УМК по СРОД-10-12

            FROM STUD

            WHERE SPEC=”230102”

        OPEN q

        WHILE .T.

        FETCH q INTO A, B, C, D,

        DO PROC

        END WHILE

        CLOSE q

Пример 4.7. Пусть имеется БД, связанная с поставками изделий.

Поставщики S(NП, ФИО, Состояние)

Детали P(NД, НазваниеД, Цвет, Вес, Город)

Изделия J(NИ, НазваниеИз, Город)

Поставки SPJ(NП, NД, NИ, Количество)

Необходимо составить программу вывода записей поставщиков в порядке

их номеров, при этом за каждой записью поставщика должны непосредственно

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

поставляет детали данный поставщик.

MAIN

DEFINE PS.* LIKE S.*

DEFINE PJ.* LIKE J.*

DECLARE CS CURSOR FOR

SELECT NП, ФИО, Состояние, Город

FROM S

ORDER BY NП

DECLARE CJ CURSOR FOR

SELECT NИ, НазваниеИз, Город

FROM J

88

Page 89: УМК по СРОД-10-12

WHERE NИ IN

(SELECT NИ

FROM SPJ

WHERE NП=S.NП)

ORDER BY NИ

OPEN CS

LET V=”1”B

LET R=”1”B

WHILE V

IF STATUS=NOTFOUND

THEN MESSAGE “NO ROW FOUND”

EXIT WHILE

END IF

FETCH CS INTO PS.NP, PS.ФИО, PS.Состояние, PS.Город

DISPLAY PS.NP, PS.ФИО, PS.Состояние, PS.Город

OPEN CJ

WHILE R

FETCH CJ INTO PJ.NИ, PJ.НазваниеИз, PJ.Город

DISPLAY PJ.NИ, PJ.НазваниеИз, PJ.Город

END WHILE

CLOSE CJ

END WHILE

CLOSE CS

END MAIN

Динамический SQL

Если множество команд, которые может принимать программа,

сравнительно невелико (например, бронирование мест на авиалиниях), то и

89

Page 90: УМК по СРОД-10-12

множество возможных предложений SQL, выдаваемых программой, также

будет небольшим и может быть зашито в программу.

Если же количество вариантов входных данных будет большим, то

зашить их в программу не удается. В этом случае удобно динамически

формировать предложения SQL.

Для динамического формирования SQL используются два основных

предложения:

PREPARE – подготовить

EXECUTE – выполнить

Схема их использования состоит в следующем:

DEFINE Исходный-SQL CHAR

DECLARE Объектный-SQL оператор

Исходный-SQL=”DELETE FROM SP

WHERE количество<100”

PREPARE Объектный-SQL FROM Исходный-SQL

EXECUTE Объектный-SQL

Вопросы

1. Назовите основные версии языка SQL

2. Операторы манипулирования данными

3. Упрощенный синтаксис оператора SELECT

4. Каков синтаксис оператора INSERT?

5. С какой целью используется оператор UPDATE?

6. Назовите основные агрегатные функции языка SQL

7. Когда возникает необходимость использования курсора.

8. Основные операторы встроенного языка SQL

9. Для чего применяют оператор FETCH – INTO?

10.Когда возникает необходимость динамического SQL?

90

Page 91: УМК по СРОД-10-12

5. Безопасность БД

Безопасность данных – это защита данных от случайного или

преднамеренного разрушения, раскрытия или модификации данных.

Существуют следующие возможные причины опасности:

1. Использование прав доступа другого человека.

2. Несанкционированное изменение или копирование данных.

3. Изменение программ.

4. Подключение к кабельной сети.

5. Ввод хакерами некорректных данных.

6. Похищение данных, программ и оборудования.

7. Недостаточность обучения персонала, ее нехватка.

8. Просмотр и раскраска засекреченных данных.

9. Электронные наводки и радиации.

10. Разрушение данных из-за электропитания.

11. Пожары.

12. Физическое повреждение оборудования.

13. Обрыв или отсоединение кабелей.

14. Внедрение компьютерных вирусов.

Меры безопасности

1.    Идентификация или установление подлинности

2.    Предоставление полномочий

3.    Обеспечение целостности БД

4.    Кодирование информации

5.1. Идентификация и установление подлинности

91

Page 92: УМК по СРОД-10-12

Для установления подлинности пользователя употребляются пароли.

Пароли:

1.    Простые пароли

2.    Однократного использования. Пользователю выдается список из N

паролей. Такие же N паролей хранятся в ЭВМ. Данная схема обеспечивает

большую степень безопасности, но она является и более сложной.

    Пример 5.1:     xyz        xyz

                      абв         абв

3.    «Запрос - ответ». В системе хранятся данные об идентификации личности.

Машина задает вопросы пользователю, известные только ему.

4. Установление пользователем подлинности системы. Пароли используются

не только для установления пользователя по отношению к системам, но и для

обратного установления подлинности. Это важно, например, в сетях ЭВМ.

Такую проверку называют процедурой в режиме “рукопожатия “.

Рис.5.1. Взаимодействие машин в режиме «рукопожатия»

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

функция преобразования f(x). После преобразования посылается ответ f(х).

Первая машина определяет: верна ли функция преобразования или нет. Число

посылается открыто, а функция преобразования по линиям связи не передается.

Пример 5.2. Пример системы «рукопожатия»

    Х                    f(x)               

  1312                 4

  4752                86

  5472                7692

Page 93: УМК по СРОД-10-12

  6836               120

     ...

d1d2d3d4 – четырехзначное десятичное число

f(x)=2*(d1*d4+d2*d3)mod(d1d2d3d4)

x=4752    f(x)=2*(8+35)=86

Определение полномочий представлено в таблице 5.1.

Таблица 5.1.

Наименование ФИО Квалифи-кация

Оклад Транспорт Прогнозобъемапродаж

Цена напокупку

Отдел кадров 11 11 11 00 00 00

Транспортный отдел

00 00 00 11 00 00

Касса 01 00 11 00 00 00

Отдел сбыта 00 00 00 00 11 01

Отдел МТС 01 00 00 01 11 01

Исследовательский отдел

01 01 00 01 01 01

Обозначения: 00 – запрос доступа, 01 – право читать, 10 – право записи,

11 – право читать и писать     

5.2. Механизм представления и система привилегий

Механизм представления используется для скрытия данных.

CREATE VIEW <имя> [поля] AS<подзапрос>

CREATE VIEW spec 2202 AS SELECT *

 FROM STUD

 WHERE SPEC=”2202”

93

Page 94: УМК по СРОД-10-12

Привилегии предоставляются с помощью:

оператора GRANT языка SQL

GRANT <привилегии> [ON_тип объекта] TO <пользователь>

GRANT SELECT ON TABLE stud TO Данилов

GRANT SELECT, UPDATE ON TABLE stud TO Огородников

GRANT ALL PRIVILEGES ON TABLE stud, disc, st TO Лаврентьева

GRANT SELECT ON TABLE stud TO PUBLIC

Пример 5.3. Предоставление привилегий.

CREATE VIEW prim1 AS

SELECT fio, gr

FROM stud

GRANT SELECT ON prim1 TO Коля, Света

Факультативные возможности GRANT

Пользователь U1 может предоставить привилегии пользователю U2 с

возможностями GRANT (путем фразы WITH GRANT OPTION в предложении

GRANT)

Далее U2 может в свою очередь предоставить привилегии U3 и т.д.

U1 ->U2 -> U3         WITH GRANT OPTION

Пользователь U1

GRANT SELECT ON TABLE STUD TO U2 WITH GRANT OPTION

Пользователь U2

GRANT SELECT ON TABLE STUD TO U3 WITH GRANT OPTION

Пользователь U3

Пользователь U4

94

Page 95: УМК по СРОД-10-12

Отмена полномочий может быть осуществлена оператором REVOKE

REVOKE <привилегии> [ON_тип объекта]     FROM <пользователь>

REVOKE SELECT ON TABLE stud    FROM U2

Если пользователь U1 отменит привилегии пользователю U2, то все

остальные будут отменены каскадно.

5.3. Целостность данных

Под целостностью данных понимают соответствие информационной

модели предметной области (ПО), объектам реального мира и их взаимосвязям

в каждый момент времени.

В БД сведения о предметной области хранятся в информационной

модели. Любые изменения в ПО, значимое для построения модели, должно

отражаться в БД.

При создании таблиц пользователь может для столбцов, помимо задания

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

ограничения целостности.

Различают следующие ограничения целостности:

1.    Логические ограничения

2.    Внутренние ограничения

3.    Явные ограничения

Логические ограничения – это механизм контролирования значений, которые

хранятся в полях строки БД. Термин целостности используется для описания

точности и корректности данных, хранящихся в БД. Его не надо путать с

безопасностью. Проблема сохранения целостности данных касается

непреднамеренных ошибок и их предотвращения. Например, значение поля

возраст не должен быть >150 лет.95

Page 96: УМК по СРОД-10-12

Год окончания вуза должен превышать значение атрибута год рождения в

записи типа служащий. В учебной группе по списку должно быть не более 35

человек. Возраст сотрудника не меньше 18 и не больше 80 лет.

Внутренние ограничения – связаны со структурой данных.

Пример 5.4: запись не может состоять из 250 полей. В иерархической модели

связи должны быть древовидными.

Явные ограничения специфицируются в БД с помощью специальных

конструкций языка описания данных.

Пример 5.5: 1) в БД не может быть двух записей с одинаковыми ключами. 2)

Шифр детали представляется целым числом из 4х десятичных цифр.

В SQL вводятся также операторы ограничения:

CHECK – ограничения на значение атрибута

NULL – возможность хранения неопределенного значения

DEFAULT – определение значения по умолчанию

UNIQUE – гарантирует уникальное значение в столбце

PRIMARY KEY – определяет первичный ключ

Пример 5.6: Для задания ограничений отдельного столбца стандарт ISO задает

оператор

    CREATE DOMAIN <имя_файла> [AS] тип данных

[DEFAULT <значение>]

[CHECK <условие>]

Например, имя столбца с указанием пола (SEX)

CREATE DOMAIN sex_type AS CHAR CHECK (Value IN(‘M’,’F’))

В результате будет создан домен под именем Sex_type, состоящий из

двух символов M и F. В таблице Sotr(fio, sex, dolgn, …) имеется столбец sex.

Тогда столбец sex в таблице можно описать, используя домен sex_type.

96

Page 97: УМК по СРОД-10-12

5.4. Шифрование данных

Нелегальный пользователь может незаконно проникнуть в базу данных с

помощью обычных средств доступа, имеющихся в системе. Но может

попытаться проникнуть и минуя систему, например, подключившись к

коммуникационному каналу или физически захватив БД. Наиболее

эффективным методом борьбы с такими угрозами является шифрование

данных.

Зашифрованное сообщение называется криптограммой

1.    Шифр простой подстановки. Буквы кодируемого сообщения прямо

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

АБВГД

ВЕЗКН

2.    Шифр многоалфавитной подстановки.

Все методы многоалфавитной подстановки можно представить как

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

C=(a*P+S)modK, где a - десятичный коэффициент, Р – номер буквы, S – сдвиг.

3.    Шифр Цезаря. Является частным случаем многоалфавитной

подстановки.

С=Р+К*(mod27) 1<=K<=27

C=P+2*(mod27)

Пример:

0    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16    17    18    19

A   B   C   D    E    F   G    H    I    J     K      L     M     N     O     P     Q      R      S     T

97

Page 98: УМК по СРОД-10-12

4.    Шифр Вижинера (универсальный):

Для кодирования используются ключи. Здесь степень надежности закрытия

информации повышается за счет того, что метод шифрования предусматривает

нарушение статистических закономерностей появления букв алфавита. Ключ,

представляет собой некоторое слово или просто последовательность букв.

Например, необходимо закодировать слово DECODER. Пусть PIES – ключ

Вопросы

1. Что понимают под безопасностью баз данных?

2. Перечислите меры безопасности

3. Какие существуют методы идентификации и установления

подлинности?

4. В каких случаях используют процедуру в «режиме

рукопожатия»?

5. Для чего используется механизм представления?

6. Как на SQL организуется механизм представления?

7. Что позволяет оператор GRANT?

8. Как осуществляются факультативные возможности GRANT?

9. Какие существуют ограничения целостности данных?

10. Приведите примеры логических ограничений.

11. Назовите основные методы шифрования данных.

6. Хранилище данных98

Page 99: УМК по СРОД-10-12

Согласно аналитическим оценкам объем информации в мире удваивается

каждые 2-3 года. Этот потоп, цунами данных приходит из науки, бизнеса,

Интернета и других источников. Среди самых больших баз данных в 2003г.

France Telecom имела базу размером в 30000 миллиардов байт, а Alexa Internet

Archive – 500000 миллиардов байт.

Еще в 1989г. 1 мегабайт считался размером для большой базы данных. В

настоящее время предвидеться для астрономии иметь во много терабайт, а

затем петабайт. (1 терабайт = 1000 миллиардов байт, а 1 петабайт = 1000

терабайт, 1 гигабайт = 1024 мегабайт).

Из-за огромного количества информации очень малая ее часть будет

когда-либо увидена человеческим глазом. Надежда – применение Data Mining.

Data Mining (называемая Knowledge Discovery In Data) – процесс нахождения

(обнаружения) потенциально полезных знаний в базах данных.

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

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

системы принято называть системами поддержки принятия решений – СППР

(DSS, Decision Support System).

Задачи СППР:

- ввод данных – OLTP (Online transaction processing);

- хранение данных – СУБД и концепция хранилища данных (ХД);

- анализ данных.

Анализ данных может производиться на основе следующих данных:

- ИПС на базе реляционных СУБД и запросов с использованием языка

SQL;

- Подсистемы оперативного анализа OLAP (Online analytical processing);

- Подсистема интеллектуального анализа Data Mining (“добыча данных”).

6.1. Концепции хранилища данных

99

Page 100: УМК по СРОД-10-12

Первые сведения по ХД появились в 1988г. В 1992г. Г.Инмон подробно

описал концепцию в своей монографии “Построение хранилищ данных”.

В основе концепции ХД лежит идея разделения данных, используемых

для оперативной обработки и для решения задач анализа.

Хранилище данных – предметно-ориентированный, интегрированный,

неизменчивый, поддерживающий хронологию набор данных, организованный

для целей поддержки принятия решений.

В СППР разделение данных происходит в двух направлениях:

1) ОИД – оперативные источники данных (это оперативные БД, файлы,

электронные таблицы и т.п.)

2) структуры данных, предназначенных для анализа – это ХД.

Дальнейшее развитие – это использование витрин данных (ВД). ВД – это

упрощенный вариант ХД, содержащий только тематические объединенные

данные. ВД существенно меньше по объему ХД, является подмножеством

данных.

Рис.6.1. Схема системы поддержки принятия решений (СППР)

Все данные в ХД делятся на три категории:

- детальные данные (переносимые непосредственно из ОИД);

100

Page 101: УМК по СРОД-10-12

- агрегированные ( получают путем суммирования числовых фактических

данных по определенным измерениям);

- метаданные (данные о данных).

Большинство СППР работают не с детальными данными, а с

агрегированными данными. Перенос данных в ХД называют ETL – процессом

(E –extraction, T – transformation, L – loading) – извлечение, преобразование и

загрузка.

6.2. Многомерная модель данных

Реляционные модели не позволяют просматривать и анализировать

данные с точки зрения множественности измерений. Множественность

измерений предполагает представление данных в виде многомерной модели

(гиперкуба).

Рис.6.2. Многомерная модель хранилища данных

Измерения:

Исполнитель (предприятие – подразделение – отдел – служащий).

Время (Год – квартал – месяц – день).

101

Page 102: УМК по СРОД-10-12

Мера (measures) – представляет ячейку, которая хранит факты (объемы

продаж, остатки на складе, издержки и т.п.).

Срез (Slice) – формирует подмножество многомерного массива данных.

Вращение (Rotate) – изменение расположения измерений.

Консолидация (Drill Up) – агрегирование.

Детализация (Drill Down)

6.3. OLAP – системы

OLAP (On-Line Analytical Processing) – технология оперативной

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

хранения и анализа многомерных данных в целях поддержки процесса

принятия решений.

18 правил, предъявляемых к OLAP:

- многомерное концептуальное представление данных,

- доступность,

- архитектура “клиент - сервер”,

- прозрачность,

- обработка ненормализованных данных,

- универсальность измерений и т.д.

OLAP система должна обеспечивать выдачу большинства ответов в

пределах не более 5 сек.

Архитектура OLAP – систем

Выделяют три основных способа реализации многомерных моделей:

- MOLAP – используют многомерные БД,

- ROLAP – используют реляционные БД,

- HOLAP – используют и многомерные и реляционные БД.

MOLAP – используют для хранения и управления данными -

многомерные БД. Данные хранятся в виде многомерных массивов. Такие

102

Page 103: УМК по СРОД-10-12

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

представлены в многомерном виде, хранятся в плоских файлах. Куб

представляется в виде одной плоской таблицы, в которую построчно

вписываются все комбинации членов всех измерений с соответствующими им

значениям мер.

Достоинство – быстрый поиск, так как база данных денормализована и

содержит агрегированные данные. Недостаток – чувствительность к

изменениям. Так при добавлении нового измерения приходится изменять

структуру всей БД. Рекомендуется для небольших БД (не более нескольких

гигабайт).

ROLAP

Реляционные БД дополняются средствами анализа. Распространены две

основные схемы реализации многомерного представления данных с помощью

реляционных таблиц: схема “Звезда” и схема “Снежинка”.

Основными составляющими таких схем являются денормализованные

таблицы фактов (Fact Table) и массивы таблиц измерений (Dimension Table).

Фактами являются:

- события (телефонный звонок, снятие денег со счета и т.д.),

- “моментальные снимки” – рассматривается состояние объекта

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

Таблицы измерений содержат неизменяемые, либо редко изменяемые

данные.

103

Page 104: УМК по СРОД-10-12

Рис.6.3. Модель хранилища данных по схеме «звезда»

В снежинке используются иерархические измерения, правда это ведет к

усложнению структуры БД. Недостаток ROLAP по сравнению с многомерными

СУБД – меньшая производительность.

HOLAP

Используют гибридную архитектуру, объединяющую технологии ROLAP

и MOLAP. MOLAP лучше работает с более плотными данными, а ROLAP

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

6.4. Интеллектуальный анализ данных

(Data Mining – добыча данных)

В OLAP системах аналитик выдвигает гипотезы и затем проверяет их. Он

решает задачи, основываясь на своих знаниях и опыте. Однако знания есть не

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

Такие знания называются “скрытыми”, так как они содержатся в гигабайтах и

терабайтах информации, которые человек не в состоянии исследовать

104

Page 105: УМК по СРОД-10-12

самостоятельно. Для определения скрытых знаний необходимо применять

специальные методы анализа, при которых приходится практически добывать

знания из “завалов” информации.

Пятницкий-Шапиро в 1996г. дали следующее определение добычи

данных.

Data Mining – исследование и обнаружение машиной (алгоритмами,

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

которые ранее не были известны, нетривиальны, практически полезны,

доступны для интерпретации человеком.

Свойства обнаруживаемых знаний:

- должны быть новые, ранее неизвестные,

- нетривиальны,

- практическими,

- доступными для понимания.

В Data Mining для представления полученных знаний служат модели.

Наиболее распространенными являются: правила, деревья решений, кластеры и

математические функции. А также: классификация, регрессия, поиск

ассоциативных правил и кластеризация.

Вопросы

1. Дайте определение хранилища данных

2. Задачи СППР

3. На основе, каких средств, производится анализ данных?

4. Что такое витрины данных?

5. Каковы составляющие схемы СППР?

6. Каково представление данных в ХД?

7. Для чего используется OLAP система?

8. Способы реализации многомерной модели в OLAP системах.

9. Отличие MOLAP систем от ROLAP.

105

Page 106: УМК по СРОД-10-12

10. Основные схемы реализации многомерного представления

данных.

11. Интеллектуальный анализ данных?

12. Свойства обнаруживаемых знаний в Data Mining.

7. Базы данных в Интернете

В 90х годах появилась новая технология, которая позволила связывать

территориально разнесенную информацию и осуществлять к ней

единообразный доступ. Такой сетью явилась Internet. Internet - представляет

собой глобальную информационную сеть, обеспечивающую пользователям

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

WWW предельно упростила доступ к информации. Одним из способов

электронного представления данных во всемирной сети является публикация

баз данных в Интернете, позволяющая размещать информацию из базы данных

на Web- страницах сети.

Различают следующие технологии:

WWW (World Wide Web) - позволяет общаться пользователям сети.

Используется архитектура «Клиент-Сервер».

Для адресации файлов, расположенных на серверах используется

универсальный локатор ресурсов (URL – Uniform Resource Locater). URL

включает в себя название протокола и адрес сервера.

http://URL

Для адресации данных используется доменная структура:

106

Page 107: УМК по СРОД-10-12

Адрес: http://kai.kazan.ru

При обращении к серверу, с сервера поступают текстовые файлы с

расширением html.

7.1. Язык HTML

HTML (Hyper Text Markup Language) – это язык гипертекстовой

разметки. Для построения HTML страниц используется теговая модель.

Теги – это управляющие коды, которые заключаются в угловые скобки <…>.

Типы тегов:

1.    Структурные

2.    Текстовые

3.    Кадровые

4.    Табличные

5.    Графические

6.    Ссылочные

7.    Теги форм

8.    Теги внедряемых объектов (модули, аплеты, объекты ActiveX)

Тело документа начинается и заканчивается тегом HTML

<HTML> тело документа </HTML>

Пример:

<HTML>

<HEAD> <TITLE> <Заголовок> название документа</TITLE>

</HEAD>

<BODY> <Тело документа>

107

Page 108: УМК по СРОД-10-12

</BODY>

</HTML>

Тело документа

·    Заголовки

H1-H6 (<H1> … </H1>)

Пример: <H1 ALIGN=center> Заголовок </H1>

·    Параграф

<P> - начинать абзац с новой строки.

Пример:

<P>

Абзац1

<P>

Абзац2

·    Перенос строки

<BR> - может стоять в начале или в конце параграфа

·    Шрифт

<I> … </I> - курсив

<B> … </B> - полужирный

<U> … </U> - подчеркивание

<TT> … </TT> - пишущая машинка

·    Размер шрифта

<BASEFONT> - размер шрифта (базовый от 1 до 7)

<FONT> - текущий шрифт

Пример:

<P>

< BASEFONT SIZE=4>

основной шрифт

<P>

108

Page 109: УМК по СРОД-10-12

<FONT SIZE=+1>

крупнее основного на 1

<P>

<FONT SIZE=7>

самый большой размер шрифта

·    Для задания гарнитуры и цвета внутри тега FONT используются атрибуты-

FACE и COLOR.

<FONT FACE=”Helvetica” SIZE=’7’ COLOR=”Blue”>

Списки

Списки бывают:

·    Ненумерованные <UL>

·    Нумерованные <OL>

Пример:

<UL>

        <Li> первый элемент списка

     <Li> второй элемент списка

        <Li> третий элемент списка

</UL>

Результат:

первый элемент списка

второй элемент списка

третий элемент списка

<LH> - тег, позволяющий именовать списки

Пример.

<HTML>

<HEADE>

<TITLE>Пример вложенных списков</TITLE>

</HEADE>

109

Page 110: УМК по СРОД-10-12

<BODY>

<H1>Списки товаров</H1>

<UL>

<LI>Мебель

<UL>

<LI>Стол

<LI>Шкаф

<LI>Комод

</UL>

<LI>Автомобили

<UL>

<LI>ВАЗ

<LI>Волга

<LI>Ока

</UL>

</UL>

</BODY>

</HTML>

Гипертекстовые ссылки

Ссылки позволяют щелчком по выделенному слову или фразе перейти к

другому документу (файлу). Ссылки выделяются другим цветом или

подчеркиванием.

Для создания ссылок используется специальный тег <A> anchor (якорь).

Якорь имеет несколько атрибутов, главным из которых является HREF – Hyper

Text Reference

110

Page 111: УМК по СРОД-10-12

<A HREF=”URL_адрес”> Текст </А>

<A HREF=”Документ.htm”> Выделенный текст </А>

Результат: щелкая на «Выделенный текст» перемещаемся в «Документ.htm»

Для ссылки внутри документа используется маркер <A…> с атрибутом

Name

<A HREF=”#GO”> … </A>

<A NAME=”GO”> … </A>

Для ссылки в определенное место документа используется имя документа

и маркер.

<A HREF=”example.html # first”> Ссылка </A>

<A NAME=first> Некий заголовок </A>

Пример:

<HTML>

<HEAD><TITLE>Файл данных</HEAD>

<BODY>

<H1> Файл о студентах и сотрудниках </H1>

<UL>

<LH> Перечень списков </LH>

<LI> <A href=”#SOTR”> Сотрудники </A>

<LI> <A href=”#STUD”> Студенты </A>

</UL>

<A NAME=”SOTR”> Сведения о сотрудниках </A>

<P>

Иванов … <BR>

Петров … <BR>

Сидоров … <BR>

<A NAME=”STUD”> Сведения о студентах </A>

<P>

111

Page 112: УМК по СРОД-10-12

Котов … <BR>

Яхин… <BR>

Титова … <BR>

</BODY>

</HTML>

Графические ссылки

Для графических ссылок используется метка <IMG…> с атрибутом SRC

<A HREF=”DOM.HTML”><IMG SRC=”DOM.GIF”></A>

DOM.HTML – имя файла, на который указывает ссылка

DOM.GIF – файл изображения, на который необходимо щелкнуть.

Рис.7.1. Схема перехода по графической ссылке

Таблицы.

Формируются с помощью тега.

<TABLE> … </TABLE>

BORDER – ячейки таблицы выделить рамкой (бордюром)

CAPTION – задает название таблицы

TH – название столбцов

TR – начало каждого ряда

TD – ввод данных

Пример: Сотрудники

112

Page 113: УМК по СРОД-10-12

Имя Отдел Год рожд-я

Андреев А АСУ 1973

Иванов И КО 1964

Сергеев С САПР 1978

Рис.7.2. Таблица «Сотрудники»

<TABLE BORDER>

<CARTION ALIGN=TOP> Сотрудники </CAPTION>

<TR>

<TH> Имя </TH>

<TH> Отдел </TH>

<TH> Год рождения </TH>

</TR>

<TR> <TD> Андреев А</TD> <TD> АСУ </TD> <TD> 1973 </TD>

<TR> <TD> Иванов И </TD> <TD> КО </TD> <TD> 1964 </TD>

<TR> <TD> Сергеев С</TD> <TD> САПР </TD> <TD> 1978 </TD>

</TABLE>

Фреймы

Фреймы – позволяют разбить окно на несколько разделов, которые имеют свои

рисунки, полосы прокрутки, свои данные. В каждом фрейме показывается свой

документ HTML.

113

Page 114: УМК по СРОД-10-12

Рис.7.3. Пример разделения экрана на фреймы

Для разбивки окна на фреймы используется тег <FRAMESET>.

С помощью атрибутов COLS и ROWS производится разбивка на колонки и

строки. Разбивка может производится в пикселях или в процентах.

Пример.

<FRAMESET COLS=”100, 200, *”>

<FRAMESET ROWS=”30%, 70%”>

Для заполнения фрейма страницы HTML используется тег:

<FRAME SRC>

Пример.

<FRAME SET COLS=”100, 200, 300”>

<FRAME SRC=”A.HTM”>

<FRAME SRC=”B.HTM”>

<FRAME SRC=”C.HTM”>

Пример.

<FRAMESET ROWS=”50%,50%”>

<FRAME SRC=”top.htm” NAME=”Top”>

 <FRAMESET COLS=”50%,50%”>

<FRAME SRC=”fleft.htm” NAME=”BottonLeft”>

<FRAME SRC=”fright.htm” NAME=”BottonRight”>

114

Page 115: УМК по СРОД-10-12

</FRAMESET>

</FRAMESET>

Для вызова файла используется атрибут TARGET.

Например:

<A HREF=”New.html” TARGET “BottonRight”>Новый текст </A>

Файл New.html загружается в окно BottonRight

Формы

Формы используются:

·    Для общения клиентских программ с базой данных

·    Регистрации пользователей

·    Организации заказов на товары

Формы создаются с помощью Браузера.

Браузер пересылает введенную информацию по указанному

электронному почтовому адресу. Web – сервер выдает клиенту требуемую

информацию в виде HTML-страницы.

На рис.7.4 представлен пример формы, предназначенный для формирования

заказа.

Рис.7.4. Пример формы

Основными частями формы являются:

·    Открывающий тег

<FORM>

115

Page 116: УМК по СРОД-10-12

·    Объявление типов полей ввода

<INPUT TYPE>

Тег <INPUT> должен содержать обязательный атрибут TYPE*, определяющий конкретный тип элемента управления. Вот основные возможные значения этого атрибута:

"TEXT" — создается текстовое поле;

"PASSWD" — создается текстовое поле, но вводимая информация не отображается на экране («текстовое поле для ввода пароля»);

"CHECKBOX" — создается флажок, который может быть установлен или сброшен;

"RADIO" — создается переключатель (из группы переключателей может быть включен только один);

"SUBMIT" — создается кнопка отправки формы;

"IMAGE"— создается графическая кнопка отправки;

"RESET" — создается кнопка очистки формы, щелчок на которой возвращает форму к ее исходному состоянию.

Открывающий тег <form> содержит атрибут action, который определяет,

где находится программа-обработчик, или адрес сервера, который будет

обрабатывать форму

Оформление тега формы:

<FORM ACTION=”URL” METHOD метод передачи ENCTYPE=тип_кода>.

Так как сообщение, написанное посетителем сайта, будет отправляться по

электронной почте, то значение этого атрибута должно содержать адрес E-mail

владельца сайта, например: action=”mailto: [email protected]

Атрибут тега <form> - method – определяет, каким образом или с

помощью какого протокола данные из формы будут переданы программе

обработчику. Определяет метод пересылки данных формы от обозревателя к

Web –серверу.

Различают два метода передачи:

1.    GET – принимается по умолчанию

2.    POST

116

Page 117: УМК по СРОД-10-12

Если параметр имеет значение GET, то данные формы передаются в составе

запроса URL, будучи присоединенным к нему справа от символа “?”.

Так как обычно используется электронная почта, то значение этого

атрибута должно быть POST.

Тогда

<form action=”mailto: [email protected]” method=post>

</form>

Если GET, то

GET /bhv.ru/cgi-bin/prog1.сgi ? NAME=stive&format=HTML HTTP/1.0

Тег Input:

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

флагов и т.д.

<INPUT TYPE: тип_поля_ввода NAME=имя_поля_ввода дополнительные

параметры> 

TYPE:

·    TEXT – символьная строка

·    PASSWORD – символы заменяются на *

·    CHECKBOX – выводит поле для установки флагов в виде ограниченной

области.  Может быть произведен выбор сразу нескольких опций из числа

предложенных.

·    RADIO –   аналогичен предыдущему типу поля, но имеет несколько

отличный вид.  

·    RESET – очистка формы.

·    SUBMIT – отправка данных на сервер.

Пример.

<FORM>

117

Page 118: УМК по СРОД-10-12

Введите имя

<INPUT TYPE: “text” NAME=”My” Value=”Имя” SIZE=10 MAX

LENGTH=”20”>

Пример.

<FORM>

Введите имя

<INPUT TYPE: “password” NAME=”posst” Value=”Имя” SIZE=20 MAX

LENGTH=”30”>

Пример.

Рис.7.5. Пример создания формы

<HTML>

<HEAD>

<TITLE> Сведения </TITLE>

</HEAD>

<BODY>

<H1>Кто Вы?</H1>

<P>

Укажите свои данные <BR>

<FORM METHOD=”POST” ACTION=”Tbindwio”>

Фамилия: <BR>

118

Page 119: УМК по СРОД-10-12

<INPUT TYPE=”text” NAME=”FIO” SIZE=”20” MAX_LENGTH=”40”>

Имя: <BR>

<INPUT TYPE=”text” NAME=”IMY” SIZE=”20” MAX_LENGTH=”40”>

<P>

<INPUT TYPE=”SUBMIT” VALUE=”Далее”>

<INPUT TYPE=”RESET” VALUE=”Очистить”>

</FORM>

</HTML>

При использовании переключателей:

RADIO:

<UL>

<INPUT TYPE=”RADIO” NAME=”cord1” VALUE=”Холодильник” CHECKED>

<INPUT TYPE=”RADIO” NAME=”cord2” VALUE=”Телевизор”>

<INPUT TYPE=”RADIO” NAME=”cord3” VALUE=”Компьютеры”>

</UL>

 Результат:

CHECKBOX:

<UL>

<INPUT TYPE=” CHECKBOX” NAME=”cord1” VALUE=”Yes” CHECKED>

Толстой <BR>

<INPUT TYPE=” CHECKBOX” NAME=”cord2” VALUE=”Yes” CHECKED>

119

Page 120: УМК по СРОД-10-12

Пушкин <BR>

<INPUT TYPE=” CHECKBOX” NAME=”cord3” VALUE=” ” CHECKED>

Лермонтов <BR>

</UL>

Результат:

Для передачи текстовой области:

<TEXTAREA NAME=”Resume” ROWS=10 COLS=60>

Текст

</TEXTAREA>

Раскрывающиеся списки:

<SELECT NAME=”имя_поля” SIZE=число MULTIPLE>

<SELECT NAME=”теги”>

<OPTION SELECTID Value=”D1”> Действие 1

<OPTION SELECTID Value=”D2”> Действие 2

<OPTION SELECTID Value=”D3”> Действие 3

</SELECT>

В приложении 1 приведен пример создания Web – страницы, по истории

и развитии г.Казани.

7.2. Каскадная таблица стилей

(CSS, Cascade Style Sheets)

Таблица стилей позволяет управлять отображением HTML- документов.

С помощью CSS можно задавать цвет, шрифт, отступы, рамки, таблицы. CSS

120

Page 121: УМК по СРОД-10-12

позволяет вносить изменения ( например, цвет), сразу во весь документ, а так

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

встроенными. Внешние CSS помещаются в отдельный файл (например,

mestyle.css). Подключаются внешние таблицы стилей к документу при помощи

HTML- элемента LINK.

При этом задаются атрибуты:

Href - задает URL файла,

Rel – присваивает значение stylesheet; указывает, что описывается

ссылка на стилевую таблицу,

Type – при подключении задается значение text/css; указывает на

оформление, как на обычный текстовый файл

Media – задает тип устройства.

Для одного документа можно подключить неограниченное количество стилей.

<head>

<Link href=”mystyle.css” rel=”stylesheet” type=”text/css”>

<Link href=”mystyle_ex.css” rel=”stylesheet” type=”text/css”>

</head>

Встроенные таблицы стилей задаются внутри HTML с помощью элементов

(<style> и </style>), помещенные в разделе HEAD документа. При небольших

документах лучше использовать встроенные таблицы CSS.

Таблицы стилей представляют собой множества записей, называемых

селекторами. Каждая запись состоит из двух частей: наименование элемента и

правило отображение этого элемента. Правила заключаются в фигурные скобки

{}.

Элемент [,элемент] {свойство: значение, свойство: значение, … }

Например:

H1.arial {color: red; font-family: arial}

H2,H3 {color: blue; font-family: newroman}

121

Page 122: УМК по СРОД-10-12

P { font-family: italic}

Использование стилевых классов

Пример.

H1.arial {color: red; font-family: arial}

H2.newroman {color: blue; font-family: newroman}

P.italic (font-family: italic}

. bold {font-family: bold}

Здесь созданы четыре стилевых класса.

Назначение стилевого класса HTML – элементу осуществляется при помощи

атрибута class.

Пример.

<html>

<head>

<title>Использование стилевых классов</title>

<!—Определение таблицы стилей -- >

<style type=”text/css”>

h1.arial {color: red; font-family: arial}

h2.newroman {color: blue; font-family: newroman}

P.italic (font-family: italic}

. bold {font-family: bold}

</style>

</head>

<body>

<h1>Заголовок первого уровня </h1>

<p> Текст абзаца

<h1 class=”arial”>Измененный заголовок первого уровня</h1>

<h2>Заголовок второго уровня </h2>

<p class=”italic”> Курсивный текст абзаца

122

Page 123: УМК по СРОД-10-12

<h2 class=”arial”>Измененный заголовок второго уровня</h2>

<p class=”bold”> Полужирный текст абзаца

</body>

</html>

Стили можно определять также при использовании атрибута style, который

поддерживается для тех же HTML – элементов, что и атрибут Class.

Пример.

<html>

<body>

<h1>Заголовок первого уровня </h1>

<p> Текст абзаца

<h1 style=” color: red; font-family: arial”>Измененный заголовок первого

уровня</h1>

<h2>Заголовок второго уровня </h2>

<p style=” font-family: italic ”> Курсивный текст абзаца

---------------------------------

</body>

</html>

Установка цвета.

Задать цвет в CSS можно двумя способами.

Во-1, можно использовать предопределенные названия цветов: black, white, red

и т.д.

Второй способ состоит в указании RGB – кода цвета. При этом существуют 4

модификации этого способа: с использованием десятичных значений, процент

значений насыщенности цветов, с применением полного или сокращенного

набора 16-х значений.

Color: rgb (255, 255, 0)

Color: rgb (100%, 100%, 0%)

123

Page 124: УМК по СРОД-10-12

Color: #FFFF00

Color: #FF0

Пример.

<html>

<head>

<title>Пример использования стилей</title>

<style type=”text/css”>

Body (background-color: gray; font-size: 14pt; text-indent: 50pt)

h1 { background-color: white; color: blue}

h2.newroman {color: blue; font-family: newroman}

</style>

</head>

<body>

<h1> Моя домашняя страница</h1>

<p> Казань – город на Волге

</body>

</html>

В примере описание стиля задается внутри стилевого элемента. Заданы цвет

фона и шрифта заголовка (h1), цвет всего фона текста (body), его размер и

отступ первой строки.

В таблице приведены наиболее часто используемые элементы стилей.

Таблица.

Элемент Описание Возможные значения

Color Цвет текста Названия цветов

Background-

color

Цвет фона Названия цветов

Font-family Шрифт, которым будет

отображен элемент

Шрифт

Font size Размер шрифта В пикселях, сантиметрах

124

Page 125: УМК по СРОД-10-12

Border-width Ширина рамки В пикселях, сантиметрах

Border-style Тип рамки

Border-color Цвет рамки Названия цветов

7.3. Язык PHP и MySQL

Язык PHP (Personal Home Page) является универсальным языком разработки

сценариев. Вначале он был предназначен для разработки Web-узлов, затем стал

полноценным языком программирования. Это серверный язык

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

предназначенный для написания сценариев. Сценарии представляют собой

компьютерные файлы, которые содержат инструкции, выполняющие

определенные действия: вывод на экран строк или сохранение информации в

базе данных.

Возможности PHP:

- Взаимодействие с HTML-формами,

- Взаимодействие с базами данных,

- Создание безопасных Web-страниц.

PHP взаимодействуют с базами данных и поддерживают большинство

известных форматов: dBASE, Informix, MS SQL Server, MySQL, Ingres, Sybase и

др.

PHP поддерживает открытый интерфейс доступа к базам данных ODBC.

Страница, написанная на PHP, может быть такой же, ак и обычная HTML-

страница.

Например.

<html>

<head>

<title>Вас приветствует PHP</title>

<!—Определение таблицы стилей -- >

125

Page 126: УМК по СРОД-10-12

</head>

<body>

<h1>Hello in PHP</h1>

<?PHP

Print “Hello, world!”;

Phpinfo();

?>

</body>

</html>

Для разработки программы можно использовать любой текстовый редактор, но

лучше интегрированную среду разработки, например:

Dreamweaver MX

HomeSite

EditPlus

Emacs

HTML-Kit

PHPEdit

Переменные в языке начинаются со знака доллара - $

$name

$name-“Артур”;

$age=33;

$name1=$name2;

Отображение значений переменных выполняется

операторами print и echo.

$today=”Воскресение”;

Print_r($today);

Оператор echo имеет больше возможностей.

Например, пусть $name=”Артем”;

<p>Добро пожаловать, <?php echo $name?></p>

126

Page 127: УМК по СРОД-10-12

Результат

Добро пожаловать, Артем

Константы описываются с помощью оператора define

Define (“имя_константы”,”значение”);

Define (“weather”, “солнечная”);

Define(“inter”,33);

Ключевые слова: and, as, break, case, class, const, continue, declare, default, die,

do, echo, else, empty, exit, for, foreach, function, global, if, include, list, new, or,

print, return, switch, use, var, while.

Типы данных: integer, floating point, string, Boolean

Математические операции: +, -, *, /, %

Например:

$var1=5;

$var2=7;

$total=$var1+$var2;

$i=$i+1; или $i++ означает увеличение $i на единицу.

Можно использовать такие конструкции:

$X+=2;, $Y-=3;, $A*=2;, $B/=3;

Условный оператор

If(условие)

{

Фрагмент кода

}

Elseif(условие)

{

Фрагмент кода

}Else{

127

Page 128: УМК по СРОД-10-12

Фрагмент кода}

При наличии списка условий используется оператор switch

Switch ($имя_переменной)

{

Case значение;

Фрагмент кода;

Break;

Case значение;

Фрагмент кода;

Break;

- - - - - -

Default;

Фрагмент кода;

Break;

}

Циклы. Существуют три типа циклов.

1. for

2. while

3. do .. while

Например.

For ($i=1; $i<=3; $i++)

{

Echo “$i. Здравствуй, мир!<br>”;

}

Включение файлов

Include (“имя_файла”);

128

Page 129: УМК по СРОД-10-12

Include (“$filename”);

Функции

Function имя_функции()

{

Набор команд;

Return:

)

Функция die позволяет прервать выполнение, после чего выводит сообщение.

Например, при подключении к базе данных MySQL

Mysql_connect (“host”, “user”, “password”)

Or die (“База данных не доступна”);

Правда эта функция полностью останавливает сценарий, поэтому удобнее

использовать в этом случае условный оператор

If (!mysql_connect (“host”, “user”, “password”))

{

Echo “База данных не доступна \n”;

Exit;

}

MySQL

MySQL является превосходным сервером баз данных. Занимает первое место

по производительности.

MySQL – система управления реляционными базами данных.

Создание базы данных выполняется следующим образом.

Create database employee;

Далее создадим таблицу

Use employee;

Create table employee

(

129

Page 130: УМК по СРОД-10-12

empl_id int not null auto_increment primary key,

Name varchar(20),

Job varchar(30),

Department_id int not null references department(depart_id)

)type=InnoDB;

auto_increment означает, что если мы забыли всавить номер, то система

автоматически его вставит.

Type=InnoDB означает, что таблица должна использовать механизм хранения

InnoDB. Этот механизм поддерживает внешние ключи и транзакции. Если не

использовать InnoDB, то будет механизм хранения MyISAM.

Depart_id является внешним ключом, для этого он объявляется с помощью

оператора references.

В случае, если ключ состоит из двух атрибутов, то таблица будет создана

следующим образом.

Например, таблица квалификации служащих.

Create table employeeSkill

(

empl_id int not null references employee(empl_id),

skill varchar(15) not null

primary key (empl_id, skill)

)type=InnoDB;

Типы данных

Integer (int), float, numeric, double, char, varchar, text, blob, date, time, datetime,

year

Удаление

drop database employee;

drop table departamens;

130

Page 131: УМК по СРОД-10-12

alter table employee;

truncate – удаление всех строк таблицы.

Truncate table employee;

Операторы DML были подробно рассмотрены ранее

Insert

Delete

Update

Select

Для ввода данных удобно использовать ввод из текстового файла с помощью

оператора Load data infile

Например

Load data infile “employee_infile.txt”

Into table employee;

7.4. Публикация баз данных в Интернете

Может потребоваться для решения следующих задач:

1. Организация взаимосвязи СУБД, работающих на различных

платформах

2. Построение ИС в сети Интернет на основе многоуровневой

архитектуры БД.

3. Использование в Интернете информации из существующих

локальных сетевых баз данных.

4. Использование средств СУБД для обеспечения безопасности

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

создании Интернет – магазинов, защищенных ИС.

131

Page 132: УМК по СРОД-10-12

5. Использование обозревателя Web в качестве дешевой

клиентской программы для доступа к БД.

В Интернете вся информация размещается на Web – страницах,

написанных на языке HTML или его расширениях, таких как DHTML

(динамический HTML) и XML (расширяемый язык разметки). В содержимое

Web –страниц может входить текстовая информация, ссылки на другие Web –

страницы, графические изображения, аудио-, видеоинформация и др. Страницы

хранятся на Web – сервере.

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

технологии публикации баз данных в Интернете.

       

Рис.7.6. Схема взаимодействия Web-браузера с Web-сервером

7.5. Средства взаимодействия.

Для организации взаимодействия применяются следующие средства:

132

Page 133: УМК по СРОД-10-12

·    Сценарии, формируемые на различных языках сценариев (PHP, Java

Script, JScript, VBScript)

·    Апплеты и сервлеты – Java

·    Элементы управления ActiveX

·    Программы, реализованные с использованием интерфейса ISAPI

·    Динамические страницы IDC/HTX

·    Активные серверные страницы ASP

·    Интерфейсы CGI, Win CGI, API

Сценарии являются расширением языка HTML и могут включаться в тело Web

– документа.

Java – Си подобный язык ориентируется на Explore.

Апплеты Java - предназначены для динамического формирования страниц со

стороны клиента.  Язык Java является объектно-ориентированным языком,

похожим на C++. Сервлеты, в отличие от апплетов, выполняются на стороне

сервера. 

CGI – общий шлюзовый интерфейс. Применяется для создания

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

Программа CGI называется также скриптом или шлюзом. Она может

быть написана на различных языках: С/С++, Visual Basic, FoxPro, Perl, PHP и

т.д.

ISAPI – предназначен для разработки дополнительных модулей

расширения ASP, PHP и IDC/HTX – специальный тип страниц,

предназначенный для динамического формирования на сервере Web – страниц,

содержащих информацию из БД.

HTX – страница содержит HTML-шаблоны, поддерживающие все теги языка

HTML и дополнительные теги для размещения информации из БД.

ASP – содержит одновременно HTML-шаблон и SQL-запрос к БД. В ASP -

странице используются средства Java Script, с помощью которых организуется

доступ к БД.

133

Page 134: УМК по СРОД-10-12

PHP – страница разрабатывается с помощью одноименного языка разработки

сценариев, команды которого включаются в документ HTML

Все вышеперечисленные страницы обрабатываются сервером и формируется

Web-страница, которая содержит информацию из БД. Кроме того, существуют

следующие интерфейсы: ODBC, OLE DB, ADO.

ODBC – используется для доступа к реляционным БД.

OLE DB – используется для связывания и встраивания объектов БД.

ADO – ActiveX DataObject.

Вопросы

1. Расшифруйте WWW. Какое значение приобрела данная

технология?

2. С какой целью используется язык HTML?

3. Каким тегом открывается тело документа?

4. Укажите атрибут формирующий гиперссылку.

5. С каким атрибутом используется тег IMG и для чего?

6. Произведите разбивку экрана на три вертикальных кадра.

7. Каким образом производится объявление типов полей ввода при

создании формы?

8. Назначение каскадной таблицы стилей – CSS.

9. Перечислите средства взаимодействия клиента с Web-сервером.

10.Назначение языка PHP

11.PHP выполняется на клиенте или сервере

12.Конструкция PHP

13.MySQL

14.Каким образом происходит подключение базы данных в PHP

15.Создание таблиц в MySQL

134

Page 135: УМК по СРОД-10-12

8. Oracle Database

8.1. Архитектура сервера

Серверный продукт представляет собой выполняемый модуль, который

после запуска осуществляет важные функции. Доступ к базе данных Oracle9i

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

вспомогательных программ и файлов.

Файлы базы данных разделяются на три категории: файлы данных,

управляющие файлы и файлы журналов повтора.

Процессы, обеспечивающие работу базы данных, порождаются при

запуске экземпляра Oracle9i и облегчают доступ к файлам базы данных.

Фоновые процессы обеспечивают функционирование экземпляра Oracle9i и

принимают запросы об установлении соединений от пользователей. На рис.1

показаны эти фоновые процессы экземпляра.

Рис.8.1. Структура базы данных Oracle

Экземпляр oracle

База данных Oracle

Процесс пользовател

я

Процесс сервера

Глобальная системная облость (SGA)

Фоновые процессы Oracle.

Файлы данных

Контрольные Файлы

АрхивныеФайлы

135

Page 136: УМК по СРОД-10-12

Каждая работающая база данных Oracle9i связана с экземпляром (in-

stance) Oracle. Когда на сервере баз данных стартует база данных, программное

обеспечение Oracle выделяет память для системной глобальной области (System

Global Area, SGA) и запускает несколько фоновых процессов (background pro-

cesses) Oracle. Такое объединение SGA и процессов называется экземпляром

Oracle. Фоновые процессы (background processes) выполняют разные функции и

взаимодействуют с различными частями базы данных. Существуют следующие

фоновые процессы:

Smon (system monitor – системный монитор)

Pmon (process monitor – монитор процессов)

Dbwr (database write – процесс записи в базу данных)

Lgwr (log write – процесс записи в журнал)

Ckpt (checkpoint – генератор контрольных точек)

После запуска экземпляра программное обеспечение связывает экземпляр

с определенной базой данных. Это называется монтированием базы данных.

Вслед за этим база данных готова для открытия, после которого она становится

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

База данных Oracle использует структуры памяти и процессы для

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

работающие в памяти этих компьютеров.

Структура памяти, связанная с экземпляром, состоит из двух основных

частей системной глобальной области (System Global Area – SGA) и

программной глобальной области (Program Global Area – PGA).

SGA – это область разделяемой памяти, в которой содержатся данные и

управляющая информация экземпляра.

PGA – это область памяти, выделяемая для каждого серверного процесса,

содержащая данные и управляющую информацию этого процесса. Серверный

процесс – это процесс, который обрабатывает запросы клиента.

136

Page 137: УМК по СРОД-10-12

8.2. Табличные пространства и файлы данных

Табличное пространство (tablespace) – это набор, состоящий из одного

или нескольких файлов данных. В этих файлах размещается информация,

относящаяся к базе данных. Каждая база данных Oracle содержит табличные

пространства System и SYS (рис.2). Они автоматически создаются, когда

создается база данных. Пространство System всегда находится в оперативном

состоянии, когда открыта база данных. В нем хранятся таблицы,

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

таблицы словаря данных). SYS – вспомогательное по отношению к System

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

должно быть в оперативном состоянии для корректного функционирования

базы данных.

Польз.1

Польз.2

Польз.n

Словаря данных

Oracle Администратор

1-System2-sys

Только чтение

Только чтение

tabdual

User_constraints

137

Page 138: УМК по СРОД-10-12

Рис.8.2. Табличные пространства System и Sys

В базе данных существуют следующие структуры хранения:

- Логические:

база данных, схема, табличное пространство, сегмент, экстент, блок Oracle,

- Физические:

файлы данных, файлы параметров, журналы и блок ОС.

8.3. PL/SQL ORACLE

Продукты Oracle можно разделить на пять категорий.

Oracle database

Oracle Application Server (Сервер приложений)

Internet Development Suite (Комплект продуктов для Интернет разработок)

Data Warehousing and Business Development (Средства для работы с

хранилищем данных и организации бизнеса)

Oracle E-business Suite (Набор комплексных приложений для

электронного бизнеса)

PL/SQL – Procedural Language/Structured Query Language

(Процедурный язык / Язык структурированных запросов)

Впервые PL/SQL появился в шестой версии Oracle в 1988г.

PL/SQL – язык программирования, напоминающий языки ADA и C.

PL/SQL используется для считывания информации, заполнения БД, создания

хранимых объектов и даже для отображения Web – страниц.

Oracle – это не просто база данных, она является также и процессором,

поддерживающим различные языки программирования. Так Oracle9i содержит

процессор Java со встроенной виртуальной машиной Java (Java Virtual Machine

– JVM), а также процессор PL/SQL. Oracle самодостаточен и поэтому не

138

Page 139: УМК по СРОД-10-12

требует других программных продуктов. Процессор PL/SQL тесно

интегрирован с базой данных.

Рис.8.3. Архитектура PL/SQL

Рис.8.3 демонстрирует процесс работы PL/SQL внутри базы данных и за ее

пределами. Центральное положение занимает сервер Oracle, который является

основным процессором БД. Он координирует все обращения к базе данных.

Когда программа посылает на сервер запрос, БД Oracle загружает

откомпилированный код в память, после чего процессоры PL/SQL и SQL

выполняют этот код.

Структура программы PL/SQL

[DECLARE]

Переменные, курсоры

BEGIN

- Команды SQL139

Page 140: УМК по СРОД-10-12

- Команды PL/SQL

[EXEPTION]

Действия при возникновении ошибок

END;

/

Программы в PL/SQL обычно называют блоками. Фактически блоки

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

выполнены. Каждая программная единица PL/SQL состоит из одного или

нескольких блоков. Эти блоки могут быть полностью автономными или

вложенными один в другой.

Комментарии: -- однострочные, /* --- */ многострочные.

Типы блоков.

Существуют три типа блоков, из которых может быть выстроена программа

PL/SQL: анонимные блоки; процедурные; функции (рис.8.4).

Рис.8.4. Типы блоков

Анонимные блоки не имеют имен. Эти блоки не хранятся в базе данных. Они

передаются на исполнение машине PL/SQL во время выполнения приложения.

Подпрограммы (subprograms) – это именованные блоки PL/SQL, хранимые в

140

Page 141: УМК по СРОД-10-12

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

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

выполнения действия, а функция - для вычисления и возврата значений.

Среды программирования на PL/SQL.

Oracle JDeveloper 10g - интегрированная среда разработки.

Позволяет:

- производить навигацию по присоединенной базе данных и доступ к ее

объектам;

- создание пользователей и объектов базы данных;

- создание, выполнение и отладка программ на PL/SQL (например, процедур,

функций и пакетов).

iSQL*Plus – это интерфейс к SQL*Plus, предоставляемый из браузера.

Рис.8.5. Архитектура iSQL*Plus

Переменные PL/SQL:

- Скалярные

- Составные

- Ссылочные

- LOB (большие объекты)

Наиболее часто встречаются следующие типы данных:

141

Page 142: УМК по СРОД-10-12

VARCHAR2, NUMBER, DATE, BOOLEAN

Инициализация переменных производится по следующей схеме:

Имя_переменной тип_переменной := значение;

Также можно определять переменные в теле основной программы:

Имя_переменной := значение;

Примеры

DECLARE

L_name VARCHAR2(30);

L_today DATE := sysdate;

L_counter NUMBER :=0;

L_average_amount NUMBER(12,2);

Flag BOOLEAN := FALSE;

Атрибут %TYPE позволяет объявить переменную на основе уже объявленной

переменной или столбца базы данных. Это позволит избежать ошибок,

вызванных несоответствием в типах данных или неверной точностью.

Например.

Balance NUMBER(7,2);

Min_balance balance%TYPE:=1000;

В PL/SQL имеются переменные подстановки, которые используются для ввода

данных во время выполнения. В блоке перед именем переменной подстановки

ставится амперсанд.

Empno NUMBER(6) := &empno;

Команда DEFINE используется для определения пользовательской переменной

DEFINE lname :=Urman

142

Page 143: УМК по СРОД-10-12

Команды управления:

Условные операторы IF

Операторы CASE

Операторы цикла

Конструкция IF – THEN

IF x = 0 THEN

Y:=1;

END IF;

BEGIN

IF x>y THEN

Max := x;

ELSE

Max := y;

END IF;

END;

Оператор CASE

CASE переменная

WHEN выражение1 THEN значение1

WHEN выражение2 THEN значение2

WHEN выражение3 THEN значение3

ELSE значение5

END;

Циклы:

Имеются три типа циклов: простой цикл LOOP, цикл FOR, цикл WHILE

143

Page 144: УМК по СРОД-10-12

Цикл LOOP

LOOP

команды;

EXIT [WHEN выражение];

END LOOP;

Для выхода из цикла используется оператор EXIT

Циклы WHILE

WHILE условие LOOP

Команда1;

Команда2;

. . .

END LOOP;

Цикл FOR

FOR I IN m . . n

LOOP

Команда1;

END LOOP

Пример.

DECLARE

m NUMBER :=1;

n NUMBER := 100;

BEGIN

FOR I IN m . . n LOOP

. . .

END LOOP;

END;

144

Page 145: УМК по СРОД-10-12

Команды SQL в PL/SQL

SELECT – команда выборки данных

Синтаксис:

SELECT список_выборки

INTO {имя_переменной [, имя_переменной] . . .| имя_записи}

FROM таблица

[WHERE условие];

Пример.

Пусть у нас имеется отношение sotrud (ns, name),

Где ns – номер сотрудника, name – имя сотрудника.

SET SERVEROUTPUT ON

DECLARE

fname VARCHAR2(25);

BEGIN

SELECT name INTO fname

FROM sort WHERE ns=126;

DBMS_OUTPUT.PUT_LINE(‘ Name is: ‘ ||fname);

END;

Манипулирование данными в PL/SQL.

Внесение изменений в таблицы базы данных с помощью команд DML:

INSERT, UPDATE, DELETE, MERGE

Оператор MERGE выбирает строки из одной таблицы для изменения или

вставки в другую таблицу.

Курсор SQL

145

Page 146: УМК по СРОД-10-12

Для выборки из базы данных многих записей и последующей обработке их в

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

При однострочной выборке, курсор обычно неявный. При многострочной

выборке необходимо явно указать курсор.

Синтаксис объявления явного курсора:

CURSOR имя_курсора IS команда_SELECT;

Пример.

DECLARE

CURSOR q IS

SELECT ns, name FROM sort

WHERE otd=40;

Управление явным курсором производится по следующей схеме, см.рис.8.6.

Рис.8.6. Схема управления курсором

Пример. Выборка данных из курсора.146

Page 147: УМК по СРОД-10-12

SET SERVEROUTPUT ON

DECLARE

CURSOR q IS

SELECT ns, name FROM sotr

WHERE n_otdela=40;

num sotr.ns%TYPE;

lname sotr.name%TYPE;

BEGIN

OPEN q;

FETCH q INTO num, lname;

DBMS_OUTPUT.PUT_LINE (num || ‘ ‘ || lname);

. . .

END;

Пример. Выборка данных в цикле.

SET SERVEROUTPUT ON

DECLARE

CURSOR q IS

SELECT ns, name FROM sotr

WHERE n_otdela=40;

num sotr.ns%TYPE;

lname sotr.name%TYPE;

BEGIN

OPEN q;

LOOP

FETCH q INTO num, lname;

EXIT WHEN q%NOTFOUND;

DBMS_OUTPUT.PUT_LINE (num || ‘ ‘ || lname);

END LOOP;

147

Page 148: УМК по СРОД-10-12

. . .

END;

Курсорный цикл FOR

Курсорный цикл FOR включает курсор SELECT и позволяет осуществлять

выборку нескольких строк из базы данных. При этом не нужно заботиться об

открытии и закрытии курсора. ORACLE сделает это самостоятельно внутри

цикла. В цикле FOR объявлять курсор не требуется.

Пример.

SET SERVEROUTPUT ON

BEGIN

FOR q IN ( SELECT ns, name FROM sotr

WHERE n_otdela=40;

LOOP

DBMS_OUTPUT.PUT_LINE (q.ns || ‘ ‘ || q.name);

END LOOP;

END;

Здесь переменная q используется для сохранения результатов выполнения

курсора.

8.4. Процедуры и функции

Процедуры и функции – это именованные блоки PL/SQL. Их также называют

подпрограммами. Они компилируются и хранятся в базе данных. Анонимные

блоки, рассмотренные ранее – это неименованные блоки. Они после

выполнения не сохраняются для последующего повторного использования.

Синтаксис процедуры:

148

Page 149: УМК по СРОД-10-12

CREATE [OR REPLACE] PROCEDURE имя_процедуры

[(аргумент1 [тип_параметра1] тип_данных1,

[(аргумент2 [тип_параметра2] тип_данных2, . . .)]

IS|AS

тело_процедуры;

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

Begin

Имя_процедуры;

END;

Процедуру можно также вызвать с помощью команды CALL:

CALL <имя_процедуры>

Функция создается следующим образом:

CREATE [OR REPLACE] FUNCTION имя_функции

[(аргумент1 [тип_параметра1] тип_данных1,

[(аргумент2 [тип_параметра2] тип_данных2, . . .)]

RETURN тип_данных

IS|AS

тело_функции;

Вызываемая функция просто вставляется в исполняемую секцию анонимного

блока.

149

Page 150: УМК по СРОД-10-12

База данных Oracle используется в качестве процессора для Интернета. Тот

факт, что Интернет функционирует 24 часа в сутки является громадным

достоинством Oracle по доступности к базам данных в любое время суток.

Вопросы

1. Назовите 5 основных продуктов ORACLE.

2. Основные блоки программ PL/SQL.

3. В чем отличие анонимных блоков от именованных.

4. Основные переменные PL/SQL.

5. Как производится инициализация переменных.

6. Назовите основные команды управления в PL/SQL.

7. Циклы программ.

8. Как производится однострочная выборка из базы данных.

9. Для чего используется понятие «курсор».

150

Page 151: УМК по СРОД-10-12

Приложение 1. Пример создания Web – страницы

1. Введите в текстовом редакторе Блокнот (Notepad) основные

теги, определяющие структуру любых HTML – файлов.

<html>

<head>

<title></title>

</head>

<body>

</body>

</html>

2. На основе, полученной заготовки создадим Web-страницу

г.Казани

<html>

<head>

<title>Web-страница г.Казани</title>

</head>

<body bgcolor=blue text =yellow >

<h1 align=center>Добро пожаловать на нашу страничку</h1>

<center><a href=”spisok.html”><img src=logo.gif border=1></a></center>

<p style=”font-weigt: bold; font-style: italic; font-size: 150%; text:align:

center”> Здесь Вы узнаете<a href=”spisok.html”> о нашем городе </a></p>

</body>

</html>

Созданный файл сохраните под именем Kazan.html

2. Создадим список наших возможностей

<html>

151

Page 152: УМК по СРОД-10-12

<head>

<title>Каков наш город</title>

</head>

<body bgcolor=aqua text=navy>

<h1 align=center>Город Казань</h1>

<ul>

<li> Это красивый город на берегу Волги

<li>Городу исполнилось 1000 лет

<li>Богатая история: Толстой, Пушкин, Лобачевский, Бутлеров,

Тукай

<li>В городе развита промышленность: авиационная,

машиностроительная, химическая, легкая

<li>Город вузов: КГУ, КГТУ-КАИ, КГТУ-КХТИ, КИСИ, ЭУ,

Сельхоз-академия и др.

</ul>

<p align=center>Если у Вас есть вопросы или предложения, напишите

нам:</p>

<form action=”mailto: [email protected]” metod=post>

<center><texarea rows=5 cols=40 name=Comments></texarea></center>

<p><center><input type=submit value=”Отправить”></center></p>

<p><center><a href=”kazan.html”>На первую страницу</a></center>

</form>

</body>

</html>

Сохраните данный файл под именем Spisok.html

4.Создадим меню в виде таблицы

<html>

152

Page 153: УМК по СРОД-10-12

<head>

<title>Меню</title>

</head>

<body bgcolor=silver>

<table border=1 width=140>

<tr><th><a href=”Kazan.html” target=”kadr”>Главная страница</th></

tr>

<tr><th><a href=”Spisok.html” target=”kadr”> История города</th></tr>

<tr><th>Промышленность города</th></tr>

<tr><th>Учебные центры</th></tr>

<tr><th>Культурная и спортивная жизнь</th></tr>

</table>

</body>

</html>

Сохраните под именем Menu.html.

В данном файле только две ссылки на Kazan.html и Spisok.html.

Остальные ссылки и соответствующие файлы разработайте

самостоятельно.

3. Значительно улучшить внешний вид и функции сайта можно,

используя фреймы. Для создания фреймов вместо тегов <body> используется

пара тегов <frameset></frameset> с атрибутами rows или cols.

<html>

<head>

<title>Город Казань</title>

</head>

<frameset cols=160,*>

<frame src=”Menu.html”>

<frame src=”Kazan.html” name=”frame”>

153

Page 154: УМК по СРОД-10-12

</frameset>

</html>

Сохраним под именем index.html, данный файл является исходным

Чтобы убрать полосу прокрутки можно добавить

<frame src=”Menu.html” scrolling=no>

Литература:

1. Дейт К. Введение в системы баз данных. - М.: "Вильямс", 2000.

2. Конноли Т., Бегг К., Страчан А. Базы данных. Проектирование,

реализация и сопровождение. - М.- С./П.- К., 2000.

3. Карпова Т., Базы данных: модели, разработка, реализация, СПб:

Питер, 2001 – 304с.

4. Фролов А.В., Фролов Г.В. Базы данных в Интернете: практическое

руководство по созданию Web – приложений с базами данных., М.: 2000

– 448с.

5. Ризаев И.С., Яхина З.Т. Базы данных: Учебное пособие. Казань,

Изд-во Казан.гос.техн.ун-та, 2008 – 240с.

6. Хомоненко и др. Базы данных. Учебник для высших учебных

заведений, 2002 – 672с.

7. Кузнецов С.Д. Основы современных баз данных. Электронные

информационно-аналитические материалы. http :// www . citmgu . ru

8. Oracle9i. М.Эбби, М.Кори, Й.Абрамсон. М.: Изд-во «Лори», 2002

9. Прйс Дж. Oracle Database 10g. SQL. M.: Изд-во «Лори», 2007 – 565с

10. Харрис Э. PHP/MySQL для начинающих. М.: КУДИЦ-ЩБРАЗ,

2005. – 384 с.

154

Page 155: УМК по СРОД-10-12

11. Веллинг Л, Томсон Л. MySQL. Учебное пособие.-М.: Изд-ий дом

«Вильямс», 2005. – 304с.

12. Барсегян А.А. Технология анализа данных: Data Mining, Visual Min-

ing, Text Mining, OLAP. СПБ.:БХВ-Петербург, 2008. – 384 с.

ОГЛАВЛЕНИЕ

Введение ………………………………………………………………... 3

1. Методы распределенной обработки данных ………………………… 5

1.1. Цели распределенной обработки данных …………………………. 8

1.2. Модель «клиент-сервер» ……………. 10

1.3. Архитектура удаленного доступа ………………………………. 12

1.4. Модели удаленного доступа ……………….. 14

1.5. Многоуровневые модели……………………………………………… 19

1.6. Физическая модель распределенной обработки данных 20

Вопросы 21

2. Распределенные базы данных………………… 22

2.1. Режимы работы с базой данных …………… 22

2.2. Классификация систем по способам обработки данных ………... 23

2.3. Однородные и неоднородные системы 28

2.4. Стратегия размещения данных в РБД по узлам сети ………………. 33

2.5. Свойства распределенных БД 35

2.6. Функции СУРБД 37

2.7. Архитектура распределенных СУБД 40

155

Page 156: УМК по СРОД-10-12

2.8. 41

Вопросы ………………………………………………………………… 44

3. Параллельные процессы (или процессы транзакций) ………………. 44

3.1. Транзакции ……………………………………………………………… 44

3.2. Параллелизм операций над БД ………………………………………... 44

3.3. Проблемы параллельных процессов ………………………………….. 48

3.4. Элементы блокировок …………………………………………………. 49

3.5. Расписание транзакций ………………………………………………… 55

3.6. Модель с блокировками для чтения и записи ……………………….. 67

3.7. Блокировки в Visual FoxPro …………………………………………… 72

Вопросы ………………………………………………………………… 72

4. Структурированный язык запросов SQL …………………………….. 73

4.1. Основные операторы ………………………………………………….. 74

4.2. Синтаксис оператора SELECT ……………………………………….. 75

4.3. Примеры запросов на языке SQL …………………………………….. 76

4.4. Встроенный язык SQL ………………………………………………… 85

Вопросы ………………………………………………………………… 89

5. Безопасность БД ……………………………………………………….. 90

5.1. Идентификация и установление подлинности ……………………….. 90

5.2. Системы привилегий …………………………………………………... 92

5.3. Целостность данных …………………………………………………… 94

5.4. Шифрование данных ………………………………………………….. 96

Вопросы ………………………………………………………………… 97

6. Хранилище данных ……………………………………………………. 98

6.1. Концепции хранилищ данных ………………………………………… 99

6.2. Многомерная модель данных …………………………………………. 100

6.3. OLAP – системы ……………………………………………………….. 101

6.4. Интеллектуальный анализ данных …………………………………… 103

Вопросы ………………………………………………………………… 104

156

Page 157: УМК по СРОД-10-12

7. Базы данных в Интернете ………………………………………….. 105

7.1. Язык HTML ……………………………………………………………. 106

7.2. Каскадная таблица стилей 119

7.3. Язык PHP и MYSQL 125

7.3. Публикация БД в Интернете …………………………………………. 131

7.4. Средства взаимодействия …………………………………………….. 132

Вопросы ……………………………………………………………….. 134

8. Oracle database 135

8.1. Архитектура сервера 135

8.2. Табличные пространства и файлы данных 137

8.3. PL/SQL Oracle 138

8.4, Процедуры и функции

Вопросы

149

151

Приложение 1. Пример создания Web-страницы …………………… 152

Литература ……………………………………………………………… 155

Оглавление 156

157