Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КІС_Лек_22.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
400.38 Кб
Скачать

Дисципліна: КОРПОРАТИВНІ ІНФОРМАЦІЙНІ СИСТЕМИ (Л 17-18)

Лекція № 17

МОДЕЛЮВАННЯ ПРОЦЕДУР ОБСЛУГОВУВАННЯ ЗАПИТІВ ТА РОЗВ’ЯЗАННЯ КОНФЛІКТІВ ПРИ РОБОТІ З БАЗАМИ ДАНИХ КІС

План лекції:

1. Виникнення конфліктів і протиріч при обслуговуванні баз даних

2. Графічне подання роботи баз даних за допомогою мереж Петрі

3. Моделювання запитів і транзакцій мовою мереж Петрі

4. Моделювання операцій вибірки даних фрагментом мережі Петрі

5. Порядок функціонування мереж Петрі

1. Виникнення конфліктів і протиріч при обслуговуванні баз даних

Основной причиной конфликтов и противоречий реализации запросов и транзакций баз данных является требование одновременного или параллельного их обслуживания. При этом могут возникнуть следующие ситуации [1, c. 380]:

1) бесконечное ожидание, когда один из запросов (транзакция) запрашивает некоторую запись БД и неограниченно долго ожидает возможности обращения к ней, так как в то же самое время эту запись последовательно запрашивает ряд других запросов (транзакций);

2) системный тупик, когда два или более одновременных процесса запроса (транзакции) заблокировали некоторые записи БД, и каждому из них для завершения необходимы записи, заблокированные другим процессом;

3) конфликты, когда запросы (транзакции) одновременно обращаются к одному и тому же информационному (записи) или вычислительному (каналу ввода-вывода) ресурсу;

4) противоречивость хранимых данных, когда запросы (транзакции) одновременно выбирают и обновляют одну и ту же запись БД, в результате чего обновление данных в БД фактически проводится только по одному из них и окончательный результат оказывается неверным;

5) несогласованность реализации запросов, когда один из них выбирает некоторую запись из БД до того, как она должна быть обновлена другим запросом и, следовательно, результат реализации первого запроса будет неверным.

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

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

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

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

- Обособленность, исходящая из того, что каждая транзакция не зависит от других. Не имеет значения, выполняется ли сначала транзакция 1, а затем транзакция 2, или, наоборот, сначала транзакция 2, а затем транзакция 1, – конечный результат должен оставаться неизменным.

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

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

1. Вы связываетесь с Агентом № 1, чтобы заказать билет на Гавайи. Агент № 1 открывает базу данных и считывает из нее свободные места. Он обнаруживает, что на нужный вам рейс осталось только одно место.

2. Пока вы решаете, взять ли этот билет, другой пассажир обращается к Агенту № 2, чтобы заказать билет на тот же рейс. Агент № 2 запрашивает базу данных, узнает, что имеется одно свободное место, и сообщает об этом своему клиенту.

3. И вы, и другой пассажир решили взять билет. Оба агента вводят данные одновременно. Агент № 1 оказался немного проворнее. Он изменил базу данных и сообщил вам о принятии вашего заказа. Затем обрабатывается заказ, сделанный Агентом № 2, и после изменения базы данных Агентом № 2 получается, что билет продан другому пассажиру.

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

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

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

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

3. И вы, и другой пассажир решили взять билет. Оба агента ввели данные одновременно. Агент № 1 был немного проворнее, он запустил транзакцию и изменил базу данных. Когда транзакция завершилась, агент подтвердил, что ваш заказ принят. Примерно в это же время в базу данных поступает информация о резервировании билета от Агента № 2. Когда Агент № 2 пытается получить доступ к транзакции разрешения записи, он получает сообщение о том, что база данных в данный момент изменяется. Когда ваша операция завершилась, агент обнаруживает, что он не может продать билет, поскольку он уже был куплен. Агент продолжает работать с пассажиром, чтобы подобрать для него другой рейс.

4. Вы прибыли в аэропорт. Ваше имя имеется в компьютере, и заказ подтвержден. Счастливого Вам пути!

Если вам необходима защита транзакций, то нужно инсталлировать сервер транзакций Microsoft (MTS). Обратитесь к документации по IIS и MTS, чтобы создать пакеты MTS. После настройки пакетов MTS вы сможете писать сценарии таким образом, чтобы доступ к базе данных создавал новые транзакции. Используйте MTS Explorer для регистрации компонентов, ответственных за доступ к базе данных с помощью MTS.

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

Если вам нужно сохранить определенное состояние страницы, в которой используются компоненты ActiveX, зарегистрированные в MTS, то следует настроить эти компоненты на уровне страницы, а затем использовать свойства Application или Session для записи.

С помощью директивы Transaction вы можете сообщить IIS, что необходимо обратиться к базе данных с помощью транзакций:

<%@ Transaction = значение %>

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

- Requires_New – обращение к базе данных запускает выполнение транзакции;

- Required – обращение к базе данных запускает выполнение транзакции;

