'LVWULEXWHG6\VWHPV.HUQIDFK

7UDQVDFWLRQVLQGLVWULEXWHGVHWWLQJV

3URI'U*XVWDYR$ORQVR

,QVWLWXWHIRU3HUYDVLYH&RPSXWLQJ

&RPSXWHU6FLHQFH'HSDUWPHQW

(7+=ULFK

DORQVR#LQIHWK]FK

KWWSZZZLQIHWK]FKaDORQVR

%DVLFVRIWUDQVDFWLRQSURFHVVLQJ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( +% 7UDQVDFWLRQ3URFHVVLQJ

:K\LVWUDQVDFWLRQSURFHVVLQJUHOHYDQW"

0RVWRIWKHLQIRUPDWLRQV\VWHPVXVHGLQEXVLQHVVHVDUHWUDQVDFWLRQEDVHG HLWKHU GDWDEDVHVRU730RQLWRUV 7KHPDUNHWIRUWUDQVDFWLRQSURFHVVLQJLVPDQ\WHQV ELOOLRQVRIGROODUVSHU\HDU

1RWORQJDJRWUDQVDFWLRQSURFHVVLQJZDVXVHGPRVWO\LQODUJHFRPSDQLHV ERWK XVHUVDQGSURYLGHUV 7KLVLVQRORQJHUWKHFDVH &25%$:::&RPPRGLW\73 0RQLWRUV,QWHUQHWSURYLGHUVGLVWULEXWHGFRPSXWLQJ

7UDQVDFWLRQSURFHVVLQJLVQRWMXVWGDWDEDVHWHFKQRORJ\LWLVFRUHGLVWULEXWHG V\VWHPVWHFKQRORJ\

:K\GLVWULEXWHGWUDQVDFWLRQSURFHVVLQJ"

,WLVDQDFFHSWHGSURYHQDQGWHVWHGSURJUDPPLQJPRGHODQGFRPSXWLQJSDUDGLJP IRUFRPSOH[DSSOLFDWLRQV

7KHFRQYHUJHQFHRIPDQ\WHFKQRORJLHV GDWDEDVHVQHWZRUNVZRUNIORZ PDQDJHPHQW25%IUDPHZRUNVFOXVWHUVRIZRUNVWDWLRQV« LVODUJHO\EDVHGRQ

GLVWULEXWHGWUDQVDFWLRQDOSURFHVVLQJ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

)URPEXVLQHVVWRWUDQVDFWLRQV

o $EXVLQHVVWUDQVDFWLRQXVXDOO\LQYROYHVDQH[FKDQJHEHWZHHQWZRRUPRUHHQWLWLHV VHOOLQJEX\LQJUHQWLQJERRNLQJ« 

o :KHQFRPSXWHUVDUHFRQVLGHUHGWKHVHEXVLQHVVWUDQVDFWLRQVEHFRPHHOHFWURQLF WUDQVDFWLRQV

TRANSACTION BUYER SELLER

STATE STATE STATE book-keeping

o 7KHLGHDVEHKLQGDEXVLQHVVWUDQVDFWLRQDUHLQWXLWLYH7KHVHVDPHLGHDVDUHXVHGLQ HOHFWURQLFWUDQVDFWLRQV

o (OHFWURQLFWUDQVDFWLRQVRSHQXSPDQ\SRVVLELOLWLHVWKDWDUHXQIHDVLEOHZLWKWUDGLWLRQDO

¨ ©  ¥  ! "'#%&(&()(*¦¡ +) ¢¡¤£¦¥¦§ DFFRXQWLQJV\VWHPV 7KHSUREOHPVRIHOHFWURQLFWUDQVDFWLRQV

7UDQVDFWLRQVDUHDJUHDWLGHD

o +DFNDVPDOOFXWHSURJUDPDQGWKDW·VLW

8QIRUWXQDWHO\WKH\DUHDOVRDFRPSOH[LGHD

o )URPDSURJUDPPLQJSRLQWRIYLHZRQHPXVWEHDEOHWRHQFDSVXODWHWKHWUDQVDFWLRQ QRWHYHU\WKLQJLVDWUDQVDFWLRQ 

o 2QHPXVWEHDEOHWRUXQKLJKYROXPHVRIWKHVHWUDQVDFWLRQV EX\HUVZDQWIDVW UHVSRQVHVHOOHUVZDQWWRUXQPDQ\WUDQVDFWLRQVFKHDSO\ 

o 7UDQVDFWLRQVPXVWEHFRUUHFWHYHQLIPDQ\RIWKHPDUHUXQQLQJFRQFXUUHQWO\ DWWKH VDPHWLPHRYHUWKHVDPHGDWD 

o 7UDQVDFWLRQVPXVWEHDWRPLF3DUWLDOO\H[HFXWHGWUDQVDFWLRQVDUHDOPRVWDOZD\V LQFRUUHFW HYHQLQEXVLQHVVWUDQVDFWLRQV 

o :KLOHWKHEXVLQHVVLVFORVHGRQHPDNHVQRPRQH\ LQPRVWEXVLQHVV 7UDQVDFWLRQV DUH´PLVVLRQFULWLFDOµ

o /HJDOO\PRVWEXVLQHVVWUDQVDFWLRQVUHTXLUHDZULWWHQUHFRUG6RGRHOHFWURQLF

WUDQVDFWLRQV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

:KDWLVDWUDQVDFWLRQ"

7UDQVDFWLRQVRULJLQDWHGDV´VSKHUHVRIFRQWUROµLQZKLFKWRHQFDSVXODWHFHUWDLQEHKDYLRURI SDUWLFXODUSLHFHVRIFRGH

o $WUDQVDFWLRQLVEDVLFDOO\DVHWRIVHUYLFHLQYRFDWLRQVXVXDOO\IURPDSURJUDP DOWKRXJKLWFDQDOVREHLQWHUDFWLYH 

o $WUDQVDFWLRQLVDZD\WRKHOSWKHSURJUDPPHUWRLQGLFDWHZKHQWKHV\VWHPVKRXOG WDNHRYHUFHUWDLQWDVNV OLNHVHPDSKRUHVLQDQRSHUDWLQJV\VWHPEXWPXFKPRUH FRPSOLFDWHG 

o 7UDQVDFWLRQVKHOSWRDXWRPDWHPDQ\WHGLRXVDQGFRPSOH[RSHUDWLRQV

UHFRUGNHHSLQJ

FRQFXUUHQF\FRQWURO

UHFRYHU\

GXUDELOLW\

FRQVLVWHQF\

o ,WLVLQWKLVVHQVHWKDWWUDQVDFWLRQVDUHFRQVLGHUHG$&,' $WRPLF&RQVLVWHQW

,VRODWHGDQG'XUDEOH 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ 7UDQVDFWLRQDOSURSHUWLHV

7KHVHV\VWHPVZRXOGKDYHEHHQYHU\GLIILFXOWWREXLOGZLWKRXWWKHFRQFHSWRIWUDQVDFWLRQ 7RXQGHUVWDQGZK\RQHQHHGVWRXQGHUVWDQGWKHIRXUNH\SURSHUWLHVRIDWUDQVDFWLRQ

o $720,&,7<QHFHVVDU\LQDQ\GLVWULEXWHGV\VWHP EXWDOVRLQFHQWUDOL]HGRQHV $ WUDQVDFWLRQLVDWRPLFLILWLVH[HFXWHGLQLWVHQWLUHW\RUQRWDWDOO

o &216,67(1&<XVHGLQGDWDEDVHHQYLURQPHQWV$WUDQVDFWLRQVPXVWSUHVHUYHWKHGDWD FRQVLVWHQF\

o ,62/$7,21LPSRUWDQWLQPXOWLSURJUDPPLQJPXOWLXVHUHQYLURQPHQWV$WUDQVDFWLRQ PXVWH[HFXWHDVLILWZHUHWKHRQO\RQHLQWKHV\VWHP

o '85$%,/,7<LPSRUWDQWLQDOOFDVHV7KHFKDQJHVPDGHE\DWUDQVDFWLRQPXVWEH

SHUPDQHQW WKH\PXVWQRWEHORVWLQFDVHRIIDLOXUHV 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡

7UDQVDFWLRQDOSURSHUWLHV

C Transaction FRQVLVWHQW FRQVLVWHQW GDWDEDVH GDWDEDVH

A Txn FRQVLVWHQW LQFRQVLVWHQW GDWDEDVH GDWDEDVH Failure I Txn 1 FRQVLVWHQW FRQVLVWHQW GDWDEDVH GDWDEDVH Txn 2

LQFRQVLVWHQW GDWDEDVH D Txn FRQVLVWHQW FRQVLVWHQW recovery GDWDEDVH GDWDEDVH system recovery crash LQFRQVLVWHQW

GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( £¢ 7UDQVDFWLRQDODWRPLFLW\

o 7UDQVDFWLRQDODWRPLFLW\LVDQ´DOORUQRWKLQJµSURSHUW\HLWKHUWKHHQWLUHWUDQVDFWLRQ WDNHVSODFHRULWGRHVQRWWDNHSODFHDWDOO

o $WUDQVDFWLRQRIWHQLQYROYHVVHYHUDORSHUDWLRQVWKDWDUHH[HFXWHGDWGLIIHUHQWWLPHV FRQWUROIORZGHSHQGHQFLHV 7KXVWUDQVDFWLRQDODWRPLFLW\UHTXLUHVDPHFKDQLVPWR HOLPLQDWHSDUWLDOLQFRPSOHWHUHVXOWV DUHFRYHU\SURWRFRO 

Txn FRQVLVWHQW LQFRQVLVWHQW GDWDEDVH GDWDEDVH Failure

RECOVERY log MANAGER Txn Failure

FRQVLVWHQW FRQVLVWHQW LQFRQVLVWHQW

GDWDEDVH GDWDEDVH GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡

7UDQVDFWLRQDOLVRODWLRQ

o ,VRODWLRQDGGUHVVHVWKHSUREOHPRIHQVXULQJFRUUHFWUHVXOWVHYHQZKHQWKHUHDUHPDQ\ WUDQVDFWLRQVEHLQJH[HFXWHGFRQFXUUHQWO\RYHUWKHVDPHGDWD

o 7KHJRDOLVWRPDNHWUDQVDFWLRQVEHOLHYHWKHUHLVQRRWKHUWUDQVDFWLRQLQWKHV\VWHP LVRODWLRQ 

o 7KLVLVHQIRUFHGE\DFRQFXUUHQF\FRQWUROSURWRFROZKLFKDLPVDWJXDUDQWHHLQJ VHULDOL]DELOLW\

FRQVLVWHQW Txn 1 FRQVLVWHQW GDWDEDVH GDWDEDVH Txn 2 LQFRQVLVWHQW GDWDEDVH Txn 1 CONCURRENCY Txn 2 CONTROL

Txn 1 Txn 2 FRQVLVWHQW FRQVLVWHQW FRQVLVWHQW

GDWDEDVH GDWDEDVH GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ & 7UDQVDFWLRQDOFRQVLVWHQF\

o &RQFXUUHQF\FRQWURODQGUHFRYHU\SURWRFROVDUHEDVHGRQDVWURQJDVVXPSWLRQWKH WUDQVDFWLRQLVDOZD\VFRUUHFW

o ,QSUDFWLFHWUDQVDFWLRQVPDNHPLVWDNHV LQWURGXFHQHJDWLYHVDODULHVHPSW\VRFLDO VHFXULW\QXPEHUVGLIIHUHQWQDPHVIRUWKHVDPHSHUVRQ« 7KHVHPLVWDNHVYLRODWH GDWDEDVHFRQVLVWHQF\

o 7UDQVDFWLRQFRQVLVWHQF\LVHQIRUFHGWKURXJKLQWHJULW\FRQVWUDLQWV

1XOOFRQVWUDLQVZKHQDQDWWULEXWHFDQEHOHIWHPSW\

)RUHLJQNH\VLQGLFDWLQJZKHQDQDWWULEXWHLVDNH\LQDQRWKHUWDEOH

&KHFNFRQVWUDLQWVWRVSHFLI\JHQHUDOUXOHV ´HPSOR\HHVPXVWEHHLWKHUPDQDJHUV RUWHFKQLFLDQVµ 

o 7KXVLQWHJULW\FRQVWUDLQWVDFWVDVILOWHUVGHWHUPLQLQJZKHWKHUDWUDQVDFWLRQLV DFFHSWDEOHRUQRW

o 127(LQWHJULW\FRQVWUDLQWVDUHFKHFNHGE\WKHV\VWHPQRWE\WKHWUDQVDFWLRQ

SURJUDPPHU

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢

7UDQVDFWLRQDOGXUDELOLW\

o 7UDQVDFWLRQDOV\VWHPRIWHQGHDOZLWKYDOXDEOHLQIRUPDWLRQ7KHUHPXVWEHDJXDUDQWHH WKDWWKHFKDQJHVLQWURGXFHGE\DWUDQVDFWLRQZLOOODVW

o 7KLVPHDQVWKDWWKHFKDQJHVLQWURGXFHGE\DWUDQVDFWLRQPXVWVXUYLYHIDLOXUHV LI\RX GHSRVLWPRQH\LQ\RXUEDQNDFFRXQW\RXGRQ·WZDQWWKHEDQNWRWHOO\RXWKH\KDYHORVW DOOWUDFHVRIWKHWUDQVDFWLRQEHFDXVHWKHUHZDVDGLVNFUDVK 

o ,QSUDFWLFHGXUDELOLW\LVJXDUDQWHHGE\XVLQJUHSOLFDWLRQGDWDEDVHEDFNXSVPLUURUHG GLVNV

o 2IWHQGXUDELOLW\LVFRPELQHGZLWKRWKHUGHVLUDEOHSURSHUWLHVVXFKDVDYDLODELOLW\

$YDLODELOLW\LVWKHSHUFHQWDJHRIWLPHWKHV\VWHPFDQEHXVHGIRULWVLQWHQGHG SXUSRVH FRPPRQUHTXLUHPHQWRUKRXUDPRQWKRIGRZQWLPH 

$YDLODELOLW\SOD\VDQLPSRUWDQWUROHLQPDQ\V\VWHPV&RQVLGHUIRULQVWDQFHWKH

QDPHVHUYHUXVHGLQD&25%$LPSOHPHQWDWLRQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ % $6LPSOH7UDQVDFWLRQ0DQDJHU ,

transactions TRANSACTION (r, w, c, a) MANAGER restart read, write, , abort (after system SCHEDULER failure) ( read, write, commit, abort RECOVERY MANAGER fetch, flush read, write read, write CACHE MANAGER STABLE DATABASE DATA MANAGER CACHE LOG

stable storage main memory

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢

$6LPSOH7UDQVDFWLRQ0DQDJHU ,,

o (DFKRQHRIWKHPRGXOHVVKRZQLVDFRPSOH[FRPSRQHQWWKDWFDQEHRSWLPL]HGE\ XVLQJFOHYHUWULFNV HQJLQHHULQJQRWWKHRU\ 

o ,QSUDFWLFHWKHVHPRGXOHVWHQGWREHKHDYLO\LQWHUFRQQHFWHG LIRQHZDQWV SHUIRUPDQFHIRUJHWDERXWPRGXODULW\DQGQLFHFOHDUFXWLQWHUIDFHV 

o $FUXFLDODVSHFWRIDWUDQVDFWLRQPDQDJHULVWRHQVXUHWKDWRSHUDWLRQVDUHH[HFXWHGLQ WKHSURSHURUGHU

o :KHQDPRGXOHLQGLFDWHV´$VKRXOGEHH[HFXWHGEHIRUH%µWKLVVKRXOGEHWKHFDVHDW DOOOHYHOVLQGHSHQGHQWO\RIWKHRSWLPL]DWLRQVSHUIRUPHGDWHDFKOHYHO7KHUHDUHWZR ZD\VWRJXDUDQWHHVXFKSURSHUW\

),)2TXHXHVEHWZHHQHDFKPRGXOHIRUFHVHTXHQWLDOSURFHVVLQJEXWKDYHSUREOHPV ZLWKWKUHDGVDQGPXOWLSURFHVVLQJ

+DQGVKDNLQJ,I$PXVWKDSSHQEHIRUH%%LVQRWSDVVHGWRDORZHUPRGXOHXQWLO

WKHH[HFXWLRQRI$KDVQRWEHHQFRQILUPHGE\WKHORZHUPRGXOH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ ) ([DPSOH$SSOLFDWLRQ $70

([DPSOH$XWRPDWHG7HOOHU0DFKLQHV $70

o 7DEOHV

$FFRXQW%DODQFH $FFWEDODQFH WKHDFFRXQWVDQGWKHPRQH\LQWKHP

+RW&DUG/LVW $FFW FDUGWKDWKDYHEHHQFDQFHOHGVWROHQVXVSHQGHG

$FFRXQW9HORFLW\ $FFW6XP:LWKGUDZDOV VWRUHVWKHODWHVWWUDQVDFWLRQVDQGWKH DFFXPXODWHGDPRXQW

3RVWLQJ/RJ $FFW$70LG$PRXQW DUHFRUGRIHDFKRSHUDWLRQ

o 7\SLFDORSHUDWLRQ PRQH\ZLWKGUDZDO 

*HWLQSXW $FFW$70W\SH3,17[QLG$PRXQW 

:ULWHUHTXHVWWR3RVWLQJ/RJ

&KHFN3,1

&KHFN$FFWZLWK+RW&DUG/LVWWDEOH

&KHFN$FFWZLWK$FFRXQW9HORFLW\WDEOH

8SGDWH$FFRXQW9HORFLW\WDEOH

8SGDWHEDODQFHLQ$FFRXQW%DODQFHWDEOH

:ULWHZLWKGUDZDOUHFRUGWR3RVWLQJ/RJ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢ &RPPLWWUDQVDFWLRQDQGGLVSHQVHPRQH\

([DPSOH$SSOLFDWLRQ $70

o 6L]HZLWKVHYHUDOKXQGUHG$70VDQGDERXWRQHPLOOLRQFXVWRPHUVWKHGDWDEDVHWDNHV 0%

o /RDGWKHV\VWHPLVFRQILJXUHGWRGHDOZLWKWKHSHDNORDGDERXWRQHWUDQVDFWLRQSHU PLQXWHSHU$708QGHUQRUPDOFLUFXPVWDQFHVRQHPLUURUHGGLVN WZRGLVNVGRLQJWKH VDPHRSHUDWLRQV FDQKDQGOHWUDQVDFWLRQVSHUVHFRQG WSV $VVXPLQJ,2 RSHUDWLRQVSHUWUDQVDFWLRQRQHPLUURUHGGLVNFDQWKHQKDQGOHDERXW$70V

o 7KH3RVWLQJ/RJFDQEHXSGDWHGRIIOLQH DWQLJKW 

o %HIRUHWKHVHV\VWHPVZHUHEDVHGRQVQDSVKRWUHSOLFDWLRQ7RGD\PDQ\RIWKHVH

V\VWHPVDFFHVVRQOLQHGDWDEDVHV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ ¢ ([DPSOH$SSOLFDWLRQ 6WRFN([FKDQJH

([DPSOH6WRFN([FKDQJH

o 7DEOHV

8VHUVOLVWRIWUDGHUVDQGPDUNHWZDWFKHUV

6WRFNVOLVWRIWUDGHGVWRFNV

%X\2UGHUV6HOO2UGHUVDOOWKHRUGHUVHQWHUHGGXULQJWKHGD\

7UDGHVDOOWUDGHVH[HFXWHGGXULQJWKHGD\

3ULFHEX\DQGVHOOWRWDOYROXPHDQGQXPEHUVRIRUGHUVIRUHDFKVWRFNDQGSULFH

/RJDOOXVHUV·UHTXHVWVDQGV\VWHPUHSOLHV

1RWLILFDWLRQ0VVJVDOOPHVVDJHVVHQWWRWKHXVHUV XVXDOO\FRQILUPDWLRQVRIDQ RSHUDWLRQ 

o 7\SLFDORSHUDWLRQ ([HFXWH7UDGH 

5HDGLQIRUPDWLRQDERXWWKHVWRFNIURPWKH6WRFNVWDEOH

*HWWLPHVWDPS

5HDGVFKHGXOHGWUDGLQJSHULRGVIRUWKHVWRFN

&KHFNYDOLGLW\RIRSHUDWLRQ WLPHYDOXHSULFHV 

,IYDOLGILQGDPDWFKLQJWUDGHRSHUDWLRQXSGDWH7UDGHV1RWLILFDWLRQ0VVJV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ 2UGHUV3ULFHV6WRFNV

([DPSOH$SSOLFDWLRQ 6WRFN([FKDQJH

:ULWHWKHV\VWHP·VUHVSRQVHWRWKHORJ

&RPPLWWKHWUDQVDFWLRQ

%URDGFDVWWKHQHZERRNVLWXDWLRQ

o 6L]HVWRFNH[FKDQJHVFRQQHFWHGUHDOWLPHGLVWULEXWHGWUDGLQJWRWDOGDWDEDVHVL]H *%

o /RDG3HDNGDLO\ORDGLVRUGHUV7KHSHDNSHUVHFRQGORDGLQYROYHVGLVN

,2VDQGH[HFXWLQJPLOOLRQLQVWUXFWLRQVSHUVHFRQG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢

6RPHEDVLFDGYDQFHGWUDQVDFWLRQPRGHOV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢

'LVWULEXWHG7UDQVDFWLRQV

o 7KHWUDQVDFWLRQPRGHOGHVFULEHGVRIDULVNQRZQDV´IODWPRGHOµLHWUDQVDFWLRQV KDYHRQO\WZROHYHOVWKHSDUHQWWUDQVDFWLRQDQGWKHFKLOGUHQWUDQVDFWLRQ

o 'LVWULEXWHGWUDQVDFWLRQVDUHGLIILFXOWWRPRGHOZLWKIODWWUDQVDFWLRQV IRULQVWDQFHD FKDLQRI753&V KHQFHPRUHFRPSOH[PRGHOVDUHQHHGHG

o 7KHPRVWFRPPRQPRGHOIRUGLVWULEXWHGWUDQVDFWLRQVLVWKHQHVWHGPRGHOLQZKLFK RSHUDWLRQVRIDWUDQVDFWLRQFDQEHWUDQVDFWLRQVWKHPVHOYHV

o 2QHRIWKHPRVWLPSRUWDQWDVSHFWVRIGLVWULEXWHGWUDQVDFWLRQVLVWKHSUREOHPRI DWRPLFFRPPLWPHQW1HVWHGWUDQVDFWLRQVKHOSZLWKWKLVSUREOHPE\LQGLFDWLQJZKHQ

WUDQVDFWLRQVDWGLIIHUHQWV\VWHPVQHHGWREHFRPPLWWHG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +%'& 3URVDQG&RQVRI$WRPLFLW\

7UDQVDFWLRQ FRQVLVWHQW FRQVLVWHQW GDWDEDVH GDWDEDVH

7[Q FRQVLVWHQW LQFRQVLVWHQW GDWDEDVH GDWDEDVH

$ERUW

5HFRYHU\

If a program finds there is some error, it suffices to abort the transaction. The recovery mechanism ensures the effects of the transaction will be

eliminated. This is both good and bad.

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +% ¢

3URVDQG&RQVRI$WRPLFLW\

o ,I\RXDUHDWUDQVDFWLRQSURJUDPPHUHYHU\WLPHWKHUHLVVRPHWKLQJWKDWJRHVZURQJ WKHUHLVQRWHQRXJKIXQGVIRULQVWDQFH LWLVHQRXJKWRH[HFXWH52//%$&.:25. WRJREDFNWRWKHEHJLQQLQJRIWKHWUDQVDFWLRQ

Txn FRQVLVWHQW GDWDEDVH ROLLBACK WORK

Recovery

o %XWLVWUDQVDFWLRQVDUHORQJRUFRPSOH[DERUWLQJWKHHQWLUHWUDQVDFWLRQPD\EHD ZDVWHRIHIIRUW,QPDQ\FDVHVRQHGRHVQRWZDQWWRJRDOOWKHZD\WRWKHEHJLQQLQJ

EXWWRVRPHLQWHUPHGLDWHSRLQWZKHUHRQHLVVXUHWKLQJVZHUHFRUUHFWDQGWKHQWDNH

¨ ©  ¥  ! "'#%&(&()(*¦¡ +%% ¢¡¤£¦¥¦§ DJDLQIURPWKHUH 6DYHSRLQWV

o 7RDYRLGWKLVSUREOHPVDYHSRLQWVDUHXVHG

o $VDYHSRLQWUHFRUGVWKHFXUUHQWVWDWHRIWKHH[HFXWLRQRIDWUDQVDFWLRQ

o :KHQLQYRNLQJ52//%$&.:25.RQHLQGLFDWHVWRZKLFKSRLQWRQHZDQWVWRUROOEDFN WRWKHEHJLQQLQJRUWRDVDYHSRLQW 

BEGIN (1) OP 1 OP 2 SAVEP (2) OP 3 OP 4 ROLLB(2) OP 5 SAVEP (3) OP 6 OP 9 OP 7 OP 10 OP 8 OP 11

ROLLB(3) COMMIT

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( +%

7ULJJHUHG&RPPLWV

o +RZFDQVDYHSRLQWVEHLPSOHPHQWHG"

o &RQVLGHUHDFKVHWRIRSHUDWLRQVEHWZHHQWZRVDYHSRLQWVDVDQDWRPLFXQLW

o $52//%$&. [ DERUWVDOODWRPLFXQLWVDOOWKHZD\EDFNWRVDYHSRLQW[

o $&200,7DWWKHHQGWULJJHUVDFKDLQRIFRPPLWVIRUHDFKDWRPLFXQLW

BEGIN (1) OP 1 OP 2 SAVEP (2) OP 3 OP 4 ABORT(2) OP 5 SAVEP (3) OP 6 OP 9 OP 7 OP 10 OP 8 OP 11

ABORT(3) COMMIT

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +%') 3HUVLVWHQW6DYHSRLQWV"

o 6DYHSRLQWVDUHDJUHDWLGHD

LIVRPHWKLQJJRHVZURQJZHFDQUROOEDFNWRGLIIHUHQWSDUWVRIWKHH[HFXWLRQDQG UHVXPHIURPWKHUH

UROOEDFNLVSHUIRUPHGE\WKHV\VWHPXVLQJWKHVWDQGDUGUHFRYHU\PHFKDQLVP

o &DQWKLVJUHDWLGHDEHJHQHUDOL]HG"

o ,IVDYHSRLQWVDUHPDGHSHUVLVWHQWZHPD\EHDEOHWRUHVXPHWKHH[HFXWLRQRID WUDQVDFWLRQHYHQDIWHUFUDVKIDLOXUHV

o ,QSULQFLSOH\HVEXWLQSUDFWLFH

7KHGDWDEDVHFDQUHFRYHUWRDVDYHSRLQWEXWWKHDSSOLFDWLRQSURJUDPPD\QRWEH DEOHWRGRWKHVDPH User program

crash failure restart Database

transaction restart

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( +%

&KDLQHG7UDQVDFWLRQV

o 1RWHWKDWWKHDWRPLFXQLWVXVHGLQVDYHSRLQWVDUHDOPRVWOLNHDWUDQVDFWLRQ

o 7KHLPSRUWDQWGLIIHUHQFHLVWKDWWKHWUDQVDFWLRQFRQWH[WLVNHSW ORFNVDUHQRW UHOHDVHGXQWLOFRPPLWQRWQHHGHGRQHVFDQEHUHOHDVHG 

o &KDLQHGWUDQVDFWLRQVDOORZWRFRPPLWRQHWUDQVDFWLRQDQGSDVVLWVFRQWH[WWRWKHQH[W

o ,IDIDLOXUHRFFXUVFRPPLWWHGWUDQVDFWLRQVDUHVDIHRQO\WKHODVWDFWLYHWUDQVDFWLRQ ZLOOEHDERUWHG

o +RZHYHUWKHUHLVQRSRVVLELOLW\RIUROOEDFNWRDSUHYLRXVWUDQVDFWLRQV QRZWKH\DUH UHDOO\FRPPLWWHG 

BEGIN (1) OP 1 OP 2 OP 3 OP 5 OP 4 OP 6 CHAIN CHAIN OP 7

COMMIT

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +% ¢ 1RQ)ODW7UDQVDFWLRQ0RGHOV

o 6DYHSRLQWVDQGFKDLQHGWUDQVDFWLRQVSRLQWWKHQHHGWRVWUXFWXUHVHTXHQFHVRI LQWHUDFWLRQVZLWKWKHGDWDEDVH

o 7KHWUDQVDFWLRQVZHKDYHEHHQGLVFXVVHGVRIDUDUHNQRZQDVIODWWUDQVDFWLRQV

o $FKDLQHGWUDQVDFWLRQFDQEHVHHQDVDILUVWVWHSWRZDUGVDQRQIODWWUDQVDFWLRQPRGHO

parent

children

o :KHQWKHVHLGHDVDUHJHQHUDOL]HGRQHDUULYHVDWWKHQHVWHGWUDQVDFWLRQPRGHO

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +%

1HVWHG7UDQVDFWLRQV

o $QHVWHGWUDQVDFWLRQLVDWUHHRIWUDQVDFWLRQV

o 7UDQVDFWLRQVDWWKHOHDYHVDUHIODWWUDQVDFWLRQV

o 7UDQVDFWLRQVFDQHLWKHUFRPPLWRUUROOEDFN7KHFRPPLWLVFRQGLWLRQDOWRWKHSDUHQW WUDQVDFWLRQ·VFRPPLW KHQFHWUDQVDFWLRQVFRPPLWRQO\LIWKHURRWFRPPLWV 

o 5ROOEDFNRIDWUDQVDFWLRQFDXVHVDOORILWVFKLOGUHQWRDOVRUROOEDFN

root

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +% ¢ 1HVWHG7UDQVDFWLRQ6WUXFWXUH

BEGIN COMMIT

BOT C BOT C

B C B R B R B C

B C

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +%

1HVWHG7UDQVDFWLRQ5XOHV

o 1HVWHG7UDQVDFWLRQVDUHOLNHDFRPELQDWLRQRIVDYHSRLQWVDQGFKDLQHGWUDQVDFWLRQV

o 7KH\IROORZWKHVHWKUHHUXOHV QRGH W[Q 

&RPPLW5XOH:KHQDQRGHZDQWVWRFRPPLWLWSDVVHVLWVFRQWH[WWRWKHSDUHQW QRGH OLNHLQFKDLQHGW[QV LWZLOODFWXDOO\FRPPLWZKHQWKHURRWQRGHFRPPLWV OLNHLQVDYHSRLQWV 

5ROOEDFN5XOH,IDQRGHGRHVDUROOEDFNDOORILWVFKLOGUHQPXVWDOVRUROOEDFN

9LVLELOLW\5XOH:KHQDQRGH´FRPPLWVµDOORILWVFKDQJHVEHFRPHYLVLEOHWRWKH SDUHQW EHFDXVHWKHFKLOGSDVVHVLWVFRQWH[WWRWKHSDUHQW &RQFXUUHQWVLEOLQJV DUHLVRODWHGIURPHDFKRWKHU WKH\VHHHDFKRWKHUDVGLIIHUHQWWUDQVDFWLRQV 7KH SDUHQWFDQPDNHFHUWDLQREMHFWVDFFHVVLEOHWRWKHFKLOGUHQWKHUHE\DOORZLQJWKH FRQWH[WRIDFKLOGWRSDVVWRDQRWKHUFKLOG

o $OORWKHUQRWLRQV VHULDOL]DELOLW\UHFRYHUDELOLW\« VWLOODSSO\DFURVVGLIIHUHQW QHVWHGWUDQVDFWLRQV

o )RUGLVWULEXWHGWUDQVDFWLRQVWKHLPSRUWDQWDVSHFWLVKRZWRFRPPLWDOOWUDQVDFWLRQV

QRWVRPXFKWKHLVRODWLRQDVSHFWV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ &

$WRPLFFRPPLWPHQWLQSUDFWLFH 3&3&

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ ¢

$WRPLF&RPPLWPHQW

The Consensus Problem 3 Phase Commit

2 Phase Commit

Applications

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ % 7KH&RQVHQVXV DJUHHPHQW 3UREOHP

o 'LVWULEXWHGFRQVHQVXVLVWKHSUREOHPRI 7KHLPSRVVLELOLW\UHVXOWLPSOLHVWKDWWKHUHLVDOZD\V UHDFKLQJDQDJUHHPHQWDPRQJDOOZRUNLQJ DFKDQFHWRUHPDLQXQFHUWDLQ XQDEOHWRPDNHD SURFHVVHVRQWKHYDOXHRIDYDULDEOH GHFLVLRQ KHQFH

o &RQVHQVXVLVQRWDGLIILFXOWSUREOHPLIWKH o ,IIDLOXUHVPD\RFFXUWKHQDOOHQWLUHO\ V\VWHPLVUHOLDEOH QRVLWHIDLOXUHVQR DV\QFKURQRXVFRPPLWSURWRFROVPD\EORFN

FRPPXQLFDWLRQIDLOXUHV o 1RFRPPLWSURWRFROFDQJXDUDQWHHLQGHSHQGHQW o $V\QFKURQRXV QRWLPLQJDVVXPSWLRQVFDQEH UHFRYHU\ LIDVLWHIDLOVZKHQEHLQJXQFHUWDLQ PDGHDERXWWKHVSHHGRISURFHVVHVRUWKH XSRQUHFRYHU\LWZLOOKDYHWRILQGRXWIURP QHWZRUNGHOD\ LWLVQRWSRVVLEOHWRGLVWLQJXLVK RWKHUVZKDWWKHGHFLVLRQZDV 

EHWZHHQDIDLOXUHDQGDVORZV\VWHP o 7KLVLVDYHU\VWURQJUHVXOWZLWKLPSRUWDQW LPSOLFDWLRQVLQDQ\GLVWULEXWHGV\VWHP

In an asynchronous environment where failures can occur

reaching consensus may be impossible

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡

*HQHUDOVSUREOHP

o 7RVXFFHHGWKHJHQHUDOVPXVWDWWDFNDWWKH o 7KHLPSRVVLELOLW\LQWKHJHQHUDOVSUREOHP VDPHWLPH DULVHVIURPWKHQHHGWRKDYHFRPSOHWH

o 7KHJHQHUDOVFDQRQO\FRPPXQLFDWHWKURXJK NQRZOHGJH,QHHGWRNQRZP\VWDWHWKH PHVVDJHV RWKHU·VVWDWHWKDWWKHRWKHUNQRZVP\VWDWH WKDWWKHRWKHUNQRZVWKDW,NQRZKHUVWDWHWKDW o 7KHV\VWHPLVDV\QFKURQRXVPHVVDJHVFDQEH WKHRWKHUNQRZVWKDW,NQRZWKDWVKHNQRZVP\ ORVWRUGHOD\HGLQGHILQLWHO\ VWDWH«

o ,IWKHV\VWHPLVHQWLUHO\DV\QFKURQRXVWKLV SUREOHPFDQQRWEHVROYHGE\VLPSO\H[FKDQJLQJ PHVVDJHV

o 7KHUHDUHPDQ\IRUPVRIWKLVSUREOHPDQG 8QGHUWKHVHFLUFXPVWDQFHV DWRPLFFRPPLWPHQWLVRQHRIWKHP

WKHJHQHUDOVZLOOQHYHU DOOVLWHVPXVWGHFLGHRQZKHWKHUWR

EHDEOHWRDJUHHRQD FRPPLWRUDERUWDWUDQVDFWLRQDQGDOO PXVWPDNHWKHVDPHGHFLVLRQ VLPXOWDQHRXVDWWDFN

WKDWLVWKH\FDQQHYHUUHDFK

FRQVHQVXV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ ) $WRPLF&RPPLWPHQW

3URSHUWLHVWRHQIRUFH

o $& $OOSURFHVVRUVWKDWUHDFKDGHFLVLRQUHDFKWKHVDPHRQH DJUHHPHQW FRQVHQVXV 

o $& $SURFHVVRUFDQQRWUHYHUVHLWVGHFLVLRQ

o $& &RPPLWFDQRQO\EHGHFLGHGLIDOOSURFHVVRUVYRWH<(6 QRLPSRVHG GHFLVLRQV 

o $& ,IWKHUHDUHQRIDLOXUHVDQGDOOSURFHVVRUVYRWHG<(6WKHGHFLVLRQZLOOEHWR FRPPLW QRQWULYLDOLW\ 

o $& &RQVLGHUDQH[HFXWLRQZLWKQRUPDOIDLOXUHV,IDOOIDLOXUHVDUHUHSDLUHGDQGQR PRUHIDLOXUHVRFFXUIRUVXIILFLHQWO\ORQJWKHQDOOSURFHVVRUVZLOOHYHQWXDOO\UHDFKD

GHFLVLRQ OLYHQHVV 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

6LPSOH3&3URWRFRODQGLWVFRUUHFWQHVV

35272&2/ &255(&71(66

o &RRUGLQDWRUVHQG927(5(4WRDOO 7KHSURWRFROPHHWVWKH$&FRQGLWLRQV ,9 

SDUWLFLSDQWV o $&, HYHU\SURFHVVRUGHFLGHVZKDWWKH o 8SRQUHFHLYLQJD927(5(4DSDUWLFLSDQW FRRUGLQDWRUGHFLGHV LIRQHGHFLGHVWRDERUW VHQGVDPHVVDJHZLWK<(6RU12 LIWKHYRWH WKHFRRUGLQDWRUZLOOGHFLGHWRDERUW 

LV12WKHSDUWLFLSDQWDERUWVWKHWUDQVDFWLRQ o $& DQ\SURFHVVRUDUULYLQJDWDGHFLVLRQ DQGVWRSV  ´VWRSVµ o &RRUGLQDWRUFROOHFWVDOOYRWHV o $& WKHFRRUGLQDWRUZLOOGHFLGHWRFRPPLW $OO<(6 &RPPLWDQGVHQG&200,7WR LIDOOGHFLGHWRFRPPLW DOOYRWH<(6 

DOORWKHUV o $& LIWKHUHDUHQRIDLOXUHVDQGHYHU\ERG\ 6RPH12 $ERUWDQGVHQG$%257WR YRWHV<(6WKHGHFLVLRQZLOOEHWRFRPPLW

DOOZKLFKYRWHG<(6 o $& WKHSURWRFROQHHGVWREHH[WHQGHGLQ o $SDUWLFLSDQWUHFHLYLQJ&200,7RU$%257 FDVHRIIDLOXUHV LQFDVHRIWLPHRXWDVLWHPD\ PHVVDJHVIURPWKHFRRUGLQDWRUGHFLGHV QHHGWR´DVNDURXQGµ 

DFFRUGLQJO\DQGVWRSV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ ¢ 7LPHRXW3RVVLELOLWLHV

COORDINATOR send COMMIT COMMIT

send wait all vote YES VOTE-REQ for votes some vote NO

send

ABORT ABORT

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡

7LPHRXW3RVVLELOLWLHV

PARTICIPANT COMMIT wait for received vote YES decision COMMIT

wait for ABORT VOTE-REQ received

vote NO

ABORT

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ ¢ 7LPHRXWDQGWHUPLQDWLRQ

,QWKRVHWKUHHZDLWLQJSHULRGV :KHQLQGRXEWDVN,IDQ\ERG\KDVGHFLGHGWKH\

o ,IWKHFRRUGLQDWRUWLPHVRXWZDLWLQJIRUYRWHV ZLOOWHOOXVZKDWWKHGHFLVLRQZDV LWFDQGHFLGHWRDERUW QRERG\KDVGHFLGHG o 7KHUHLVDOZD\VDWOHDVWRQHSURFHVVRUWKDWKDV DQ\WKLQJ\HWRULIWKH\KDYHLWKDVEHHQWR GHFLGHGRULVDEOHWRGHFLGH WKHFRRUGLQDWRU DERUW KDVQRXQFHUWDLQW\SHULRG 7KXVLIDOOIDLOXUHV

o ,IDSDUWLFLSDQWWLPHVRXWZDLWLQJIRU927( DUHUHSDLUHGDOOSURFHVVRUVZLOOHYHQWXDOO\ 5(4LWFDQGHFLGHWRDERUW QRERG\KDV UHDFKDGHFLVLRQ GHFLGHGDQ\WKLQJ\HWRULIWKH\KDYHLWKDV o ,IWKHFRRUGLQDWRUIDLOVDIWHUUHFHLYLQJDOO<(6 EHHQWRDERUW YRWHVEXWEHIRUHVHQGLQJDQ\&200,7

o ,IDSDUWLFLSDQWWLPHVRXWZDLWLQJIRUD PHVVDJHDOOSDUWLFLSDQWVDUHXQFHUWDLQDQGZLOO GHFLVLRQLWFDQQRWGHFLGHDQ\WKLQJXQLODWHUDOO\ QRWEHDEOHWRGHFLGHDQ\WKLQJXQWLOWKH LWPXVWDVN UXQD&RRSHUDWLYH7HUPLQDWLRQ FRRUGLQDWRUUHFRYHUV7KLVLVWKHEORFNLQJ 3URWRFRO ,IHYHU\ERG\LVLQWKHVDPHVLWXDWLRQ EHKDYLRURI3& FRPSDUHZLWKWKH QRGHFLVLRQFDQEHPDGHDOOSURFHVVRUVZLOO LPSRVVLELOLW\UHVXOWGLVFXVVHGSUHYLRXVO\

EORFN7KLVVWDWHLVFDOOHGXQFHUWDLQW\SHULRG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

5HFRYHU\DQGSHUVLVWHQFH

3URFHVVRUVPXVWNQRZWKHLUVWDWHWREHDEOHWRWHOO o :KHQVHQGLQJ927(5(4WKHFRRUGLQDWRU RWKHUVZKHWKHUWKH\KDYHUHDFKHGDGHFLVLRQ ZULWHVD67$573&ORJUHFRUG WRNQRZWKH 7KLVVWDWHPXVWEHSHUVLVWHQW FRRUGLQDWRU 

o ,IDSDUWLFLSDQWYRWHV<(6LWZULWHVD<(6

o 3HUVLVWHQFHLVDFKLHYHGE\ZULWLQJDORJUHFRUG UHFRUGLQWKHORJ%()25(LWVHQGLWVYRWH,ILW 7KLVUHTXLUHVIOXVKLQJWKHORJEXIIHUWRGLVN YRWHV12WKHQLWZULWHVD12UHFRUG ,2  o ,IWKHFRRUGLQDWRUGHFLGHVWRFRPPLWRUDERUW

o 7KLVLVGRQHIRUHYHU\VWDWHFKDQJHLQWKH LWZULWHVD&200,7RU$%257UHFRUGEHIRUH SURWRFRO VHQGLQJDQ\PHVVDJH o o 7KLVLVGRQHIRUHYHU\GLVWULEXWHGWUDQVDFWLRQ $IWHUUHFHLYLQJWKHFRRUGLQDWRU·VGHFLVLRQD SDUWLFLSDQWZULWHVLWVRZQGHFLVLRQLQWKHORJ

o 7KLVLVH[SHQVLYH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +)(& /LQHDU3&

o /LQHDU3&FRPPLWH[SORLWVDSDUWLFXODUQHWZRUNFRQILJXUDWLRQWRPLQLPL]HWKHQXPEHU RIPHVVDJHV

YES

YES

... YES

COM

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( +) ¢

/LQHDU3&

o 7KHWRWDOQXPEHURIPHVVDJHVLVQLQVWHDGRIQEXWWKHQXPEHURIURXQGVLVQ LQVWHDGRI

YES

YES

NO NO

NO NO

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +)(% 3KDVH&RPPLW3URWRFRO

3&PD\EORFNLIWKHFRRUGLQDWRUIDLOVDIWHUKDYLQJ :HZLOOFRQVLGHUWZRYHUVLRQVRI3&

VHQWD927(5(4WRDOOSURFHVVHVDQGDOO o 2QHFDSDEOHRIWROHUDWLQJRQO\VLWHIDLOXUHV QR SURFHVVHVYRWH<(6,WLVSRVVLEOHWRUHGXFH FRPPXQLFDWLRQIDLOXUHV %ORFNLQJRFFXUVRQO\ WKHZLQGRZRIYXOQHUDELOLW\HYHQIXUWKHUE\ ZKHQWKHUHLVDWRWDOIDLOXUH HYHU\SURFHVVLV XVLQJDVOLJKWO\PRUHFRPSOH[SURWRFRO 3&  GRZQ 7KLVYHUVLRQLVXVHIXOLIDOOSDUWLFLSDQWV ,QSUDFWLFH3&LVQRWXVHG,WLVWRRH[SHQVLYH UHVLGHLQWKHVDPHVLWH

PRUHWKDQ3& DQGWKHSUREDELOLW\RI o 2QHFDSDEOHRIWROHUDWLQJERWKVLWHDQG EORFNLQJLVFRQVLGHUHGWREHVPDOOHQRXJKWR FRPPXQLFDWLRQIDLOXUHV EDVHGRQTXRUXPV  DOORZXVLQJ3&LQVWHDG %XWEORFNLQJLVVWLOOSRVVLEOHLIQRTXRUXPFDQ EHIRUPHG

%XW3&LVDJRRGZD\WRXQGHUVWDQGEHWWHUWKH

VXEWOHWLHVRIDWRPLFFRPPLWPHQW

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +)

%ORFNLQJLQ3&

:K\GRHVDSURFHVVEORFNLQ3&" 7KHUHDVRQZK\XQFHUWDLQSURFHVVFDQQRWPDNHD

o ,IDSURFHVVIDLOVDQGHYHU\ERG\HOVHLV GHFLVLRQLVWKDWEHLQJXQFHUWDLQGRHVQRWPHDQ XQFHUWDLQWKHUHLVQRZD\WRNQRZZKHWKHUWKLV DOORWKHUSURFHVVHVDUHXQFHUWDLQ3URFHVVHV SURFHVVKDVFRPPLWWHGRUDERUWHG 127(WKH PD\KDYHGHFLGHGDQGWKHQIDLOHG7RDYRLGWKLV FRRUGLQDWRUKDVQRXQFHUWDLQW\SHULRG7REORFN VLWXDWLRQ3&HQIRUFHVWKHIROORZLQJUXOH WKHFRRUGLQDWRUPXVWIDLO 

o 1RWHKRZHYHUWKDWWKHIDFWWKDWHYHU\ERG\LV o 1%UXOH1RRSHUDWLRQDOSURFHVVFDQGHFLGHWR XQFHUWDLQLPSOLHVHYHU\ERG\YRWHG<(6 FRPPLWLIWKHUHDUHRSHUDWLRQDOSURFHVVHVWKDW

o :K\WKHQXQFHUWDLQSURFHVVHVFDQQRWUHDFKD DUHXQFHUWDLQ GHFLVLRQDPRQJWKHPVHOYHV"

+RZGRHVWKH1%UXOHSUHYHQWEORFNLQJ"

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +)() $YRLGLQJ%ORFNLQJLQ3&

7KH1%UXOHJXDUDQWHHVWKDWLIDQ\ERG\LVXQFHUWDLQQRERG\FDQKDYHGHFLGHGWRFRPPLW 7KXVZKHQUXQQLQJWKHFRRSHUDWLYHWHUPLQDWLRQSURWRFROLIDSURFHVVILQGVRXWWKDW HYHU\ERG\HOVHLVXQFHUWDLQWKH\FDQDOOVDIHO\GHFLGHWRDERUW

o 7KHFRQVHTXHQFHRIWKH1%UXOHLVWKDWWKHFRRUGLQDWRUFDQQRWPDNHDGHFLVLRQE\ LWVHOIDVLQ3&%HIRUHPDNLQJDGHFLVLRQLWPXVWEHVXUHWKDWHYHU\ERG\LVRXWRI WKHXQFHUWDLQW\DUHD7KHUHIRUHWKHFRRUGLQDWRUPXVWILUVWWHOODOOSURFHVVHVZKDWLV JRLQJWRKDSSHQ UHTXHVWYRWHVSUHSDUHWRFRPPLWFRPPLW 7KLVLPSOLHV\HWDQRWKHU

URXQGRIPHVVDJHV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( +)

3&&RRUGLQDWRU

bcast * wait COMMIT bcast pre-commit for ACKs commit all vote YES all ACKs received bcast wait vote-req for votes some vote NO

bcast ABORT abort

Possible time-out actions

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +) ¢ 3&3DUWLFLSDQW

wait for send wait for pre-commit ACK commit COMMIT vote YES pre-commit commit received received wait for vote-req abort received vote NO ABORT

Possible time-out actions

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( +)

3&DQG.QRZOHGJH XVLQJWKH1%UXOH

3&LVLQWHUHVWLQJLQWKDWWKHSURFHVVHVNQRZZKDW 7KH1%UXOHLVXVHGZKHQWLPHRXWVRFFXU ZLOOKDSSHQEHIRUHLWKDSSHQV UHPHPEHUKRZHYHUWKDWWKHUHDUHQR

o 2QFHWKHFRRUGLQDWRUUHDFKHVWKH´EFDVWSUH FRPPXQLFDWLRQIDLOXUHV  FRPPLWµLWNQRZVWKHGHFLVLRQZLOOEHWR o ,IFRRUGLQDWRUWLPHVRXWZDLWLQJIRUYRWHV FRPPLW $%257

o 2QFHDSDUWLFLSDQWUHFHLYHVWKHSUHFRPPLW o ,ISDUWLFLSDQWWLPHVRXWZDLWLQJIRUYRWHUHT PHVVDJHIURPWKHFRRUGLQDWRULWNQRZVWKDW $%257

WKHGHFLVLRQZLOOEHWRFRPPLW o ,IFRRUGLQDWRUWLPHVRXWZDLWLQJIRU$&.V :K\LVWKHH[WUDURXQGRIPHVVDJHVXVHIXO" LJQRUHWKRVHZKRGLGQRWVHQWWKH$&. DW

o 7KHH[WUDURXQGRIPHVVDJHVLVXVHGWRVSUHDG WKLVVWDJHHYHU\ERG\KDVDJUHHGWRFRPPLW  NQRZOHGJHDFURVVWKHV\VWHP7KH\SURYLGH o ,ISDUWLFLSDQWWLPHVRXWZDLWLQJIRUSUHFRPPLW LQIRUPDWLRQDERXWZKDWLVJRLQJRQDWRWKHU VWLOOLQWKHXQFHUWDLQW\SHULRGDVNDURXQG

SURFHVVHV 1%UXOH  o ,ISDUWLFLSDQWWLPHVRXWZDLWLQJIRUFRPPLW PHVVDJH QRWXQFHUWDLQDQ\PRUHEXWQHHGV

WRDVNDURXQG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( +) ¢ 3HUVLVWHQFHDQGUHFRYHU\LQ3&

6LPLODUO\WR3&DSURFHVVKDVWRUHPHPEHULWV 3URFHVVHVLQ3&FDQQRWLQGHSHQGHQWO\UHFRYHU SUHYLRXVDFWLRQVWREHDEOHWRSDUWLFLSDWHLQ XQOHVVWKH\KDGDOUHDG\UHDFKHGDGHFLVLRQRU DQ\GHFLVLRQ7KLVLVDFFRPSOLVKHGE\UHFRUGLQJ WKH\KDYHQRWSDUWLFLSDWHGDWDOO

HYHU\VWHSLQWKHORJ o ,IWKHFRRUGLQDWRUUHFRYHUVDQGILQGVD´VWDUW o &RRUGLQDWRUZULWHV´VWDUW3&µUHFRUGEHIRUH 3&µUHFRUGLQLWVORJEXWQRGHFLVLRQUHFRUG GRLQJDQ\WKLQJ,WZULWHVDQ´DERUWµRU LWQHHGVWRDVNDURXQGWRILQGRXWZKDWWKH ´FRPPLWµUHFRUGEHIRUHVHQGLQJDQ\DERUWRU GHFLVLRQZDV,ILWGRHVQRWILQGD´VWDUW3&µ FRPPLWPHVVDJH LWZLOOILQGQRUHFRUGVRIWKHWUDQVDFWLRQWKHQ

o 3DUWLFLSDQWZULWHVLWV<(6YRWHWRWKHORJ LWFDQGHFLGHWRDERUW EHIRUHVHQGLQJLWWRWKHFRRUGLQDWRU,ILWYRWHV o ,IDSDUWLFLSDQWKDVD<(6YRWHLQLWVORJEXWQR 12LWZULWHVLWWRWKHORJDIWHUVHQGLQJLWWR GHFLVLRQUHFRUGLWPXVWDVNDURXQG,ILWKDV WKHFRRUGLQDWRU:KHQUHDFKLQJDGHFLVLRQLW QRWYRWHGLWFDQGHFLGHWRDERUW

ZULWHVLWLQWKHORJ DERUWRUFRPPLW 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ +)

7HUPLQDWLRQ3URWRFRO

o (OHFWDQHZFRRUGLQDWRU 75LVVLPLODUWR3&KDYHZHDFWXDOO\VROYHGWKH

o 1HZFRRUGLQDWRUVHQGVD´VWDWHUHTµWRDOO SUREOHP" SURFHVVHVSDUWLFLSDQWVVHQGWKHLUVWDWH o

o 75 ,IVRPH´DERUWHGµUHFHLYHGWKHQDERUW VWDJHWKHFRRUGLQDWRUNQRZVWKDWHYHU\ERG\LV XQFHUWDLQWKRVHZKRKDYHQRWVHQWDQ$&. o 75 ,IVRPH´FRPPLWWHGµUHFHLYHGWKHQ KDYHIDLOHGDQGFDQQRWKDYHPDGHDGHFLVLRQ FRPPLW 7KHUHIRUHDOOUHPDLQLQJFDQVDIHO\GHFLGHWR o 75 ,IDOOXQFHUWDLQWKHQDERUW FRPPLWDIWHUJRLQJRYHUWKHSUHFRPPLWDQG o 75 ,IVRPH´FRPPLWWDEOHµEXWQR FRPPLWSKDVHV ´FRPPLWWHGµUHFHLYHGWKHQVHQG´35( o 7KHSUREOHPLVZKHQWKHQHZFRRUGLQDWRUIDLOV &200,7µWRDOOZDLWIRU$&.VDQGVHQG DIWHUDVNLQJIRUWKHVWDWHEXWEHIRUHVHQGLQJ FRPPLWPHVVDJH DQ\SUHFRPPLWPHVVDJH,QWKLVFDVHZHKDYH

WRVWDUWDOORYHUDJDLQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ & 3DUWLWLRQDQGWRWDOIDLOXUHV

7KLVSURWRFROGRHVQRWWROHUDWHFRPPXQLFDWLRQ 7RWDOIDLOXUHVUHTXLUHVSHFLDOWUHDWPHQWLIDIWHUWKH IDLOXUHV WRWDOIDLOXUHHYHU\SURFHVVLVVWLOOXQFHUWDLQLW

o $VLWHGHFLGHVWRYRWH12EXWLWVPHVVDJHLV LVQHFHVVDU\WRILQGRXWZKLFKSURFHVVZDVWKH ORVW ODVWRQWRIDLO,IWKHODVWRQHWRIDLOLVIRXQG DQGLVVWLOOXQFHUWDLQWKHQDOOFDQGHFLGHWR o $OOYRWH<(6DQGWKHQDSDUWLWLRQRFFXUV DERUW $VVXPHWKHVLGHVRIWKHSDUWLWLRQDUH$DQG% o DQGDOOSURFHVVHVLQ$DUHXQFHUWDLQDQGDOO :K\"%HFDXVHRISDUWLWLRQV(YHU\ERG\YRWHV SURFHVVHVLQ%DUHFRPPLWWDEOH:KHQWKH\UXQ <(6WKHQDOOSURFHVVHVLQ$IDLO3URFHVVHVLQ WKHWHUPLQDWLRQSURWRFROWKRVHLQ$ZLOOGHFLGH %ZLOOGHFLGHWRFRPPLWRQFHWKHFRRUGLQDWRU WRDERUWDQGWKRVHLQ%ZLOOGHFLGHWRFRPPLW WLPHVRXWZDLWLQJIRU$&.V7KHQDOOSURFHVVHV LQ%IDLO3URFHVVHVLQ$UHFRYHU7KH\UXQWKH o 7KLVFDQEHDYRLGHGLVTXRUXPVDUHXVHGWKDW WHUPLQDWLRQSURWRFRODQGWKH\DUHDOOXQFHUWDLQ LVQRGHFLVLRQFDQEHPDGHZLWKRXWKDYLQJD )ROORZLQJWKHWHUPLQDWLRQSURWRFROZLOOOHDG TXRUXPRISURFHVVHVZKRDJUHH WKLV WKHPWRDERUW UHLQWURGXFHVWKHSRVVLELOLW\RIEORFNLQJDOO

SURFHVVHVLQ$ZLOOEORFN 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ ¢

3&LQ3UDFWLFH

o 3&LVDSURWRFROXVHGLQPDQ\DSSOLFDWLRQVIURPGLVWULEXWHGV\VWHPVWR,QWHUQHW HQYLURQPHQWV

o 3&LVQRWRQO\DGDWDEDVHSURWRFROLWLVXVHGLQPDQ\V\VWHPVWKDWDUHQRW QHFHVVDULO\GDWDEDVHVEXWWUDGLWLRQDOO\LWKDVEHHQDVVRFLDWHGZLWKWUDQVDFWLRQDO V\VWHPV

o 3&DSSHDUVLQDYDULHW\RIIRUPVGLVWULEXWHGWUDQVDFWLRQVWUDQVDFWLRQDOUHPRWH SURFHGXUHFDOOV2EMHFW7UDQVDFWLRQ6HUYLFHV7UDQVDFWLRQ,QWHUQHW3URWRFRO«

o ,QDQ\RIWKHVHV\VWHPVLWLVLPSRUWDQWWRUHPHPEHUWKHPDLQFKDUDFWHULVWLFRI3& LIIDLOXUHVRFFXUWKHSURWRFROPD\EORFN,QSUDFWLFHLQPDQ\V\VWHPVEORFNLQJGRHV

QRWKDSSHQEXWWKHRXWFRPHLVQRWGHWHUPLQLVWLFDQGUHTXLUHVPDQXDOLQWHUYHQWLRQ

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#$%'&(&()(*¦¡( ¡ %

3&

&225',1$725 &RPPLW/RJ &200,7 6 ( < OO $

3UHSDUH/RJ 6WDUW :DLW (27/RJ

6 R P H 1 9 2 $%257 R $ERUW/RJ W

W H V  H & X T R $FN

H P 5 H P W LW

R L P

W P 9 R W & RU $E

$FN 9RWH

:DLW 9R WH$ERUW $%257 $ERUW/RJ

3$57,&,3$17

9RWH$ERUW

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

25%

Application Objects Common Facilities

SOFTWARE BUS (ORB)

Common Object Services

...

naming events security transactions

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡ )

2EMHFW7UDQVDFWLRQ6HUYLFH

o 7KH276SURYLGHVWUDQVDFWLRQDOJXDUDQWHHVWRWKHH[HFXWLRQRILQYRFDWLRQVEHWZHHQ GLIIHUHQWFRPSRQHQWVRIDGLVWULEXWHGDSSOLFDWLRQEXLOWRQWRSRIWKH25%

o 7KH276LVIDLUO\VLPLODUWRD730RQLWRUDQGSURYLGHVPXFKRIWKHVDPHIXQFWLRQDOLW\ GLVFXVVHGEHIRUHIRU53&DQG753&EXWLQWKHFRQWH[WRIWKH&25%$VWDQGDUG

o 5HJDUGOHVVRIZKHWKHULWLVD73PRQLWRURUDQ276WKHIXQFWLRQDOLW\QHHGHGWR VXSSRUWWUDQVDFWLRQDOLQWHUDFWLRQVLVWKHVDPH

WUDQVDFWLRQDOSURWRFROV OLNH3&

NQRZLQJZKRLVSDUWLFLSDWLQJ

NQRZLQJWKHLQWHUIDFHVXSSRUWHGE\HDFKSDUWLFLSDQW

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡

2EMHFW7UDQVDFWLRQ6HUYLFH

Assume App A wants to update its database and also that in B

Application Application DB A B DB

ORB

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡ ¢

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB

BEGIN ORB TXN

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "'#%&(&()(*¦¡ ¡

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB

Register ORB DB

OTS now knows Object that there is

behind App A Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#$%'&(&()* ¡( ¡ ¢

2EMHFW7UDQVDFWLRQ6HUYLFH

… but the transaction does not commit TXN(1)

Application Application DB A B DB

ORB

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB Call B txn(1) ORB

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "'#%&(&()(*¦¡ ¡¢(&

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB

ORB Register DB

Object OTS now knows Transaction that there is database

Service behind App B

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#$%'&(&()(*¦¡( ¡¢ ¢

2EMHFW7UDQVDFWLRQ6HUYLFH

… but the transaction does not commit TXN(1)

Application Application DB A B DB

ORB

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡¢(%

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB

ORB COMMIT

Object Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡¢

2EMHFW7UDQVDFWLRQ6HUYLFH

Application Application DB A B DB

ORB

Object 2PC 2PC Transaction

Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "'#%&(&()(*¦¡ ¡¢()

2766HTXHQFHRI0HVVDJHV

DB A APP A begin OTS APP B DB B register TXN invoke register TXN commit prepare prepare vote yes vote yes

commit commit

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡¢

7UDQVDFWLRQ3URSDJDWLRQ 5HVRXUFH5HJLVWUDWLRQ

o :KHQDFDOOLVPDGHWRDQRWKHUVHUYHU o 5HJLVWUDWLRQLVQHFHVVDU\LQRUGHUWRWHOOWKH VRPHERG\KDVWRNQRZWKDWWKLVFDOOEHORQJVWR 276ZKRZLOOSDUWLFLSDWHLQWKH3&SURWRFRO DJLYHQWUDQVDFWLRQ7KHUHDUHWZRZD\VRI DQGZKDWW\SHRILQWHUIDFHLVVXSSRUWHG GRLQJWKLV 5HJLVWUDWLRQFDQEHPDQXDORUDXWRPDWLF

o ([SOLFLW PDQXDO WKHLQYRFDWLRQLWVHOI o 0DQXDOUHJLVWUDWLRQLPSOLHVWKHWKHXVHU FRQWDLQVWKHWUDQVDFWLRQLGHQWLILHU7KHQZKHQ SURYLGHVDQLPSOHPHQWDWLRQRIWKHUHVRXUFH WKHDSSOLFDWLRQUHJLVWHUVWKHUHVRXUFHPDQDJHU 7KLVLPSOHPHQWDWLRQDFWVDVDQLQWHUPHGLDU\ LWXVHVWKLVWUDQVDFWLRQLGHQWLILHUWRVD\WR EHWZHHQWKH276DQGWKHDFWXDOUHVRXUFH ZKLFKWUDQVDFWLRQLWLV´VXEVFULELQJµ PDQDJHU XVHIXOIRUOHJDF\DSSOLFDWLRQVWKDW

o ,PSOLFLW DXWRPDWLF WKHFDOOLVPDGHWKURXJK QHHGWREHZUDSSHG WKH276ZKLFKZLOOIRUZDUGWKHWUDQVDFWLRQ o $XWRPDWLFUHJLVWUDWLRQLVXVHGZKHQWKH LGHQWLILHUDORQJZLWKWKHLQYRFDWLRQ7KLV UHVRXUFHPDQDJHUXQGHUVWDQGVWUDQVDFWLRQV UHTXLUHVWROLQNZLWKWKH276OLEUDU\DQGWR LHLWLVDGDWDEDVH LQZKLFKFDVHLWZLOO PDNHDOOPHWKRGVLQYROYHGWUDQVDFWLRQDO VXSSRUWWKH;$LQWHUIDFHIRU3&GLUHFWO\$ UHVRXUFHDUHUHJLVWHUHGRQO\RQFHDQGLPSOLFLW SURSDJDWLRQLVXVHGWRFKHFNZKLFKWUDQVDFWLRQV

JRWKHUH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ ¢

7UDQVDFWLRQ3URFHVVLQJ0RQLWRUV 73PRQLWRUV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢

2XWOLQH

o +LVWRULFDOSHUVSHFWLYH

7KHSUREOHPV\QFKURQL]DWLRQDQGDWRPLFLQWHUDFWLRQ

7KHVROXWLRQWUDQVDFWLRQDO53&DQGDGGLWLRQDOVXSSRUW

o 730RQLWRUV

([DPSOHDQG)XQFWLRQDOLW\

$UFKLWHFWXUHV

6WUXFWXUH

&RPSRQHQWV

o 730RQLWRUIXQFWLRQDOLW\LQ&25%$

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ ¢ &OLHQWVHUYHUDQGGDWDEDVHV

o 3URFHVVLQJVWRULQJDFFHVVLQJDQG ,19(1725<&21752/ UHWULHYLQJGDWDKDVDOZD\VEHHQRQHRI ,)VXSSOLHVBORZ WKHNH\DVSHFWVRIHQWHUSULVH 7+(1

%27 FRPSXWLQJ0RVWRIWKLVGDWDUHVLGHVLQ

3ODFHBRUGHU UHODWLRQDOGDWDEDVHPDQDJHPHQW

8SGDWHBLQYHQWRU\ V\VWHPVZKLFKKDYHZHOOGHILQHG

(27 LQWHUIDFHVDQGSURYLGHGYHU\FOHDU JXDUDQWHHVWRWKHRSHUDWLRQVSHUIRUPHG RYHUWKHGDWD 6HUYHU SURGXFWV 6HUYHU LQYHQWRU\ o +RZHYHU 1HZBSURGXFW 3ODFHBRUGHU QRWDOOWKHGDWDFDQUHVLGHLQWKH /RRNXSBSURGXFW &DQFHOBRUGHU

'HOHWHBSURGXFW 8SGDWHBLQYHQWRU\ VDPHGDWDEDVH

8SGDWHBSURGXFW &KHFNBLQYHQWRU\ WKHDSSOLFDWLRQLVEXLOWRQWRSRI WKHGDWDEDVH7KHJXDUDQWHHV SURYLGHGE\WKHGDWDEDVHQHHGWR

6 6 ,QYHQWRU\ EHXQGHUVWRRGE\WKHDSSOLFDWLRQ 0 3URGXFWV 0 % % DQGRUGHU

' ' UXQQLQJRQWRS GDWDEDVH

GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢

7KHQLFHWKLQJDERXWGDWDEDVHV

o «LVWKDWWKH\WDNHFDUHRIDOODVSHFWV o 8QIRUWXQDWHO\WKHVHSURSHUWLHVDUH UHODWHGWRGDWDPDQDJHPHQWIURP SURYLGHGRQO\WRRSHUDWLRQVSHUIRUPHG SK\VLFDOVWRUDJHWRFRQFXUUHQF\FRQWURO ZLWKLQWKHGDWDEDVH,QSULQFLSOHWKH\ DQGUHFRYHU\ GRQRWDSSO\ZKHQ

o 8VLQJDGDWDEDVHFDQUHGXFHWKH $QRSHUDWLRQVSDZQVVHYHUDO DPRXQWRIFRGHQHFHVVDU\LQDODUJH GDWDEDVHV

DSSOLFDWLRQE\DERXW WKHRSHUDWLRQVDFFHVVGDWDQRWLQ o )URPDFOLHQWVHUYHUSHUVSHFWLYHWKH WKHGDWDEDVH HJLQWKHVHUYHU

GDWDEDVHVKHOSLQ o 7RKHOSZLWKWKLVSUREOHPWKH FRQFXUUHQF\FRQWUROPDQ\VHUYHUV 'LVWULEXWHG7UDQVDFWLRQSURFHVVLQJ FDQEHFRQQHFWHGLQSDUDOOHOWRWKH 0RGHOZDVFUHDWHGE\;2SHQ D VDPHGDWDEDVHDQGWKHGDWDEDVH VWDQGDUG·VERG\ 7KHKHDUWRIWKLV ZLOOVWLOOKDYHFRUUHFWGDWD PRGHOLVWKH;$LQWHUIDFHIRU3KDVH

UHFRYHU\LIDVHUYHUIDLOVLQWKH &RPPLWZKLFKFDQEHXVHGWRHQVXUH PLGGOHRIDQRSHUDWLRQWKH WKDWDQRSHUDWLRQVSDZQLQJVHYHUDO GDWDEDVHPDNHVVXUHWKLVGRHVQRW GDWDEDVHVHQMR\WKHVDPHDWRPLFLW\ DIIHFWWKHGDWDRURWKHUVHUYHUV SURSHUWLHVDVLILWZHUHH[HFXWHGLQRQH

GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ & 2QHDWDWLPHLQWHUDFWLRQ

o 'DWDEDVHVIROORZDVLQJOHWKUHDG '%06HQIRUFHV 'DWDEDVH&/,(17 H[HFXWLRQPRGHOZKHUHDFOLHQWFDQ WUDQVDFWLRQDO %27 RQO\KDYHRQHRXWVWDQGLQJFDOOWRRQH EUDFNHWV 

DQGRQO\RQHVHUYHUDWDQ\WLPH7KH (27

EDVLFLGHDLVRQHFDOOSHUSURFHVV 6

0

WKUHDG  % GDWDEDVH

' o 'DWDEDVHVSURYLGHQRPHFKDQLVPWR EXQGOHWRJHWKHUVHYHUDOUHTXHVWVLQWRD $GGLWLRQDOOD\HU VLQJOHZRUNXQLW 'DWDEDVH&/,(17 HQIRUFHV WUDQVDFWLRQDO o %27 7KH;$LQWHUIDFHVROYHVWKLVSUREOHP EUDFNHWV  IRUGDWDEDVHVE\SURYLGLQJDQLQWHUIDFH (27 WKDWVXSSRUWVD3KDVH&RPPLW 3KDVH&RPPLW SURWRFRO+RZHYHUZLWKRXWDQ\IXUWKHU FRRUGLQDWRU VXSSRUWWKHFOLHQWEHFRPHVWKHRQH ;$ ;$ UHVSRQVLEOHIRUUXQQLQJWKHSURWRFRO

ZKLFKLVKLJKO\LPSUDFWLFDO '%06 '%06

o $QLQWHUPHGLDWHOD\HULVQHHGHGWRUXQ

WKH3&SURWRFRO GDWDEDVH GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ ¢

3KDVH&RPPLW

%$6,&3& :KDWLVQHHGHGWRUXQ3&"

o &RRUGLQDWRUVHQG35(3$5(WRDOO o &RQWURORI3DUWLFLSDQWV$WUDQVDFWLRQ SDUWLFLSDQWV PD\LQYROYHPDQ\UHVRXUFHPDQDJHUV

o 8SRQUHFHLYLQJD35(3$5(PHVVDJHD VRPHERG\KDVWRNHHSWUDFNRIZKLFK SDUWLFLSDQWVHQGVDPHVVDJHZLWK<(6 RQHVKDYHSDUWLFLSDWHGLQWKHH[HFXWLRQ RU12 LIWKHYRWHLV12WKH o 3UHVHUYLQJ7UDQVDFWLRQDO&RQWH[W SDUWLFLSDQWDERUWVWKHWUDQVDFWLRQDQG 'XULQJDWUDQVDFWLRQDSDUWLFLSDQWPD\ VWRSV  EHLQYRNHGVHYHUDOWLPHVRQEHKDOIRI

o &RRUGLQDWRUFROOHFWVDOOYRWHV WKHVDPHWUDQVDFWLRQ7KHUHVRXUFH PDQDJHUPXVWNHHSWUDFNRIFDOOVDQG $OO<(6 &RPPLWDQGVHQG EHDEOHWRLGHQWLI\ZKLFKRQHVEHORQJ &200,7WRDOORWKHUV WRWKHVDPHWUDQVDFWLRQE\XVLQJD 6RPH12 $ERUWDQGVHQG WUDQVDFWLRQLGHQWLILHULQDOOLQYRFDWLRQV $%257WRDOOZKLFKYRWHG<(6 o 7UDQVDFWLRQDO3URWRFROVVRPHERG\ o $SDUWLFLSDQWUHFHLYLQJ&200,7RU DFWLQJDVWKHFRRUGLQDWRULQWKH3& $%257PHVVDJHVIURPWKHFRRUGLQDWRU SURWRFRO GHFLGHVDFFRUGLQJO\DQGVWRSV o 0DNHVXUHWKHSDUWLFLSDQWVXQGHUVWDQG

WKHSURWRFRO WKLVLVZKDWWKH;$

¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ % ¢¡¤£¦¥¦§ LQWHUIDFHLVIRU ,QWHUDFWLRQVWKURXJK53& (a) o 53&KDVWKHVDPHOLPLWDWLRQVDVD GDWDEDVHLWZDVGHVLJQHGIRURQHDWD

t r

6 e n

0

e v

WLPHLQWHUDFWLRQVEHWZHHQWZRHQG i r

%

l GDWDEDVH e c

' SRLQWV,QSUDFWLFHWKLVLVQRWHQRXJK s

D WKHFDOOLVH[HFXWHGEXWWKH (b) UHVSRQVHGRHVQRWDUULYHRUWKH

t r

6 e FOLHQWIDLOV:KHQWKHFOLHQW n

0

e v

i r

%

l GDWDEDVH

UHFRYHUVLWKDVQRZD\RINQRZLQJ e

c ' s ZKDWKDSSHQHG

E F LWLVQRWSRVVLEOHWRMRLQWZR

6

FDOOVLQWRDVLQJOHXQLW QHLWKHU 0

% GDWDEDVH

WKHFOLHQWQRUWKHVHUYHUFDQGR '

t r

6 e WKLV n

0

e v

i r

%

l GDWDEDVH e

c '

s

r e

6

(c) v

0 r

%

e GDWDEDVH s

'

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡

7UDQVDFWLRQDO53&

o 7KHOLPLWDWLRQVRI53&FDQEHUHVROYHGE\ client PDNLQJ53&FDOOVWUDQVDFWLRQDO,QSUDFWLFH WKLVPHDQVWKDWWKH\DUHFRQWUROOHGE\D TM 3&SURWRFRO

o $VEHIRUHDQLQWHUPHGLDWHHQWLW\LVQHHGHG WRUXQ3& WKHFOLHQWDQGVHUYHUFRXOGGR TP WKLVWKHPVHOYHVEXWLWLVQHLWKHUSUDFWLFDO TM monitor TM QRUJHQHULFHQRXJK o 7KLVLQWHUPHGLDWHHQWLW\LVXVXDOO\FDOOHGD server server WUDQVDFWLRQPDQDJHU 70 DQGDFWVDV LQWHUPHGLDU\LQDOOLQWHUDFWLRQVEHWZHHQ FOLHQWVVHUYHUVDQGUHVRXUFHPDQDJHUV

o :KHQDOOWKHVHUYLFHVQHHGHGWRVXSSRUW 53&WUDQVDFWLRQDO53&DQGDGGLWLRQDO '%06 ;$ ;$ '%06 IHDWXUHVDUHDGGHGWRWKHLQWHUPHGLDWH G G D D W W

OD\HUWKHUHVXOWLVD730RQLWRU D D E E D D V V

H H

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ ) %DVLF753& PDNLQJFDOOV

Client 1 Client stub 2 Transaction Manager (TM) BOT Get tid Generate tid … from TM store context for tid

Service_call Add tid to Associate server to tid … call

4

3 Server stub Server Get tid register with the TM Invoke service Service 5

return procedure

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡

%DVLF753& FRPPLWWLQJFDOOV

Client Client stub 1 Transaction Manager (TM) ... Look up tid Service_call 2 … Run 2PC with all servers EOT Send to TM associated with tid commit(tid) 3 Confirm commit

Server stub Server Participant in 2PC

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡ ¢ 2QHVWHSEH\RQG

o 7KHSUHYLRXVH[DPSOHDVVXPHVWKH VHUYHULVWUDQVDFWLRQDODQGFDQUXQ 3&7KLVFRXOGEHIRULQVWDQFHD client stub RPC VWRUHGSURFHGXUHLQWHUIDFHZLWKLQD support GDWDEDVH+RZHYHUWKLVLVQRWWKH client stub XVXDOPRGHO Transaction o 7\SLFDOO\WKHVHUYHULQYRNHVDUHVRXUFH manager PDQDJHU HJDGDWDEDVH WKDWLVWKH TP-Monitor RQHDFWXDOO\UXQQLQJWKHWUDQVDFWLRQ Additional o 7KLVPDNHVWKHLQWHUDFWLRQPRUH features FRPSOLFDWHGDVLWDGGVPRUH SDUWLFLSDQWVEXWWKHEDVLFFRQFHSWLV WKHVDPH WKHVHUYHUUHJLVWHUVWKHUHVRXUFH server stub server stub PDQDJHU V LWXVHV

WKH70UXQV3&ZLWKWKRVH UHVRXUFHVPDQDJHUVLQVWHDGRIZLWK

WKHVHUYHU VHH276DWWKHHQG GDWDEDVH GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

730RQLWRUV WUDQVDFWLRQDO53&

o $730RQLWRUDOORZVEXLOGLQJDFRPPRQ client LQWHUIDFHWRVHYHUDODSSOLFDWLRQVZKLOH PDLQWDLQLQJRUDGGLQJWUDQVDFWLRQDOSURSHUWLHV ([DPSOHV&,&67X[HGR(QFLQD o services $730RQLWRUH[WHQGVWKHWUDQVDFWLRQDO

r FDSDELOLWLHVRIDGDWDEDVHEH\RQGWKHGDWDEDVH o t

i GRPDLQ,WSURYLGHVWKHPHFKDQLVPVDQGWRROV

n transactional o coordination QHFHVVDU\WREXLOGDSSOLFDWLRQVLQZKLFK M WUDQVDFWLRQDOJXDUDQWHHVDUHSURYLGHG - P o T 730RQLWRUVDUHSHUKDSVWKHEHVWROGHVW DQGPRVWFRPSOH[H[DPSOHRIPLGGOHZDUH 6RPHHYHQWU\WRDFWDVGLVWULEXWHGRSHUDWLQJ V\VWHPVSURYLGLQJILOHV\VWHPV FRPPXQLFDWLRQVVHFXULW\FRQWUROVHWF

o 730RQLWRUVKDYHWUDGLWLRQDOO\EHHQDVVRFLDWHG WRWKHPDLQIUDPHZRUOG7KHLUIXQFWLRQDOLW\ KRZHYHUKDVORQJVLQFHPLJUDWHGWRRWKHU Application 1 Application 2 Application 3 HQYLURQPHQWVDQGKDVEHHQLQFRUSRUDWHGLQWR

PRVWPLGGOHZDUHWRROV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ ¢ 730RQLWRUIXQFWLRQDOLW\

o 730RQLWRUVDSSHDUHGEHFDXVHRSHUDWLQJ o $730RQLWRUDGGUHVVHVWKHSUREOHPVRI V\VWHPVDUHQRWVXLWHGIRUWUDQVDFWLRQDO VKDULQJGDWDIURPKHWHURJHQHRXVGLVWULEXWHG SURFHVVLQJ730RQLWRUVDUHEXLOWDVRSHUDWLQJ VRXUFHVSURYLGLQJFOHDQLQWHUIDFHVDQG V\VWHPVRQWRSRIRSHUDWLQJV\VWHPV HQVXULQJ$&,'SURSHUWLHV

o $VDUHVXOW730RQLWRUIXQFWLRQDOLW\LVQRW o $730RQLWRUH[WUDSRODWHVWKHIXQFWLRQVRID ZHOOGHILQHGDQGYHU\PXFKV\VWHPGHSHQGHQW WUDQVDFWLRQPDQDJHU ORFNLQJVFKHGXOLQJ

o $730RQLWRUWULHVWRFRYHUWKHGHILFLHQFLHVRI ORJJLQJUHFRYHU\ DQGFRQWUROVWKHGLVWULEXWHG H[LVWLQJ´DOOSXUSRVHµV\VWHPV:KDWLWGRHVLV H[HFXWLRQ$VVXFK730RQLWRUIXQFWLRQDOLW\ GHWHUPLQHGE\WKHV\VWHPVLWWULHVWR LVDWWKHFRUHRIWKHLQWHJUDWLRQHIIRUWVRI µLPSURYHµ PDQ\VRIWZDUHSURGXFHUV GDWDEDVHVZRUNIORZ V\VWHPV&25%$SURYLGHUV«  o $730RQLWRULVEDVLFDOO\DQLQWHJUDWLRQWRRO o ,WDOORZVV\VWHPGHVLJQHUVWRWLHWRJHWKHU $730RQLWRUDOVRFRQWUROVDQGPDQDJHV KHWHURJHQHRXVV\VWHPFRPSRQHQWVXVLQJD GLVWULEXWHGFRPSXWDWLRQV,WSHUIRUPVORDG QXPEHURIXWLOLWLHVWKDWFDQEHPL[HGDQG EDODQFLQJPRQLWRULQJRIFRPSRQHQWVVWDUWLQJ PDWFKHGGHSHQGLQJRQWKHSDUWLFXODU DQGILQLVKLQJFRPSRQHQWVDVQHHGHGURXWLQJRI FKDUDFWHULVWLFVRIHDFKFDVH UHTXHVWVUHFRYHU\RIFRPSRQHQWVORJJLQJRI DOORSHUDWLRQVDVVLJQPHQWRISULRULWLHV o 8VLQJWKHWRROVSURYLGHGE\WKH730RQLWRU VFKHGXOLQJHWF,QPDQ\FDVHVLWKDVLWVRZQ WKHLQWHJUDWLRQHIIRUWEHFRPHVPRUH WUDQVDFWLRQDOILOHV\VWHPEHFRPLQJDOPRVW VWUDLJKWIRUZDUGDVPRVWRIWKHQHHGHG LQGLVWLQJXLVKDEOHIURPDGLVWULEXWHGRSHUDWLQJ IXQFWLRQDOLW\LVGLUHFWO\VXSSRUWHGE\WKH73 V\VWHP

0RQLWRU

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡

7UDQVDFWLRQDOSURSHUWLHV

o 7KH73PRQLWRUWULHVWRHQFDSVXODWHWKH client client VHUYLFHVSURYLGHGZLWKLQWUDQVDFWLRQDOEUDFNHWV 7KLVLPSOLHV53&DXJPHQWHGZLWK

DWRPLFLW\DVHUYLFHWKDWSURGXFHV services PRGLILFDWLRQVLQVHYHUDOFRPSRQHQWV

r VKRXOGEHH[HFXWHGHQWLUHO\DQGFRUUHFWO\ o t

i LQHDFKFRPSRQHQWRUVKRXOGQRWEH m

n

a transactional r r o

e H[HFXWHGDWDOO LQDQ\RIWKH g s VHUYHU o

u coordination M r FRPSRQHQWV  - p P

T LVRODWLRQLIVHYHUDOFOLHQWVUHTXHVWWKH VDPHVHUYLFHDWWKHVDPHWLPHDQGDFFHVV WKHVDPHGDWDWKHRYHUDOOUHVXOWZLOOEH DVLIWKH\ZHUHDORQHLQWKHV\VWHP

FRQVLVWHQF\DVHUYLFHLVFRUUHFWZKHQ H[HFXWHGLQLWVHQWLUHW\ LWGRHVQRW LQWURGXFHIDOVHRULQFRUUHFWGDWDLQWRWKH FRPSRQHQWGDWDEDVHV Application 1 Application 2 Application 3 GXUDELOLW\WKHV\VWHPNHHSVWUDFNRI ZKDWKDVEHHQGRQHDQGLVFDSDEOHRI UHGRLQJDQGXQGRLQJFKDQJHVLQFDVHRI

IDLOXUHV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( £¢$& 75$1& (QFLQD

# include inModule(“helloWorld”);

void Main () { int i; inFunction(“main”); initTC(); /* initializes transaction manager */

transaction { /* starts a transaction */ printf(“Hello World - transaction %d\n”, getTid()); if (I % 2) abort (“Odd transactions are aborted”); } onCommit printf(“Transaction Comitted”); onAbort printf(“Abort in module: %s\n \t %s\n”, abortModuleNAme(), abortReason());

}

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( £¢ ¢

730RQLWRUJHQHULFDUFKLWHFWXUH

Interfaces to user defined services Programs implementing the services

Yearly balance ? Monthly average revenue ?

TP-Monitor Front end Control (load balancing, environment cc and rec., , distribution, scheduling, priorities, monitoring …)

2

1

1

r

r

r e

e recoverable

e m m m m

v

v

r a a a a

v

r r r r r queue

r r r r r e

e e e e e

s g g g e g s s s s

s

s o o o o u u u u

p r r r r

p

p

p p p p p

p

p a

a a app server 3

wrappers

Branch 1 Branch 2 Finance Dept.

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ £¢'% 7DVNVRID730RQLWRU

&RUHVHUYLFHV $GGLWLRQDOVHUYLFHV

o 7UDQVDFWLRQDO53&,PSOHPHQWV53& o 6HUYHUPRQLWRULQJDQGDGPLQLVWUDWLRQ DQGHQIRUFHVWUDQVDFWLRQDOVHPDQWLFV VWDUWLQJVWRSSLQJDQGPRQLWRULQJ VFKHGXOLQJRSHUDWLRQVDFFRUGLQJO\ VHUYHUVORDGEDODQFLQJ

o 7UDQVDFWLRQPDQDJHUUXQV3&DQG o $XWKHQWLFDWLRQDQGDXWKRUL]DWLRQ WDNHVFDUHRIUHFRYHU\RSHUDWLRQV FKHFNLQJWKDWDXVHUFDQLQYRNHDJLYHQ

o /RJPDQDJHUUHFRUGVDOOFKDQJHVGRQH VHUYLFHIURPDJLYHQWHUPLQDODWD E\WUDQVDFWLRQVVRWKDWDFRQVLVWHQW JLYHQWLPHRQDJLYHQREMHFWDQGZLWK YHUVLRQRIWKHV\VWHPFDQEH DJLYHQVHWRISDUDPHWHUV WKH26GRHV UHFRQVWUXFWHGLQFDVHRIIDLOXUHV QRWGRWKLV o o /RFNPDQDJHUDJHQHULFPHFKDQLVPWR 'DWDVWRUDJHLQWKHIRUPRID UHJXODWHDFFHVVWRVKDUHGGDWDRXWVLGH WUDQVDFWLRQDOILOHV\VWHP WKHUHVRXUFHPDQDJHUV o 7UDQVDFWLRQDOTXHXHVIRUDV\QFKURQRXV LQWHUDFWLRQEHWZHHQFRPSRQHQWV

o %RRWLQJV\VWHPUHFRYHU\DQGRWKHU

DGPLQLVWUDWLYHFKRUHV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( £¢

6WUXFWXUHRI730RQLWRUV ,

o 730RQLWRUVWU\LQPDQ\DVSHFWVWRUHSODFHWKH RSHUDWLQJV\VWHPVRDVWRSURYLGHPRUH HIILFLHQWWUDQVDFWLRQDOSURSHUWLHV'HSHQGLQJ ZKDWW\SHRIRSHUDWLQJV\VWHPWKH\WU\WR UHSODFHWKH\KDYHDGLIIHUHQWVWUXFWXUH

0RQROLWKLFDOOWKHIXQFWLRQDOLW\RIWKH 730RQLWRULVLPSOHPHQWHGZLWKLQRQH VLQJOHSURFHVV7KHGHVLJQLVVLPSOHU WKH SURFHVVFDQFRQWUROHYHU\WKLQJ EXW UHVWULFWLYH ERWWOHQHFNVLQJOHSRLQWRI Terminal handling (multithreaded) IDLOXUHPXVWVXSSRUWDOOSRVVLEOH SURWRFROVLQRQHVLQJOHSODFH  Monitor process /D\HUHGWKHIXQFWLRQDOLW\LVGLYLGHGLQ Application handling (multithreaded) WZROD\HUV2QHIRUWHUPLQDOKDQGOLQJDQG VHYHUDOSURFHVVHVIRULQWHUDFWLRQZLWKWKH UHVRXUFHPDQDJHUV7KHGHVLJQLVVWLOO VLPSOHEXWSURYLGHVEHWWHUSHUIRUPDQFH DQGUHVLOLHQFH 0XOWLSURFHVVRUWKHIXQFWLRQDOLW\LV db db db db db GLYLGHGDPRQJPDQ\LQGHSHQGHQW GLVWULEXWHGSURFHVVHV

Monolithic structure

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( £¢$)

6WUXFWXUHRI730RQLWRUV ,,

r

s o

Term. Term. Term. s

t e

Terminal handling (multithreaded) i c

interf. interf. interf. n o

o

r

p M

App 1 App 1 App 1 App 1 App 1 App 1

db db db db db db Layered structure

Multiprocessor structure

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( £¢

730RQLWRUFRPSRQHQWV JHQHULF

Administration and operations interfaces

persistent queue Monitor services client n o i t scheduling load balancing SURJUDP a c i

t OLEUDU\ n

client e queues server class h t u A s

e binding context c

i FRQWH[W

client v r

e GDWDEDVH s

n o i t a t n

e GDWD internal s

e Application Log Recovery r GLFWLRQDU\ resource P program manager manager managers

persistent queue

external resource GDWDEDVH manager

From “Transaction Processing” Gray&Reuter. Morgan Kaufmann 1993

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( £¢ ¢ ([DPSOH%($7X[HGR

EXOOHWLQ

FOLHQW GOO FOLHQW ERDUG VHUYHU QDPHG UHVRXUFH SURFHVV URXWLQH KDQGOHU QDPHVHUYHU SURFHVV VHUYLFH PDQDJHU VHUYLFH FDOO

IRUZDUGFDOO ORFDWH VHUYHU

VHUYHU ORFDWLRQ TXHXH IRUZDUGFDOO

UHDG LQYRNH

WUDQVDFWLRQ

TXHXH UHVSRQVH

UHVSRQVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( £¢

([DPSOH%($7X[HGR

o 7KHFOLHQWXVHV'// '\QDPLF/LQN

/LEUDULHV URXWLQHVWRLQWHUDFWZLWKWKH FOLHQW 730RQLWRU

o 7KH0RQLWRU3URFHVVRU7X[HGRVHUYHU GOOURXWLQH LPSOHPHQWVDOOV\VWHPVHUYLFHV QDPH VHUYLFHVWUDQVDFWLRQPDQDJHPHQWORDG

EDODQFLQJHWF DQGDFWVDVWKHFRQWURO 0RQLWRUSURFHVV SRLQWIRUDOOLQWHUDFWLRQV

o $SSOLFDWLRQVHUYLFHVDUHNQRZQDV QDPHGVHUYLFHV7KHVHQDPHGVHUYLFHV VHUYHUSURFHVV LQWHUDFWZLWKWKHV\VWHPWKURXJKD ORFDOVHUYHUSURFHVV

1DPHGVHUYLFH o ,QWHUDFWLRQDFURVVFRPSRQHQWVLV WKURXJKPHVVDJHTXHXHVUDWKHUWKDQ GLUHFWFDOOV DOWKRXJKFOLHQWVDQG '%06 VHUYHUVPD\LQWHUDFWV\QFKURQRXVO\

5HVRXUFH GDWDEDVH

PDQDJHU

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( £¢ ¢ 730RQLWRUFRPSRQHQWV (QFLQD

o 7KHFXUUHQWWUHQGLVWRZDUGVD´IDPLO\RI SURGXFWVµLQVWHDGRIDVLQJOHV\VWHP(DFK HOHPHQWFDQEHXVHGE\LWVHOI UHGXFHG IRRWSULQW DQGLQVRPHFDVHVFDQEHXVHG Monitor Communication FRPSOHWHO\LQGHSHQGHQWRIWKH730RQLWRU o scheduling admin 0RQLWRUH[HFXWLRQHQYLURQPHQWSURYLGLQJ peer to peer LQWHJULW\DYDLODELOLW\VHFXULW\IDVWUHVSRQVH server mgmt.. WLPHDQGKLJKWKURXJKSXW,WLQFOXGHVWRROVIRU queues DGPLQLVWUDWLRQDQGLQVWDOODWLRQRIFRPSRQHQWV data mgmt.. DQGWKHGHYHORSPHQWHQYLURQPHQW

o &RPPXQLFDWLRQVHUYLFHVSURWRFROVDQG PHFKDQLVPVIRUSHUVLVWHQWPHVVDJHVDQGSHHU Txn.-RPC Txn. services WRSHHUFRPPXQLFDWLRQ RPC concurrency control o 7UDQVDFWLRQDO53&EDVLFLQWHUDFWLRQ PHFKDQLVP T-RPC logging recovery

o 7UDQVDFWLRQDOVHUYLFHVVXSSRUWLQJFRQFXUUHQF\ FRQWUROUHFRYHU\ORJJLQJDQGWUDQVDFWLRQDO Persistent storage SURJUDPPLQJ%HKDYLRURIWKHV\VWHPFDQEH WDLORUHG DGYDQFHVWUDQVDFWLRQPRGHOV txnal.. file system.. database VHOHFWLYHORJJLQJDGKRFUHFRYHU\«

o 3HUVLVWHQWVWRUDJH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( £¢

([WHUQDOLQWHUIDFHV

:LWKFOLHQWV :LWKDGPLQLVWUDWRUV

o 7KHPDLQLQWHUIDFHLVWKURXJKWKH o 7KH730RQLWRUQHHGVWREHPDLQWDLQHG SUHVHQWDWLRQVHUYLFHV,QROGV\VWHPV DQGDGPLQLVWHUHGOLNHDQ\RWKHU SUHVHQWDWLRQVHUYLFHVLQFOXGHGWHUPLQDO V\VWHP7RGD\WKHUHDUHDZLGHYDULHW\ KDQGOLQJDQGIRUPDWFRQWUROIRU RIWRROVIRUGRLQJVR7KH\LQFOXGH

SUHVHQWDWLRQRQDVFUHHQ7RGD\WKH QRGHPRQLWRULQJ SUHVHQWDWLRQVHUYLFHVDUHPRVWO\ VHUYLFHPRQLWRULQJ LQWHUIDFHVWRRWKHUV\VWHPVWKDWWDNH FDUHRIGDWDSUHVHQWDWLRQ PDLQO\ZHE ORDGPRQLWRULQJ VHUYHUV FRQILJXUDWLRQWRROV

o 7KHPRVWLPSRUWDQWSDUWRIWKH SURJUDPPLQJVXSSRUW

SUHVHQWDWLRQVHUYLFHVVWLOOLQXVHWRGD\ « LVWKH53& 753& VWXEVDQGOLEUDULHV o $QRWKHULPSRUWDQWSDUWRIWKH XVHGRQWKHFOLHQWVLGHIRULQYRNLQJ LQWHUIDFHVWRWKHV\VWHPDUHWKH VHUYLFHVLPSOHPHQWHGZLWKLQWKH73 GHYHORSPHQWHQYLURQPHQWVZKLFKWHQG 0RQLWRU WREHVLPLODULQQDWXUHWRWKDWRI53&

V\VWHPV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡ (& 0RQLWRUVHUYLFHV

o 0RQLWRUVHUYLFHVDUHWKRVHIDFLOLWLHV o /RDGEDODQFLQJWULHVWRRSWLPL]HWKH WKDWSURYLGHWKHEDVLFIXQFWLRQDOLW\RI UHVRXUFHVRIWKHV\VWHPE\SURYLGLQJDQ WKH730RQLWRU7KH\FDQEH DFFXUDWHSLFWXUHRIWKHRQJRLQJDQG LPSOHPHQWHGDVSDUWRIWKH730RQLWRU VFKHGXOHGZRUN

SURFHVVRUDVH[WHUQDOUHVRXUFH o &RQWH[WPDQDJHPHQWDNH\VHUYLFHLQ PDQDJHUV 753&WKDWLVDOVRXVHGLQNHHSLQJ o 6HUYHUFODVVHDFKDSSOLFDWLRQSURJUDP FRQWH[WDFURVVWUDQVDFWLRQERXQGDULHV LPSOHPHQWLQJVHUYLFHVKDVDVHUYHU RUWRVWRUHDQGIRUZDUGGDWDEHWZHHQ FODVVLQWKHPRQLWRU7KHVHUYHUFODVV GLIIHUHQWUHVRXUFHPDQDJHUVDQG VWDUWVDQGVWRSVWKHDSSOLFDWLRQ VHUYHUV

FUHDWHVPHVVDJHTXHXHVPRQLWRUVWKH o &RPPXQLFDWLRQVHUYLFHV TXHXH ORDGHWF,QJHQHUDOLWPDQDJHVRQH PDQDJHPHQWDQGQHWZRUNLQJ DUH DSSOLFDWLRQSURJUDP XVXDOO\LPSOHPHQWHGDVH[WHUQDO o %LQGLQJDFWVDVWKHQDPHDQGGLUHFWRU\ UHVRXUFHPDQDJHUV7KH\WDNHFDUHRI VHUYLFHVDQGRIIHUVVLPLODU WUDQVDFWLRQDOTXHXLQJDQGDQ\RWKHU IXQFWLRQDOLW\DVWKHELQGHULQ53&,W DVSHFWRIPHVVDJHSDVVLQJ PLJKWEHFRXSOHGZLWKWKHORDG EDODQFLQJVHUYLFHIRUEHWWHU

GLVWULEXWLRQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡ ¢

5HVRXUFHPDQDJHUV

,QWHUQDO5HVRXUFH0DQDJHUV ([WHUQDO5HVRXUFH0DQDJHUV

o 7KHVHDUHPRGXOHVWKDWLPSOHPHQWD o 7KHVHDUHWKHV\VWHPVWKH730RQLWRU SDUWLFXODUVHUYLFHLQWKH730RQLWRU KDVWRLQWHJUDWH

7KHUHDUHWZRNLQGV o 7KHW\SLFDOUHVRXUFHPDQDJHULVD o $SSOLFDWLRQSURJUDPVSURJUDPVWKDW GDWDEDVHPDQDJHPHQWV\VWHPZLWKDQ LPSOHPHQWDFROOHFWLRQRIVHUYLFHVWKDW 64/;$LQWHUIDFH,WFDQDOVREHD FDQEHLQYRNHGE\WKHFOLHQWVRIWKH OHJDF\DSSOLFDWLRQLQZKLFKFDVH 730RQLWRU7KH\GHILQHWKH ZUDSSHUVDUHQHHGHGWREULGJHWKH DSSOLFDWLRQEXLOWXSRQWKH730RQLWRU LQWHUIDFHJDS$W\SLFDOH[DPSOHDUH

o ,QWHUQDOVHUYLFHVOLNHORJJLQJORFNLQJ VFUHHQVFUDSLQJPRGXOHVWKDWLQWHUDFW UHFRYHU\RUTXHXLQJ,PSOHPHQWLQJ ZLWKPDLQIUDPHEDVHGDSSOLFDWLRQVE\ WKHVHVHUYLFHVDVUHVRXUFHPDQDJHUV SRVLQJDVGXPEWHUPLQDOV JLYHVPRUHPRGXODULW\WRWKHV\VWHP o 7KHQXPEHUDQGW\SHRIH[WHUQDO DQGHYHQDOORZVWRXVHRWKHUV\VWHPV UHVRXUFHPDQDJHUVNHHSVJURZLQJDQGD IRUWKLVSXUSRVH OLNHTXHXH UHVRXUFHPDQDJHUFDQEHDQRWKHU73 PDQDJHPHQWV\VWHPV PRQLWRU

o 7KH:::LVVORZO\DOVREHFRPLQJD

UHVRXUFHPDQDJHU

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡ (% 7UDQVDFWLRQSURFHVVLQJFRPSRQHQWV

Client

Service Request/Response

TP forward request transaction Monitor response Service

GDWDEDVH Resource Begin Work managers Save Work send / Commit Save Work receive Rollback Checkpoint Log Prepare Records register incoming / Commit outgoing transactions Transaction communication manager Log manager UNDO/ manager Savepoint REDO Prepared Prepare Log Committed Savepoint Commit Records Completed Prepare Checkpoint Commit

From “Transaction Processing” Gray&Reuter. Morgan Kaufmann 1993

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

730RQLWRUVYV26

processing data communication

5

¢¡¤£¦¥¨§ © ¥ ¨  ¥¨§  ¥ +,&' ¥ &.¥*¥ § © ¥ §

¨ §    !"# $  +-   ¥ §.§ ¥# ©¥&§ / £¦¥ § ©¥&§) ©    

&# ¨ # ¡6§ #¥& "¥&7 #¥&§

%& '#$ TP

& § #) # *  $  0¦¥¨ § ¥1.&# &¥&§   "¥&§  ¥

¡(§ Monitor

2#$ &34&.  #"§ ¨$

¢¡8 9¥&§&$ <; = #¥   ¥ §  ,§ &    ¤.#& &¥&§ (§B# "# ¨#&$C0¡<

#/  9¥&:#¥&§ ©& ¥  £¢¥ § ©¥&§> &$  %# &!&1 ¨9¥ ; (§B# "# ¨#&$

£¢ &?¥< &$  +¢ &§ &' $ ¥1A ¥¨ ¥  £¦¥ <  

@ "?¥&#  ¨ ,§ &    &#$, $ ¥# 0>¡<

D-£ ¡(§ & ¥  EF ? § ¥# 0¦¥#G¨< ¨§ / K ¡6

&¨§ ¥ !G  ¥ £> @G<$ ¥#¥  <   

5

£¢ &?¥< &$  2 $ ¥*£¦/ ¥& & #

%& &$¢& & 1G<§ #9¥    HC$  #IJCG  6  . "?#¥   "# ¨

2 $ ¥*¥# # &§9 "/

L

&§  3C§B¥ C¡M N¥ .¨§ / OP § ¥JC#3  &?#¥ 

From “Transaction Processing” Gray&Reuter. Morgan Kaufmann 1993

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡ () $GYDQWDJHVRI730RQLWRUV

o 730RQLWRUVDUHDGHYHORSPHQWDQGUXQWLPHSODWIRUPIRUGLVWULEXWHGDSSOLFDWLRQV

o 7KHVHSDUDWLRQEHWZHHQWKHPRQLWRUDQGWKHWUDQVDFWLRQPDQDJHUZDVDSUDFWLFDO FRQVLGHUDWLRQEXWWXUQHGRXWWREHDVLJQLILFDQWDGYDQWDJHDVPDQ\RIWKHIHDWXUHV SURYLGHGE\WKHPRQLWRUDUHDVYDOXDEOHDVWUDQVDFWLRQV

o 7KHPRYHWRZDUGVPRUHPRGXODUDUFKLWHFWXUHVSUHSDUHG730RQLWRUVIRUFKDQJHVWKDW KDGQRWEHHQIRUHVHHQEXWWXUQHGEHTXLWHDGYDQWDJHRXV

WKHZHEDVWKHPDLQLQWHUIDFHWRDSSOLFDWLRQVWKHSUHVHQWDWLRQVHUYLFHVLQFOXGHG DQLQWHUIDFHVRWKDWUHTXHVWVFRXOGEHFKDQQHOHGWKURXJKDZHEVHUYHU

TXHXLQJDVDIRUPRIPLGGOHZDUHLQLWVHOI 0HVVDJH2ULHQWHG0LGGOHZDUH020  RQFHWKHTXHXLQJVHUYLFHZDVDQLQWHUQDOUHVRXUFHPDQDJHULWZDVQRWWRR GLIILFXOWWRDGDSWWKHLQWHUIDFHVRWKDWWKH730RQLWRUFRXOGWDONZLWKRWKHU TXHXLQJV\VWHPV

'LVWULEXWHGREMHFWV\VWHPV HJ&25%$ UHTXLUHGRQO\DVPDOOV\QWDFWLFOD\HU LQWKHGHYHORSPHQWWRROVDQGWKHSUHVHQWDWLRQVHUYLFHVVRWKDWVHUYLFHVZLOO

DSSHDUDVREMHFWVDQG753&ZRXOGEHFRPHDPHWKRGLQYRFDWLRQWRWKRVHREMHFWV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡

73+HDY\YV73/LJKW WLHUYVWLHU

o $73KHDY\PRQLWRUSURYLGHV o $73/LJKWLVDQH[WHQVLRQWRDGDWDEDVH

DIXOOGHYHORSPHQWHQYLURQPHQW LWLVLPSOHPHQWHGDVWKUHDGVLQVWHDGRI SURJUDPPLQJWRROVVHUYLFHVOLEUDULHV SURFHVVHV

HWF  LWLVEDVHGRQVWRUHGSURFHGXUHV DGGLWLRQDOVHUYLFHV SHUVLVWHQWTXHXHV PHWKRGVVWRUHGLQWKHGDWDEDVHWKDW FRPPXQLFDWLRQWRROVWUDQVDFWLRQDO SHUIRUPDQVSHFLILFVHWRIRSHUDWLRQV DQG VHUYLFHVSULRULW\VFKHGXOLQJEXIIHULQJ  WULJJHUV

VXSSRUWIRUDXWKHQWLFDWLRQ RIXVHUVDQG LWGRHVQRWSURYLGHDGHYHORSPHQW DFFHVVULJKWVWRGLIIHUHQWVHUYLFHV  HQYLURQPHQW

LWVRZQVROXWLRQVIRUFRPPXQLFDWLRQ o /LJKW0RQLWRUVDUHDSSHDULQJDVGDWDEDVHV UHSOLFDWLRQORDGEDODQFLQJVWRUDJH EHFRPHPRUHVRSKLVWLFDWHGDQGSURYLGHPRUH PDQDJHPHQW PRVWRIWKHIXQFWLRQDOLW\ VHUYLFHVVXFKDVLQWHJUDWLQJSDUWRIWKH RIDQRSHUDWLQJV\VWHP  IXQFWLRQDOLW\RID730RQLWRUZLWKLQWKH

o ,WVPDLQSXUSRVHLVWRSURYLGHDQH[HFXWLRQ GDWDEDVH HQYLURQPHQWIRUUHVRXUFHPDQDJHUV o ,QVWHDGRIZULWLQJDFRPSOH[TXHU\WKHTXHU\ DSSOLFDWLRQV DQGGRDOOWKLVZLWKJXDUDQWHHG LVLPSOHPHQWHGDVDVWRUHGSURFHGXUH$FOLHQW UHDVRQDEOHSHUIRUPDQFH HJ!W[QV LQVWHDGRIUXQQLQJWKHTXHU\LQYRNHVWKH SHUVHFRQG  VWRUHGSURFHGXUH

o 7KLVLVWKHWUDGLWLRQDOPRQLWRU&,&6(QFLQD o 6WRUHGSURFHGXUHODQJXDJHV6\EDVH V7UDQVDFW

7X[HGR 64/2UDFOH V3/64/

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡ ¢ 73OLJKWGDWDEDVHVDQGWKHWLHUDSSURDFK

o 'DWDEDVHVDUHWUDGLWLRQDOO\XVHGWRPDQDJH client GDWD o +RZHYHUVLPSO\PDQDJLQJGDWDLVQRWDQHQGLQ LWVHOI2QHPDQDJHVGDWDEHFDXVHLWKDVVRPH FRQFUHWHDSSOLFDWLRQORJLFLQPLQG7KLVLV RIWHQIRUJRWWHQZKHQFRQVLGHULQJGDWDEDVHV database management system VSHFLDOO\EHQFKPDUNLQJ DQGKDVDOORZHG6$3 WRWDNHRYHUDVLJQLILFDQWPDUNHWVKDUHEHIRUH Database DQ\RWKHUYHQGRUVUHDFWHG developing o %XWLIWKHDSSOLFDWLRQORJLFLVZKDWPDWWHUV environment ZK\QRWPRYHWKHDSSOLFDWLRQORJLFLQWRWKH user defined GDWDEDVH"7KHVHLVZKDWPDQ\YHQGRUVDUH application logic DGYRFDWLQJ%\GRLQJWKLVWKH\SURSRVHD WLHUPRGHOZLWKWKHGDWDEDVHSURYLGLQJWKH WRROVQHFHVVDU\WRLPSOHPHQWFRPSOH[ DSSOLFDWLRQORJLF o external 7KHVHWRROVLQFOXGHWULJJHUVUHSOLFDWLRQVWRUHG application SURFHGXUHVTXHXLQJV\VWHPVVWDQGDUGDFFHVV database LQWHUIDFHV 2'%&-'%& ZKLFKDUHDOUHDG\ LQSODFHLQPDQ\GDWDEDVHV

resource manager

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡

73+HDY\WLHUPLGGOHZDUH

o 73KHDY\DUHPLGGOHZDUHSODWIRUPVIRU Clients GHYHORSLQJWLHUDUFKLWHFWXUHV7KH\SURYLGH DOOWKHIXQFWLRQDOLW\QHFHVVDU\IRUVXFKDQ DUFKLWHFWXUHWRZRUN o terminal Transaction $V\VWHPGHVLJQHURQO\QHHGWRSURJUDPWKH VHUYLFHV ZKLFKZLOOUXQZLWKLQWKHVFRSHRIWKH r handling control o

t 730RQLWRUWKHVHUYLFHVDUHOLQNHGWRD i n

o connecting logic QXPEHURI73OLEUDULHVSURYLGLQJWKHQHHGHG m

IXQFWLRQDOLW\ WKHZUDSSHUV LIWKH\DUHQRW P

T Services DOUHDG\SURYLGHG DQGWKHFOLHQWV7KH73 0RQLWRUVWDNHVWKHVHFRPSRQHQWVDQGHPEHGV WKHPZLWKLQWKHRYHUDOOV\VWHPDV LQWHUFRQQHFWHGFRPSRQHQWV

o 7KH730RQLWRUSURYLGHVWKHLQIUDVWUXFWXUHIRU wrappers WKHFRPSRQHQWVWRZRUNDQGWKHWRROV QHFHVVDU\WREXLOGVHUYLFHVZUDSSHUVDQG FOLHQWV,QVRPHFDVHVLWSURYLGHVHYHQLWVRZQ s

m SURJUDPPLQJODQJXDJH HJ7UDQVDWLRQDO&RI e Resource t

s (QFLQD 

y managers s

r e i t

2

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡ ¢ 2EMHFW7UDQVDFWLRQ6HUYLFH

o $Q276SURYLGHVWUDQVDFWLRQDO o DQGWZRZD\VWRUHJLVWHUUHVRXUFHV JXDUDQWHHVWRWKHH[HFXWLRQRI QHFHVVDU\LQRUGHUWRWHOOWKH276 LQYRFDWLRQVEHWZHHQGLIIHUHQW ZKRZLOOSDUWLFLSDWHLQWKH3& FRPSRQHQWVRIDGLVWULEXWHGDSSOLFDWLRQ SURWRFRODQGZKDWW\SHRILQWHUIDFHLV EXLOWRQWRSRIDQ25%,WLVSDUWRI VXSSRUWHG

WKH&25%$VWDQGDUG,WLVLGHQWLFDOWRD o 0DQXDOUHJLVWUDWLRQLPSOLHVWKHWKH EDVLF730RQLWRU XVHUSURYLGHVDQLPSOHPHQWDWLRQRIWKH o 7KHUHDUHWZRZD\VWRWUDFHFDOOV UHVRXUFH7KLVLPSOHPHQWDWLRQDFWVDV

([SOLFLW PDQXDO WKHLQYRFDWLRQ DQLQWHUPHGLDU\EHWZHHQWKH276DQG LWVHOIFRQWDLQVWKHWUDQVDFWLRQ WKHDFWXDOUHVRXUFHPDQDJHU XVHIXOIRU LGHQWLILHU7KHQZKHQWKH OHJDF\DSSOLFDWLRQVWKDWQHHGWREH DSSOLFDWLRQUHJLVWHUVWKHUHVRXUFH ZUDSSHG PDQDJHULWXVHVWKLVWUDQVDFWLRQ o $XWRPDWLFUHJLVWUDWLRQLVXVHGZKHQ LGHQWLILHUWRVD\WRZKLFK WKHUHVRXUFHPDQDJHUXQGHUVWDQGV WUDQVDFWLRQLWLV´VXEVFULELQJµ WUDQVDFWLRQV LHLWLVDGDWDEDVH LQ

,PSOLFLW DXWRPDWLF WKHFDOOLV ZKLFKFDVHLWZLOOVXSSRUWWKH;$ PDGHWKURXJKWKH276ZKLFKZLOO LQWHUIDFHIRU3&GLUHFWO\$UHVRXUFH IRUZDUGWKHWUDQVDFWLRQLGHQWLILHU DUHUHJLVWHUHGRQO\RQFHDQGLPSOLFLW DORQJZLWKWKHLQYRFDWLRQ7KLV SURSDJDWLRQLVXVHGWRFKHFNZKLFK UHTXLUHVWROLQNZLWKWKH276 WUDQVDFWLRQVJRWKHUH

OLEUDU\DQGWRPDNHDOOPHWKRGV

¨ ©  ¥  (£ ! "'#%&(&()(*¦¡ ¡

¢¡¤£¦¥¦§ LQYROYHGWUDQVDFWLRQDO

5XQQLQJDGLVWULEXWHGWUDQVDFWLRQ 

1) Assume App A wants to update A and B 3) App A registers the database for that transaction

App A App B App A App B DB DB DB DB

ORB Register ORB db Txn has part Object Object executed in Transaction Transaction database A Service Service

4) App A runs the txn but does not 2) App A obtains a txn identifier for the operation txn commit at the end

App A App B App A App B DB DB DB DB

Begin ORB ORB txn

Object Object Transaction Transaction

Service Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#$%'&(&()(*¦¡( ¡¢ &$&

5XQQLQJDGLVWULEXWHGWUDQVDFWLRQ 

5) App A now calls App B 7) App B runs the txn but does not Call for commit at the end txn Txn

App A App B App A App B DB DB DB DB

ORB ORB

Object Object Transaction Transaction Service Service

6) App B registers the database for that transaction 2) App A request commit and the OTS runs 2PC

App A App B App A App B DB DB DB DB

ORB Register Commit ORB db txn Txn has part executed in Object B Transaction Transaction

Service 2PC Service 2PC

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡¢ & ¢

7KHIXWXUHRI730RQLWRUV

o 730RQLWRUVDUHWKHEHVWH[DPSOHRIPLGGOHZDUHDQGWKHPRVWVXFFHVVIXO LPSOHPHQWDWLRQERWKLQWHUPVRISHUIRUPDQFHDQGIXQFWLRQDOLW\

o 7RJHWKHUZLWKREMHFWEURNHUV730RQLWRUVIRUPWKHIRXQGDWLRQRIWRGD\·VGLVWULEXWHG GDWDPDQDJHPHQWSURGXFWV(QWHUSULVH$SSOLFDWLRQ,QWHJUDWLRQLVVWLOOODUJHO\EDVHGRQ 730RQLWRUWHFKQRORJ\

o 730RQLWRUVDUHWKHPDLQUHIHUHQFHIRULPSOHPHQWLQJPLGGOHZDUH

LQWHUPVRISHUIRUPDQFH730RQLWRUVDUHRUGHUVRIPDJQLWXGHDKHDGRIRWKHU PLGGOHZDUHV\VWHPV

LQWHUPVRIIXQFWLRQDOLW\730RQLWRUVRIIHUDTXLWHFRPSOHWHZHOOLQWHJUDWHG SODWIRUPWKDWFDQEHH[WHQGHGWRSURYLGHWKHIXQFWLRQDOLW\QHHGHGLQRWKHU PLGGOHZDUHV\VWHPV

o 8QOLNHRWKHUIRUPVRIPLGGOHZDUH730RQLWRUVKDYHSURYHQWREHTXLWHUHVLOLHQWLQ WLPHVRPHSURGXFWOLQHVDUHDOPRVW\HDUVROGDOUHDG\$OWKRXJKWKHWHFKQRORJ\ FKDQJHVWKHDQVZHUWRIXQGDPHQWDOGHVLJQSUREOHPVLVZHOOXQGHUVWRRGLQ73 0RQLWRUV7KHVHH[SHUWLVHZLOOVWLOOKDYHDVLJQLILFDQWLPSDFWRQDQ\HPHUJLQJIRUPRI

PLGGOHZDUH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ &%

:6&RRUGLQDWLRQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢ &

:6&RRUGLQDWLRQ

o :6&RRUGLQDWLRQLVLQWHQGHGDVD JHQHULFLQIUDVWUXFWXUHWRLPSOHPHQW Register for a FRRUGLQDWLRQSURWRFROVEHWZHHQ:HE Start a coordination coordination VHUYLFHV protocol protocol o ,WVPDLQJRDOLVWRVHUYHDVDJHQHULF SODWIRUPIRULPSOHPHQWLQJDGYDQFHG WUDQVDFWLRQPRGHOVEXWLWFDQEHXVHG WRLPSOHPHQWDZLGHYDULHW\RI Activation Registration FRRUGLQDWLRQSURWRFROVEHWZHHQVHUYLFHV service service LQFOXGLQJVRPHIRUPVRI COORDINATOR FRQYHUVDWLRQV Coord. Coord. o :6&RRUGLQDWLRQHQFRPSDVVHVDVHWRI Protocol Protocol ... EHKDYLRUVDQG$3,VWKDWFRQIRUPD A B PRGXOHWKDWZLOOH[WHQG:HEVHUYLFHV ZLWKFRRUGLQDWLRQFDSDELOLWLHV Operations of o ,WPLUURUVWKHEHKDYLRURIWUDQVDFWLRQDO Operations of coordination VHUYLFHVLQFRQYHQWLRQDOPLGGOHZDUH coordination protocol protocol

SODWIRUPV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ &$) %DVLFVRI:6&RRUGLQDWLRQ 

APPLICATION APPLICATION A B t x e t Q

n e o p C y t n

o n i Context (Ca) t o i a t activity identifier A1 n a i n d i coordination type Q supporting protocol Y r d o r

o portReference for the registration service A o o C c e

t r a o e f r C

Activation Registration Registration Activation service service A service B service

Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ &

%DVLFVRI:6&RRUGLQDWLRQ 

APPLICATION MESSAGE (e.g., SOAP message) APPLICATION APPLICATION A HTTP POST B SOAP Envelope Header: Context Ca

Body

Activation Registration Registration Activation service service A service B service

Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ & ¢ %DVLFVRI:6&RRUGLQDWLRQ 

APPLICATION APPLICATION A B t x e t n o C

Context (Cb) n o i

activity identifier A1 t a a n

coordination type Q supporting protocol Y i C d

portReference for the registration service B r o o C e t a e r C

Activation Registration Registration Activation service service A service B service

Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ &

%DVLFVRI:6&RRUGLQDWLRQ 

APPLICATION APPLICATION A B

Application B registers for coordination protocol Y and passes portReference to the protocol

Activation Registration Registration Activation service service A service B service

Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ & ¢ %DVLFVRI:6&RRUGLQDWLRQ 

APPLICATION APPLICATION A B

Registration service B forwards the registration of application B to the registration service A along with information about coordination protocol Yb The registration service A can then link both ends of the coordination protocol

Activation Registration Registration Activation service service A service B service

Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ &

0HVVDJHVDQGLQWHUIDFHV

o 7KHFRRUGLQDWRUGHILQHGE\:6&RRUGLQDWLRQLVGHVFULEHGXVLQJ:6'/DQGRIIHUVD QXPEHURIVHUYLFHVWRWKHDSSOLFDWLRQ

o 7KHDSSOLFDWLRQDFFHVVHVWKHVHVHUYLFHVE\VHQGLQJHJ62$3PHVVDJHVWRWKH FRRUGLQDWRUZKLFKWKHQUHVSRQGVZLWKQHZ62$3PHVVDJHV,QWHUDFWLRQVZLWKWKH SURWRFROZRXOGWKHQDOVREHLQWHUPVRI62$3PHVVDJHV EXWRWKHUSURWRFROVDUH SRVVLEOHRQHQHHGVRQO\RSURYLGHDOWHUQDWLYHELQGLQJVIRUWKHFRRUGLQDWRUVHUYLFHV

o 7KHH[DPSOHVKRZQFRQVLGHUVWKHFDVHZKHUHDSSOLFDWLRQ%GHFLGHVWRXVHLWVRZQ FRRUGLQDWRU$SSOLFDWLRQ%FRXOGDOVRGHFLGHWRXVHWKHVDPHFRRUGLQDWRUDV DSSOLFDWLRQ$EXWLQWKHFDVHVZKHUH$DQG%DUHLQGHSHQGHQWVHUYLFHVSURYLGHGE\ GLIIHUHQWRUJDQL]DWLRQVDFRRUGLQDWRUSHUDSSOLFDWLRQPDNHVPRUHVHQVH

o :6&RRUGLQDWLRQLVDQDWWHPSWDWVWDQGDUGL]LQJ

WKHXVHRI62$3KHDGHUVIRUFRRUGLQDWLRQSURWRFROV

WKHEDVLFRSHUDWLRQVIRUPRVWFRRUGLQDWLRQSURWRFROV

WKHIXQFWLRQDOLW\D:HEVHUYLFHPLGGOHZDUHSODWIRUPPXVWVXSSRUWIRUDOORZLQJ

FRRUGLQDWLRQSURWRFROVWREHLPSOHPHQWHG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢ & :6&RRUGLQDWRULQ;0/

$&7,9$7,216(59,&(

ZVGOSRUW7\SHQDPH $FWLYDWLRQ&RRUGLQDWRU3RUW7\SH!

 ZVGORSHUDWLRQQDPH &UHDWH&RRUGLQDWLRQ&RQWH[W!

 ZVGOLQSXWPHVVDJH ZVFRRU&UHDWH&RRUGLQDWLRQ&RQWH[W!

 ZVGORSHUDWLRQ!

 ZVGOSRUW7\SH!

5(63216($&7,9$7,216(59,&(

ZVGOSRUW7\SHQDPH $FWLYDWLRQ5HTXHVWHU3RUW7\SH!

 ZVGORSHUDWLRQQDPH &UHDWH&RRUGLQDWLRQ&RQWH[W5HVSRQVH!

 ZVGOLQSXWPHVVDJH ZVFRRU&UHDWH&RRUGLQDWLRQ&RQWH[W5HVSRQVH!

 ZVGORSHUDWLRQ!

 ZVGORSHUDWLRQQDPH (UURU!

 ZVGOLQSXWPHVVDJH ZVFRRU(UURU!

 ZVGORSHUDWLRQ!

 ZVGOSRUW7\SH!

¡ ¢ £¥¤§¦ ¨ © ¦ ¡  ¦  ¢ ¢ ¡     ¢  ¤§© ¢ ¢ ¡     ¢   ! "  $#%%#

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢ ¢ ¢

:67UDQVDFWLRQV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ ¢ % :67UDQVDFWLRQV

o :67UDQVDFWLRQVEXLOGVGLUHFWO\XSRQ:6&RRUGLQDWLRQWRVSHFLI\GLIIHUHQW FRRUGLQDWLRQSURWRFROVUHODWHGWRWUDQVDFWLRQSURFHVVLQJ

DWRPLFWUDQVDFWLRQV JRYHUQHGE\3KDVH&RPPLW

EXVLQHVVDFWLYLWLHV WUDQVDFWLRQDOEXWEDVHGRQFRPSHQVDWLRQDFWLYLWLHV

‡ EXVLQHVVDJUHHPHQW

‡ EXVLQHVVDJUHHPHQWZLWKFRPSOHWH

o :67UDQVDFWLRQVVSHFLILHVWKHFRRUGLQDWLRQSURWRFROWREHXVHGDVSDUWRI:6 &RRUGLQDWLRQ7KHVSHFLILFDWLRQGHDOVZLWKWKHQDWXUHRIWKHLQWHUDFWLRQWKHV\QWD[ DQGVHPDQWLFVRIWKHPHVVDJHVWRH[FKDQJHDVSDUWRIWKHFRRUGLQDWLRQSURWRFRODQG WKHH[SHFWHGUHVSRQVHVRIDOOSDUWLFLSDQWVLQYROYHG

o /LNH:6&RRUGLQDWLRQ:67UDQVDFWLRQVIROORZVYHU\FORVHO\WKHWUDQVDFWLRQDOPRGHO

IRXQGLQFRQYHQWLRQDOPLGGOHZDUHSODWIRUPV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢

&RRUGLQDWLRQSURWRFROIRU3&

¡ ¢ £¥¤§¦ ¨ © ¦ ¡  ¦ ¡ ¡       ¢  ¤§© ¡       ¢    ! "   #%%#

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢ )

%XVLQHVVDJUHHPHQW

¡ ¢ £¥¤§¦ ¨ © ¦ ¡  ¦ ¡ ¡       ¢  ¤§© ¡       ¢    ! "   #%%#

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢

%XVLQHVVDJUHHPHQWZLWKFRPSOHWLRQ

¡ ¢ £¥¤§¦ ¨ © ¦ ¡  ¦ ¡ ¡       ¢  ¤§© ¡       ¢    ! "   #%%#

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ ¢ ¢ :67UDQVDFWLRQV

APPLICATION APPLICATION A B

Activation Registration Registration Activation service B service service service A WS-TRANSACTION PROTOCOL Coord. Coord. Protocol Ya Protocol Yb

COORDINATOR A COORDINATOR B

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢ ¢

&25%$WUDQVDFWLRQV 

 $VVXPH$SS$ZDQWVWRXSGDWHGDWDEDVHV$DQG%  $SS$UHJLVWHUVWKHGDWDEDVHIRUWKDWWUDQVDFWLRQ

App A App B App A App B DB DB DB DB

ORB Register ORB db Txn has part Object Object executed in Transaction Transaction database A Service Service

 $SS$UXQVWKHW[QEXWGRHVQRW  $SS$REWDLQVDW[QLGHQWLILHUIRUWKHRSHUDWLRQ txn FRPPLWLWDWWKHHQG

App A App B App A App B DB DB DB DB

Begin ORB ORB txn

Object Object Transaction Transaction

Service Service

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#$%'&(&()* ¡( ¡¢ ¢ ¢

&25%$WUDQVDFWLRQV 

 $SS$QRZFDOOV  $SS%UXQVWKHW[QEXWGRHVQRW Call for txn $SS% Txn FRPPLWLWDWWKHHQG

App A App B App A App B DB DB DB DB

ORB ORB

Object Object Transaction Transaction Service Service

 $SS%UHJLVWHUVWKHGDWDEDVHIRUWKDWWUDQVDFWLRQ  $SS$UHTXHVWFRPPLWDQGWKH276UXQV3&

App A App B App A App B DB DB DB DB

ORB Register Commit ORB db txn Txn has part executed in Object Object database B Transaction Transaction

Service 2PC Service 2PC

¢¡¤£¦¥¦§ ¨ ©  ¥  (£ ! "$#%&(&()(*¦¡( ¡¢ ¢

7UDQVDFWLRQDOTXHXHV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ %'& 6\QFKURQRXV&OLHQW6HUYHU o 7KHPRVWVWUDLJKWIRUZDUGLQWHUDFWLRQ ,19(1725<&21752/

EHWZHHQFRPSRQHQWVLVWKH ,)VXSSOLHVBORZ

UHTXHVWUHVSRQVHPRGHOLQZKLFKWKH 7+(1

FOLHQWVHQGVDUHTXHVWDQGZDLWVXQWLO %27 WKHVHUYHUSURYLGHVDUHVSRQVH 3ODFHBRUGHU

8SGDWHBLQYHQWRU\ FORVHO\UHVHPEOHVWKHZD\ZH (27 SURJUDP KHQFH53&DVWKHEDVLF PHFKDQLVPWRVXSSRUWWKLVLGHD

WKHPRGHOLVVLPSOHDQGLQWXLWLYH 6HUYHU SURGXFWV 6HUYHU LQYHQWRU\

ZHOOVXSSRUWHGE\53&DQGWKH 1HZBSURGXFW 3ODFHBRUGHU V\VWHPVEXLOWDURXQG53& 753& /RRNXSBSURGXFW &DQFHOBRUGHU 'HOHWHBSURGXFW 8SGDWHBLQYHQWRU\ 730RQLWRUVDQGHYHQ2EMHFW 8SGDWHBSURGXFW &KHFNBLQYHQWRU\ 0RQLWRUV

QHHGVDGGLWLRQDOLQIUDVWUXFWXUH ZKHQLQWHUDFWLRQVEHFRPHVPRUH

6 6 ,QYHQWRU\ FRPSOH[ HJQHVWHG EXWWKLV 0 3URGXFWV 0 % % DQGRUGHU

' ' GDWDEDVH

LQIUDVWUXFWXUHLVDYDLODEOH GDWDEDVH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ % ¢

'LVDGYDQWDJHVRIV\QF&6

o 6\QFKURQRXVLQWHUDFWLRQUHTXLUHVERWK &DOO SDUWLHVWREH´RQOLQHµWKHFDOOHU 5HFHLYH PDNHVDUHTXHVWWKHUHFHLYHUJHWVWKH LGOHWLPH UHTXHVWSURFHVVHVWKHUHTXHVWVHQGVD 5HVSRQVH UHVSRQVHWKHFDOOHUUHFHLYHVWKH $QVZHU UHVSRQVH

o 7KHFDOOHUPXVWZDLWXQWLOWKHUHVSRQVH o %HFDXVHLWV\QFKURQL]HVFOLHQWDQG FRPHVEDFN7KHUHFHLYHUGRHVQRWQHHG VHUYHUWKLVPRGHRIRSHUDWLRQKDV WRH[LVWDWWKHWLPHRIWKHFDOO 73 VHYHUDOGLVDGYDQWDJHV 0RQLWRUV&25%$RU'&20FUHDWHDQ FRQQHFWLRQRYHUKHDG LQVWDQFHRIWKHVHUYLFHVHUYHUREMHFW ZKHQFDOOHGLILWGRHVQRWH[LVW KLJKHUSUREDELOLW\RIIDLOXUHV

DOUHDG\ EXWWKHLQWHUDFWLRQUHTXLUHV GLIILFXOWWRLGHQWLI\DQGUHDFWWR ERWKFOLHQWDQGVHUYHUWREH´DOLYHµDW IDLOXUHV WKHVDPHWLPH LWLVDRQHWRRQHV\VWHPLWLVQRW UHDOO\SUDFWLFDOIRUQHVWHGFDOOV DQGFRPSOH[LQWHUDFWLRQV WKH SUREOHPVEHFRPHVHYHQPRUH

DFXWH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ %% 2YHUKHDGRIV\QFKURQLVP

o 6\QFKURQRXVLQYRFDWLRQVUHTXLUHWR PDLQWDLQDVHVVLRQEHWZHHQWKHFDOOHU UHTXHVW DQGWKHUHFHLYHU

o 0DLQWDLQLQJVHVVLRQVLVH[SHQVLYHDQG UHFHLYH VHVVLRQ FRQVXPHV&38UHVRXUFHV7KHUHLVDOVR SURFHVV GXUDWLRQ DOLPLWRQKRZPDQ\VHVVLRQVFDQEH UHWXUQ DFWLYHDWWKHVDPHWLPH WKXVOLPLWLQJ GRZLWKDQVZHU WKHQXPEHURIFRQFXUUHQWFOLHQWV FRQQHFWHGWRDVHUYHU

o )RUWKLVUHDVRQFOLHQWVHUYHUV\VWHPV UHTXHVW RIWHQUHVRUWWRFRQQHFWLRQSRROLQJWR RSWLPL]HUHVRXUFHXWLOL]DWLRQ UHFHLYH

SURFHVV V H

KDYHDSRRORIRSHQFRQQHFWLRQV F L

UHWXUQ Y U

H

DVVRFLDWHDWKUHDGZLWKHDFK V

 G

FRQQHFWLRQ H

GRZLWKDQVZHU W

D

F L

DOORFDWHFRQQHFWLRQVDVQHHGHG O

S H

UHFHLYH U o :KHQWKHLQWHUDFWLRQLVQRWRQHWR SURFHVV RQHWKHFRQWH[W WKHLQIRUPDWLRQ UHWXUQ GHILQLQJDVHVVLRQ QHHGVWREHSDVVHG &RQWH[WLVORVW

DURXQG7KHFRQWH[WLVXVXDOO\YRODWLOH 1HHGVWREHUHVWDUWHG

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ %

)DLOXUHVLQV\QFKURQRXVFDOOV

o ,IWKHFOLHQWRUWKHVHUYHUIDLOWKH FRQWH[WLVORVWDQGUHV\QFKURQL]DWLRQ  PLJKWEHGLIILFXOW UHTXHVW  ,IWKHIDLOXUHRFFXUUHGEHIRUH UHFHLYH

QRWKLQJKDVKDSSHQHG SURFHVV

,IWKHIDLOXUHRFFXUVDIWHUEXW UHWXUQ EHIRUH UHFHLYHUFUDVKHV WKHQ   GRZLWKDQVZHU WKHUHTXHVWLVORVW

,IWKHIDLOXUHKDSSHQVDIWHUEXW EHIRUHVLGHHIIHFWVPD\FDXVH  UHTXHVW LQFRQVLVWHQFLHV  ,IWKHIDLOXUHRFFXUVDIWHUEXW UHFHLYH EHIRUHWKHUHVSRQVHLVORVWEXW SURFHVV WKHDFWLRQKDVEHHQSHUIRUPHG GR UHWXUQ LWDJDLQ"  GRZLWKDQVZHU o )LQGLQJRXWZKHQWKHIDLOXUHWRRNSODFH WLPHRXW PD\QRWEHHDV\:RUVHVWLOOLIWKHUH · WU\DJDLQ UHFHLYH LVDFKDLQRILQYRFDWLRQVWKHIDLOXUH SURFHVV FDQRFFXUDQ\ZKHUH GRZLWKDQVZHU UHWXUQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ %') )DLOXUHVHPDQWLFV

o $JUHDWGHDORIWKHIXQFWLRQDOLW\EXLOW o 7KHPRUHHOHPHQWVDUHLQYROYHGLQDQ DURXQG53&WULHVWRDGGUHVVWKH LQWHUDFWLRQWKHKLJKHUWKHSUREDELOLW\ SUREOHPRIIDLOXUHVHPDQWLFVLH WKDWWKHLQWHUDFWLRQZLOOIDLO DIDLOXUH GHWHUPLQHZKDWKDVKDSSHQHGDIWHUD LQDQ\RQHRIWKHHOHPHQWVUHVXOWVLV IDLOXUH HQRXJK

o ([DFWO\RQFHVHPDQWLFVVROYHVWKLV o 7KHPRUHHOHPHQWVDUHUHTXLUHGWREH SUREOHPEXWLWKDVKLGGHQFRVWV DOLYHIRUDQLQWHUDFWLRQWRVXFFHHGWKH

LWLPSOLHVDWRPLFLW\LQDOO PRUHGLIILFXOWLWLVWRPDLQWDLQWKH RSHUDWLRQV V\VWHP WKHVHUYHUPXVWVXSSRUWVRPHIRUP HYHQLILWLVPRGXODUWKH RI3&LILWLVDGDWDEDVHWKHQ FRPSRQHQWVFDQQRWGRDQ\WKLQJ RQHFDQXVHWKH;$LQWHUIDFH ZLWKRXWWKHUHVWRIWKHV\VWHP RWKHUZLVHRQHQHHGVD730RQLWRU XSJUDGHVFRUUHFWLRQVJHQHUDO WRPDNHWKHVHUYHUWUDQVDFWLRQDO PDLQWHQDQFHEHFRPHVYHU\GLIILFXOW

LWXVXDOO\UHTXLUHVDFRRUGLQDWRUWR EHFDXVHWKH\PLJKWUHTXLUHWRVKXW

RYHUVHHWKHLQWHUDFWLRQ WKHV\VWHPGRZQ

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ¡¢ %

7ZRVROXWLRQV

(QKDQFHG6XSSRUW $6<1&+521286,17(5$&7,21

o &OLHQW6HUYHUPLGGOHZDUHSURYLGHVD o 8VLQJDV\QFKURQRXVLQWHUDFWLRQWKH QXPEHURIPHFKDQLVPVWRGHDOZLWKWKH FDOOHUVHQGVDPHVVDJHWKDWJHWVVWRUHG SUREOHPVFUHDWHGE\V\QFKURQRXV VRPHZKHUHXQWLOWKHUHFHLYHUUHDGVLW LQWHUDFWLRQ DQGVHQGVDUHVSRQVH7KHUHVSRQVHLV

7UDQVDFWLRQDO53&WRHQIRUFH VHQWLQDVLPLODUPDQQHU H[DFWO\RQFHH[HFXWLRQVHPDQWLFV o $V\QFKURQRXVLQWHUDFWLRQFDQWDNH DQGHQDEOHPRUHFRPSOH[ SODFHLQWZRIRUPV

LQWHUDFWLRQVZLWKVRPHH[HFXWLRQ QRQEORFNLQJLQYRFDWLRQ 53&EXW JXDUDQWHHV WKHFDOOUHWXUQVLPPHGLDWHO\ 6HUYLFHUHSOLFDWLRQDQGORDG ZLWKRXWZDLWLQJIRUDUHVSRQVH EDODQFLQJWRSUHYHQWWKHV\VWHP VLPLODUWREDWFKMREV

IURPKDYLQJWRVKXWGRZQLID SHUVLVWHQWTXHXHV WKHFDOODQGWKH JLYHQVHUYLFHLVQRWDYDLODEOHWKLV UHVSRQVHDUHDFWXDOO\SHUVLVWHQWO\ DOVRJLYHVDFKDQFHWRPDLQWDLQDQG VWRUHGXQWLOWKH\DUHDFFHVVHGE\ XSJUDGHWKHV\VWHPZKLOHNHHSLQJ WKHFOLHQWDQGWKHVHUYHU

LWRQOLQH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ % ¢ 730RQLWRUV o client b server

7KHSUREOHPVRIV\QFKURQRXV b u

u t

t service call s service

LQWHUDFWLRQDUHQRWQHZ7KHILUVW s

t

r e

V\VWHPVWRSURYLGHDOWHUQDWLYHVZHUH n v e

i r get results l return results 730RQLWRUVZKLFKRIIHUHGWZR e

C S FKRLFHV DV\QFKURQRXV53&FOLHQWPDNHVD RPC support FDOOWKDWUHWXUQVLPPHGLDWHO\WKH FOLHQWLVUHVSRQVLEOHIRUPDNLQJD Input queue Output queue Reliable VHFRQGFDOOWRJHWWKHUHVXOWV queuing 5HOLDEOHTXHXLQJV\VWHPV HJ system (QFLQD7X[HGR ZKHUHLQVWHDGRI external application Output WKURXJKSURFHGXUHFDOOVFOLHQWDQG queue VHUYHULQWHUDFWE\H[FKDQJLQJ PHVVDJHV0DNLQJWKHPHVVDJHV Input SHUVLVWHQWE\VWRULQJWKHPLQ queue TXHXHVDGGHGFRQVLGHUDEOH IOH[LELOLW\WRWKHV\VWHP external

application

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ¡¢ %

5HOLDEOHTXHXLQJ

o 5HOLDEOHTXHXLQJWXUQHGRXWWREHD YHU\JRRGLGHDDQGDQH[FHOOHQW FRPSOHPHQWWRV\QFKURQRXV LQWHUDFWLRQV

6XLWDEOHWRPRGXODUGHVLJQWKH

FRGHIRUPDNLQJDUHTXHVWFDQEH UUHHTTXXHHVVWW LQDGLIIHUHQWPRGXOH HYHQD queue UHFHLYH GLIIHUHQWPDFKLQH WKDQWKHFRGH SURFHVV IRUGHDOLQJZLWKWKHUHVSRQVH UHWXUQ ,WLVHDVLHUWRGHVLJQVRSKLVWLFDWHG queue GLVWULEXWLRQPRGHV PXOWLFDVW GGRRZZLLWWKKDDQQVVZZHHUU WUDQVIHUVUHSOLFDWLRQFRDOHVFLQJ PHVVDJHV DQLWDOVRKHOSVWR KDQGOHFRPPXQLFDWLRQVHVVLRQVLQ DPRUHDEVWUDFWZD\

0RUHQDWXUDOZD\WRLPSOHPHQW

FRPSOH[LQWHUDFWLRQV VHHQH[W

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ¡¢ % ¢ 4XHXLQJV\VWHPV

o 4XHXLQJV\VWHPVLPSOHPHQWDV\QFKURQRXV client LQWHUDFWLRQV

o (DFKHOHPHQWLQWKHV\VWHPFRPPXQLFDWHVZLWK WKHUHVWYLDSHUVLVWHQWTXHXHV7KHVHTXHXHV VWRUHPHVVDJHVWUDQVDFWLRQDOO\JXDUDQWHHLQJ Input queue Output queue WKDWPHVVDJHVDUHWKHUHHYHQDIWHUIDLOXUHV RFFXU

o 4XHXLQJV\VWHPVRIIHUVLJQLILFDQWDGYDQWDJHV RYHUWUDGLWLRQDOVROXWLRQVLQWHUPVRIIDXOW Reliable queuing system WROHUDQFHDQGRYHUDOOV\VWHPIOH[LELOLW\ Monitoring DSSOLFDWLRQVGRQRWQHHGWREHWKHUHDWWKH Administration WLPHDUHTXHVWLVPDGH

Persistent storage o 4XHXHVSURYLGHDZD\WRFRPPXQLFDWHDFURVV KHWHURJHQHRXVQHWZRUNVDQGV\VWHPVZKLOHVWLOO Input queue Output queue EHLQJDEOHWRPDNHVRPHDVVXPSWLRQVDERXWWKH EHKDYLRURIWKHPHVVDJHV

o 7KH\FDQEHXVHGHPEHGGHG ZRUNIORZ73 0RQLWRUV RUE\WKHPVHOYHV 046HULHV external 7X[HGR4 

application

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ¡¢ %

7UDQVDFWLRQDOTXHXHV

o 3HUVLVWHQWTXHXHVDUHFORVHO\WLHGWR WUDQVDFWLRQDOLQWHUDFWLRQ external WRVHQGDPHVVDJHLWLVZULWWHQLQWKH application TXHXHXVLQJ3&

PHVVDJHVEHWZHHQTXHXHVDUHH[FKDQJHG XVLQJ3& 3& 3& UHDGLQJDPHVVDJHIURPDTXHXH SURFHVVLQJLWDQGZULWLQJWKHUHSO\WR DQRWKHUTXHXHLVDOOGRQHXQGHU3& Output queue Input queue

o 7KLVLQWURGXFHVDVLJQLILFDQWRYHUKHDGEXWLW DOVRSURYLGHVFRQVLGHUDEOHDGYDQWDJHV7KH 3& 3& RYHUKHDGLVQRWWKDWLPSRUWDQWZLWKORFDO WUDQVDFWLRQV ZULWLQJRUUHDGLQJWRDORFDO TXHXH  Input queue Output queue

o 8VLQJWUDQVDFWLRQDOTXHXHVWKHSURFHVVLQJRI PHVVDJHVDQGVHQGLQJDQGUHFHLYLQJFDQEHWLHG 3& WRJHWKHULQWRRQHVLQJOHWUDQVDFWLRQVVRWKDW DWRPLFLW\LVJXDUDQWHHG7KLVVROYHVDORWRI external

SUREOHPV application

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ,+ -& 3UREOHPVVROYHG ,

6(1',1* 5(&(,9,1*

external external application application

3& 3&

0HVVDJHLVQRZSHUVLVWHQW,IWKHQRGH $UULYLQJPHVVDJHVUHPDLQLQWKHTXHXH

FUDVKHVWKHPHVVDJHUHPDLQVLQWKH ,IWKHQRGHFUDVKHVPHVVDJHVDUHQRW

TXHXH8SRQUHFRYHU\WKHDSSOLFDWLRQ ORVW7KHDSSOLFDWLRQFDQQRZWDNHLWV

FDQORRNLQWKHTXHXHDQGVHHZKLFK WLPHWRSURFHVVPHVVDJHV,WLVDOVR

PHVVDJHVDUHWKHUHDQGZKLFKDUH SRVVLEOHIRUVHYHUDODSSOLFDWLRQVWRUHDG

QRW0XOWLSOHDSSOLFDWLRQVFDQZULWHWR IURPWKHVDPHTXHXH7KLVDOORZVWR

WKHVDPHTXHXHWKHUHE\´PXOWLSOH[LQJµ LPSOHPHQWUHSOLFDWHGVHUYLFHVGRORDG

WKHFKDQQHO EDODQFLQJDQGLQFUHDVHIDXOWWROHUDQFH

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ,+ - +

3UREOHPVVROYHG ,,

o $QDSSOLFDWLRQFDQEXQGOHZLWKLQDVLQJOH WUDQVDFWLRQUHDGLQJDPHVVDJHIURPDTXHXH Input queue Output queue LQWHUDFWLQJZLWKRWKHUV\VWHPVDQGZULWLQJWKH UHVSRQVHWRDTXHXH 3& o ,IDIDLOXUHRFFXULQDOOVFHQDULRVFRQVLVWHQF\ LVHQVXUHG external application LIWKHWUDQVDFWLRQZDVQRWFRPSOHWHGDQ\ LQWHUDFWLRQZLWKRWKHUDSSOLFDWLRQVLV XQGRQHDQGWKHUHDGLQJRSHUDWLRQIURPWKH LQSXWTXHXHLVQRWFRPPLWWHGWKH PHVVDJHUHPDLQVLQWKHLQSXWTXHXH

8SRQUHFRYHU\WKHPHVVDJHFDQEH 0HVVDJHLVHLWKHUUHDGRUZULWWHQ SURFHVVHGDJDLQWKHUHE\DFKLHYLQJH[DFWO\ Input queue Output queue RQFHVHPDQWLFV

,IWKHWUDQVDFWLRQZDVFRPSOHWHGWKH ZULWHWRWKHRXWSXWTXHXHLVFRPPLWWHG 3& LHWKHUHVSRQVHUHPDLQVLQWKHTXHXH external DQGFDQEHVHQWXSRQUHFRYHU\ application ,IUHSOLFDWHGVHUYLFHVDUHXVHGLIRQH IDLOVDQGWKHPHVVDJHUHPDLQVLQWKH LQSXWTXHXHLWLVVDIHIRURWKHUVHUYLFHV WRWDNHRYHUWKLVPHVVDJH

7KLVLVXQGRQHLIQHFHVVDU\

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ,+ - % 6LPSOHLPSOHPHQWDWLRQ

o 3HUVLVWHQWTXHXHVFDQEHLPSOHPHQWHG DVSDUWRIDGDWDEDVHVLQFHWKH external IXQFWLRQDOLW\QHHGHGLVH[DFWO\WKDWRI application DGDWDEDVH

DWUDQVDFWLRQDOLQWHUIDFH

SHUVLVWHQFHRIFRPPLWWHG Output queue Input queue WUDQVDFWLRQV

DGYDQFHGLQGH[LQJDQGVHDUFK FDSDELOLWLHV

o 7KXVPHVVDJHVLQDTXHXHEHFRPH VLPSOHHQWULHVLQDWDEOH7KHVHHQWULHV FDQEHPDQLSXODWHGOLNHDQ\RWKHUGDWD LQDGDWDEDVHVRWKDWDSSOLFDWLRQVXVLQJ 066* 48(8( WKHTXHXHFDQDVVLJQSULRULWLHVORRN P T IRUPHVVDJHVZLWKJLYHQ P T FKDUDFWHULVWLFVWULJJHUFHUWDLQDFWLRQV P T

ZKHQPHVVDJHVRIDSDUWLFXODUNLQG P T

DUULYH« P T

P T

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ,+ - -

4XHXHVLQSUDFWLFH

o 7RDFFHVVDTXHXHDFOLHQWRUDVHUYHU

b

g )

client u

t e

XVHVWKHTXHXLQJVHUYLFHVHJ n

s

i

c

i u

put t

v e

n

SXW HQTXHXH WRSODFHDPHVVDJH r

e u e

… i

q

l s

LQDJLYHQTXHXH ( C JHW GHTXHXH WRUHDGDPHVVDJH IURPDTXHXH PSXWWRSXWDPHVVDJHLQPXOWLSOH r

put get mput e

TXHXHV v r e s

WUDQVIHUDPHVVDJHIURPDTXHXHWR g n DQRWKHU queue persistent i u

o ,Q730RQLWRUVWKHVHVHUYLFHVDUH management e repository u

LPSOHPHQWHGDV53&FDOOVWRDQ Q LQWHUQDOUHVRXUFHPDQDJHU WKHUHOLDEOH TXHXLQJVHUYLFH

o 7KHVHFDOOVFDQEHPDGHSDUWRI

WUDQVDFWLRQXVLQJWKHVDPHPHFKDQLVPV

b

g )

server u

t e

RI753& WKHTXHXLQJV\VWHPXVHVDQ n

s

i

c

i u get t

;$LQWHUIDFHDQGZRUNVOLNHDQ\RWKHU v

e

n

r

e u e

… i q

UHVRXUFHPDQDJHU l

s

(

C

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ,+ -) $GYDQFHGIXQFWLRQDOLW\

o 4XHXHVDOORZWRLPSOHPHQWFRPSOH[LQWHUDFWLRQSDWWHUQVEHWZHHQPRGXOHV

WRLQWHUDFWLRQZLWKIDLOXUHUHVLOLHQFH

WRPDQ\ PXOWLFDVWSXWLQDTXHXHDQGWKHQVHQGIURPWKLVTXHXHWRPDQ\ RWKHUTXHXHV WKLVLVYHU\KHOSIXOIRU´VXEVFULSWLRQVµ7KHIDFWWKDWWKHTXHXHV DUHLPSOHPHQWHGLQWKHGDWDEDVHHYHQKHOSVZLWKSHUIRUPDQFHVLQFHWKHORJLFIRU GLVWULEXWLRQFDQEHHPEHGGHGLQWKHGDWDEDVHLWVHOI

PDQ\WRPDQ\PRGXOHVVHQGWKHLUUHTXHVWWRDVLQJOHPRGXOHWKDWFDQWKHQ DVVLJQSULRULWLHVUHRUGHUFRPSDUHHWF

PDQ\WRPDQ\DVLQUHSOLFDWHGVHUYLFHVIRUODUJHDPRXQWRIFOLHQWV

o ,QVRPHFDVHVTXHXHVDUHEHLQJXVHGIRULQWHUDFWLRQVWKDWDUHDOVRRQOLQH,IWKH TXHXHVDUHIDVWHQRXJK OLNHLQDFOXVWHU RQHFDQWDNHDGYDQWDJHRIWKHSURSHUWLHVRI TXHXHVDWWKHH[SHQVHRISHUIRUPDQFH%XLOGLQJFRPSXWHUIDUPVEHFRPHVHDVLHUVLQFH PHVVDJHVDUHRQHPRUHHOHPHQWWKDWFDQEHPRYHGFRSLHGDQGVWRUHG

o ,QFRUSRUDWLQJTXHXHVLQWRGDWDEDVHVSURYLGHVGDWDEDVHVZLWKDYHU\SRZHUIXOWRROIRU

GHVLJQLQJGLVWULEXWHGDSSOLFDWLRQV 73OLJKW 

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "'#%&(&()(*¦¡ ,+ -

7\SHVDQGPHVVDJHV

o 4XHXHVDUHYHU\XVHIXOEXWWKH\DOVR o 7KHZD\WRGHYHORSDV\VWHPLVDV KDYHWKHLUGLVDGYDQWDJHVIURPWKH IROORZV

SURJUDPPLQJSRLQWRIYLHZ GHILQHPHVVDJHIRUPDWVE\ ,Q53&WKHW\SHRIWKHSDUDPHWHUV FUHDWLQJFRPSOH[W\SHV UHFRUGV H[FKDQJHGEHWZHHQFOLHQWDQG REMHFWV

VHUYHULVGHWHUPLQHGE\WKH,'/ FUHDWHWKHTXHXHVDQGWKHDFFHVV GHILQLWLRQDQGDYDLODEOHLQWKH SROLFLHVIRUWKRVHTXHXHV VWXEV7KH53&LQIUDVWUXFWXUH SURJUDPWKHVHUYHUDQGFOLHQWV WDNHVFDUHRIPDUVKDOOLQJ DFFRUGLQJWRWKHW\SHGHILQLWLRQV XQPDUVKDOOLQJVHULDOL]LQJHWF RIWKHPHVVDJHV :KHQTXHXHVDUHXVHGWKHUHLVQR o 7KHV\VWHPXVHVWKHW\SHVGHILQHGIRU ,'/GHWHUPLQLQJWKHLQWHUIDFH7KH WKHPHVVDJHVWRVHWXSWKH53&FDOOV W\SHDQGIRUPDWRIWKHGDWDLQD QHHGHGWRGRPDUVKDOOLQJ TXHXHPXVWEHDJUHHGXSRQEHIRUH XQPDUVKDOOLQJVHULDOL]DWLRQHWF KDQGEXWWKHV\VWHPGRHVQRWKDYH PXFKFRQWURORYHULW

7KHUROHRI,'/LVQRZWDNHQRYHU

E\WKHPHVVDJHIRUPDW LWLVQRWLQ

¨ ©  ¥  ! "$#$%'&(&()* ¡( ,+ -¢¡ ¢¡¤£¦¥¦§ WKHVWXEV %H\RQGFOLHQWVHUYHU

o 3HUVLVWHQWTXHXHVDUHPRVWXVHIXOZKHQ o %HFDXVHWKHVHLQWHUDFWLRQVDUHDOVR WKHLQWHUDFWLRQVDUHQRWVLPSOH YHU\FRPPRQDQGKDYHLQFUHDVHGLQ FOLHQWVHUYHUFDOOV LPSRUWDQFHTXHXLQJV\VWHPVDUHQR

ZRUNIORZSURFHVVHVFDQEHHDVLO\ ORQJHUMXVWRQHPRUHPRGXOHLQ73 LPSOHPHQWHGDVDVHTXHQFHRI 0RQLWRUVEXWKDYHEHFRPHSURGXFWVLQ VHUYLFHVWKDWSDVVPHVVDJHVWR WKHLURZQULJKW HJ046HULHVRI HDFKRWKHUDORQJDZHOOGHILQHGVHW ,%0 RITXHXHV o 2QFHWKH\EHFDPHSURGXFWVTXHXLQJ

LQIRUPDWLRQGLVVHPLQDWLRQDQG V\VWHPVVWDUWHGWREHVXEMHFWHGWRWKH HYHQWQRWLILFDWLRQFDQEHGLUHFWO\ VDPHHYROXWLRQDU\IRUFHVDVRWKHU DQGHIILFLHQWO\LPSOHPHQWHGRQWRS IRUPVRIPLGGOHZDUH RITXHXHV LQWHJUDWLRQLQODUJHUPRUH

SXEOLVKVXEVFULEHV\VWHPVDUHLQ FRPSUHKHQVLYHWRROV HVVHQFHHYHQWV\VWHPV HQKDQFHPHQWVWRWKHEDVLF LPSOHPHQWHGRQWRSRIPRGLILHG IXQFWLRQDOLW\E\PDNLQJWKHTXHXHV TXHXLQJV\VWHPV DFWLYHSURFHVVLQJHQWLWLHV

,QIRUPDWLRQ%URNHUV

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ,+ -¡

0HVVDJHEURNHUV

o 0HVVDJHEURNHUVDGGORJLFWRWKHTXHXHVDQGDW WKHOHYHORIWKHPHVVDJLQJLQIUDVWUXFWXUH

o 0HVVDJLQJSURFHVVLQJLVQRORQJHUMXVWPRYLQJ PHVVDJHVEHWZHHQORFDWLRQVEXWGHVLJQHUVFDQ DVVRFLDWHUXOHVDQGSURFHVVLQJVWHSVWREH H[HFXWHGZKHQJLYHQPHVVDJHVDUHPRYHG DURXQG in basic MOM it is o 7KHGRZQVLGHRIWKLVDSSURDFKLVWKDWWKHORJLF the sender who DVVRFLDWHGZLWKWKHTXHXHVDQGWKHPHVVDJLQJ specifies the PLGGOHZDUHPLJKWEHYHU\GLIILFXOWWR identity of the receivers XQGHUVWDQGVLQFHLWLVGLVWULEXWHGDQGWKHUHLV QRFRKHUHQWYLHZRIWKHZKROH

sender receiver

with message brokers, custom message routing logic can be defined at the message broker message broker core level or at the queue level

message broker

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#%&(&()(*¦¡( ,+ -£¢ 3XEOLVK6XEVFULEH

o 6WDQGDUGFOLHQWVHUYHUDUFKLWHFWXUHV server client DQGTXHXLQJV\VWHPVDVVXPHWKHFOLHQW publish subscribe DQGWKHVHUYHUNQRZHDFKRWKHU WKURXJKDQLQWHUIDFHRUDTXHXH … … get o ,QPDQ\VLWXDWLRQVLWLVPRUHXVHIXOWR LPSOHPHQWV\VWHPVZKHUHWKH LQWHUDFWLRQLVEDVHGRQDQQRXQFLQJ Publish JLYHQHYHQWV Subscription server List subscriptions check subscriptions DVHUYLFHSXEOLVKHV put in queues for a message type PHVVDJHVHYHQWVRIJLYHQW\SH Subscribe to a subscribe FOLHQWVVXEVFULEHWRGLIIHUHQWW\SHV message type check subscriptions RIPHVVDJHVHYHQWV put in queues

ZKHQDVHUYLFHSXEOLVKHVDQHYHQW WKHV\VWHPORRNVDWDWDEOHRI subscriptions get read from queue VXEVFULSWLRQVDQGIRUZDUGVWKH HYHQWWRWKHLQWHUHVWHGFOLHQWV WKLVLVXVXDOO\GRQHLQWKHIRUPRI Reliable queuing system DPHVVDJHSXWLQWRDTXHXHIRU WKDWFOLHQW RPC support (DCE, TP-Monitor, …) o SXEOLVKVXEVFULEHJHWDUHDOVR53&

FDOOVWRDUHVRXUFHPDQDJHU

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()* ¡( ,+ -¡

6XEVFULSWLRQLQPHVVDJHEURNHUV

at systems startup time (can occur in any order, but all must occur before RFQs are executed)

RFQ processing A: subscription to message quote B: subscription to message quoteRequest A 1 5 6 C: subscription to message newQuote

message broker at run time: processing of a request for quote. B 2 4 C 7 1: publication of a quoteRequest message SmartQuotation SmartForecasting 2: delivery of message quoteRequest adapter adapter 3: synchronous invocation of the 3 8 getQuote function 4: publication of a quote message 5: delivery of message quote 6: publication of a newQuote message 7: delivery of message newQuote SmartQuotation SmartForecasting 8: invocation of the

createForecastEntry procedure

¢¡¤£¦¥¦§ ¨ ©  ¥  ! "$#$%'&(&()(*¦¡( ,+ )$&