Управление проектами - статьи

         

Понятие корректной транзакции


Пусть X - область значений, которые могут принимать данные рассматриваемой прикладной объектно-ориентированной модели, C(x) ≡ {ci(x) | i =1,..,I} - система ограничений, наложенных моделью на состояние x

X и принимающих логическое значение true, если ограничение удовлетворено, и false, если оно нарушено. Если все ограничения удовлетворены в точке x
X, тогда мы говорим, что находится в корректном состоянии, или C(x) = true. Если хотя бы одно из условий не выполняется, т.е. ci(x) = false, то состояние x
X считается некорректным, что выражается соответствующим образом: C(x) ≡ c1(x)
c2(x)
cI(x) = false.

Для некоторых ограничений ci (x) могут быть определены корректирующие методы rij

R таким образом, что если ci (x) = false, то применение метода приводит данные в состояние, удовлетворяющее ранее нарушенному ограничению, т.е. x' = rij(x), ci (x') = true. Мы считаем, что для любого ограничения ci (x), i = 1,…I могут быть определены соответствующие корректирующие методы rij
R. Однако они должны применяться с учетом всех наложенных ограничений ci' (x), i' ≠ i, i' = 1,…I и возможного нарушения некоторых их них, если они уже были удовлетворены.

Если данные находятся в состоянии x

X, то выполнение действия t(xt, pt) с параметрами pt над целевым объектом xt = PrDt x, являющимся некоторой проекцией x на область определения операции Dt, приведет к переводу целевого объекта в состояние x't
X, а всех данных - в состояние x'
X. Мы будем обозначать это следующим образом: x't = t(xt) и x' = t(x). Отдельно выполненное действие может нарушать целостность данных, т.е. если C(x) = true, то C(x'), где x' = t(x), не обязательно принимает значение true. Но мы требуем, чтобы любая корректная транзакция вида T = { tk (xt, pt) | k = 1,…,K } сохраняла целостность данных. Если транзакция T корректна и начальное состояние данных корректно (C(x) = true), то C(x') = true, x' = T(x).
При этом не требуется, чтобы каждое действие tk
T или некоторые группы действий tk1, tk2,…, tkn
T перманентно сохраняли целостность данных во время выполнения транзакции.

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

Теперь определим возможные виды отношений между операциями. Временный журнал транзакции T = T'
T'' - это упорядоченное множество действий, полученное путем объединения журналов реконсилируемых транзакций T' и T'', причем если x - начальное состояние данных и x' и x'' - расходящиеся реплики, то x' = T'(x) и x'' = T''(x).


Содержание раздела