- •Предисловие
- •1. Основы информационного обеспечения процессов и систем
- •1.1. Понятие и содержание информационного обеспечения
- •1.2. Структура и классификация информационных систем
- •1.3. Система представления и обработки данных фактографических аис
- •Вопросы и упражнения
- •2. Системы управления базами данных фактографических информационных систем
- •2.1. Функции, классификация и структура субд
- •2.2. Модели организации данных
- •2.2.1. Иерархическая и сетевая модели организации данных
- •2.2.2. Реляционная модель организации данных
- •2.3. Внутренняя схема баз данных фактографических аис
- •2.3.1. Физические структуры данных
- •2.3.2. Индексирование данных
- •2.3.3. Расстановка (хеширование) записей
- •Вопросы и упражнения
- •3. Основы создания автоматизированных информационных систем
- •3.1. Общие положения по созданию автоматизированных систем
- •3.2. Проектирование банков данных фактографических аис
- •3.2.1. Концептуальное проектирование
- •3.2.2. Проектирование схем реляционных баз данных
- •3.2.2.1. Проектирование и создание таблиц
- •3.2.2.2. Нормализация таблиц
- •Вопросы и упражнения
- •4. Ввод, обработка и вывод данных в фактографических аис
- •4.1. Языки баз данных
- •4.2. Ввод, загрузка и редактирование данных
- •4.2.1. Ввод и редактирование данных в реляционных субд
- •4.2.2. Особенности ввода и загрузки данных в субд с сетевой моделью организации данных
- •4.3. Обработка данных
- •4.3.1. Поиск, фильтрация и сортировка данных
- •4.3.2. Запросы в реляционных субд
- •4.3.2.1. Запросы на выборку данных
- •4.3.2.1.1. Запросы на выборку данных из одной таблицы
- •4.3.2.1.2. Запросы на выборку данных из нескольких таблиц
- •4.3.2.1.3. Вычисления и групповые операции в запросах
- •4.3.2.2. Запросы на изменение данных
- •4.3.2.3. Управляющие запросы
- •4.3.2.4. Подчиненные (сложные) запросы
- •4.3.2.5. Оптимизация запросов
- •4.3.3. Процедуры, правила (триггеры) и события в базах данных
- •4.3.4. Особенности обработки данных в субд с сетевой моделью организации данных
- •4.4. Вывод данных
- •Вопросы и упражнения
- •5. Распределенные информационные системы
- •5.1. Понятие распределенных информационных систем, принципы их создания и функционирования
- •5.2. Технологии и модели «Клиент-сервер»
- •5.2.1. Модель файлового сервера
- •5.2.2. Модель удаленного доступа к данным
- •5.2.3. Модель сервера базы данных
- •5.2.4. Модель сервера приложений
- •5.2.5. Мониторы транзакций
- •5.3. Технологии объектного связывания данных
- •5.4. Технологии реплицирования данных
- •Вопросы и упражнения
- •6. Документальные информационные системы
- •6.1. Общая характеристика и виды документальных информационных систем
- •6.2. Информационно-поисковые каталоги и тезаурусы
- •6.2.1. Классификационные системы поиска документов
- •6.2.2. Координация понятий в классификационных системах
- •6.2.3. Информационно-поисковые тезаурусы
- •6.2.4. Автоматизация индексирования документов
- •6.3. Полнотекстовые информационно-поисковые системы
- •6.3.1. Информационно-технологическая структура полнотекстовых ипс
- •6.3.2. Механизмы поиска документов в полнотекстовых ипс
- •6.3.3. Методы количественной оценки релевантности документов
- •6.4. Гипертекстовые информационно-поисковые системы
- •6.4.1. Гипертекст
- •6.4.2. Структура, принципы построения и использования гипертекстовых ипс
- •6.4.3. Модель организации данных в гипертекстовых ипс
- •6.4.4. Формирование связей документов в гипертекстовых ипс
- •Вопросы и упражнения
- •7. Администрирование информационных систем и защита данных
- •7.1. Администрирование информационных систем
- •7.2. Разграничение доступа и защита данных
- •7.2.1. Понятие и модели безопасности данных
- •7.2.2. Технологические аспекты защиты информации
- •7.2.2.1. Идентификация и аутентификация
- •7.2.2.2. Языки безопасности баз данных
- •7.2.2.3. Безопасность повторного использования объектов
- •7.2.2.4. Надежное проектирование и администрирование
- •7.2.3. Требования и классы защищенности автоматизированных (информационных) систем в «Руководящих документах...» Государственной технической комиссии при Президенте рф
- •Вопросы и упражнения
- •Литература
- •Алфавитно-предметный указатель Содержание
5.2.5. Мониторы транзакций
Сердцевиной и основой эффективности функционирования многопользовательских систем «Клиент-сервер»являетсяэффективное управление транзакциями.Собственно само понятие транзакции возникло именно в процессе исследования принципов построения и функционирования централизованных многопользовательских реляционных СУБД. Транзакции играют важную роль вмеханизме обеспеченияСУБДограничений целостностибазы данных. Ограничения целостности непосредственно проверяются по завершению очередной транзакции. Если условия ограничений целостности данных не выполняются, то происходит «откат» транзакции (выполняется SQL-инструкция ROLLBAСК),в противном случае транзакция фиксируется (выполняется SQL-инструкция COMMIT).
Помимо обеспечения целостности данных механизм транзакций оказался чрезвычайно полезным для практической реализации одного из основополагающих принципов распределенных многопользовательских систем — изолированности пользователей.Как уже отмечалось, единичные действия пользователей с базой данных ассоциированы с транзакциями. В том случае, когдаот разных пользователей поступают транзакции,время выполнения которых перекрывается, монитор транзакций обеспечивает специальнуютехнологию их взаимного выполнения и изоляциис тем, чтобы избежать нарушений согласованного состояния данных и другихиздержек совместной обработки.К числу подобных издержек относятся:
• потерянные изменения;
• «грязные» данные;
• неповторяющиеся чтения.
Потерянные изменениявозникают тогда, когда две транзакции одновременноизменяют один и тот же объект базы данных.В том случае, если в силу каких-либо причин, например, из-за нарушений целостности данных, происходит откат, скажем, второй транзакции, то вместе с этим отменяются и все изменения, внесенные в соответствующий период времени первой транзакцией. В результате первая еще не завершившаяся транзакция при повторном чтении объекта не «видит» своих ранее сделанных изменений данных. Очевиднымспособом преодоленияподобных ситуаций является запрет изменения данных любой другой транзакцией до момента завершения первой транзакции—так называемая блокировкаобъекта.
«Грязные» данные возникают тогда, когдаодна транзакция изменяеткакой-либо объект данных, адругаятранзакция в этот моментчитает данные из того же объекта.Так как первая транзакция еще не завершена, и, следовательно, не проверена согласованность данных после проведенных, или вовсе еще только частично проведенных изменений, то вторая транзакция может «видеть» соответственно несогласованные, т. е. «грязные» данные. Опять-такиспособом недопущениятаких ситуаций может бытьзапрет чтения объекталюбой другой транзакцией, пока не завершена первая транзакция, его изменяющая.
Неповторяющиеся чтениявозникают тогда, когдаодна транзакциячитаеткакой-либо объект базы данных, адругая до завершения первой егоизменяети успешнофиксируется. Если при этом первой, еще не завершенной, транзакции требуется повторно прочитать данный объект, то она «видит» его в другом состоянии, т. е. чтение не повторяется. Способом недопущения подобных ситуаций в противоположность предыдущему случаю являетсязапрет измененияобъекта любой другой транзакцией, когда первая транзакция на чтение еще не завершена.
Механизм изоляции транзакций и преодоления ситуаций несогласованной обработки данных в общем виде основывается на технике сериализации транзакций. План (способ) выполнения совокупности транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного их выполнения.Сериализацией транзакций в этом смысле является организация их выполнения по некоторому сериальному плану. Существуютдваразличныхподходасериализации транзакций:
• синхронизационные захваты (блокировки) объектов базы данных;
• временные метки объектов базы данных.
В первом подходе определяется два основных режима захватов — совместный режим (Shared)и монопольный режим (exclusive).При совместном режиме осуществляется разделяемый захват, требующий только операций чтения. Поэтому такой захват еще называютзахватом по чтению.При монопольном режиме осуществляется неразделяемый захват, требующий операций обновления данных. Такой захват, соответственно, еще называютзахватом по записи.
Наиболее распространенным вариантом первого подхода является реализация двухфазного протокола синхронизационных захватов (блокировок) объектовбазы данных — 2PL (Two-Phase Locks).В соответствии с данным протоколом выполнение транзакции происходитв два этапа.Напервомэтапе(первая фаза)перед выполнением любой операции транзакция запрашивает и накапливает захваты необходимых объектов в соответствующем режиме. После получения и накопления необходимых захватов (блокировок) осуществляетсявторая фаза — фиксация изменений (или откат по соображениям целостности данных) и освобождение захватов.
При построении сериальных планов допускается совмещение только захватов по чтению.В остальных случаях транзакции должны «ждать», когда необходимые объекты разблокируются (освободятся). Более изощрённые стратегии сериализации транзакций основываются на «гранулировании» объектов захвата (файл базы данных, отдельная таблица, страница файла данных, отдельная запись-кортеж). Соответственно при этом расширяется номенклатура синхронизационных режимов захватов,например в совместном режиме (по чтению) может быть захвачен и в целом файл и отдельные его страницы, или в другом случае обеспечивается совместный режим захвата файла с возможностью монопольного захвата отдельных его объектов — таблиц, страниц или записей-кортежей). Грануляция синхронизационных блокировок позволяет строить более эффективные планы сериализации транзакций.
Существенным недостаткомсинхронизационных захватов является возможность возникновения тупиковых ситуаций (Deadlock).Предположим, одна транзакция на первой фазе установила монопольный захват одного объекта, а другая транзакция монопольный захват второго объекта. Для осуществления полного набора своих операций первой транзакции еще требуется совместный захват второго объекта, а второй транзакции, соответственно, совместный захват первого объекта. Ни одна из транзакций не может закончить первую фазу, т. е. полностью накопить все необходимые захваты, так как требуемые объекты уже монопольно захвачены, хотя были свободны к моменту начала осуществления транзакций.
Непростой проблемой является автоматическое обнаружение(распознавание) такихтупиковых ситуациии их разрешение(разрушение).Распознавание тупиков основывается напостроении и анализе графа ожидания транзакций,состоящего из вершин-транзакций и вершин-объектов захвата. Исходящие из вершин-транзакций дуги к вершинам-объектам соответствуют требуемым захватам, а дуги, исходящие из вершин-объектов к вершинам-транзакциям соответствуют полученным захватам. При тупиковых ситуациях в графе ожидания транзакций наблюдаются петли (циклы), обнаружение которых обеспечивается специальным алгоритмизируемым механизмом редукции графа, подробное изложение которого можно найти в специальной литературе по теории графов. Отметим только, что применение подобного механизма распознавания тупиков требует построения и постоянного поддержания (обновления) графа ожидания транзакций, чтоувеличивает накладные расходы при выполнении транзакции и снижает производительность обработки данных.
Еще одной проблемой является технология, или, лучше сказать, алгоритм разрушения тупиков.В общем плане такие алгоритмы основываются на выборетранзакции-жертвы,которая временно откатывается для предоставления возможности завершения выполнения операций другим транзакциям, что, конечно же, в определенной степени нарушает принцип изолированности пользователей. В качестве «жертвы» выбирается или самая«дешевая»транзакция в смысле затрат на выполнение, или транзакция с наименьшимприоритетом.
Более простой альтернативойтехнике синхронизационных захватов является техника временных меток.Суть этого метода заключается в том, что каждой транзакции приписываетсявременная метка, соответствующая моменту начала выполнения транзакции.При выполненииоперации над объектом транзакция «помечает» его своей меткой и типом операции (чтение или изменение).Если при этом другой транзакции требуется операция над уже «помеченным» объектом, то выполняются действия по следующему алгоритму:
• проверяется, не закончилась ли транзакция, первой «пометившая» объект;
• если первая транзакция закончилась, то вторая транзакция помечает его своей меткой и выполняет необходимые операции;
• если первая транзакция не закончилась, то проверяется конфликтность операций (напомним, что конфликтно любое сочетание, кроме «чтение-чтение»);
• если операции неконфликтны, то они выполняются для обеих транзакций, а объект до завершения операций помечается меткой более поздней, т. е. более молодой транзакции;
• если операции конфликтны, то далее происходит откат более поздней транзакции и выполняется операция более ранней (старшей) транзакции, а после ее завершения объект помечается меткой более молодой транзакции и цикл действий повторяется.
В результате того что при таком алгоритме конфликтность транзакций определяется более грубо, чем при синхронизационных блокировках, реализация метода временных метоквызываетболее частые откаты транзакций.Несомненным жедостоинствомметода временных меток является отсутствие тупиков,и, следовательно, отсутствие накладных расходов на их распознавание и разрушение.
СУБД идеологии «Клиент-сервер», называемые иногда в противовес однопользовательским («настольным») «тяжелыми» системами (Oracle, SyBase, Informix, Ingresи др.), составляют одно из наиболее интенсивно развивающихся направлений централизованных многопользовательских систем, охватывая своим управлением сотни тысяч гигабайтов фактографических данных, и в этом отношении еще долгое время будут играть роль фактического стандарта корпоративных информационных систем.