Автор работы: Пользователь скрыл имя, 19 Декабря 2011 в 13:22, курсовая работа
Обеспечение интенсивной динамичности выполнения процессов таких систем - одна из самых трудоемких проблем эффективной реализации бизнес процессов при эксплуатации банков данных. Создание надежных, отказоустойчивых и эффективных средств обслуживания и управления требует наличия высококвалифицированных специалистов, больших финансовых и временных затрат, как для проектирования, разработки и развертывания, так и для сопровождения, эксплуатации и администрирования. Управление выполнением распределенных и параллельных вычислительных процессов, определенных на стадии детальной разработки средств сопровождения и эксплуатации распределенной системы обработки информации в целом и их оптимизация в частности, всегда было и остается сложной и актуальной задачей.
Введение…………………………………………………………………………..4
Глава 1. . Управление транзакциями в системах баз данных
1.1 Понятие транзакции………………………………………………………6
1.2 Параллельное выполнение транзакций………………………………….9
1.3 Сериализация транзакций……………………………………………………..12
Глава 2. Реализация транзакций в Delphi
2.1 SQL – выражения для управления транзакциями………………...……22
2.2 Управление транзакциями в Delphi …………………………….………25
Глава 3. Проектирование реляционной базы данных страховой компании «Росгосстрах – Аккорд»
3.1. Анализ предметной области…………………………………………….28
3.2. Проектирование базы данных методом нормальных форм…………..31
3.3. Проектирование базы данных методом «сущность-связь»…………...35
Глава 4. Реализация базы данных страховой компании «Росгосстрах – Аккорд» в среде СУБД MS Access
4.1. Создание таблиц и связей между ними………………………………...44
4.2. Разработка запросов……………………………………………………..49
4.3 Разработка отчетов и форм………………………………...…………….54
4.4.Разработка макросов……………………………………………………..56
Заключение ………………………………………………………………………58
Список использованных источников……………………………...……………60
Приложения ……………………………………………..………………………61
1.3 Сериализация транзакций.
Во избежание подобных ситуаций требуется разработать определенную процедуру, обеспечивающая согласованность выполнения параллельных транзакций, т.е. изолированность транзакций. Эта процедура в СУБД носит название сериализации транзакций. Для поддержки параллельной работы транзакции строится специальный план. План выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций.
Сериализация
транзакций - это механизм выполнения
транзакций по некоторому сериальному
плану. Обеспечение такого механизма является
основной функцией компонента СУБД, ответственного
за управление транзакциями.
Данная дисциплина опирается на следующие правила:
Основная реализационная проблема состоит в выборе сериализации набора транзакций, который не слишком бы ограничивал их параллельность; наиболее простым может быть выбор последовательного выполнения транзакций. Между транзакциями могут возникать следующие виды конфликтов:
W - W - транзакция 2 пытается изменить объект, измененный незаконченной транзакцией 1;
R - W - транзакция 2 пытается изменить объект 1, прочитанный незаконченной транзакцией 1;
W - R - транзакция 2 пытается прочитать объект, измененный не законченной транзакцией 1.
Существующие практические методы сериализации основываются на учете этих конфликтов.
Методы сериализации транзакций.
Существует
два базовых подхода к
Синхронизационные блокировки.
Этот
метод считается наиболее распространенным
для централизованных СУБД, в том
числе для систем архитектуры
«клиент-сервер», и основан на соблюдении
двухфазного протокола
Основными режимами синхронизационных захватов (блокировок) являются:
Захваты
объектов несколькими транзакциями
по чтению совместимы, т.е. нескольким
транзакциям разрешено
X | S | |
- | да | да |
X | нет | нет |
S | нет | да |
Рис.3
“-”
соответствует состоянию
“нет” - конфликтные ситуации, рассмотренные ранее.
На основании X- и S- блокировок может быть основан протокол доступа к данным:
Для обеспечения сериализации транзакций синхронизационные захваты объектов, произведенные по инициативе транзакции, можно снимать только после ее завершения. Это требование порождает двухфазный протокол синхронизационных захватов - 2 PL (Two-Phase Locks). В соответствии с этим протоколом выполнение транзакции разбивается на две фазы: накопление захватов и освобождение захватов (после фиксации или отката).
Рассмотрим
пример выполнения транзакции с использованием
механизма блокировок: Выполняются
две транзакции Т1 и Т2, объектом изменения
определен кортеж р некоторой таблицы
базы данных.
Т1 Т2
Извлечение кортежа р t2
(S-блокировка) S-X несовместимы
ожидание t3
ожидание t4 COMMIT
Извлечение кортеж р t5
(S-блокировка)
Таким
образом, механизм блокировок разрешает
проблемы, связанные с доступом нескольких
пользователей к одним и тем
же данным. Однако его применение существенно
замедляет выполнение самой транзакции,
что вызвано необходимостью ожидания
освобождения занятых данных. Здесь
возникает вопрос, что считать
объектом для синхронизационного захвата:
страницу данных, файл, отношение кортеж?
Чем крупнее объект синхронизационного
захвата, тем меньше синхронизационных
захватов будет задерживаться в
системе, тем меньше накладные расходы.
Но при такой ситуации появляется
вероятность увеличения числа конфликтов
транзакций и тем самым уменьшается
допускаемая степень их параллельного
выполнения. Если СУБД реализована
таким образом, что может захватывать
для выполнения транзакции отдельные
строки, то скорость обработки существенно
повысится. Блокировка на уровне строк
позволяет достигнуть максимальной
производительности за счет того, что
объект (запись) является минимальной
структурной единицей базы данных.
Тупиковые ситуации (dead-locks).
Одним из наиболее чувствительных недостатков метода сериализации транзакций на основе синхронизационных захватов является возникновение тупиков (взаимных блокировок) (dead - locks) между транзакциями. При возникновении подобной ситуации две или более транзакций находятся во взаимном ожидании освобождения блокировок, удерживаемых каждой из них. Рассмотрим пример возникновения тупика: пусть транзакции Т1и Т2 установили монопольные захваты, соответственно, объектов А1 и А2, после этого транзакция Т1 требуется совместный захват А2, а транзакции Т2 - совместный захват А1. Ни одна транзакция не может продолжиться, монопольные захваты не смогут быть сняты, следовательно, совместные захваты не будут удовлетворены. Поскольку тупики возможны, и никакого естественного выхода из них не может быть, то необходимо такие ситуации обнаруживать и искусственно устранять.
Существует два общих метода обработки тупиковых ситуаций: предупреждение этих ошибочных ситуаций и выявление взаимных блокировок с последующим их устранением.
При использовании метода предупреждения тупиков СУБД заранее определяет ситуации, в которых транзакции могут вызывать появление этой нежелательной ошибки, и предотвращает их возникновение. Один из возможных подходов предупреждения тупиковых ситуаций состоит в установлении порядка выполнения транзакций на основе использования временных меток. Например, известный метод «Ожидание-отмена» требует, чтобы новые транзакции ожидали завершения старых; в противном случае, транзакция отменяется и перезапускается стой же самой временной меткой. Рано или поздно, эта транзакция станет самой старой из активных транзакций, и поэтому не сможет быть отменена.
Второй подход к обработке тупиковых ситуаций носит название метода выявления взаимных блокировок. В этом случае СУБД допускает появление подобных ситуаций в системе, однако затем распознает и появление и организует выход из сложившейся тупиковой ситуации. Этот метод более прост в реализации, и поэтому нашел практическое применение.
Основой обнаружения тупиковых ситуаций является построение (или постоянное поддержание) графа ожидания транзакций (wait-for-graph – WFG). Граф ожидания транзакций - это ориентированный двудольный граф, вершинами которого являются транзакции и объекты захвата, т.е. граф отражает зависимость транзакций друг от друга. Транзакция Тi зависит от транзакции Тj, если транзакция Тj заблокировала элемент данных, необходимый для продолжения работы транзакции Тi. Граф ожидания строится следующим образом:
-для
каждой выполняющейся
-отдельное направленное ребро (дуга) Тi Tj создается для каждого случая, когда транзакция Ti ожидает освобождения элемента, заблокированного транзакцией Tj .
Если в системе существует ситуации тупика, то в графе ожидания транзакций имеется хотя бы один цикл (петлю).
Поскольку
наличие петли является необходимым
условием существования в системе
тупиковой ситуации, для выявления
этих ситуаций периодически в системе
проводится генерирование графа
ожиданий и анализ его на наличие
циклов. Важным условием является определение
интервала между