- Supported – обращение к базе данных не запускает выполнение транзакции;

- Not_Supported – обращение к базе данных не запускает выполнение транзакции.

Хотя сценарий может явно сообщить MTS (с помощью вызова директивы ObjectContext.SetAbort), что нужно выйти из транзакции до ее завершения, но сценарий, как правило, не сообщает о том, что обращение не удалось выполнить. Неудача может быть связана с проблемами базы данных или с переполнением диска. На каждой странице, где используются транзакции, следует добавить две процедуры:

- процедура OnTransactionCommit вызывается, если MTS сообщает, что операция успешно завершилась;

- процедура OnTransactionAbort вызывается, если MTS сообщает, что операция не удалась.

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

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

- конкурентоспроможності;

- необхідної ефективності системи у всіх режимах її функціонування;

- високого коефіцієнта готовності, стійкості до відмови;

- паралельної асинхронної взаємодії процесів та компонент системи;

- властивості розвитку, простоти реалізації, відносно малої вартості.

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

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

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

2. Графічне та математичне представлення сіток Петрі

Сеть Петри представляет собой двудольный ориентированный граф G(V, E) с двумя типами вершин V = PUT, которые соединяются между собой ориентированными дугами E. В сетях Петри допускается ориентация дуг в обоих направлениях. Первый тип вершин P называют множеством позицией (Position), компоненты его Рi  P изображают кружками (рисунок 1, слева). Второй тип вершин T называют множеством переходов (Transaction), компоненты его tj T изображают вертикальными линиями (рисунок 1, справа).

Множество позиций Рi  P соединяется с множеством переходов Tj  T с помощью множества ориентированных дуг Eij  E. Позиция и переход могут иметь несколько входных и выходных дуг. Каждой позиции Рi  P ставится в соответствие функция разметки позиции М(Рi), которая принимает неотрицательное целое число k = 0, 1, … . Эти значения проставляются на графе в виде больших черных точек, называемых фишками или метками, и проставляются в кружки, которые обозначают позиции.

Если кружок позиции Рi пуст, это означает, что в позиции Рi нет меток, поэтому функция разметки позиции М(Рi) = 0. Если число фишек не более 5-7, то их графически обозначают на графе сети точками, в противном случае фишки записывают при разметке графа целыми положительными числами k = 0, 1, … . Совокупность функций разметки позиции М(Рi) для конкретного момента времени образует функцию разметки графа сети Петри [2, с. 716 - 625]

G(V, E), V = PUT, V = PUT, Рi  P, i = 1, 2, …, n. (1)

Рисунок 1 – Способы представления вершин сети Петри

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

3. Функціонування переходів для фрагментів сіток Петрі

1. Предположим, что фрагмент сети Петри состоит из двух позиций Р1 и Р2 и одного перехода t1, как показано на рисунке 2 слева, причем позиция Р1 содержит одну метку, а позиция Р2 не содержит ни дной метки. Требуется из указанного состояния сети перейти в следующее состояние сети, если это возможно, и отобразить новое состояние сети на рисунке 2 справа.

Рисунок 2 – Переход сети Петри из одного состояния в другое

Алгоритм перехода из одного состояния сети Петри в другое состояние предусматривает выполнение следующих этапов:

- Проверка соблюдения условия перехода из вершины-позиции Р1 через вершину-переход t1 в вершину-позицию Р2 сводится к тому, что все вершины-позиции Рi, дуги из которых входят в вершину-переход t1, должны содержать количество фишек не менее того, которым делает переход фишка.

- Переход фишкой инициируется вершиной-переходом t1  Т и сводится к тому, что из каждой вершины-позиции Рi, из которых дуги входят в вершину-переход t1, вычитается по одной фишке, а к каждой вершине-позиции Рj, в которую входит дуга из вершины-перехода t1, добавляется по одной фишке.

2. Предположим, что фрагмент сети состоит из позиций Р1, Р2 и Р3 и одного перехода t1, как показано на рисунке 3 слева. Позиции Р1 и Р2 содержит по одной фишке, а позиция Р3. – ни одной фишки. Требуется из текущего состояния сети перейти в следующее состояние, отобразив его на рисунке 3 справа.

Рисунок 3 – Срабатывание перехода t1 для фрагмента сети Петри

Алгоритм перехода t1 содержит два этапа:

- Со всех вершин-позиций (Р1 и Р2), которые имеют дуги, входящие в вершину-перехода t1, снимается по одной фишке.

- Всем вершинам-позициям (Р3), в которые входят дуги от перехода t1, добавляется по одной фишке.

3. Предположим, что фрагмент сети состоит из позиций Р1, Р2 и Р3 и перехода t1, как показано на рисунке 4 слева. Позиции Р1 содержит одну фишку, а позиции Р2 и Р3. – ни одной фишки. Требуется из текущего состояния сети перейти в следующее состояние и представить схему сети на рисунке 4 справа.

Рисунок 4 – Порядок срабатывания фрагмента сети Петри

Срабатывание перехода t1 происходит в два этапа:

