Advanced Transaction Models
Advanced Transaction Models
'LGLHU'RQVH]
8QLYHUVLWp-RVHSK)RXULHU *UHQREOH
,0$,0$*/65$'(/(
'LGLHU'RQVH]#LPDJIU
'LGLHU'RQVH]#LHHHRUJ
Summary
• ASSET
3
Flat Transactions
T1
A1 A2 A3 A4 A6 A7
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
T1
A1 A2 A3 A4 A6 A7
5
recomm
endation
City planner
architect
map window
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
security
engineer
thermic
structur engineer
engineer
7
■ Purchase rules
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
www.hat .com
<RXU%DVNHW
1 sombr er o
W#ZZZKDWFRP
1 poncho
W#ZZZFRDWFRP
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
3XUFKDVH
%X\7ZR
www.coat .com
3XUFKDVH
RUQRQH
3XUFKDVH
9
At Home
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
3XUFKDVH
10
■ Models
• Close Nested Transactions (in PEPiTA)
• Open Nested Transactions (in PEPiTA)
• Long-Lived Transactions
• Sagas
• Split
• DOM
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
• Contract, …
■ Formalism
• ACTA
■ TM
• ASSET, …
12
■ Top-level transaction
guarantees ACID properties
■ Child transaction
guarantees AI properties
inside the top-level transaction
13
CNT - Example
T111 T112
T11 T12
T1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
A1 A2 A3 A4 A5 A6 A7 A8
15
CNT in OTS
LQWHUIDFH,$FFRXQW ^
LQWJHW%DODQFH
YRLGFUHGLW LQW DPRXQW
YRLGGHELW LQWDPRXQW
`
FODVV$FFRXQWLPSOHPHQWV,$FFRXQW ^
LQWQXP
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
LQW EDODQFH
LQWJHW%DODQFH ^UHWXUQEDODQFH`
YRLGFUHGLW LQWDPRXQW ^EDODQFH DPRXQW`
YRLGGHELW LQWDPRXQW ^EDODQFH DPRXQW`
`
16
CNT in OTS
FXUUHQWEHJLQ EHJLQDWRSOHYHO7
DFF7UJFUHGLW FDOOHGZLWKLQ7
FXUUHQWEHJLQ EHJLQDQHVWHG7ZKRVHSDUHQWLV7
DFF6UFGHELW FDOOHGZLWKLQWKHQHVWHG7
LI ^
FXUUHQWFRPPLW FRPPLWWKHQHVWHG7
`HOVH^
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
FXUUHQWDERUW DERUWWKHQHVWHG7
FXUUHQWEHJLQ EHJLQDQHVWHG7ZKRVHSDUHQWLV7
DFF6UFGHELW FDOOHGZLWKLQWKHQHVWHG7
FXUUHQWFRPPLW FRPPLWWKHQHVWHG7
`
FXUUHQWFRPPLW FRPPLWWKHWRSOHYHO7
17
■ Usages
• Improves concurrency
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
effects
A compensation operation can be null
A compensation operation can be done in a transactional scope
» one transaction
» or several transactional until commit (cf SAGA)
20
ONT - Example
Operation to compensate
OT111 is fired
OT111 NT112
NT11 NT12
25
TopT1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
A1 A2 A3 A4 A5 A6 A7 A8
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
ONT
21
22
ONT
Questions about Compensation
■ When compensation operation C1.1.1 is fired
• At T1.1 abort
■ Is compensation a blocking or non-blocking
operation
• Is the T1.1 abort complete until the C111 completion ?
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
Operation to compensate
OT111 is fired
OT111 NT112
NT11 NT12
TopT1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
A1 A2 A3 A4 A5 A6 A7 A8
24
Operation to compensate
OT111 is fired
OT111 NT112
Compensation is
completed
NT11 NT12
TopT1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
A1 A2 A3 A4 A5 A6 A7 A8
25
ONT
Questions about Lock Releasing (in RM)
T1.1.1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
• interface Compensator {
void compensate();
}
27
ONT in MAAO
FRPSHQVDWHWKH'HELWRSHUDWLRQ
FODVV'HELWB&RPSHQVDWRULPSOHPHQWV&RPSHQVDWRU^
$FFRXQWDFFRXQW
LQW DPRXQW
'HELWB&RPSHQVDWRU $FFRXQWDFFRXQWLQW DPRXQW ^
WKLV!DFFRXQW DFFRXQWWKLV!DPRXQW DPRXQW`
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
YRLGFRPSHQVDWH ^$FFRXQWDFF «
DFF!EDODQFH DPRXQW`
`
28
ONT in MAAO
FXUUHQWEHJLQ EHJLQDWRSOHYHO7
DFFWUJFUHGLW FDOOHGZLWKLQ7
FXUUHQWEHJLQ EHJLQDQHVWHG7ZKRVHSDUHQWLV7
DFF6UFGHELW FDOOHGZLWKLQWKHQHVWHG7
FRPPLWWKHQHVWHG7ZLWK217FRPPLWVHPDQWLF
LI ^
FXUUHQWFRPPLW FRPPLWWKHWRSOHYHO7
`HOVH^
FXUUHQWDERUW DERUWWKHWRSOHYHO7
DQGFRPSHQVDWHWKHFRPPLWWHG217
`
29
Cascade of ONT
FXUUHQWEHJLQ EHJLQDWRSOHYHO7
«
FXUUHQWEHJLQ EHJLQDQHVWHG7ZKRVHSDUHQWLV7
DFF7UJFUHGLW FDOOHGZLWKLQ7
FXUUHQWEHJLQ EHJLQDQHVWHG7ZKRVHSDUHQWLV7
DFF6UFGHELW FDOOHGZLWKLQWKHQHVWHG7
&RPSHQVDWRUFRPS QHZ'HELWB&RPSHQVDWRU DFF6UF
FXUUHQWGHILQLWHBFRPPLW QLOFRPS FRPPLW7DVDQ217
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
Cascade of ONT
■ Scheduling of Compensation
• Which scheduling rules are used to compensate OT1.1 and
OT1.1.1 ?
■ Compensation effect
• Credit_Compensate compensates the whole effects of T1.1 ?
• i.e acctrg.debit(1000) and accsrc.credit(1000)
• or only the effects of T1.1 and CNT without T1.1.1 ones ?
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
31
Ordering and Scheduling of ONT
Compensation
■ Problem
• Parallel/Distributed OTs in a transaction (top-level or sub)
• OT1.1 and OT1.2 in T1
■ Scheduling of Compensation
• OT1.1 begins before OT1.2
• but OT1.1 can commit before OT1.2
• but OT1.2 can complete before OT1.1
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
■ Questions
• Ordering and Scheduling of Compensating transactions
• must be kept in the OTS’ mind
• Global time begins order, Global time ends order, other ordering (bean
developer decides)?
Sagas
■ Proposition
• A top-level transaction T1 and a sequence of open-nested
transactions
T1.1, T1.2, … , T1.n-1
with compensator C1, C2, … Cn-1.
■ Remarks
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
7LVHTXLYDOHQWWR6ZKRVHSDUHQWLV7
DFFVUFGHELW FDOOHGZLWKLQWKHQHVWHG7
FRPS QHZ'HELWB&RPSHQVDWRU DFFVUF FRPSHQVDWRU&
FXUUHQWGHILQLWHBFRPPLW QLOFRPS FRPPLW217
EHJLQQLQJRI6Q LQ7
DFFVUFGHELW FDOOHGZLWKLQWKHWRSOHYHO7
FXUUHQWFRPPLW FRPPLW7HTXLYDOHQWWR6QFRPPLW
36
■ Questions
• Ordering and Scheduling of Compensating transactions
• must be kept in the OTS’ mind
• Global time begins order, Global time ends order, other ordering (bean
developer decides)?
Long-Lived Transactions
ACTA
Effects
on Objects On Transactions
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
■ Supported ATM
• Nested, Open Nested, Split/Join, SAGA, ...
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
■ Reference
• A. Billiris, D. Gehani, H. Jagadish, and K. Ramamritham, "ASSET: A System for Supporting Extended
Transactions," Proc. ACM SIGMOD Conf. Management of Data, 1994.
41
ASSET
Basic Primitives
■ tid initiate(func,args)
■ begin(tid)
■ boolean commit(tid)
■ wait(tid)
■ abort(tid)
■ tid self()
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
■ tid parent()
42
ASSET
Specific Primitives
■ delegate(WLGBL WLGBM REMBVHW), delegate(WLGBL WLGBM)
• tid_i tranfers to tid_j the responsibility of obj_set (commit)
tid t;
if((t=initiate(f,args)) !=NULL) {
if(begin(t)){
'RQVH]$GYDQFHG7UDQVDFWLRQ0RGHOV
commit(t);
}
}
44
ASSET - Example
Nested Transaction
delegate(t1,self()); commit(t1);
tid t2=initiate(makehotelresa);
permit(self(),t2); begin(t2); if(!wait(t2)) abort(self());
delegate(t2,self()); commit(t2);
}
45
ASSET - Example
SAGA
switch(i){
case 2: do ct2= initiate(cf2); begin(ct2); while(!commit(ct2));
case 1: do ct1= initiate(cf1); begin(ct1); while(!commit(ct1));
default;
}
47
■ end_trans(tid_i)
■ call_support(tid_j, … , tid_m), permit(tid_i, tid_j, obj_set)
■ thread
■ ...
48
Bibliography (i)
Bibliography (ii)
Bibliography (iii)
❚ C. Mohan, « Tutorial: Advanced Transaction Models – Survey and
Critique », IBM Almaden Research Center 1995