Kap 10: Grundlagen moderner Transaktionsmodelle und

Werbung
aaa
Kap 10: Grundlagen moderner Transaktionsmodelle
und -Verarbeitung
Zielsetzung: Vertieftes Verständnis der wesentlichen Ideen
und Konzepte, die in Produkten und aktuellen
Forschungsarbeiten diskutiert und angeboten werden.
Inhalt:
• Nochmals (Wiederholung aus IS-G): Was ist eine
Transaktion?
• „Semantische Serialisierbarkeit“
• Mehrebenen- Transaktionen
GrundTA-1
ISK
10.1 Einführung und Problemstellung
Le
se
sto
f
f
Beispiel-Transaktion - 1
Read/Write
BOT
Read (p)
Read/Write-Modell:
Write (p)
Read (s)
Es werden nur die Operationen
Read und Write betrachtet auf
Seiten- (oder Datensatz-) Objekten
des Datenbankpuffers. Man spricht
auch von physischen Objekten.
Write (t)
Dies war das Modell in IS-G
Write (q)
EOT
ISK
GrundTA-2
1
aaa
Le
se
sto
f
Beispiel-Transaktion - 2
f
SQL
BOT
SQL Transaktion:
Select A, B from R
where ...
Update R set...
where...
Insert into S values...
Delete from S
where...
EOT
In Wirklichkeit werden
Transaktionen durch den
Programmierer an der DB, z.B.
SQL-Schnittstelle definiert.
Eine Transaktion im
Read/Write-Modell entsteht
dann durch Abbildung der
SQL-Anweisungen auf eine
Folge von Reads und Writes
auf Seiten.
GrundTA-3
ISK
Beispiel-Transaktion - 3
Application Services
Le
se
sto
f
f
BOT
Withdraw (...)
if Balance (...) < 0
Abort _Transaction
else
Deposit (...)
EOT
ISK
Transaktion mit Aufruf von
Anwendungsservices auch
“Transaktion mit semantisch
reichen Operationen” genannt:
Eine Transaktion im Read/WriteModell entsteht durch die
Abbildung der AnwendungsServices auf die SQL-Schnittstelle
und von dort auf die Read/WriteOperationen.
GrundTA-4
2
aaa
Le
se
sto
f
Beispiel-Transaktion - 4
f
BOT
EnterCreditApplication(...)
CheckBonity(...)
if Amount (...) large
GlobalRiskAssessment(...)
if ok
ExecutiveApproval(...)
else
LocalRiskCheck(...)
if ok
LocalApproval(...)
ReportDecision
EOT
Eine Transaktion mit
alternativen Ausführungen:
Eine Transaktion im
Read/Write-Modell ergibt sich
dynamisch durch Abbildung
der Anwendungsservices auf
die DBS-Schnittstelle und
von dort auf die Read und
Write-Operationen.
Bereits im vorigen Beispiel
ergab sich durch Abort eine
andere als die vorgesehene
Ausführung.
GrundTA-5
ISK
Problembewusstsein
Beispiel: Transaktionen mit SQL-Operationen:
t1 = <select * from R where A < 0,
delete from S where B = 0>
… kurz t1 = <p1,q1>
t2 = <select * from S where B = 0,
delete from R where A > 0>
… kurz t2 = <p2,q2>
S = <p2, p1, q1, q2>
ISK
…
ist dieser Ablauf korrekt?
GrundTA-6
3
aaa
Transformation auf die Seitenebene
t2
p2
p1
t1
q1
q2
r2(u) r2(v) r1(s) r1(t) w1(u) w1(v) w2(t) w2(s)
kein serialisierbarer Ablauf von t2 und t1 auf der Seitenebene
Andererseits ist der SQL-Ablauf korrekt, weil p1 nicht in Konflikt
Was ist korrekt??
mit q2 ist (Tupelmengen disjunkt!).
GrundTA-7
ISK
Beobachtungen und offene Fragen
• Kann man Transaktionsverwaltung (Concurrency Control und Recovery)
auch auf einer höheren Ebene ansiedeln, also semantisch reichere
Operationen zulassen? Was ändert sich an den Grundlagen?
===> Semantische Serialisierbarkeit (Kap. 10.2)
• Aktionen innerhalb von Transaktionen werden als atomar angesehen.
Was passiert, wenn Aktionen wieder als Transaktionen angesehen
werden?
===> Mehrebenen-Transaktionen (Kap 10.3)
ISK
GrundTA-8
4
aaa
10.2 Transaktionen mit semantisch reichen Operationen
…Zulassen von Operationen jenseits von Reads/Writes („semantisch
reiche“), Vorbereitung für zusammengesetzte Transaktionen:
DB
Menge von (abstrakten)
“shared” Objekten. Diese
treten nicht explizit auf, sondern nur über die Menge A
A
Menge von DB-Aktionen, also
(semantisch reiche) Operationen, die den Benutzern
zugänglich gemacht wurden.
T
Menge von Transaktionen
( t1, t2,..), die ausgeführt
werden müssen.
partielle Ordnung auf T:
wenn t1 => t2, so wird
gefordert, dass t1 endet
bevor t2 startet.
Üblicherweise (und in IS-G)
haben wir keine solche InterTransaktions-Ordnung für
die Ausführung gefordert.
t
Transaktion, eine Menge von
Aktionen (a1, a2, ...ak) mit
<<t
partielle Ordnung auf t:
wenn a1 <<t a2, wird gefordert,
dass a1 endet bevor a2 startet.
Dies ist die übliche IntraTransaktions- Ordnung, die
sicherstellt, dass Rückgabewerte von a1 für a2 zur
Verfügung stehen.
==>
ISK
GrundTA-9
Die grundlegenden Voraussetzungen
• Jede einzelne Transaktion, wenn • Eine korrekte, isolierte
Ausführung einer Transaktion t ist
allein ausgeführt, ist korrekt. (1)
eine, welche die gegebene
• Wegen (1) ist jede =>-serielle
Ordnung <<t beachtet.
Ausführung aller Transaktionen
korrekt.
(2)
• (1) und (2) sind Axiome. Korrekt- • Eine =>-serielle Ausführung von T
ist eine serielle Ausführung,
heit paralleler Ausführung wird
welche die gegebene Ordnung =>
bewiesen unter der Annahme der
beachtet.
Korrektheit serieller Ausführung
• Konflikt-Aktionen unterschiedlicher Transaktionen müssen
• Wenn a’ and a” beide in t sind,
geordnet werden. (Es kann ja ein
und wenn a’<<t a” vorgeschrieben
Informationsfluss zwischen solist, so kann a’ Werte zurückgeben,
chen Transaktionen bestehen)
die für a” benötigt werden (siehe
dazu das Read/Write-Modell, wo
• Aktionen innerhalb einer
wir annehmen, dass ein Write von
Transaktion, wenn <<t-geordnet,
allen davor angeordneten Reads
dürfen nicht kommutiert werden,
dieser Transaktion abhängt)
auch wenn sie konfliktfrei sind.
ISK
GrundTA-10
5
aaa
Konflikte & Kommutativität
• Kommutativität:
Aktionen a' and a" aus A sind konflikt-frei genau dann, wenn die Folgen
und
F1 << a' << a"
<< F2
F1 << a" << a'
<< F2
die gleiche Werte zurückgeben für alle Aktionsfolgen F1 and F2, die aus
Aktionen von A gebildet werden können.
Wir können keinerlei Unterschiede beobachten, ob a’ vor a” ausgeführt
wurde oder umgekehrt. Daher kann ein Scheduler a’ and a” in beliebiger
Reihenfolge ausführen.
• Konfliktfreie Aktionenpaare sind kommutierbar. Nicht kommutierbare
Aktionspaare heissen kurz Konfliktpaare: (a‘,a“) ∈ CON
GrundTA-11
ISK
Inverse (Undo) und effektfreie Operationen für Recovery
• Inverse Operation:
Aktion a" ist invers zu a' wenn die Folgen
F1 << a' << a" << F2
und
Le
se
sto
f
f
F1 << F2
die gleiche Werte zurückliefern für alle Aktionsfolgen F1 and F2. Wir
sagen auch, dass a“ eine Kompensation von a‘ ist.
• Effektfreie Aktionssequenzen (Nullsequenzen):
sind solche, die ohne beobachtbaren Einfluss bleiben, also (siehe
Definition vorher)
– Ein Paar (p, p-1 ) bestehend aus Aktion p und ihrer Inverser p-1
– Reine Leseaktionen von Rücksetztransaktionen
• Wir können keinerlei Unterschied beobachten, ob eine effektfreie
Aktionssequenz ausgeführt wurde oder nicht. Daher kann der
Scheduler effektfreie Operationen entfernen!
ISK
GrundTA-12
6
aaa
Semantische Serialisierbarkeit
Sei S = (T, =>, <<) ein Schedule für T mit gegebener Inter-TransaktionsOrdnung => und mit der Ausgabeordnung << , einer partiellen Ordnung,
die über den Aktionen der Transaktionsmenge T definiert ist.
Ein Schedule S ist wohlgeformt, wenn für die Ausgabe-Ordnung << gilt
a) << beachtet die Inter-Transaktions-Ordnung =>,
b) << enthält die Intra-Transaktions-Ordnungen <<t aller t aus T
c) << enthält alle Konflikt-Paare, d.h. wenn a’ in t’ and a” in t” (t’ ≠ t”) und
wenn a’ and a” im Konflikt sind, so muss entweder a’ << a” oder a” << a’
gelten.
Ein Schedule S= (T, =>, <<) ist seriell, wenn die Input-Ordnung => eine totale
Ordnung ist, d.h. es gilt für zwei beliebige unterschiedliche Transaktionen
t’ und t” in T entweder t’ => t” oder t” => t’ .
Ein wohlgeformter Schedule S=(T, =>s, <<s) ist (semantisch) serialisierbar,
wenn ein wohlgeformter serieller Schedule Sser=(T, =>ser, <<ser) existiert,
<<ser ⊇ <<s
für den gilt:
d.h. S ordnet Konflikt-Paare in gleicher Weise wie Sser und die gegebene
Inputordnung ist beachtet.
GrundTA-13
ISK
Serialisierungsgraph und Zusammenstellung
Serialisierungsgraph (wie IS-G): Sei S = (T, =>, <<) ein wohlgeformter
Schedule. Der Serialisierungsgraph SG(S) ist ein gerichteter Graph mit den
Transaktionen als Knoten. Eine Kante von ti nach tj (i ≠ j) gibt es, wenn es eine
Aktion a´ aus ti und a” aus tj gibt mit a´ << a”.
Satz (wie IS-G): Ein Schedule S ist genau dann serialisierbar, d.h. korrekt,
wenn SG(S) azyklisch ist.
Input und Output eines Schedulers
T, =>
A
CON
Scheduler
<<t
τ , <<
ISK
GrundTA-14
7
aaa
Le
se
sto
f
10.3 Ein konkretes Beispiel
f
• Aktionsmenge: Deposit, Withdraw, Read (beachten, dass es unerheblich
ist auf welchen Datenbanken diese Aktionen ausgeführt werden.
Insbesondere könnte es sich um verteilte Datenbanken handeln):
– R (ead):
– W (ithdraw):
– D (eposit):
CON :
R
D
W
x ist KontoNr
a ist Kontostand
b ist Betrag
r ist Fehlerindikator
R (x,a)
W (x,b,r)
D (x,b,r)
Konfliktrelation
(prüfen mittels Kommutativitätsdefinition)
+
+
+
W
+
+
D
+
+
R
+ = konflikt
- = konfliktfrei
GrundTA-15
ISK
Le
se
sto
ff
Auch hier beachten: es ist unerheblich, ob diese Transaktionen verteilt
sind oder nicht. Im Prinzip könnte jede Aktion auf einer anderen DB laufen
Transaktionen im Beispiel
t1 : W (s,a,r);
if r ok
do in parallel
(D (u,a/2,r)
D (v,a/2,r))
t2 : W (s,b,r) ;
if r ok
do in parallel
(D (v,b/2,r)
D(w,b/2,r))
ISK
W1
Du1
Dv1
W2
Dv2
Dw2
GrundTA-16
8
aaa
Le
se
sto
f
Für den Scheduler:
f
t1 = {W1 ,Du1 ,Dv1 | W1 <<t1 Du1
W1 <<t1 Dv1 }
t2 = {W2 ,Dv2 ,Dw2 | W2 <<t2 Dv2
W2 <<t2 Dw2 }
Schedule S:
S = ( {t1 , t2},
=∅,
<< = { W1 << Du1 , W1 << Dv1 ,
W2 << Dv2 , W2 << Dw2 ,
Ordnung vom Programmierer
W1 << W2
})
vorgegeben
Einziges Konfliktpaar unter
allen Kombinationen der
Operationen W1, Du1 Dv1, W2,
Dv2, Dw2
SG(S) daher: t1 --------> t2
also azyklisch, S ist korrekt!
GrundTA-17
ISK
10.4 Mehrebenen-Transaktionen
• Implizite Voraussetzung im
flachen Modell:
Jede Aktion wird atomar und
isoliert ausgeführt, d.h.
vollständig oder gar nicht.
• Wir geben diese Voraussetzung
jetzt auf:
Was passiert, wenn Aktionen
wieder als Transaktionen
betrachtet werden und parallel
ausgeführt werden?
ISK
Warum ist dies wichtig?
• Aktionen können komplex sein,
(nicht nur einige Reads und Writes
einzelner Seiten). Wenn Aktionen
nicht im Konflikt sind, werden sie
in irgendeiner Reihenfolge
sequentiell ausgeführt, warum
nicht (korrekt) parallel?
• Selbst wenn Aktionen (a’,a”) im
Konflikt sind und wir fordern, dass
a’<< a” oder a”<<a’, warum können
wir nicht parallele Ausführung
erlauben, aber mit dem gleichen
Effekt als ob sequentiell
ausgeführt?
GrundTA-18
9
aaa
Das Problem dahinter: Welche Information muss
zwischen mehreren Schedulern übergeben werden?
Transaktionen
G-Scheduler
Aktionen
Transaktionen
L-Scheduler
Aktionen
Wir unterscheiden mehrere Scheduler,
in der Abbildung den G-Scheduler und
den L-Scheduler.
Unser Ziel ist es, die zwei Scheduler so
unabhängig voneinander wie möglich
arbeiten zu lassen.
Wie können wir sicherstellen, dass die
Serialisierungsordnung des LSchedulers der Serialisierungsordnung
des G-Schedulers nicht widerspricht?
Welche verschiedenen Arten von
Ordnungsbeziehungen müssen wir
unterscheiden?
GrundTA-19
ISK
Starke und Schwache Ordnung
• Klassisch unterscheiden wir nur zwei Fälle:
• sequentielle Ausführung A<<B („A vor B“)
• parallele Ausführung A//B, die äquivalent ist zu A<<B oder B<<A
Wenn parallele Ausführung nicht möglich ist, z.B. Im Falle von
Konflikten, wird sequentielle Ausführung erzwungen. Dies ist unnötig
eng!
• Ein verbessertes Modell unterscheidet drei Fälle:
– sequentielle Ausführung A<<B, ab jetzt „starke Ordnung“ genannt,
– uneingeschränkte parallele Ausführung A//B, die äquivalent ist zu
entweder A<<B oder B<<A,
– eingeschränkte parallele Ausführung A<B die äquivalent ist zu A<<B.
Diese (neue) Anordnungsbedingung wird „schwache Ordnung“
genannt. Die Serialisierungsordnung ist ein Beispiel für schwache
Ordnung
• Aus der Definition folgt, dass die Verschärfung einer schwachen zu
einer starken Ordnungsrestriktion immer korrekte Resultate liefert.
ISK
GrundTA-20
10
aaa
Beispiele
1) Übertragung eines Betrages s von Konto a nach Konto b und des
Betrages t von b nach c zweier Transaktion:
Unterschied von
Transfer(a,b,s) // Transfer(b,c,t)
zu
Transfer(a,b,s) < Transfer(b,c,t)
zu
Transfer(a,b,s) << Transfer (b,c,t)
2) Erhöhung des Gehalts aller Mitarbeiter nach folgendem Schema:
Transaktion 1: Erhöhung des Gehalts aller Mitarbeiter um den festen
Betrag s, deren derzeitiges Gehalt unter 2000 liegt.
Transaktion 2: Lineare Erhöhung des Gehalts jedes Mitarbeiters um
5%.
– Unterschiede wie oben?
ISK
GrundTA-21
Konfliktkonsistente Wohlgeformtheit eines Schedules
Behutsamer Umgang mit Ordnungseinschränkungen, Vorbereitung für
Zusammenspiel zweier oder mehrerer Scheduler:
Sei S = (T, =>, ->, <<, <) ein Schedule für T mit geg. starker => und schwacher ->
jeweils partieller Inter-Transaktions-Ordnung mit => ⊆ ->. << bzw. < ist die starke
bzw. schwache partielle Ausgabeordnung, die auf den Aktionen von T definiert
ist.
Ein Schedule S ist wohlgeformt, wenn die Ausgabeordnungen << und < den
folgenden Bedingungen genügen:
a) << beachtet die starke Inter-Transaktions-Ordnung =>,
b) << enthält die starke Intra-Transaktionsordnung <<t für alle t aus T
c) < enthält alle Konflikt-Paare, d.h. wenn a’ aus t’ und a” aus t” (t’ ≠ t”)
und wenn a’ and a” im Konflikt sind, so muss entweder a’< a” oder a”< a’ sein
d) << ⊆ <
Bemerkung: Konfliktkonsistente Wohlgeformtheit erfasst alle
offensichtlichen Anordnungsbedingungen. Andere Schedules werden nicht
betrachtet. Wir beachten, dass die schwache Eingabeordnung -> nicht
automatisch propagiert wird.
ISK
GrundTA-22
11
aaa
Konflikt-konsistente Serialisierbarkeit
Ein Schedule S=(T, =>, ->, <<, <) ist seriell, wenn die starke Eingabeordnung
=> total ist. Offensichtlich ist dann -> und => identisch.
Definition CCSR: Ein wohlgeformter Schedule S=(T, =>s, ->s, <<s, <s) ist
konflikt-konsistent serialisierbar (CCSR), wenn ein wohlgeformter
serieller Schedule Sser=(T, =>ser, ->ser, <<ser, <ser) existiert mit
=>ser ⊇ ->s
<ser ⊇ <s
d.h. S ordnet Konfliktpaare wie Sser und die gegebene starke und schwache
Eingabeordnung wird in S beachtet.
Theorem CCSR:
Ein wohlgeformter Schedule S ist CCSR genau dann, wenn die
Vereinigung des Serialisierungsgraphen SG(S) (wie üblich definiert) mit
der schwachen Inter-Transaktions- Ordnung -> von S azyklisch ist.
GrundTA-23
ISK
CCSR Bemerkungen
1) Der Hauptunterschied zum bisherigen Modell besteht in der
behutsamen Propagierung der schwachen Ordnung: Die schwache
Inter-Transaktions-Ordnung schränkt die erlaubten seriellen Schedules
für den Korrektheitsbeweis ein. Sie wird nicht automatisch propagiert.
Konfliktpaare müssen daher sowohl azyklisch als auch konsistent zur
vorgegebenen schwachen Ordnung angeordnet werden.
2) CCSR ist nur sinnvoll, wenn mehrere Scheduler zusammenarbeiten.
Falls nur ein Scheduler (= „korrekter Parallelisierer“) vorhanden ist,
wird die schwache Ausgabeordnung in eine starke umgewandelt, um so
Korrektheit zu erreichen (es gibt ja keinen Scheduler mehr darunter, der
dafür sorgen kann!)
ISK
GrundTA-24
12
aaa
Anwendung bei Mehrebenen-Schedules
Ein Mehrebenen-Schedule besteht aus n
Schedules wobei:
– Aktionen auf einer Ebene i werden
Transaktionen der nächst tieferen
Ebene i-1,
– die starke Ausgabeordnung auf der
einen Ebene i wird die starke Eingabeordnung der nächst tieferen i-1.
– die schwache Ausgabeordnung auf
einer Ebene i wird die schwache Eingabeordnung der nächst tieferen i-1,
Τ, =>, −>
Scheduler i
τ , << <
i
i
i
Τi−1, =>i-1, ->i-1
Scheduler i-1
Zentraler Satz (unmittelbar aus der Definition):
Ein Mehrebenen-Schedule ist korrekt, wenn jeder individuelle Schedule
CCSR ist.
GrundTA-25
ISK
10.5 Transfer-Beispiel zur Transaktionsverwaltung als ZweiEbenen-Schedule:
Für Scheduler 1 (siehe oben):
t2 = { W2(s, b) <<t2 D2(v, b/2)
t1 = {W1(s, a) <<t1 D1(u, a/2)
<<t1 D1(v, a/2) }
<<t2 D2(w, b/2) }
t1
W1
W2
t2
Du1
Dv2
[Für die Darstellung von S1:
W2
ISK
Dv1
: starke Ordnung
: schwache Ordnung]
SG(S1):
S1:
W1
Dw2
Du1
Dv1
Dv2
Dw2
t1
t2
Serialisierungsgraph ist azyklisch:
Semantische Serialisierbarkeit
GrundTA-26
13
aaa
Übergang zu einem Zwei-Ebenen-Schedule
Die Operationen W1, W2, Du1, Dv1, Dv2, Dw2 werden jetzt nicht mehr als
atomare Operationen betrachtet, sondern als Transaktionen, die einem
Scheduler 2 übergeben werden, der für (lokale) Korrektheit sorgen muss.
Für die Operation W (ithdraw) und D (eposit) soll folgende Implementierung
angenommen werden:
r (ead) (konto) << wr (ite) (konto)
Es soll also vorgängig der Kontostand gelesen und dann geschrieben werden.
Der Scheduler 2 erhält also das Resultat vom Scheduler 1 und regelt die
Lese- und Schreibzugriffe auf den entsprechenden Speicherobjekten.
GrundTA-27
ISK
Ausgabe des Schedulers 1 = Eingabe für Scheduler 2
W1
W2
Du1
Dv2
Dw2
Dv1
r1(s) wr1(s) r2(s) r1(u) wr2(s) r2(v) wr1(u) r2(w) wr2(v) r1(v) wr2(w) wr1(v)
S2:
SG(S2):
r1(s)
r1(u)
wr1(u)
wr1(s)
r1(v)
wr1(v)
r2(s)
r2(v)
wr2(v)
wr2(s)
r2(w)
wr2(w)
: starke Ordnung
: schwache Input-Ordnung
: Konfliktpaar-Ordnung
ISK
W1
Du1
Dv1
W2
Dv2
Dw2
SG(S2) vereinigt mit
schwacher Inputordnung ist
azyklisch, also korrekt
GrundTA-28
14
aaa
Anhang: Einführungs-Beispiel: Prüfung auf Korrektheit
Konflikte bestehen zwischen:
(p1, p2) : kein Konflikt: Leser
(p1, q2) : kein Konflikt, weil Tupelmengen disjunkt
(q1, p2) : Konflikt (nicht disjunkte Tupelmengen)
(q1, q2) : kein Konflikt, weil Tupelmengen disjunkt)
Le
se
sto
f
f
Daher Eingabe für den SQL Scheduler (S1):
Eingabe-Ordnungen:
→=Ø
⇒ =Ø
Intra-Transaktionsordnung:
p1 <<1 q1
p2 <<2 q2
Erzeugte Ausgabeordnungen:
<< :
< :
p1 << q1 , p2 << q2
wegen Intratransaktionsordnung
q1 < p2 (p1 < q1 , p2 < q2 ) weil Konfliktpaar (und wegen << ⊆ <) .
erzeugter Schedule ist korrekt, weil der serielle Schedule t1 ⇒ t2 diese
Ordnungen enthält.
ISK
GrundTA-29
Le
se
sto
Eingabe für den Seitenscheduler (S2):
ff
Konflikte: r/w - Konflikte (siehe IS-G)
Inputordnungen für S2 (= Outputordnung von S1):
⇒ = << :
p 1 ⇒ q 1 , p2 ⇒ q 2
→ = < :
q1 → p2 , (p1 → q1 , p2 → q2)
Intra-Transaktionsordnung: in q1: <<q1 : wq1(u) << wq1(v), in p2: <<p2: r2(u) << r2(v)
wegen Zugriff über einen Index; alle anderen Aktionen in p1 und q2 auf der
Seitenebene können parallel ausgeführt werden.
Ausgabe des Seitenschedulers:
Ausgabeordnungen eines wohlgeformten Schedules:
<< :
rp1(s) << wq1(v) , rp1(s) << wq1(u) , rp1(t) << wq1(v) , rp1(t) << wq1(u)
rp2(u) << wq2(s) , rp2(u) << wq2(t) , rp2(v) << wq2(s) , rp2(v) << wq2(t)
wq1(u) << wq1(v), r2(u) << r2(v)
< :
r p2 (u) < wq1(u), rp2(v) < wq1(v)
...
Dies wäre zwar wohlgeformt, allerdings ein nicht korrekter Schedule, weil die
Konfliktpaarordnung im Widerspruch zur schwachen Inputordnung wäre, die ja
verlangt: q1 → p2 (siehe folgende grafische Darstellung)
ISK
GrundTA-30
15
aaa
Le
se
sto
f
Grafische Darstellung:
p1
rp1(s)
rp2(u)
f
q1
rp1(t)
rp2(v)
p2
wq1(u)
wq2(t)
wq1(v)
wq2(s)
Konfliktpaarordnung
widerspricht der schwachen
Inputordnung
.
Schedule ist also NICHT
korrekt
q2
Konfliktpaarordnung
schwache Inputordnung
starke Ordnung
GrundTA-31
ISK
Le
se
sto
f
daher “lieber” Konfliktpaare so ordnen:
wq1(u) < rp2(u)
wq1(v) < rp2(v)
rp1(s) < wq2(s)
rp1(t) < wq2(t)
p1
rp1(s)
rp2(u)
p2
ISK
q1
rp1(t)
rp2(v)
wq1(u)
wq2(t)
q2
wq1(v)
wq2(s)
f
Prüfung auf CCSR :
SG (S2):
p1
q1
p2
q2
SG(S) ∪ mit Inputordnung ist
azyklisch d.h. CCSR
GrundTA-32
16
Herunterladen