6. Мониторы транзакций
Под транзакцией понимается неделимая с точки зрения воздействия на БД последовательность операций манипулирования данными (чтения, удаления, вставки, модификации) такая, что, либо результаты всех операций, входящих в транзакцию, отображаются в БД, либо воздействие всех этих операций полностью отсутствует.
Механизм обработки транзакций играет важную роль в обеспечении ограничений целостности БД. Ограничения целостности непосредственно проверяются по завершению очередной транзакции. Если условия ограничений целостности данных не выполняются, то происходит «откат» транзакции, в противном случае транзакция фиксируется.
Кроме этого, механизм обработки транзакций обеспечивает практическую реализацию одного из основополагающих принципов распределенных информационных систем - принципа изолированности пользователей. Единичные действия пользователей с базой данных ассоциированы с транзакциями. В том случае, когда от разных пользователей поступают транзакции, время выполнения которых перекрывается, монитор транзакций реализует технологию взаимного выполнения и изоляции транзакций с целью избежать нарушения согласованного состояния данных и таких издержек совместной обработки, как потерянные изменения, «грязные данные», неповторяющиеся чтения.
Потерянные изменения могут возникать, когда две транзакции одновременно изменяют один и тот же объект БД. Если в некоторый момент времени происходит откат одной из транзакций, то отменяются все изменения, выполненные не только этой транзакцией, но и другой. В результате чего другая не завершившаяся транзакция при повторном чтении объекта не находит своих ранее выполненных изменений. Для преодоления подобных ситуаций накладывается запрет на изменение данных любой другой транзакцией до момента завершения первой транзакции. Такой механизм называется блокировкой объекта.
«Грязные» данные возникают, когда одна транзакция изменяет какой-либо объект данных, а другая транзакция в это же время читает данные из этого объекта. Так как первая транзакция еще не завершена, то согласованность данных еще не проверена. Поэтому вторая транзакция может «видеть» несогласованные («грязные») данные. Способом предотвращения таких ситуаций является запрет на чтение объекта любой другой транзакцией, пока не завершена транзакция, изменяющая данный объект.
В случае, когда одна транзакция читает какой либо объект БД, а другая транзакция
в это же время его изменяет и успешно фиксируется, возникают неповторяющиеся
чтения, то есть при повторном чтении объекта незавершенной транзакцией она
«видит» его в другом состоянии (чтение не повторяется). По этой причине
устанавливается запрет на изменение объекта любой другой транзакцией, пока не
завершена первая транзакция на чтение.
6.1 Механизм изоляции транзакций и преодоления
ситуаций несогласованной обработки данных основывается на технике сериализации
транзакций
Сериализацией транзакций называется их выполнение по некоторому сериальному плану.
Сериальный план выполнения совокупности транзакций - это такой способ их выполнения, когда результат совместного выполнения транзакций эквивалентен результату некоторого последовательного их выполнения.
Методы сериализации транзакций:
синхронизационные захваты (блокировки) объектов БД;
временные метки объектов БД.
Выделяют два основных режима синхронизационных захватов - совместный (захват по чтению) и монопольный (захват по записи) режимы. При совместном режиме осуществляется разделяемый захват, требующий только операций чтения. При монопольном режиме осуществляется неразделяемый захват, требующий операций обновления данных. Наиболее распространенным вариантом реализации синхронизационных захватов является двухфазный протокол блокировок 2PL, в соответствии с которым выполнение транзакции происходит в два этапа. На первом этапе перед выполнением любой операции транзакция запрашивает и накапливает захваты необходимых объектов в соответствующем режиме. После получения и накопления необходимых захватов выполняется вторая фаза - фиксация изменений или откат по соображениям целостности данных, а также последующее освобождение захватов. При построении сериальных планов допускается совмещение только захватов по чтению. Более эффективные планы сериализации транзакций позволяет строить применение «гранулирования» синхронизационных блокировок. В этом случае «гранулируются» объекты захвата (файлы, таблицы, страницы файла, записи), что позволяет расширить номенклатуру синхронизационных режимов захватов (напр., совместный режим захвата файла с возможностью монопольного захвата отдельных его объектов - таблиц, страниц, записей). Недостаток синхронизационных захватов - возможность возникновения тупиков. Распознавание (автоматическое обнаружение) тупиков основывается на построении и анализе графа ожидания транзакций, состоящего из вершин-транзакций и вершин-объектов захвата. Требуемым захватам соответствуют дуги, исходящие из вершин-транзакций к вершинам-объектам; противоположное направление дуг соответствует полученным захватам. Циклы (петли) на графе соответствуют тупиковым ситуациям. Для обнаружения циклов применяется алгоритм редукции графа, который требует постоянного обновления графа ожидания транзакций, что снижает эффективность обработки данных. Для разрешения (разрушения) тупиков используются различные алгоритмы разрушения тупиков. Такие алгоритмы основываются на выборе транзакции-жертвы, которая временно откатывается для предоставления возможности завершения операций другим транзакциям. В качестве такой транзакции выбирается транзакция с наименьшим приоритетом, либо та транзакция, которая требует меньше всего затрат на выполнение.
Другой, более простой, метод сериализации транзакций - метод временных
меток, в соответствии с которым каждой транзакции приписывается временная
метка, соответствующая моменту начала выполнения транзакции. При выполнении
операции над объектом транзакция «помечает» его своей меткой и типом операции
(чтение или изменение). Если при этом другой транзакции требуется операция над
уже помеченным объектом, то выполняется ряд действий по разрешению возникшей
ситуации. Применение метода временных меток вызывает более частые откаты назад
транзакций, чем при синхронизационных блокировках. Однако достоинством метода
временных меток является отсутствие тупиков, а, следовательно, и отсутствие
накладных расходов на их распознавание и разрушение[16].
. Технологии тиражирования (реплицирования)
данных
Основная идея тиражирования: пользователи работают автономно с одинаковыми (общими) данными, растиражированными по локальным базам данных, что обеспечивает в силу отсутствия необходимости передачи растиражированных данных максимальную производительность используемой вычислительной системы.
Реплика - тиражируемая копия данных, предназначенных для общего пользования.
При реализации технологии тиражирования данных возникает проблема обеспечения согласованного состояния данных, т.е. согласованного состояния во всех репликах количества и значений общих данных, а также структуры данных.
Решение проблемы обеспечения согласованного состояния количества и значений общих данных основывается на реализации одного из двух принципов:
принципа непрерывного размножения обновлений (любое обновление данных в любой реплике должно быть немедленно размножено). Данный принцип реализуется при построении систем реального времени. Реализация этого принципа заключается в том, что любая транзакция считается успешно завершенной, если она успешно завершена во всех репликах. На практике реализации данного принципа препятствует возникновение тупиков. Для обнаружения и распознавания тупиков в реплицированных системах применяются те же алгоритмы, что и в мониторах транзакций централизованных систем типа «клиент-сервер».
принципа отложенных обновлений (обновления реплик могут откладываться до специальной команды или ситуации). Накопленные в реплике изменения данных специальной командой пользователя направляются для обновления всех остальных реплик системы. Такая операция называется синхронизацией реплик. В данном случае существенно снижается возможность конфликтов и тупиков. Для реализации процесса синхронизации реплик в системном каталоге БД создаются специальные таблицы текущих изменений и организуется система глобальной идентификации (именования) всех объектов распределенной системы, включая раздельное поименование одинаковых объектов в разных репликах (вплоть до записей таблиц). Такой подход несколько увеличивает объем БД, но позволяет значительно сократить транспортные расходы на синхронизацию реплик.
Решение проблемы обеспечения согласованности структуры данных основывается на технике главной реплики, суть которой заключается в следующем. Одна из реплик БД системы объявляется главной, причем изменять структуру данных можно только в этой главной реплике. Изменения в структуре данных в главной реплике тиражируются по принципу отложенных обновлений, т.е. с помощью синхронизации реплик. Выход из строя главной реплики не влечет за собой гибель всей распределенной информационной системы, так как остальные реплики продолжают функционировать автономно, что позволяет администратору системы преобразовать любую реплику в главную и тем самым восстановить работоспособность всей системы.
Наряду с техникой главной реплики существует возможность создания частичных реплик. Частичной репликой называется база данных, содержащая ограниченное подмножество записей главной (полной) реплики. Распространенным способом создания частичных реплик является использование фильтров, устанавливаемых для таблиц главной реплики. Такой подход позволяет решать некоторые проблемы по разграничению доступа к данным, повысить производительность обработки данных и снизить затраты на синхронизацию реплик за счет ограничения количества передаваемых по сети изменений данных[10].
Существует также возможность включения в реплики кроме тиражируемых и нетиражируемые объекты БД, что позволяет более гибко настраивать схему БД и другие объекты (запросы, формы, отчеты) на специфику предметной области, особенности ввода данных и решаемые информационные задачи по конкретному элементу распределенной системы.
Технологии тиражирования данных в тех случаях, когда не требуется обеспечивать большие потоки и интенсивность обновляемых в информационной сети данных, являются более экономичным решением проблемы создания распределенных информационных систем с элементами централизации по сравнению с использованием дорогостоящих «клиент-серверных» систем.
На практике для совместной коллективной обработки данных применяются
смешанные технологии, включающие элементы клиент-серверных решений,
тиражирования и элементы объектного связывания данных. При этом усложняется
процесс проектирования распределенной информационной системы: добавляется этап
транспортно-технологического проектирования информационных потоков, разграничения
доступа и т.д.
8. Примеры применения в производстве
Принцип непрерывного размножения обновлений является основополагающим при построении так называемых систем реального времени, таких, например, как системы управления воздушным движением, системы бронирования билетов пассажирского транспорта и т.п., где требуется непрерывное и точное соответствие реплик или других растиражированных данных во всех узлах и компонентах подобных распределенных систем.
Реализация принципа непрерывного размножения обновлений заключается в том, что любая транзакция считается успешно завершенной, если она успешно завершена на всех репликах системы. На практике реализация этого принципа встречает существенные затруднения.
В целом ряде предметных областей распределенных информационных систем режим реального времени с точки зрения непрерывности согласования данных не требуется. Такие системы автоматизируют те организационно-технологические структуры, в которых информационные процессы не столь динамичны. В этом случае обновление реплик распределенной информационной системы, если она будет построена на технологии реплицирования, требуется, скажем, только лишь один раз за каждый рабочий час, или за каждый рабочий день[9].
Такого рода информационные системы строятся на основе принципа отложенных обновлений. Накопленные в какой-либо реплике изменения данных специальной командой пользователя направляются для обновления всех остальных реплик систем. Такая операция называется синхронизацией реплик.
Решение второй проблемы согласованности данных, а именно -согласованности структуры данных, осуществляется через частичное отступление, как и в системах «Клиент-сервер», от принципа отсутствия центральной установки и основывается на технике главной реплики, т.е одна из реплик базы данных объявляется главной. При этом изменять структуру базы данных можно только в главной реплике. Эти изменения структуры данных тиражируются на основе принципа отложенных обновлений, т.е. через специальную синхронизацию реплик.
Частичность отступления от принципа отсутствия центральной установки заключается в том, что в отличие от чисто централизованных систем, выход из строя главной реплики не влечет сразу гибель всей распределенной системы, так как остальные реплики продолжают функционировать автономно. Более того, на практике СУБД, поддерживающие технологию реплицирования, позволяют пользователю с определенными полномочиями (администратору системы) преобразовать любую реплику в главную и тем самым полностью восстановить работоспособность всей системы.
Технологии репликации данных в тех случаях, когда не требуется обеспечивать большие потоки и интенсивность обновляемых в информационной сети данных, являются экономичным решением проблемы создания распределенных информационных систем с элементами централизации по сравнению с использованием дорогостоящих клиент-серверных систем.
На практике для совместной коллективной обработки данных применяются смешанные технологии, включающие элементы объектного связывания данных, репликаций и клиент-серверных решений. При этом дополнительно к проблеме логического проектирования, т. е. проектирования логической схемы организации данных (таблицы, поля, ключи, связи, ограничения целостности), добавляется не менее сложная проблема транспортно-технологического проектирования информационных потоков, разграничения доступа и т. д. К сожалению, пока не проработаны теоретико-методологические и инструментальные подходы для автоматизации проектирования распределенных информационных систем с учетом факторов как логики, так и информационно-технологической инфраструктуры предметной области.
Тем не менее, развитие и все более широкое распространение распределенных информационных систем, определяемое самой распределенной природой информационных потоков и технологий, является основной перспективой развития автоматизированных информационных систем.
Для обнаружения (распознавания) тупиков в реплицированных системах применяются такие же алгоритмы, которые были разработаны в мониторах транзакций централизованных систем «Клиент-сервер», - строится и поддерживается аналогичный граф ожидания транзакций и применяются аналогичные алгоритмы распознавания и разрушения тупиков, основанные в основном на технике приоритетов.
В целом ряде предметных областей распределенных информационных систем режим реального времени с точки зрения непрерывности согласования данных не требуется. Такие системы автоматизируют те организационно-технологические структуры, в которых информационные процессы не столь динамичны. Если взять, к примеру, автоматизированную информационную систему документооборота, то традиционная «скорость» перемещения и движения служебных документов соответствует рабочему дню или в лучшем случае рабочим часам. В этом случае обновление реплик распределенной информационной системы, если она будет построена на технологии реплицирования, требуется, скажем, только лишь один раз за каждый рабочий час, или за каждый рабочий день.
| [Методичка] Остеология |
| 00539 |
| 02.03 |
| 0501 Конунников ЛР1-1 |
| 10-2_ЛР |
| 10Лекция 10 |
| 1136 |
| 1304 |
| 131 |
| 1362 |