- На первом этапе по инициализации перехода t1 с вершины-позиции Р1 снимается одна фишка.

- На втором этапе вершинам-позициям Р2 и Р3, в которые входят дуги от перехода t1, добавляется по одной фишке.

4. Предположим, что фрагмент сети состоит из позиций Р1 и Р2 и перехода t1, как показано на рисунке 5 слева. Позиция Р1 содержит одну фишку, а позиция Р2 не содержит ни одной фишки. Требуется из текущего состояния сети перейти в следующее состояние и представить схему сети на рисунке 5 справа.

Рисунок 5 – Порядок срабатывания фрагмента сети Петри

Срабатывание перехода t1 происходит в таком порядке:

- На первом этапе по инициализации перехода t1 с вершины-позиции Р1 снимается одна фишка и сберегается в вершине-переходе t1.

- На втором этапе вершинам-позициям Р2 и Р1, в которые входят дуги от перехода t1, добавляется по одной фишке.

5. Переход t1 может сработать только в том случае, когда каждая вершина-позиция Рi  P, имеющая ориентированную дугу из Рi в t1, содержит хотя бы одну метку. Если такая ситуация имеет место, то говорят, что переход разрешен. Переход t1 в сети Петри, приведенной на рисунке 6, не может сработать, поскольку в Р2 нет метки.

Рисунок 6 – Нарушение условий срабатывания перехода t1 в сети Петри

6. Если при срабатывании перехода t из позиции Рi необходимо удалить более чем одну метку, то дуга из Рi в t помечается таким количеством меток, которое следует удалить из Рi. Если на дугах не записана пропускная способность в метках, то количество их по умолчанию принимается равным 1. Если при срабатывании перехода t в позицию Рj необходимо добавить более чем одну метку, то дуга из t в Рj помечается количеством меток, которое нужно добавить в Рj. Если количество передаваемых меток на дугах не проставлено, то число их по умолчанию принимается равным 1.

Если при срабатывании перехода t из позиции Рi следует удалить n меток, то позиция Рi должна содержать, по крайней мере, n меток, чтобы переход t был разрешен. В сети Петри, изображенной на рисунке 7 слева, первое срабатывание перехода t дает в результате сеть Петри, изображенную на рисунке 7 справа. Второй переход t не может быть осуществлен, поскольку в Рi нет достаточного количества меток.

Рисунок 7 – Переход t1 выполнен из позиции Р1 с вычитанием из Р1 двух фишек и добавлением в Р2 и Р3 по одной фишке

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

4. Порядок моделювання фрагментів сіток Петрі

Состоянием S сети Петри называется количество меток в каждой позиции, определяемое функцией iМ. Таким образом, состояние сети Петри – это то же самое, что и разметка сети Петри. Термин "состояние" используется при рассмотрении автоматов и других устройств с конечным количеством состояний. Поскольку значения функций i полностью определяют состояние, будем их отождествлять с состояниями.

Срабатывание перехода изменяет текущее состояние на состояние, определяемое другой функцией jМ. Поэтому новое состояние сети Петри зависит от текущего состояния i и сработавшего перехода tk. Если в некоторый момент времени не существует разрешенного перехода, то функция состояния более не определяется, и процесс, описывающий сеть Петри, завершается.

Рассмотрим сеть Петри, приведенную на рисунке 8. При срабатывании перехода t сеть Петри переходит в состояние, показанное на рисунке 9. При срабатывании перехода t4 имеем сеть, изображенную на рисунке 10.

Р исунок 8 – Исходное положение перед переходом t1 двумя фишками

Рисунок 9 – Состояние сети Петри после перехода t1 двумя фишками

Рисунок 10 – Состояние сети Петри после переходов t1 и t4

Состояние j называется непосредственно достижимым из состояния i, если срабатывание какого-либо перехода t в то время, пока сеть находится в состоянии i, приводит к состоянию j. Иными словами, состояние j непосредственно достижимо из состояния i, если существует переход t такой, что j = δ(i, t). Состояние j достижимо из состояния i, если, начиная из состояния i, срабатывание последовательности переходов производит состояние j.

Состояние im достижимо из состояния i1, если существуют состояния i2, i3, …, im-1 и переходы t1, t2, …, tm-1 такие, что ik+1 = δ(i+k, t) для к = 1, 2, ..., m-1. В частности, состояние, изображенное на рисунке 9, непосредственно достижимо из состояния, изображенного на рисунке 8, поскольку оно получается путем срабатывания перехода t1. Состояние сети, изображенное на рисунке 10, достижимо из состояния сети, изображенной на рисунке 8, поскольку оно получается путем срабатывания перехода t1, а затем срабатывания перехода t4.

Сеть Петри на рисунке 11 выполняет вычисления (a + b) x (c + d). Каждый из переходов t1 или t2 может сработать первым; однако переход t3 не будет разрешен, пока оба перехода t1 и t2 не сработают.

Рисунок 11 – Модель сети Петри для умножения сумм чисел

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]