'" " #$"%$ "#$ " ## !!$ # A transaction processing monitor for distributed transaction processing applications maintains the ACID (atomicity, consistency, isolation, and durability) properties of the transactions and provides recovery facilities for aborting transactions and recovering from system or network failures. ( %!$ /,0!1'-, ./-!#00',% 0601#+0 /# 4'"#*6 20#" 6 #,1#/8 ./'0#0 1- 02..-/1 +'00'-,8!/'1'!* ..*'!1'-,0 02!& 0 '/*',# /#0#/31'-, 0601#+0 ," ,)',% ..*'!1'-,0 &#0# ..*'!8 1'-,0 ,##" 1- 01-/# ," 2."1# "1 /#*' *6 ./-3'"# !-,!2/8 /#,1 !!#00 1- 1&# "1 6 &2,"/#"0 -/ 1&-20,"0 -$ 20#/0 ," +',1', 1&# /#*' '*'16 -$ 1&# "1 ', 1&# ./#0#,!# -$ $'*2/#0 1 +6 # "'01/' 21#" #!20# 1&# "1 0# #!-+#0 1-*/%# -/ 1&# -, 1&# "1 0# +!&',# #!-+#0 -11*#8 ,#!) 1 !, *0- # "'01/' 21#" 1- ',!/#0# 3'* '*'16 ," '+./-3# 1&# /#0.-,0# 1'+# 6 )##.',% 1&# "1 !*-0# 11&# 20#/0 !!#00',% '1 ',**6 "1 !, # "'01/' 21#" 1)##. 0#./1# "+','01/1'3# "-+',0 02!& 0 "'$$#/#,1 "'3'8 0'-,0 ', !-/.-/1'-, 1&1 4,1 1- )##. 1&#'/ "1 *-!* &# ,!', 1/,0!1'-, ./-!#00',% +-,'1-/ ./-8 3'"#0 1&# +'""*#4/# $-/ /2,,',% 1/,0!1'-, ./-!#00',% .8 .*'!1'-,0 1 +',1',0 1-+'!'16 !-,0'01#,!6 '0-*1'-, ," "2/ '*'16 ./-.#/1'#0 $-/ 1/,0!1'-,0 0## 1&# %*-00/6 -, .%# 1 #,02/#0 1&1 ..*'!1'-,0 1&1 /2, !-,!2/8 /#,1*6 4'** +',1', "1 !-,0'01#,!6 ,!', *0- ./-8 3'"#0 /#!-3#/6 $!'*'1'#0 $-/ -/1',% 1/,0!1'-,0 ," /#!-38 #/',% $/-+ $'*2/#0 02!& 0 +!&',# -/ ,#14-/) !/0&#0 ,!', 20#0 1&# .#, -$14/# -2,"1'-,0 '01/' 21#" -+.21',% ,3'/-,+#,1 0 1&# 2,"#/*6',% +#!&,'0+ $-/ ./-3'"',% "'01/' 21'-, 1 20#0 1&# +#!&,'0+ 1- ./-3'"# !*'#,10#/3#/ !-++2,'!1'-, ,!', '0 *0- 3#/6 !*-0#*6 1'#" 1- ,+',% ," 0#!2/'16 0#/3'!#0 0## 1&# /1'!*#0 -, .%#0 ," $-/ +-/# -21 1&#0# 0#/3'!#0 -/ #5+.*# , ,!', 0#/3#/ !, # ./-1#!1#" $/-+ 2,21&-/'7#" 20# 6 "#$',',% !!#00 !-,1/-* *'010 0 0 !-,1', , #,!-"',% -$ 1&# 21&-/'71'-, .-*'!6 $-/ "'$$#/#,1 20#/0 ," /# #,$-/!#" 6 1 /2, 1'+# 0 /# "#0!/' #" -, .%# ,!', *0+)#0 20# -$ 1&# 1&/#"',% .!)%# ./-3'"#" 6 #$"%$ ,!', ./-3'"#0 1&# '*'16 1- 4/'1# "'01/' 21#" ..*'!8 1'-,0 ,!', ..*'!1'-,0 !, # 4/'11#, 0 !*'#,10#/3#/ ..*'!1'-,0 4'1& 1&# !*'#,1 ," 0#/3#/ .-00' *6 /2,,',% -, "'$$#/#,1 +!&',#0 ,!', 0#/3#/0 !, !-++2,'!1# ," !--.#/1# 4'1& #!& -1&#/ ', 2."1',% "1 -, 0#3#/* "'$$#/#,1 +!&',#0 '01/' 21#" ..*'!1'-,0 ./-3'"# 0#3#/* "3,1%#0 &# "1 +',1',#" 6 , #,1#/./'0# +6 '10#*$ # "'01/' 21#" #!20# -$ &'01-/'!* ," %#-%/.&'!* !-,0'"#/1'-,0 2/1&#/+-/# "'01/' 21#" ..*'!1'-,0 /# *# 1- #5.*-'1 ./8 **#*'0+ 6 /2,,',% !-,!2//#,1*6 -, 0#3#/* +!&',#0 '01/' 21#" !-+.21',% -$$#/0 1&# "3,1%# -$ '+./-3#" .#/$-/+,!# 3'* '*'16 ," !!#00 1- "'01/' 21#" "1 #/8 $-/+,!# '0 '+./-3#" 6 0./#"',% 1&# !-+.21',% +-,% 3/'-20 +!&',#0 -/ #5+.*# 1&# ..*'!1'-,0 20#/ ',1#/8 $!# !, # /2, -, 4&'*# 1&# 20#/ !-"# !-2*" # 0.*'1 1- /2, -, 0#3#/* +!&',#0 &# 20# -$ +2*1'./-!#00',% +8 !&',#0 1- ./-3'"# ./**#*'0+ $-/ +2*1'.*# 20#/0 !, '+./-3# 1&# 1&/-2%&.21 -$ 1&# 0601#+ 3'* '*'16 !, # ',!/#0#" 6 "'01/' 21#" 0601#+ ', 4&'!& /#.*'!1'-, '0 20#" 1- )##. 0#3#/* !-.'#0 -$ 1&# "1 !!#00 1- "'01/' 21#" "1 -/ 1"1 1&1 '0 +',1',#" ', 0#3#/* "1 0#0 '0 *0- $!'*'11#" 6 "'01/' 21#" !-+.21',% - !&'#3# -.1'+2+ ./'!# ," .#/$-/+,!# !/#$2* !-,0'"8 #/1'-, ,##"0 1- # %'3#, 1- &-4 1&# "1 ," 1&# ..*'!8 1'-, /# ./1'1'-,#" &/-2%&.21 ," /#0.-,0# 1'+#0 /# -$1#, 1&# )#6 !/'1#/' 6 4&'!& 20#/0 (2"%# 1&# .#/$-/+,!# -$ 0601#+ ,!', ./-3'"#0 1&# $*#5' '*'16 -$ #',% *# 1- 0.#!'$6 1&# "'01/' 21'-, 1-.-*-%6 -$ 1&# ..*'!1'-, , ""'1'-, 20#/0 !, 0.#!'$6 "1 /#.*'!1'-, '$ '1 4'** &#*. 1- #,02/# &'%&#/ 3'* '*'16 -$ +'00'-,8!/'1'!* "1 ' )" &"#%# ")" "$$%"# , 1&# .01 1/,0!1'-, ./-!#00',% ..*'!1'-,0 4#/# '+.*#8 +#,1#" 20',% 14-81'#/#" /!&'1#!12/# 0## '% , 1&'0 Client GUI and Application Logic Database Server Data Stored 4-81'#/#" /!&'1#!12/# $-/ 1/,0!1'-, ./-!#00',% #!#+ #/ #4*#118!)/" -2/,* 3%5%(-+0 %1 %33/-'%7-21 -6 :5-77)1 %6 % '/-)17 :,-', %'')66)6 % (%7%&%6) 6)59)5 !,) '/-)17 -03/)0)176 7,) +5%3,-'%/ 86)5 -17)5*%') " %1( 7,) %33/-'%7-21 /2+-' !,) (%7%&%6) 6)59)5 ,%1(/)6 %'')66 72 7,) (%7% 6725)( -1 % (%7%&%6) !:2>3,%6) '200-76 7,%7 ,%33)1 29)5 :-() %5)% 1)7:25.6 %5) );3)16-9) %1( '%5) 0867 &) 7%.)1 :,)1 ()6-+1-1+ (-6> 75-&87)( %33/-'%7-216 72 0-1-0-=) 7,) %02817 2* 7:2>3,%6) '200-76 29)5 7,) 1)7:25. 8)8)( '20081-'%7-216 %/62 -03529) %9%-/%&-/-7< )) 3%+) *25 % ()*-1-7-21 2* '200-7 !,) %(9%17%+) 2* 7,-6 %3352%', -6 6-03/-'-7< !,) (-6%(9%1> 7%+) -6 7,%7 -7 -6 127 6'%/%&/) &)<21( % ')57%-1 32-17 7 -6 %/62 /)66 */);-&/) %1( ,%5()5 72 02(-*< 72 0))7 1): &86-1)66 1))(6 -+ 6,2:6 7,) %5',-7)'785) *25 7,) -03/)0)17%7-21 2* 1'-1% 7,%7 5816 21 7,) >"$ 23)5%7-1+ 6<67)0 1'-1% %//2:6 7,) ()9)/230)17 2* %33/-'%7-216 86-1+ % 7,5))>7-)5)( %5',-7)'785) /-.) 7,) 21) 6,2:1 -1 -+ 1 7,-6 3%5%(-+0 %1 %33/-'%7-21 -6 3%57-7-21)( -172 % '/-)17 7,%7 -03/)> 0)176 7,) +5%3,-'%/ 86)5 -17)5*%') 72 7,) 86)5 %1 %33/-'%7-21 6)59)5 7,%7 -03/)0)176 7,) &86-1)66 /2+-' 2* 7,) %33/-'%7-21 %1( % (%7%&%6) 6)59)5 7,%7 -03/)0)176 7,) (%7%&%6) %'')66 • • • • • !,5))>7-)5)( %5',-7)'785)6 %5) 025) '203/-'%7)( -1 +)1)5%/ &87 3529-() +5)%7)5 */);-&-/-7< 2* %33/-'%7-21 ()6-+1 %1( ()> 9)/230)17 021+ 7,) 5)%6216 :,< 86)56 %5) :-//-1+ 72 +-9) 83 7,) 6-03/-'-7< 2* 7,) 7:2>7-)5)( %5',-7)'785) -6 7,) *%67)5 5)63216) 7-0)6 %1( 7,) 025) )**)'7-9) 86)5 -17)5*%')6 352> 9-()( &< 7,) 7,5))>7-)5)( %5',-7)'785) !,) %&-/-7< 72 3529-() % *5217>)1( :25.67%7-21 7,%7 68332576 +5%3,-'%/ 86)5 -17)5> *%')6 +-9)6 %1 %33/-'%7-21 % 025) )**)'7-9) 86)5 -17)5*%') 25 %33/-'%7-216 7,%7 5)48-5) %'')66 72 (%7% (-675-&87)( %'5266 /%5+) +)2+5%3,-' 5)+-216 % 7,5))>7-)5)( %5',-7)'785) 2**)56 025) */);-&-/-7< 72 781) 7,) '20081-'%7-216 72 '203)16%7) *25 # ()/%<6 %1( -03529) %9%-/%&-/-7< !,-6 5)68/76 -1 % *%67)5 5)63216) 7-0) &)'%86) 7,) 86)5 -6 %'')66-1+ /2'%/ (%7% 0267 2* 7,) 7-0) 523%+%7-21 2* 7,) (%7% 72 27,)5 0%',-1)6 '%1 &) 48)8)( %1( 3)5*250)( 2**/-1) !,)5)*25) +)2+5%3,-'%//< (-675-&87)( (%7% '%1 &) 0%-17%-1)( :-7,287 ,%9-1+ 72 3)5*250 );3)16-9) (-675-&87)( 7:2>3,%6) '200-7 35272'2/6 21/-1) Client GUI Application Server Application Logic • • • • 1'-1% %33/-'%7-216 7,%7 '%1 &) '21*-+85)( 72 581 21 723 2* 7,) 1'-1% 6)59)5 '20321)17 -1'/8() ))5>72>3))5 '20081-'%7-21 :,-', 3529-()6 75%16%'7-21%/ %'')66 72 (%7% 6725)( 21 0%-1*5%0)6 %1( :25.67%7-216 581> 1-1+ 7,) >"$ 23)5%7-1+ 6<67)0 758'785)( *-/) 6<67)0 :,-', -6 % 5)'25(>25-)17)( *-/) 6<67)0 &%6) 21 7,) $3)1 -1(); 6)48)17-%/ %'')66 0)7,2( 67%1(%5( )'29)5%&/) 48)8)-1+ 6)59-') :,-', 3529-()6 %33/-'%7-216 :-7, 7,) %&-/-7< 72 )148)8) %1( ()48)8) (%7% 21-725 :,-', -6 %1 -1*5%6758'785) *25 %33/-'%7-21 ()9)/23> 0)17 581>7-0) 6833257 %1( %(0-1-675%7-21 !,) '20321)176 86)( &< 1'-1% -1'/8() 7,) (-5)'725< 6)59-') 7,) 6)'85-7< 6)59-') %1( 7,5)%(6 !,) 1'-1% '/-)17 '20321)17 -6 %/62 '%//)( 7,) 1'-1% 722/.-7 );)'87-9) %1( 7,) 1'-1% 6)59)5 '20321)17 -6 %/62 '%//)( 7,) 1'-1% 722/.-7 6)59)5 '25) !2+)7,)5 7,)6) '20321)176 %5) '%//)( 7,) 1'-1% 722/.-7 -+ 6,2:6 7,) '20321)176 7,%7 0%.) 83 %1( 6833257 7,) 1'-1% 722/.-7 Base Development Environment. !,) /2:)67 /%<)5 2* 7,) 1'-1% 722/.-7 -6 7,) &%6) ()9)/230)17 )19-5210)17 73529-()6 ()9)/23)56 2* 27,)5 1'-1% '20321)176 :-7, % 81-*250 6)7 2* *)%785)6 -1()3)1()17 2* 7,) 81()5/<-1+ 23)5%7-1+ 6<67)0 !,) &%6) ()9)/230)17 )19-5210)17 /-&5%5< Encina/9000 Monitor Encina/9000 Toolkit • • !,) 1'-1% 7,5))>7-)5)( %5',-7)'785) 3529-()6 7,) *2/> /2:-1+ %(9%17%+)6 29)5 75%(-7-21%/ 7:2>7-)5)( %5',-7)'785)6 )'283/-1+ 7,) " *520 7,) &86-1)66 /2+-' '%/%&-/-7< 2* 7,) %5',-7)'785) 72 6833257 % 9)5< /%5+) 180&)5 2* 86)56 %1( % ,-+, 75%16%'7-21 7,528+,387 '')66-&-/-7< 72 08/7-3/) (%7%&%6) 6)59)56 *520 %1 %33/-'%> 7-21 6)59)5 5))(20 *520 &)-1+ 7-)( -172 %1< 3%57-'8/%5 (%7%&%6) 9)1(25 !-+,7 -17)+5%7-21 :-7, 7,) (-675-&87)( '20387-1+ *%'-/-7-)6 2**)5)( &< ,2-') 2* 75%16%'7-21%/ %33/-'%7-216 7,%7 6833257 %1< '20&-> 1%7-21 2* > 20021 52+5%00-1+ 17)5*%') *25 20081-'%7-216 %1( 48)8)( 0)66%+) '20081-'%7-21 &-/-7< 72 5)7%-1 (%7% 21 % 0%-1*5%0) 25 27,)5 /)+%'< '20> 387)5 %1( 5))1+-1))5 &< %((-1+ >"$ %33/-'%7-21 6)59)56 3529-(-1+ /2:)5 '267 %1( ,-+,)5 35-')3)5*250%1') 5)/%7-9) 72 620) 0%-1*5%0) 6<67)06 %', 2* 7,) '20321)176 6,2:1 -1 -+ -6 3%'.%+)( -1()> 3)1()17/< 0%',-1) 7,%7 5816 1'-1% '/-)176 21/< '%1 &) '21*-+85)( :-7,287 7,) 1'-1% 6)59)5 62*7:%5) %',-1)6 7,%7 581 1'-1% 6)59)56 0867 &) '21*-+85)( :-7, &27, 7,) 1'-1% '/-)17 %1( 6)59)5 '20321)176 Database Server Encina/9000 Structured File System Recoverable Queueing Service Encina/9000 PPC Gateway PPC Executive Encina/9000 Server Encina/9000 Client DCE Data Stored !,5))>7-)5)( %5',-7)'785) *25 75%16%'7-21 352')66-1+ )')0&)5 ):/)77>%'.%5( 2851%/ PPC = Peer-to-Peer Communication !,) %5',-7)'785) 2* 1'-1% 21 7,) >"$ 23)5%7-1+ 6<67)0 /0.4)$%1 ! #.,,.- /+!2&.0, )-$%/%-$%-2 2(0%!$)-' )-2%08 &!#% !-$ !- !"120!#2).- &.0 +.58+%4%+ &3-#2).-1 1. 2(!2 2(% 3//%0 +!7%01 2(!2 31% 2(% "!1% $%4%+./,%-2 %-4)0.-,%-2 #!- "% )-$%/%-$%-2 .& $)&&%0%-#%1 )- 2(% ./%0!2)-' 1712%, .0 2(% (!0$5!0% /+!2&.0, .- 5()#( -#)-! 03-1 • • • • • • (% "!1% $%4%+./,%-2 %-4)0.-,%-2 /0.4)$%1 13//.02 &.0 ,3+2)/+% 2(0%!$1 .& %6%#32).- "7 31)-' 2(0%!$1 +1. )2 /0.4)$%1 2(0%!$81!&% 0.32)-%1 &.0 2(% &.++.5)-' &3-#2).-!+)27 %,.07 ,!-!'%,%-2 )+% 0.#%11 ,!-!'%,%-2 )'-!+ (!-$+)-' ),%01 !-$ !+!0,1 !2)4% +!-'3!'% 13//.02 (% "!1% $%4%+./,%-2 %-4)0.-,%-2 )1 )-2%-$%$ /0),!0)+7 &.0 2(% $%4%+./,%-2 .& .2(%0 -#)-! #.,/.-%-21 Transaction Manager. (% 20!-1!#2).- ,!-!'%0 /0.4)$%1 2(% !")+)27 2. $%,!0#!2% 20!-1!#2).-1 5()#( ,%!-1 2(!2 )2 )1 !"+% 2. 1/%#)&7 2(% "%')--)-' 2(% #.,,)2 !-$ 2(% !".02 .& ! 20!-1!#2).- -2%0-!++7 )2 13//.021 ! $)120)"32%$ 25.8/(!1% #.,,)2 ,!-!'%,%-2 /0.2.#.+ )-#+3$)-' 2(% !")+)27 2. /%08 &.0, #..0$)-!2.0 ,)'0!2).- (% 20!-1!#2).- ,!-!'%0 13//.021 -%12%$ 20!-1!#2).-1 #!/!8 ")+)27 5()#( !++.51 -%12%$ 20!-1!#2).-1 2. "% $%&)-%$ 5)2()! 2./8+%4%+ 20!-1!#2).- %12%$ 20!-1!#2).-1 (!4% )1.+!2).!-$ $30!")+)27 /0./%02)%1 1),)+!0 2. 0%'3+!0 20!-1!#2).-1 "32 2(% !".02 .& ! -%12%$ 20!-1!#2).- $.%1 -.2 #!31% 2(% 2./8+%4%+ 20!-1!#2).- 2. !".02 ()1 !++.51 ! &)-%0 '0!-3+!0)27 .& &!)+30% )1.+!2).- )- 5()#( 2(% ,!)- 20!-1!#2).- #!- (!-$+% 2(% &!)+30% .& #%02!)- #.,/.-%-21 ),/+%,%-2%$ 5)2( ! -%12%$ 20!-1!#8 2).- %12%$ 20!-1!#2).-1 !0% $%&)-%$ )- 2(% '+.11!07 ./!'% (% !//+)#!2).- ,312 "% #!0%&3++7 $%1)'-%$ 1)-#% &!)+30%1 13#( !1 #0!1(%$ 1%04%0 -.$%1 5()#( #!31% ! -%12%$ 20!-18 !#2).- 2. &!)+ #.3+$ )- 1.,% #!1%1 !+1. #!31% 2(% 2./8+%4%+ 20!-1!#2).- 2. &!)+ (% -#)-! 1203#230%$ &)+% 1712%, /0.4)$%1 13//.02 &.0 -%12%$ 20!-1!#2).-1 &.0 $!2! 12.0%$ )1203#230%$ &)+%1 .5%4%0 $!2!"!1% 4%-$.01 +)*% 0!#+% $. -.2 #300%-2+7 13//.02 -%12%$ 20!-1!#2).-1 )- 2(%)0 /0.$3#21 ,!*)-' )2 ),/.11)"+% 2. %6/+.)2 2(% !$4!-2!'%1 .& -#)-! 1 -%12%$ 20!-1!#2).- #!/!")+)2)%1 &.0 $!2! 12.0%$ "7 2(%1% 0%+!2).-!+ $!2!"!1%1 Volume Log Recovery Lock TM–XA Encina/9000 Toolkit Components Transaction Manager Common Utilities Thread Identifier (TID) Transactional RPC Tran-C Server Extensions Tran-C Toolkit Server Core Toolkit Executive Base Development Environment DCE Operating System (% -#)-! 20!-1!#2).- ,!-!'%0 /0.4)$%1 !- !//+)#!8 2).- /0.'0!, 5)2( 2(% !")+)27 2. )113% #!++"!#*1 .- %4%-21 0%+!2%$ 2. 2(% 20!-1!#2).-1 #.,,)2 /0.2.#.+ ()1 %-!"+%1 2(% /0.'0!,,%0 2. 50)2% 0.32)-%1 2(!2 !0% )-4.*%$ "%&.0% 2(% 20!-1!#2).- /0%/!0%1 .0 !".021 .0 !&2%0 2(% #..0$)-!2.0 $%8 #)$%1 2. !".02 .0 #.,,)2 2(% 20!-1!#2).- (% 20!-1!#2).- ,!-!'%0 !++.51 20!-1!#2).-1 2. "% (%30)12)8 #!++7 #.,,)22%$ "7 ! 1712%, !$,)-)120!2.0 ()1 1(.3+$ .-+7 "% 31%$ )- 0!0% #!1%1 )- 5()#( 2(% 20!-1!#2).- #..0$)-!2.0 )1 3-!4!)+!"+% !-$ 2(% !$,)-)120!2.0 $.%1 -.2 5!-2 2. "+.#* !##%11 2. +.#*%$ $!2! !-$ (!1 2. 20!$% .&& $!2! !4!)+!")+)27 2. !4.)$ /.11)"+% $!2! )-#.-1)12%-#7 Thread-to-TID. )-#% -#)-! ,!*%1 31% .& 2(0%!$1 2(% 5.0* $.-% .- "%(!+& .& ! 31%0 20!-1!#2).- #!- "% #.,8 /.1%$ .& 1%4%0!+ $)&&%0%-2 2(0%!$1 (% 2(0%!$82.8 1%04)#% !11.#)!2%1 ! 20!-1!#2).- 5)2( ! 2(0%!$ !-$ ,!)-2!)-1 2(% ,!//)-' "%25%%- ! 2(0%!$ !-$ ! 20!-1!#2).- )$%-2)&)%0 ()1 1%04)#% )1 31%$ "7 .2(%0 -#)-! #.,/.-%-21 !-$ )1 0!0%+7 31%$ "7 /0.'0!,,%01 $)0%#2+7 Transactional RPC. (% -#)-! 20!-1!#2).-!+ 1%04)#% %-(!-#%1 2(% ,%#(!-)1, 2. /0.4)$% 20!-1!#2).-!+ 1%,!-2)#1 &.0 0%,.2% /0.#%$30% #!++1 -+)*% 0%,.2% /0.#%8 $30% #!++1 20!-1!#2).-!+ 1 (!4% .-#%8.-+7 1%,!-2)#1 & ! 20!-1!#2).- /%0&.0,)-' !- #.,,)21 2(%- 2(% )1 '3!0!-2%%$ 2. (!4% %6%#32%$ .-#% !-$ .-#% .-+7 & 2(% 20!-1!#2).- /%0&.0,)-' !- !".021 2(%- 2(% )1 '3!08 !-2%%$ -.2 2. (!4% %6%#32%$ )& 2(% 5!1 %6%#32%$ )21 %&&%#21 !0% 3-$.-% "7 2(% 20!-1!#2).- !".02 20!-1!#2).- #!- ,!*% 20!-1!#2).-!+ #!++1 2. ,3+2)/+% 1%04%01 !-$ ! 1%04%0 #!- )- 230- ,!*% ! 20!-1!#2).-!+ #!++ 2. !-.2(%0 1%04%0 (% 20!-1!#2).-!+ 1%04)#% %62%-$1 2(% ,.$%+ (% )-2%0&!#% $%&)-)2).- &.0 2(% 1%04)#% %6%#32%$ .- "%(!+& .& ! 20!-1!#2).- )1 $%&)-%$ )- ! 0!-1!#2).-!+ -2%0&!#% %&)-)2).- !-'3!'% &)+% 5()#( )1 1),)+!0 2. ! &)+% ()1 &)+% ,312 "% /0%/0.#%11%$ 5)2( ! #.,/)+%0 1),)+!0 2. !- #.,/)+%0 (% /0%/0.#%11.0 '%-%0!2%1 #+)%-2 123"1 1%04%0 123"1 ! (%!$%0 &)+% !-$ !- &)+% (% /0%/0.#%11.0 )1 03- .- 2(% &)+% 2. '%-%0!2% !$$)8 2).-!+ 123"1 !-$ (%!$%0 &)+%1 (% #+)%-2 !-$ 2(% 1%04%0 %6%8 #32!"+%1 !0% '%-%0!2%$ "7 #.,/)+)-' !-$ +)-*)-' 2(% 4!0).31 123" 1.30#%1 !-$ +)"0!0)%1 ()1 /0.#%11 )1 )++3120!2%$ )- )' 0!-1!#2).-!+ !+1. 13//.021 -.-20!-1!#2).-!+ 1 ! -.-20!-1!#2).-!+ #!++ #!- "% ,!$% "7 #!++)-' 2(% 20!-18 !#2).-!+ 1%04)#% (% &)+% &.0 2(% 1%04)#% )-2%0&!#% ,312 1/%#)&7 2(!2 2(% 1%04)#% )1 -.-20!-1!#2).-!+ Log. ()1 #.,/.-%-2 .& -#)-! /0.4)$%1 +.'')-' #!/!8 ")+)2)%1 2 /0.4)$%1 50)2%8!(%!$ +.'')-' 1%% '+.11!07 &.0 12.0)-' +.' 0%#.0$1 2(!2 #.00%1/.-$ 2. 3/$!2%1 2. 0%#.4%0!"+% $!2! !-$ +.' 0%#.0$1 2(!2 #.00%1/.-$ 2. 20!-1!#2).- .328 #.,%1 (% +.' 0%#.0$1 !0% 31%$ "7 2(% 20!-1!#2).- ,!-!'%0 2. 3-$. 2(% %&&%#21 .& 20!-1!#2).-1 2(!2 (!4% !".02%$ !-$ 2. %-130% 2(!2 2(% #.,,)22%$ 20!-1!#2).-1 !0% $30!"+% * See the article on page 55 for more about IDL files. $%2!)+%$ 4)%5 .& 2(% #.,/.-%-21 2(!2 ,!*% 3/ !-$ 13//.02 2(% -#)-! 2..+*)2 %#%,"%0 %5+%228!#*!0$ .30-!+ jill.tidl 1 client.c 3 jill_client.c jill_cswtch.c CC libEncina.a TIDL _jill.idl 2 _jill_cstub.c jill.h IDL jill.h jill_manager.c 4 _jill_sstub.c Client server.c CC libEncina.a manager.c Server 1 Preprocess transaction through the TIDL compiler. 2 Run the IDL file created in 1 through the IDL compiler. 3 Create the client program. 4 Create the server program. '* *$"* .*+"'&+ ' &"& ,! $' +*." /+ "%($%&, ,' (*'." $' +*.* ,!, '-$ -+ 1 %&1 "*&, $"&,+ ,' +,'* $' *'*+ ! $,+, .*+"'& ' &"& +-(('*,+ ,! $' +*." + $"**1 /!"! "+ $"&# "&,' ,! $"&, ' ! $' +*." +-(('*,+ *!"."& ' $' , '* *+! & %" *'.*1 , $+' +-(('*,+ %"**'*"& ' , Lock. !"+ '%('&&, (*'."+ ,/'2(!+ $'#"& + $'+2 +*1 "$","+ ,' &+-* ,! "+'$,"'& & '&+"+,&1 (*'(2 *,"+ ' ,*&+,"'&+ (($","'&+ & *)-+, $'#+ '& *2 +'-*+ '* ++"& ,!% & ,! $'# %& * &+-*+ ,!, ,! $'# *)-+, '& !$ ' ,*&+,"'& /"$$ &', *&, " &',!* ,*&+,"'& !'$+ '&$","& $'# '& ,!, *+'-* '#+ * *$+ -,'%,"$$1 /!& ,! ,*&+,"'& '%($,+ & ,! (($","'& %1 $+' *)-+, *$1 *$+ ' $'#+ /!& ", "+ + ,' ' +' ! $'# +*2 ." $+' +-(('*,+ $'#"& '* &+, ,*&+,"'&+ ! $'#"& +*." "%($%&,+ $' "$ $'#"& "& /!"! ,! (*' *%%* "&+ $'# &%+ & ++'",+ ,! $'# &%+ /",! (!1+"$ *+'-*+ !& (*' *%%* /&,+ ,' $'# (!1+"$ *+'-* ,! $' "$ $'# &% ++'", /",! ,!, *+'-* "+ +("" "& ,! $$ ,' ,! $'#"& +*." & ","'& ,' +-(('*,"& ,! '&.&,"'&$ */*", $'#+ &"& $+' +-(('*,+ "&,&,"'& $'#+ & "&+,&, -*2 ,"'& $'#+ &,&,"'& $'#+ * -+ ,' $* & "&,&, ,' +-+)-&,$1 $'# *+'-* ! -+ ' "&,&,"'& $'#+ & *- ,! (',&,"$ '* $'# %'& '&-**&, ,*&+2 ,"'&+ &+,&, -*,"'& $'#+ * $'#+ ,!, * *&, -, %* /$,,2#* '-*&$ ! +,(+ "&.'$. "& ,-*&"& ,*&+,"'& "&,' $"&, & +*.* 0-,$+ &', !$ & & -+ ,' "%($%&, '%($0 $'#"& $ '*",!%+ ! $'# +*." $+' (*'."+ ,! "$",1 ,' ,*%"& " ,*&+,"'& "+ $'# '* &', Volume. !"+ '%('&&, %"&,"&+ ,! , +,'* "& ,*%+ ' $' "$ , .'$-%+ , (*'."+ ,! "$",1 ,' %& .*1 $* "$+ & ."/ %-$,"($ (!1+"$ "+#+ + ."*,-$ "$ , $+' +-(('*,+ ,! "$",1 ,' %"**'* , .'$-% ,*&+2 (*&,$1 ,' ,! $"&, ! .'$-% '%('&&, +'%,"%+ +*""+ +( '* "&*+ *$""$",1 & %1 "&(2 (*'(*", '* *,"& (($","'&+ !"+ '%('&&, "+ -*2 *&,$1 &', -+ 1 ,! $' '%('&&, TM-XA. ! &"& 2 '%('&&, "%($%&,+ ,! (& "&,* ! "&,* "+ ""*,"'&$ "&,* ,/& ,*&+,"'& %& * & *+'-* %& * +-! + ,+ ! "&,* (*'."+ +,&* /1 '* ,*&+,"'& %& *+ ,' '&&, ,' ,2 ++ ! -+ ' 2 /",! ,! &"& %'&",'* "+ *'%2 %& & ,!"+ + ,! +*.* * "+,*+ ! *+'-* %&2 * /",! $$ (*'.""& ,! &% ' ,! *+'-* %& * & & ++'", +/",! +,*-,-* /!"! ".+ ,! &"& 2 '%('&&, "&'*%,"'& '-, ,! *+'-* %& * & ","'& ,! +*.* %-+, $+' $* + *'.*$ +*.* 2 $$'/+ &"& ,' !''# -( /",! +,&* ,+ (*'-,+ +-! + *$ &'*%"0 & +' '& The following are brief definitions of some of the transaction-related terminology used in the accompanying article. Transactions and ACID A transaction is the logical grouping of a user function performed as a unit so that it maintains its ACID (atomicity, consistency, isolation, and durability) properties. Transactions allow users to execute their programs and modify shared resources like databases in the presence of simultaneous access and updates by multiple users and in the presence of various kinds of failures. Atomicity of a transaction means that either all the actions specified within the transaction will be performed or none of them will be performed. This ensures that a transaction is not partially applied, which is desirable since a partial application of the user transaction could leave the database in an inconsistent state. Consistency means that the database consistency is preserved in the presence of concurrency among multiple users. Isolation means that while the transaction is executing, its effects will not be visible to other concurrently running transactions. Durability means that once a transaction has been successfully completed the effects of that transaction are made permanent and survive failures. Commit, Abort, and Prepare A successful completion of a transaction is called a commit of the transaction. Before a transaction commits, it can be aborted either by the user or by the transaction processing system. A user organizes a set of actions in a transaction with the intent that all of these actions should happen or none of these actions should happen. An example of such a transaction is a transfer of money between a person’s savings account and checking account. This transaction consists of the actions of changing the savings account balance and the checking account balance. If the transaction is successful then both these account balances should be changed, one debited by amount X, and the other credited by amount X. Any other outcome would be in error. When the user submits this transaction and all operations in the transaction are successfully carried out, the transaction is said to have committed. It may not always be possible to commit a transaction. For example, the machine that maintains the checking account balance may be down, or the user may have supplied an incorrect personal identification number (PIN) or decided to cancel the request after submitting it. If the transaction cannot be performed, then it is said to have been aborted or simply to have aborted. If a transaction is aborted (aborts), then none of the actions of the transaction are performed (or if they had been performed they are undone). Transaction processing systems use mechanisms like two-phase locking to ensure the isolation properties, and two-phase commit protocols to ensure that all the participants within a transaction can be atomically committed or aborted.1 A two-phase commit protocol is typically used to commit a transaction in which multiple participants are performing actions requested by the transaction. One of these participants is called the coordinator. In the first phase of the two-phase commit protocol, the coordinator sends a prepare message to all the participants, asking them to prepare the transaction and send a message back indicating whether or not they can prepare the transaction. If all the participants respond that they can prepare the transaction, the coordinator writes a record in its log indicating that the transaction is committed and instructs all the participants to commit the transaction (this is the second phase of the protocol). If any participant responds back to the coordinator that it is unable to prepare the transaction, the coordinator notes in its log that the transaction is aborted and instructs all participants to abort the transaction. When a participant receives a commit message from the coordinator in the second phase, it must ensure that all the actions of the transaction are durably stored on disk. When a participant receives an abort message from the coordinator in the second phase, it must ensure that all the actions of the transaction are undone. Therefore, in the first phase of the two-phase commit protocol, the participant must ensure that data is stored reliably in logs that enable it subsequently to undo the effects of a transaction or make permanent the effects of a transaction. Nested Transaction In the nested transaction model, a transaction (also called a top-level transaction) can be decomposed into a tree-like hierarchy. For example, a debit-credit transaction can be decomposed into two subtransactions, one for debit and one for credit. The debit or credit subtransactions could be further decomposed into smaller subtransactions. A subtransaction maintains the durability and consistency properties of its parents. The difference is that a subtransaction can be aborted and reexecuted without aborting its parent. In the debit-credit example, the debit subtransaction can be aborted and reexecuted without having to abort the entire transaction. In this case the top-level transaction verifies that each subtransaction can be committed at the time of transaction commit. Two-Phase Locking Two-phase locking means that a transaction will have two phases. In the first phase the transaction can only acquire and not release locks, and in the second phase it can only release and not acquire locks. Write-Ahead Logging For data recovery, transaction processing systems use a log to log data that is being modified. In write-ahead logging, data is copied to the log before it is overwritten. This ensures that if the transaction is aborted, the data can be restored to its original state. Reference 1. J. Gray and A. Reuters, Transaction Processing Concepts and Techniques, Morgan Kaufman, 1993. 4 &&)1- ( ($( **&$.$)( .) '% &&- .) )''$.. ( ,)&&$(" !),1, && .# )''$.. .,(-4 )( ), '), , -)/, '(" ,- .#. -/**),. .# $(. ,4 .$)(- ! # ($( **&$.$)( -.,.- .,(-.$)( • $ , )0 ,3 #$- $- /- .) *,)0$ , )0 ,3 1# ( . -- - , -)/, '(" , /-$(" $.- (.$0 $(. ,! 1,$.. ( .) .# $-% $- -.,)3 ( .# ( )''$.- .# .,(-.$)( # 4 -)!.1, )),4 # , )0 ,3 )'*)( (. *,)/ - ( /- - .# , ),$(. - .# )''$. )! .# .,(-.$)( ')(" .# 0,$)/1,$.. ( 3 .# &)" - ,0$ ( (-/, - .# )(-$-. (3 )! , -)/, '(" ,- ( ).# , ($( )'*)( (.- &$% .,(-.$)(& . ( .# - )! .,(-.$)( !$&/, .# .# -.,/./, !$& -3-. ' ), .# , )0 ,& +/ /$(" -3-. ' , )0 ,3 )'*)( (. /() - .# !! .- )! .,(-.$)( 1#$# '$"#. -- 3 .# /- , .,(-.$)( /,$(" , )0 ,3 !,)' -3-. ' !$&/, .#$- )'*)( (. 1$&& Recovery. #$- )'*)( (. ,$0 - .# , )0 ,3 *,).))&- .) 2'$( .# , ),- $( .# &)" **,)*,$. &3 )''$. ), , )0 , !,)' !$&/, - . *,)0$ - , )0 ,& ' '),3 '(4 ),. .,(-.$)(- !), 1#$# $. !$(- , ),- $( .# &)" ( " ' (. )0 ,3 &-) *,)0$ - .# $&$.3 .) * ,!),' ,$(" .# . .) )(-$-. (. -.. • ),. , )0 ,3 #$- (-/, - .#. !. , .,(-.$)( $), ' $ !$&/, - .# -3-. ' '$($-.,.), '/-. *,)0$ ),. $. $- ,)&& % . && *,.$$*.$(" -$. - ,#$0 - .#. , /- 3 .# , )0 ,3 )'*)( (. .) , -.), • ,-# , )0 ,3 #$- *,)0$ - , )0 ,3 !. , -3-. ' !$&4 .# . .) .# -.. $. 1- $( 1# ( .# ,#$0 1- , . /, 3 ,)&&$(" % && .# .,(-.$)(- .#. # (). ( ' , 1& ..4%, )/,(& %"-" )4 " (+.. +# !/ &* /%" ." +# )"!& -" +1"-4 * &* (.+ ,-+1&!". /%" &(&/4 /+ ,"-#+-) +*(&*" '6 0,. /+ -"/" /%" )"!& - %&1". *" "..-4 #+- -" +1"-4 * &* ,-+1&!". "3/"*.&+*. /+ /%" ,-+$-))&*$ (*6 $0$" /+ )'" &/ ".4 /+ &*1+'" /%" #0* /&+*(&/4 ,-+1&!"! 4 /%" * &* /++('&/ -*6 +*.&./. +# (&--4 #0* 6 /&+*. *! ) -+. /%/ ,-+1&!" .&),(" ,-+$-))&*$ ,-6 !&$) .+ /%/ /%" 0."- !+". *+/ %1" /+ ".. /%" /++('&/ )+!0(" &*/"-# ". !&-" /(4 %" 0."- * &*1+'" %&$%6("1"( -*6 +*./-0 /. -/%"- /%* /%" (+2"-6("1"( /++('&/ ((. %" 0." +# -*6 1"-.0. /++('&/ ((. &. *(+$+0. /+ 0.&*$ %&$%6("1"( (*$0$" 1"-.0. ..")(4 (*$0$" .&*$ /%" /++('&/ ,-&)&/&1". !&-" /(4 &. )0 % )+-" #("3&(" 0/ /%" #("36 &&(&/4 +)". / /%" ,-& " +# #- $-"/"- +),("3&/4 * $"*"-( -*6 &. -" +))"*!"! #+- ,,(& /&+* ,-+$-))&*$ %" )+./ &),+-/*/ +*./-0 /. ,-+1&!"! 4 -*6 -" /%" transaction onCommit *! onAbort (0.". %"." +*./-0 /. ,-+6 1&!" )" %*&.) #+- /%" ,-+$-))"- /+ ./-/ /-*. /&+* *! !" (-" +!" /+ "3" 0/" 2%"* /%" /-*. /&+* +))&/. +- +-/. %&. &. &((0./-/"! &* &$ %" ,,(& /&+* ,-+6 $-))"- &. #-""! #-+) /%" /.' +# &*&/&(&5&*$ (( /%" 0*!"-(46 &*$ /++('&/ +),+*"*/. *! )*0((4 )*$&*$ /-*. /&+* &!"*/&#&"-. /-*. /&+*( (+ '. *! +/%"- /-*. /&+*( )"/6 !/ (( /%" +!" - '"/"! 4 /%" /-*. /&+* (0." &. "3"6 0/"! +* "%(# +# /%" .)" /-*. /&+* %"* /-*. /&+* +0*!"! 4 /%" /-*. /&+* +*./-0 / +-/. +- +))&/. +*/-+( &* /%" ,-+$-) 0/+)/& ((4 /-*.#"-. /+ /%" ..+ &6 /"! onAbort +- onCommit (0." . .0/-*. /&+*. +- . +* 0--"*/ /%-"!. 2&/%&* /%" /-*. 6 /&+* %" subTran +*./-0 / ((+2. -"/"! /%-"! /+ " "3"6 0/"! . .0/-*. /&+* 2&/%&* /%" ,-"*/ /-*. /&+* %" subThread +*./-0 / ((+2. -"/"! /%-"! /+ " "3" 0/"! . .",-/" /%-"! 2&/%&* *"./"! /-*. /&+* &$ .%+2. * "3),(" +# /%" &*/"- /&+*. "/2""* /%" +),+*"*/. +# /%" * &* /++('&/ * /%&. "3),(" (&"*/ )'". (( /+ 0,!/" !/ ./+-"! 4 !/." *! /%"* +))&/. /%" /-*. /&+* %" #+((+2&*$ ./",. -" ..+ &6 /"! 2&/% /%" &- ("! *0)"-. &* &$ %" (&"*/ ./-/. /-*. /&+* 4 )'&*$ (( /+ /%" /-*. /&+* )*$"- %" (&"*/ ,"-#+-). /-*. /&+*( 4 )'&*$ (( /+ /%" /-*. /&+*( +),+*"*/ %" /-*. /&+*( +),+*"*/ )'". (( /+ /%" /-*. /&+* )*$"- /+ +/&* /-*. /&+*( !/ #+- /%" /-*. /&+* %" /-*. /&+*( +),+*"*/ ((. /+ /-*.6 )&/ /%" 0."- !/ *! /-*. /&+*( !/ /+ /%" ."-1"- +* /%" ."-1"- )'". (( /+ /%" /-*. /&+*( %" /-*. /&+*( +),+*"*/ ,..". /%" /-*. /&+*( &*#+-)/&+* /+ /%" /-*. /&+* )*$"- Client Begin Transaction Call Function on a Remote Server 9 -*6 (.+ .0,,+-/. *"./"! /-*. /&+*. *! )0(/&,(" /%-"!. +# +*/-+( %" concurrent *! cofor +*./-0 /. * " 0."! /+ -"/" )0(/&,(" +* 0--"*/ /%-"!. 2&/%&* /-*. /&+* %" concurrent +*./-0 / &. 0."! /+ "*(" * ,,(& /&+* /+ +* 0-6 -"*/(4 "3" 0/" ,-"!"/"-)&*"! *0)"- +# /%-"!. 2%&(" /%" cofor +*./-0 / "*(". /%" ,,(& /&+* /+ +* 0--"*/(4 "3"6 0/" 1-&(" *0)"- +# /%-"!. +/% +*./-0 /. ,-+1&!" /%" &(&/4 /+ -"/" )0(/&,(" /%-"!. 2%& % * " -0* "&/%"transaction Starts a Transaction 2 1 Transactional RPC 9 4 10 3 DCE RPC 11 Transaction Manager DCE RPC Transaction Manager 9 Server transaction commands Transactional Logic 9 5 6 7 TM-XA Log Resource Manager Recovery 7 onCommit code to execute onCommit Control Passes Here after Commit Transactional RPC 8 8 Execute Function onAbort SQL Calls code to execute onAbort Control Passes Here after Abort +!" #-$)"*/ &((0./-/&*$ /%" 0." +# /%" -*6 +*./-0 /. Transaction onCommit *! onAbort " ")"- "2("//6 '-! +0-*( End Function Call * "3),(" +# /%" &*/"- /&+*. "/2""* +),+*"*/. +# /%" * &* /++('&/ #-* 97&38&(9.43 2&3&,*7 :8*8 9-* #@% .39*7+&(* 94 (&11 9-* 7*84:7(* 2&3&,*7 #-* 97&38&(9.43&1 ! (42543*39 (&118 9-* :8*7 +:3(9.43 9-&9 2&0*8 " (&118 94 9-* 7*84:7(* 2&3&,*7 #-* 7*84:7(* 2&3&,*7 5*7+4728 9-* &557457.&9* 14(0.3, &3) :5)&9.3, 4+ .98 )&9& #-* :8*7 +:3(9.43 43 9-* 8*7;*7 7*9:738 94 9-&9 97&38@ &(9.43&1 ! (42543*39 <-.(- 9-*3 7*9:738 94 9-* (1.*39 ;.& #-* (1.*39 (&118 9-* 97&38&(9.43 2&3&,*7 94 (422.9 9-* 97&38&(9.43 #-* 97&38&(9.43 2&3&,*7 :8*8 & 9<4@5-&8* (422.9 57494@ (41 94 (422.9 9-* 97&38&(9.43 9 (439&(98 &11 9-* 97&38&(9.43 2&3&,*7 5&79.(.5&398 9-&9 -&;* 5&79.(.5&9*) .3 9-* 97&38&(@ 9.43 &(- 97&38&(9.43 2&3&,*7 :8*8 9-* 7*(4;*7> &3) 14, (42543*398 94 14, 9-* 57*5&7* &3) (422.9 )*(.8.438 ):7.3, ;&7.4:8 5-&8*8 4+ 9-* (422.9 57494(41 +47 9-* 97&38&(9.43 3(.3& 5**7@94@5**7 (422:3.(&9.438 47 574;.)*8 97&38&(9.43&1 &((*88 94 )&9& 8947*) 43 2&.3+7&2*8 &3) .9 5*7+4728 & ).897.':9*) 9<4@5-&8* (422.9 4+ )&9& 8947*) 43 2&.3+7&2*8 &3) 8*7;*78 #-.8 &114<8 2&.3+7&2* &551.(&9.438 94 5&79.(.5&9* .3 &3 3(.3& 97&38&(9.43&1 &551.(&9.43 &3) (43;*78*1> &3 3(.3& &551.(&9.43 .8 &'1* 94 5&79.(.5&9* .3 & 2&.3+7&2* 97&38&(9.43&1 &551.(&9.43 3(.3& :8*8 & 9<4@5-&8* (422.9 8>3( 57494(41 8>3( 1*;*1 94 (422.9 & 97&38&(9.43 9-&9 &((*88*8 )&9& 43 & 2&.3+7&2* &3) &3 8*7;*7 8*7;.(*8 &7* .251*2*39*) &8 & *=*(:9.;* &3) & ,&9*<&> 574):(9 #-*8* 574):(98 (&3 '* 5:7(-&8*) 8*5&@ 7&9*1> #-* *=*(:9.;* .8 & 1.'7&7> 9-&9 7:38 .3 & (*11 &3) 9-* ,&9*<&> .8 & 8*7;*7 9-&9 &(98 &8 & ,&9*<&> '*@ 9<**3 &3) " (422:3.(&9.438 57494(41 #-.8 ,&9*<&> &114<8 3(.3& &551.(&9.438 94 (422:3.(&9* <.9- $ &551.(&9.438 9>5.(&1 (43+.,:7&9.43 .3;41;*8 &3 3(.3& &551.(&9.43 7:33.3, .3 & (*11 &3) (422:3.(&9.3, <.9- & ,&9*<&> 8*7;*7 7:33.3, .3 9-* 8&2* (*11 #-* ,&9*<&> 8*7;*7 (422:3.(&9*8 <.9- 9-* 2&.3+7&2* :8.3, &3 " (422:3.(&9.438 5&(0&,* 574;.)*8 9-* &'.1.9> 94 <7.9* 3(.3& &551.(&9.438 9-&9 &(9 &8 *.9-*7 9-* (447).@ 3&947 47 9-* 8:'47).3&9* .3 & 97&38&(9.43 '*9<**3 &3 3(.3& 8>89*2 &3) & 2&.3+7&2* -489 3(.3& &551.(&9.43 574,7&22*78 :8* 9-* @ +47 (4).3, 9-* (4254@ 3*39 #-* ,&9*<&> 97&381&9*8 9-* @ (43;*78&9.438 +742 # 94 $ #-.8 .8 .11:897&9*) .3 ., #-* 897:(9:7*) +.1* 8>89*2 .8 & 7*(47)@47.*39*) +.1* 8>89*2 '&8*) 43 9-* %5*3 " 89&3)&7) 9 574;.)*8 &3 &19*73&@ 9.;* 94 49-*7 (422*7(.&1 7*84:7(* 2&3&,*78 &3) 9-* &'.1.9> 94 8:55479 3*89*) 97&38&(9.438 9-&9 &((*88 )&9& .3 9-* 897:(@ 9:7*) +.1* 8>89*2 9 &184 574;.)*8 +:11 97&38&(9.43&1 .39*,7.9> #-* 7*(47)8 .3 9-* 897:(9:7*) +.1* 8>89*2 (439&.3 ).++*7*39 +.*1)8 9-&9 (&3 '* .3)*=*) '> 57.2&7> 0*>8 &3) 8*(43)&7> 0*>8 #-* 897:(9:7*) +.1* 8>89*28 +.*1) &3) 7*(47) 9>5*8 &7* 8.2.1&7 94 9-48* :8*) '> 9-* 7*(4;*7&'1* 6:*:.3, 8*7;.(* )*8(7.'*) '*14< &114<.3, &551.(&9.438 94 -&;* *&8> &((*88 * LU 6.2 applications are mainframe applications that are written to run on top of IBM’s LU 6.2 protocol. HP-UX Machine Application PPC Executive HP-UX Machine TCP / IP PPC Gateway Mainframe SNA L U 6.2 Application (43+.,:7&9.43 8-4<.3, 9-* ,&9*<&> 97&381&9.3, # 57494(41 94 " 57494(41 94 '49- 8>89*28 3 &)).9.43 9-* 897:(9:7*) +.1* 8>89*2 8:5@ 54798 & .39*7+&(* <.9- 9-* 897:(9:7*) +.1* 8>89*28 *=9*73&1 +.1* -&3)1*7 .1*8 .3 9-* 897:(9:7*) +.1* 8>89*2 &7* 47,&3.?*) .3 43* 4+ 9-* +4114<.3, 9-7** <&>8 *397>@8*6:*3(*) 7*1&9.;* &3) @97** (1:89*7*) 8** ., !*(47)8 .3 &3 *397>@8*6:*3(*) +.1* &7* 8947*) .3 9-* 47)*7 .3 <-.(- 9-*> &7* <7.99*3 .394 9-* +.1* *< 7*(47)8 &7* &1<&>8 &55*3)*) 94 9-* *3) 4+ 9-* +.1* 7*1&9.;* +.1* .8 &3 &77&> 4+ +.=*)@1*3,9- 81498 !*(47)8 (&3 '* .38*79*) .3 9-* +.789 +7** 8149 +4:3) +742 9-* '*,.33.3, 4+ 9-* +.1* &9 9-* *3) 4+ 9-* +.1* 47 .3 & 85*(.+.*) 8149 .3 9-* +.1* @97** (1:89*7*) +.1* .8 & 97**@897:(9:7*) +.1* .3 <-.(- 7*(47)8 <.9- &)/&(*39 .3)*= 3&2*8 &7* (1:89*7*) 94,*9-*7 Entry-Sequenced File Structure First Record Inserted Second Record Inserted • As records are inserted in time they are appended to the end. • Deleted records leave a blank space. Relative File Structure Record 1 Record 0 • To look up, insert, or delete record n, go to (nrecord size). B-Tree Cluster Record Record Record • Records are organized as a B tree. The record key is used to traverse the tree to locate the appropriate record. .1* 47,&3.?&9.438 8:55479*) .3 9-* 897:(9:7*) +.1* 8>89*2 *(*2'*7 *<1*99@&(0&7) 4:73&1 # ./-0/0- !$' .4./ ( $. .$(+' ) !./ 0/ '$($/ $) !' 3$$'$/4 2# ) *(+- /* - '/$*)' /. . '/$*)' /. . +-*1$ +*2 -!0' ) *(+' 3 .. . ()/$. 2$/# *+ -/$*). .0# . . ' / %*$) ""- "/ ) .* *) # ./-0/0- !$' .4./ ( +-*1$ . '*26' 1 ' .. /* - 6 *-. 2#*. !*-(/. - 0. -6 !$) ) *)/-*'' )$) +-*1$ . - *1 -' ,0 0 $)" . -1$ 2#$# $. '4 - *) /*+ *! /# .$ /**'&$/ ) . -1 - *- *(+*6 ) )/. #$. . -1$ +-*1$ . ++'$/$*). 2$/# /# $'$/4 /* /-)./$*)''4 ,0 0 ) ,0 0 / ++'$/$*) 1 '6 *+ -. ) 2-$/ ++'$/$*). /#/ /-)./$*)''4 0+/ / $) - .*0- ()" - '$& /. ) ,0 0 *- 6 ,0 0 / 2$/# /# "0-)/ /#/ $/# - */# *+ -/$*). 2$'' .0 *- */# *+ -/$*). 2$'' *-/ ) 3(+' *! /-)./$*)''4 - *1 -' ,0 0 2*0' )&$)" ++'$/$*) /#/ . ). ' // - /* 0./*( - $! /# 0./*( -. ') "* . '*2 5 -* # /$*) /* " ) -/ /# ' // - ) ,0 0 ) +-* .. '/ - / /# ) *! /# 4 # - *1 -' ,0 0 ).0- . /#/ /#$. /$*) 2$'' '24. + -!*-( 1 ) $) /# 1 )/ *! .4./ ( !$'0- . ) 1)/" *! /# ,0 0 $)" (* ' $. /#/ ++'$/$*). ) *!!'* .*( 2*-& /* *) / '/ - /$( #$. 6 ! -- (* *! *(+0/$)" $. $) *)/-./ 2$/# /# ./4' *! *((0)$/$*) $) 2#$# ) ++'$/$*) $)1*& . . -1$ /* * /# +-* ..$)" . .**) . $/ ) ,0 0 $. '$) - / ./-0/0- ' ( )/. $) /# / ./-06 /0- - ,0 0 $) +-/$0'- *)!$"0-' *- - ) /# ,0 0 *0-. *) !$-./ $) !$-./ *0/ .$. ) ' 6 ( )/ *! - *1 -' ,0 0 $)" . -1$ ,0 0 $. ./-0/0- $) - *-6*-$ )/ !*-(/ )$) .0++*-/. ,0 0 . /#/ (4 *)/$) ' ( )/. *! $!! - )/ / /4+ . ) ' ( )/ & 4 $. . ,0 ) *! *) *- (*- !$ '. *! ) ' ( )/ /4+ /#/ - 0. /* - /-$ 1 ) ' ( )/ )$) +-*1$ . /# $'$/4 /* !$) *) *- (*- - 6 *1 -' ,0 0 $)" . -1$ . -1 -. $) ) )$) '' # . -1 - ) $)/ -)''4 .0++*-/ (0'/$+' ,0 0 . /. ,0 0 . / $. *'' /$*) *! ,0 0 . 2$/#$) - *1 -' ,0 0 $)" . -1$ . -1 - ++'$/$*). ) ,0 0 *- ,0 0 /* *- !-*( +-/$0'- ,0 0 . / 0 0 . 2$/#$) ,0 0 . / ) ..$") +-$*-$/4 '.. . - '/$1 /* # */# - '.* . -1$ ' 1 '. !$) #*2 /* $./-$0/ /# ,0 0 . .* /#/ /# ,0 0 . 2$/# '*2 - +-$*-$/4 - )*/ ./-1 # - *1 -' ,0 0 $)" . -1$ .0++*-/. 2 & '*&$)" #1$*- *- 3(+' 2# ) /2* /-)./$*). *)6 0-- )/'4 ,0 0 !-*( ,0 0 # */$). '*& *) /# !$-./ ' ( )/ /#/ $/ ) '*& *) /# ,0 0 / $. +*..$' !*/# /-)./$*) /#/ */$) '*& *) /# . *) ' ( )/ $) /# ,0 0 /* *(($/ !*- /# /-)./$*) /#/ */$) '*& *) /# !$-./ ' ( )/ $) /# ,0 0 )*/# - *). 6 ,0 ) *! /# 2 & '*&$)" +*'$4 (4 /#/ /-).6 /$*) /#/ *). 0/$1 '4 ,0 0 . (0'/$+' ' ( )/. (4 )*/ ' /* +' '' /# . ' ( )/. $) /#/ ,0 0 $) ) 0)$)6 / --0+/ . ,0 ) # - *1 -' ,0 0 $)" . -1$ 0. . /# . 0-$/4 ( #)$.(. /* . 0- .. /* /# ,0 0 ($)$./-/$1 '4 ( - 2' //6&- *0-)' . .. *)/-*' '$./. ) . / 0+ /* 0/#*-$5 0. -. *- "-*0+. /* ' /* + -!*-( ,0 0 *+ -/$*). '$& - !-*( ,0 0 ,0 0 /* /# ,0 0 ,0 0 !-*( /# ,0 0 ' / ,0 0 ) .* *) - *1 -' ,0 0 $)" . -1$ ,0 0 ) .)) 0.$)" ' ( )/ & 4. 0-.*-. !*- . ,0 )/$' .. *- ' ( )/ $ )/$!$ -. $)''4 /# - *1 -' ,0 0 $)" . -1$ +-*1$ . /# $'$/4 /* - "$./ - ''&. 2$/# /# . -1$ . . -1 - *) ''& ,0)/$/$ . .0# . /# )0( - *! ' ( )/. .$5 $) 4/ . ) 2*-& 0(0'/$*) *- 3(+' 2$/# /#$. ! /0- $/ $. +*.6 .$' /* 2-$/ ++'$/$*). /#/ ) .& /# - *1 -' ,0 0 $)" . -1$ . -1 - /* $)!*-( /# ( 2# ) / ) ' ( )/. #1 ) ,0 0 # )$) /-)./$*) +-* ..$)" (*)$/*- +-*1$ . ) $)!-./-0/0- !*- ++'$/$*) 1 '*+( )/ -0)6/$( .0++*-/ ) ($)$./-/$*) / .0++*-/. /# 1 '*+( )/ *! /#- 6 /$ - -#$/ /0- $) 2#$# (0'/$+' '$ )/. ) .. / ./*- $) (0'/$+' - .*0- ()" -. $& /# )$) (*)$/*- '.* #. /# *) +/ *! '' *- /# )$) (*)$/*- /# '' $. '' ) # )$) '' $. .0. / *! /# '' ) (0'/$+' )$) ''. ) !$) 2$/#$) '' ''. .-$ $) /# -/$' *) +" ) )$) '' (4 *)6 .$./ *! (0'/$+' )* . )* $. $/# - +0'$ )* *- . 0- )* . 0- )* $. )* *) 2#$# /# )$) . -1 -. ) . 0- '4 -0) 0'$ )* . - )* . 2# - *)'4 '$ )/. - -0) -1 -. - )*/ *)!$"0- /* -0) *) +0'$ )* . ) 3(+' *! ) )$) '' $. .#*2) $) $" $& ) )$) '' #. '' ($)$./-/*2#* $. - .+*).$' !*- + -!*-($)" ($)$./-/$1 /.&. Public Node Client Secure Node Secure Node Node Manager Application Server Node Manager Structured File System Server Cell Manager Secure Node Recoverable Queueing Service Server Node Manager Application Server # *(+*) )/. $) ) )$) '' The encina cell contains the following server processes: Cell Manager. There is one cell manager process in an Encina cell. The cell manager maintains the data needed to configĆ ure and administer the Encina cell. This data is stored in a data repository managed by the structured file system. The data describes how the application servers are configured to run on the secure nodes and includes the authorization inĆ formation for those servers. The cell manager also monitors the state of the node managers and keeps statistics on the use of the servers by the clients. Node Manager. There is one node manager process in each secure node in an Encina cell. The node manager monitors the application servers that are running in that node. If an application server fails, the failure is detected by the node manager which then restarts the application server. Application Server. The server part of a user application is an application server. Typically, application servers accept calls from an Encina cell's clients and then process the user reĆ quests by accessing one or more resource managers. AppliĆ cation servers may be recoverable or ephemeral. A recoverĆ able application server is one that uses the underlying Encina/9000 facilities to provide the ACID (atomicity, consisĆ tency, isolation, and durability) transactional properties. When a recoverable server fails, it performs recovery on restart which guarantees the consistency of the data. An ephemeral server does not provide the ACID properties to the data it accesses. An application server consists of a scheduling daemon process (called mond) and one or more processes (called PAs) that accept client requests. PAs are multithreaded processes. The mond coordinates the clients' requests for servers and assigns a PA to a requesting client. In this respect the role of the mond is similar to that of the RPC daemon rpcd in DCE. The mond also monitors the PAs and automatically restarts a PA in the event that the PA dies. An example of an application running in an Encina/9000 cell is shown in Fig. 11. In the Encina/9000 monitor environment, a client can make a server request using explicit binding or transparent bindĆ ing. With transparent binding the client simply makes a call to the server and the monitor environment is responsible for routing the client request to an appropriate server. With exĆ plicit binding, a client explicitly binds to a particular server. The Encina/9000 monitor provides a call to request a list of all servers exporting a particular interface, a call to get a handle to a mond for one of those servers, and a call to get a handle to a PA that is under the control of a particular mond. When using explicit binding, a client can specify that the Client Interface 1 Application Server 1 Interface 2 Application Server 2 mond PA mond PA PA PA PA mond = Scheduling Daemon PA = Multithreaded Process An example of an encina cell's application servers. client block if the PA is busy or that it get back a status if the PA is busy. In addition, the client can request that the PA be reserved for that client by specifying a longĆterm reservation to the server. In general it is easier to code the client to use transparent binding. This also has the advantage that the monitor code can perform load balancing of client requests among the available PAs. The monitor software uses a probabilistic algoĆ rithm to route client requests to the available PAs in a ratio predefined by a system administrator. With transparent bindĆ ing the monitor software will use an existing binding if one exists, or it will create a binding to an appropriate server if no such binding exists. If all the available servers are busy, the client waits at the server for a free PA. Although it is more complicated to write clients that use exĆ plicit binding, it does provide the user with the ability to select the PA on which the call is executed. There are certain situations in which explicit binding used in conjunction with longĆterm reservation of PAs is advantageous. For example, consider a client process servicing a large number of users. In this case it would be advantageous for that process to reserve a PA and then direct the various user requests to that PA. Having a direct connection to a PA reduces the time needed to connect to a PA on subsequent calls. LongĆterm reservation makes the PA unavailable to other clients, and it must be used with care. Administratively, a timeout interval can be specified so that if there are no client calls to the PA within that interval, the longĆterm reservation is canceled. When an application server is initialized, it can specify one of the three scheduling policies: exclusive, concurrent shared, and shared. Shared scheduling is provided primarily for compatibility with previous releases, and its use is not recommended. The default policy is exclusive scheduling. With this scheduling only one client RPC can be executing within a given PA at any time, and the PA is scheduled exĆ clusively for the entire duration of the client transaction. This has the advantage that the programmer does not have to be concerned about issues related to threading. This is required when the PA is accessing a database that is not thread safe (which is currently the case for most RDBMSs). With concurrent shared scheduling, many clients can be exeĆ cuting within a PA at the same time, and the multithreaded PA assigns a different thread for each client request. If the PA accesses global or static variables, they must be protected by DCE synchronization facilities such as mutexes.* Concurrent shared scheduling should only be used when linking with threadĆsafe libraries. Concurrent shared scheduling provides the best performance with the lowest use of resources. The monitor allows the creation and access of monitorĆ shared memory (HP 9000 virtual memory) which can be shared among the PAs within an application server. This allows a quick and easy way for the PAs to share transacĆ tional data. MonitorĆshared memory is much cheaper than, say, using an external RDBMS, but care should be exercised when using the monitorĆshared memory because it is the user's responsibility to perform the appropriate locking when accessing the shared memory. Since locks must be * Mutexes, or mutual exclusion locks, are used to protect critical regions of code in DCE threads. December 1995 HewlettĆPackard Journal 64'& +5 #-40 *#4 5*' 105'/5+#- 0( +/530&6%+/) &'#&-0%,4 3#/4#%5+0/#- 5+.'0654 %#/ $' &'%-#3'& (03 #$035+/) 46%* 53#/4#%5+0/4 /%+/# 1307+&'4 7#-6'<#&&'& ('#563'4 +/ 5*' #3'#4 0( 4:45'. #&.+/+453#5+0/ #/& *+)* #7#+-#$+-+5: *' .0/+503 #--084 5*' 64' 0( 5*' 3'%07'3#$-' 26'6'+/) 4'37+%' (03 26'6'+/) 803, +5'.4 8*+%* #3' '7'/56#--: 130< %'44'& $: # .0/+503 #11-+%#5+0/ 4'37'3 4+/) 5*' 26'6'& 3'26'45 (#%+-+5: '/53+'4 0( 5*' #113013+#5' 5:1' #3' 26'6'& 50 5*' 3'%07'3#$-' 26'6'+/) 4'37+%' 26'6'& 3'26'45 (#%+-+5: &#'.0/ 8+-- 5*'/ &'26'6' 5*' 3'26'45 #/& (038#3& 5*' 3'26'45 50 5*' #113013+#5' / /%+/# 4:45'. #&.+/+453#503 .645 %0/(+)63' 5*' /%+/# %'-- #/& &'(+/' 5*' #&.+/+453#5+7' +/5'3(#%'4 (03 5*' 7#3+064 4'37'34 +/ 5*' 4:45'. / /%+/# %'-- .645 $' %-04'-: 5+'& 50 # -0)+%#- #&.+/+453#< 5+7' 6/+5 0( 803, #/& 5*' &#5# #%%'44'& 50 &0 5*+4 803, 4*06-& $' +/ 5*' 4#.' %'-- 5 +4 1044+$-' (03 #11-+%#5+0/4 50 +/5'301'3#5' #%3044 /%+/# %'--4 64+/) '91-+%+5 $+/&+/)4 *'3'(03' 5*' '9#%5 $06/&#3+'4 0( #/ /%+/# %'-- .645 $' &'(+/'& $: %#3'(6--: #/#-:;+/) 5*' #11-+%#5+0/4 36//+/) +/ 5*' 4:45'. 8+5* %#3'(6- %0/4+&'3#5+0/ $'+/) )+7'/ 50 4'%6< 3+5: /6.$'3 0( 64'34 #/& .#%*+/'4 -0%#5+0/ 0( &#5# #/& 5*' #11-+%#5+0/4 5*#5 #%%'44 5*' &#5# *' /%+/# .0/+503 #-40 1307+&'4 # 5+.'3 .'%*#/+4. 50 #--08 4'37'34 50 4%*'&6-' # %#-- 50 $' +446'& #5 # -#5'3 5+.' *+4 (6/%5+0/#-+5: +4 1307+&'& 53#/4#%5+0/#--: 40 5*#5 5*' %#-- .#&' 8+5*+/ 5*' 4%01' 0( # 53#/4#%5+0/ +4 4%*'&6-'& +( 5*' 53#/4#%5+0/ %0..+54 *' %#-- &0'4 /05 0%%63 +( 5*' 53#/4< #%5+0/ #$0354 *' /%+/# .0/+503 1307+&'4 4611035 (03 #11-+%#5+0/ &'7'-01'34 8*0 8+4* 50 +/5')3#5' 5*'+3 /%+/# %-+'/5 8+5* (03.4<$#4'& 64'3 +/5'3(#%' 500-4 /%+/# +4 +/5'< )3#5'& 8+5* # (03.4<$#4'& 500- (30. " /% • • • • • • / 46..#3: 5*' /%+/# .0/+503 1307+&'4 5*' (0--08+/) $'/'(+54 +.1-+(+'& 130)3#..+/) (03 83+5+/) %-+'/54 #/& 4'37'34 650.#5+% &'5'%5+0/ 0( (#+-63'4 #/& 3'45#354 0( .0/+503 &#'.0/4 #/& 4 650.#5+% -0#& $#-#/%+/) $'58''/ %-+'/54 #/& 4'37'34 0--'%5+0/ 0( 45#5+45+%4 $: 5*' .0/+503 (03 4'37'3 64' +.1-+(+'& %'/53#- 1-#%' 0( #&.+/+453#5+0/ (03 &+453+$65'& %-+< '/54 #/& 4'37'34 611035 (03 *+)*-: %0/%633'/5 #%%'44 50 3'-#5+0/#- &#5#$#4'4 /%+/# 46110354 5*' (0--08+/) 45#/&#3&4 • !1'/ ! ! 9 < • • • • • • • • • /%+/# +/5'301'3#5'4 8+5* 5*' (0--08+/) 130&6%54 3#%-' /(03.+9 /)3'4 :$#4' 1'/ .#+/(3#.' .#+/(3#.' *' /%+/# 500-,+5 *#4 $''/ 64'& 50 4611035 05*'3 53#/4#%5+0/ 130%'44+/) 130&6%54 #/& 1307+&' 5*' $#4' (6/%< 5+0/#-+5: 50 4611035 05*'3 130&6%54 -+,' 1'/ #/& '#%* 36//+/) 0/ 501 0( /%+/# 0/ 5*' <! 01'3#5+/) 4:45'. '%'.$'3 '8-'55<#%,#3& 063/#- • • • • • 4:45'. #&.+/+453#503 .645 %3'#5' 5*' -0) 41#%' 64'& $: /%+/# #/& 5*'/ $3+/) 61 5*' (0--08+/) /%+/# %0.10/'/54 536%563'& (+-' 4:45'. '-- .#/#)'3 0&' .#/#)'3 '37'34 46%* #4 5*' 3'%07'3#$-' 26'6'+/) 4'37+%' #/& 5*' )#5'8#: +( 5*': #3' /''&'& *' 3'26+3'& #11-+%#5+0/ 4'37'34 /%+/# 1307+&'4 #&.+/+453#5+0/ 500-4 (03 5*' (0--08+/) %0.10/'/54 -0) 4536%563'& (+-' 4:45'. .0/+503 3'%07'3#$-' 26'6'+/) 4'37+%' #/& 5*' 3'45 0( 5*' 500-,+5 *'4' 500-4 1307+&' 5*' #113013+#5' -08<-'7'- %0..#/&4 (03 #&< .+/+45'3+/) 5*'4' %0.10/'/54 /%+/# #-40 1307+&'4 # 1'3-<$#4'& 500- %#--'& encsetup 8*+%* 1307+&'4 *+)*'3<-'7'4:45'. #&.+/+453#5+0/ (#%+-+5+'4 *' 7#-6'<#&&'& 4:45'. #&.+/+453#5+0/ (#%+-+5+'4 #3' &'4%3+$'& -#5'3 +/ 5*+4 4'%5+0/ +/#--: /%+/# #-40 1307+&'4 -+$3#3+'4 (03 &'7'-01+/) 4:45'. #&.+/+453#5+0/ 130&6%54 8*+%* #3' 7'3: 64'(6- (03 %6450.'34 &'7'-01+/) 5*'4' ,+/&4 0( 130&6%54 /%+/# 4:45'. #&.+/+453#5+0/ +4 7'3: %-04'-: 5+'& 50 4:45'. #&.+/+453#5+0/ *' %'-- .645 $' %0/(+)< 63'& $'(03' 5*' /%+/# %'-- %#/ $' %0/(+)63'& /%+/# #-40 .#,'4 64' 0( 5*' &+3'%503: 4'37+%' *' &'(#6-5 /%+/# 3005 %'-- &+3'%503: +4 &'(+/'& #4 /.:/encina 5*+4 &'(#6-5 %#/ $' %*#/)'& +( /''&'& /%+/# %0.10/'/54 3')+4< 5'3 5*'+3 /#.' 6/&'3 5*+4 &+3'%503: +5*+/ 5*+4 &+3'%503: 5*'3' #3' &+3'%503: '/53+'4 (03 5*' 3'%07'3#$-' 26'6'+/) 4'3< 7+%' 5*' 4536%563'& (+-' 4:45'. 5*' /%+/# .0/+503 53#/4#%5+0/#- #/& 1''3<50<1''3 %0..6/+%#5+0/ 03 '9#.1-' '#%* 3'%07'3#$-' 500-,+5 4'37'3 3')+45'34 #/ '/53: +/ 5*' /.:/encina/trpc &+3'%503: trpc 53#/4#%5+0/#- #/& '#%* 3'%07'3#$-' .0/+503 4'37'3 3')+45'34 #/ '/53: +/ 5*' /.:/encina/tpm/trpc &+3'%503: tpm /%+/# .0/+503 *' 64' 0( 5*' &+3'%503: #--084 5*' /%+/# 4:45'. #&.+/+453#503 50 3'453+%5 #%%'44 50 7#3+064 3'4063%'4 *' * Perl (Practical Extraction Report Language) is a UNIX programming language that is designed to handle system administrator functions. 3934%- !$-).)342!4/2 #!. 53% 4//,3 ,)+% acl_edit 4/ '2!.4 ! 53%2 ! '2/50 /2 !. /2'!.):!4)/. 0%2-)33)/. 4/ !##%33 ! 0!2; 4)#5,!2 2%3/52#% .#).! 53%3 4(% !54(%.4)#!4)/. !.$ !54(/2):!4)/. -%#(!.)3-3 4/ -!).4!). 3%#52)49 . .#).! 3%26%2 #!. 30%#)&9 4(% ,%6%, /& !54(/2):!4)/. ! 53%2 /& 4(% 3%26%2 -534 (!6% 4/ !##%33 4(!4 3%26%2 #,)%.4 7)3().' 4/ !##%33 ! 3%#52% 3%26%2 -534 "% !54(%.4)#!4%$ 7)4( !.$ 7(%. 4(% #,)%.4 #!,,3 4(% 3%26%2 4(% 3%26%2 53%3 4(% 3%#52)49 -%#(!.)3-3 4/ 6%2)&9 7(%4(%2 )4 3(/5,$ !,,/7 !##%33 4/ 4(% 53%2 !##%33 #/.42/, !.$ 3%#52)49 !2% $)3; #533%$ ). 4(% !24)#,%3 /& 0!'%3 !.$ 2%30%#4)6%,9 02/6)$%3 ! ,!9%2 &/2 .#).! 34!.$3 &/2 $)342)"54%$ #/-054).' !00,)#!4)/. -!.!'%-%.4 )3 !. !2#()4%#452% !.$ -%4(/$/,/'9 &/2 02/6)$).' 5.)&/2- 393; 4%- -!.!'%-%.4 &/2 02/$5#43 4(!4 %.!",% $)342)"54%$ #/-; 054).' 35#( !3 .#).! !.$ . !$6!.4!'% /& )3 4(!4 )4 02/6)$%3 ! #/.3)34%.4 ,//+ !.$ &%%, &/2 !,, /& 4(%3% 02/$5#43 4/ 4(% 53%2 !.$ !)$3 ). 4(% /6%2!,, %!3% /& 53% /& 4(%3% 02/$5#43 4 02/6)$%3 ! '2!0()#!, 53%2 ).4%2&!#% !3 7%,, !3 ! 3(%,, 02/6)$%3 ! 3%4 /& !#4)/. 6%2"3 4(!4 #!. "% -/$)&)%$ "9 /04)/.3 !.$ /0%2!4% /. /"; *%#43 )' 3(/73 4(% 2%,!4)/.3()0 "%47%%. 4(% #/--!.$;,).% ).4%2&!#% ,!9%2 4(% 3(%,, !.$ 3934%- !$-).)342!4)/. -!.!'%2 )3 ! -%.5;$2)6%. ).4%2&!#% 53%$ 4/ -!.!'% !. .#).! 3934%- (% 3(%,, )3 ! #/--!.$;,).% ).4%2&!#% 7()#( #!. "% 53%$ 4/ 490% ). !$-).)342!4)6% #/--!.$3 !.$ 4(% 3(%,, !2% ,!9%2%$ /. 4/0 /& 4(% 3#2)043 7()#( #/.6%24 4(% #/--!.$3 4/ .!4)6% .; #).! !$-).)342!4)/. #/--!.$3 (% #/--/. ,//+ !.$ &%%, 02/6)$%$ "9 %.!",%3 ! 3934%- !$-).)342!4/2 4/ -!.!'% 4(% $)&&%2%.4 $)342)"54%$ 393; 4%-3 !.$ !00,)#!4)/.3 "!3%$ /. 7)4( ! #/.3)34%.4 !.$ 53%2;&2)%.$,9 ).4%2&!#% $/%3 4()3 "9 02/6)$).' #/.3)3; 4%.4 53% /& 6/#!"5,!29 4/ 2%02%3%.4 !#4)/.3 (% #/.3)34%.4 53% /& 39.4!8 !.$ 3%-!.4)#3 )3 )-0/24!.4 "%#!53% /& 4(% $)&; &%2%.4 35"3934%-3 4(!4 )3 "5),4 50/. (% #/.3)34%.#9 02/6)$%$ "9 )-02/6%3 53%2 %&&)#)%.#9 !.$ ,/7%23 %22/2 2!4%3 02/6)$%3 ! .!452!, 7!9 &/2 3934%- !$-).)342!4/23 4/ %802%33 4(% !#4)/.3 4(!4 4(%9 7!.4 /2 %8!-0,% 4/ #2%!4% ! 3425#452%$ &),% 3934%- 3%26%2 ! 3934%- !$-).)342!4/2 7/5,$ 490% 4(% #/--!.$ create sfsserver ()3 #/--!.$ )3 #/.6%24%$ "9 4/ 4(% 5.$%2,9).' .#).! ,/7;,%6%, #/--!.$3 .%%$%$ 4/ #2%!4% 4(% 3%26%2 User DCAM Shell SAM DCAM CLI Layer Underlying Encina/9000 Components (% ).4%2&!#% /& )3 -/2% 53%&5, &/2 0%/0,% 7(/ !2% &!-),)!2 7)4( /2 !2% '%44).' !#15!).4%$ 7)4( .#).! (% 3(%,, )3 '%.%2!,,9 53%$ &/2 %&&)#)%.#9 "9 %80%2)%.#%$ .#).! 3934%- !$-).)342!4/23 . !$$)4)/. 4(% 3(%,, )3 !,3/ 53%$ &/2 72)4).' !.$ #534/-):).' 3934%- !$-).)342!4)/. 3#2)043 )3 /"*%#4;/2)%.4%$ "*%#43 2%02%3%.4 )4%-3 4(!4 #!. "% %.#!035,!4%$ !.$ !#4%$ 50/. .#).! /"*%#43 #!. "% !. .#).! #%,, ! 3%26%2 /2 ! 42!.3!#4)/. "*%#43 (!6% !442); "54%3 /2 %8!-0,% ! 3425#452%$ &),% 3934%- 3%26%2 (!3 !. !33/#)!4%$ !442)"54% 4(!4 $%3#2)"%3 4(% ,/' 6/,5-% !33/#)!4%$ 7)4( 4(% 3%26%2 #4)/.3 !2% 6%2"3 4(!4 !#4 50/. 4(% /"*%#43 /2 %8!-0,% 4(% !#4)/.3 #2%!4% 34!24 -/$)&9 !.$ 34/0 #!. "% 53%$ 4/ !#4 50/. !. /"*%#4 #4)/.3 (!6% /"*%#4 ).$%0%.; $%.4 3%-!.4)#3 ). 4(!4 4(%9 (!6% 3)-),!2 3%-!.4)#3 2%'!2$,%33 /& 4(% 490% /& /"*%#4 4(%9 !2% 7/2+).' /. /2 %8!-0,% 4(% 6%2" #2%!4% #!. "% 53%$ 4/ #2%!4% !. .#).! #%,, ! 3425#452%$ &),% 3934%- 3%26%2 !. !00,)#!4)/. 3%26%2 !.$ 3/ /. #4)/.3 (!6% /04)/.3 . !#4)/. #!. "% 30%#)&)%$ 7)4( 4(% $%&!5,4 /04)/.3 /2 4(% !$-).)342!4/2 #!. 30%#)&9 4!3+;30%#)&)# /04)/.3 7)4( 4(% !#4)/. 4!3+ $%&).%3 ! 0!)2).' /& !. !#4)/. 7)4( !. /"*%#4 4!3+ #/.3)343 /& /.% !#4)/. /.% /"*%#4 :%2/ /2 -/2% /04)/.3 !.$ /.% /2 -/2% !442)"54%3 /2 %8!-0,% start cell -Name name, 7()#( 4%,,3 4/ 34!24 50 4(% .!-%$ #%,, !,/.' 7)4( /4(%2 /04)/.!, 0!2!-%4%23 )3 ! 4!3+ 4(!4 #!. "% 30%#)&)%$ 7)4( 4(% 3(%,, & 4(% 0!2!-%4%23 !2% ./4 30%#)&)%$ 4(% 3(%,, 7),, 02/-04 &/2 4(% 0!2!-%4%23 . 4(% 0!2!-%4%23 !2% $)30,!9%$ !3 &)%,$3 ). 4(% 0!.%, !.$ #!. "% %.4%2%$ & 4(% 2%15)2%$ 0!2!-%4%23 !2% ./4 %.4%2%$ !. %22/2 )3 $)30,!9%$ ./4(%2 53%&5, &%!452% /& )3 4(% (%,0 &!#),)49 7()#( #!. "% 53%$ "9 4(% 3934%- !$-).)342!4/2 4/ ).4%2!#4)6%,9 /"; 4!). (%,0 /. ! 4/0)# ()3 )3 !,3/ 53%&5, &/2 3/-%/.% 7(/ )3 ,%!2.).' .#).! !$-).)342!4)/. 3).#% )4 ,)343 4(% 6!2)/53 !,4%2.!4)6%3 !.$ /04)/.3 4/ ! #/--!.$ !.$ 02/6)$%3 !. %!39 7!9 &/2 !$-).)342!4/23 4/ '%4 ! &%%, &/2 4(% 6!2)/53 #/-; -!.$3 !.$ /04)/.3 / -!.9 53%23 4(% 2%!, 6!,5% /& )3 4(% !$$%$ #!0!"),); 4)%3 )4 (!3 4(!4 '/ "%9/.$ 7(!4 .!4)6% .#).! !$-).)3; 42!4)/. 3500/243 ()3 ).#,5$%3 ()'(;,%6%, 3%26%2 #/.&)'52!; 4)/. 4!3+3 7()#( !2% -5#( %!3)%2 #/-0,%4% 3500/24 &/2 42!.30!2%.4 2%-/4% #/.&)'52!4)/. &2/- !.97(%2% ). 4(% #%,, !54/2%34!24 /& 4//,+)4 3%26%23 ,)+% 4(% 3425#452%$ &),% 393; 4%- !.$ 4(% 2%#/6%2!",% 15%5%).' 3%26)#% !.$ 3500/24 &/2 %26)#%5!2$ 3 &!),/6%2 &%!452% !.9 #534/-%23 (!6% ! 342)#4 2%15)2%-%.4 &/2 $!4! 4/ "% !6!),!",% !4 !,, 4)-%3 !4! 2%0,)#!4)/. 7)4( .#).! #!. "% 02/6)$%$ "9 4(% 53% /& $!4! -)22/2).' 7)4( -)22/2%$ $)3+3 . !$$)4)/. 4/ 02/6)$% $!4! !6!),!"),)49 ). 4(% #!3% /& -!#().% &!),52%3 .#).! #!. "% ).4%'2!4%$ 7)4( 4(% 7)4#(/6%2 !.$ 4(% %26)#%5!2$ 02/$5#43 $%; 3#2)"%$ "%,/7 (%3% 02/$5#43 !,,/7 ./$% &!),52%3 4/ "% (!.$,%$ !.$ 4(%9 02/6)$% ! 3%4 /& 3#2)043 4(!4 &!#),)4!4% 4(% !$-).)342!4)/. /& ! ()'(,9 !6!),!",% 3934%- * Failover refers to the process that occurs when a standby node takes over from a failed node. 934%- !$-).)342!4)/. 4//,3 7)4( %#%-"%2 %7,%44;!#+!2$ /52.!, * !&/0.&10"! /5/0") 0%"." * " )*5 1/"/ +# #&(1."/ *! #&(1."/ +# !&/'/ *"03+.'/ *! ) %&*"/ * (( &), 0 2&(&(&05 &* " 0%" /5/0") &/ +),+/"! +# /"2".( *+!"/ +**" 0"! 3&0% *"03+.' (&*'/ 0%"." ." )+." ,+&*0/ +# #&(7 1." 0%0 +1(! &), 0 2&(&(&05 "03+.' #&(1."/ ." *+0 !"/ .&"! %"." 10 1/"./ 3%+ *""! %&$%(5 2&((" * &* ,,(& 0&+*/ /%+1(! 0.5 0+ 2+&! /&*$(" ,+&*0/ +# *"07 3+.' #&(1." *5 0" %*&-1"/ "4&/0 #+. !"(&*$ 3&0% !&/' #&(1."/ %" ,."#".."! )"0%+! +# !"(&*$ 3&0% !&/' #&(1."/ &/ 0+ 1/" 7 )&..+."! !&/'/ 3&0% (+$& ( 2+(1)" )*$". 0%". %+& "/ ." 0+ 1/" +. 0+ 1/" * &* )&..+."! !&/'/ %" !2*0$" +# 0%" 7 )&..+."! !&/' 0" %*&-1" &/ 0%0 &0 &/ $"*".(7,1.,+/" /+(10&+* 3&0% ,,(& &(&05 0+ (( '&*!/ +# !0 (&'" 0%" /0.1 01."! #&(" /5/0") *! / # 0%" !0/" * %*!(" 0%" (+$& ( 2+(1)" )*$". +*#&$7 1."! #+. *+ +*/&/0"* 5 0%"* &0 /%+1(! " 1/"! #+. !0/" !0 &..+. 3.&0" +*/&/0"* 5 +. )&..+. +*/&/0"* 5 /%+1(! " 1/"! #+. * &* !0 +. #+. !0/" !0 0%0 * %*!(" +*/&/0"* 5 )&..+.&*$ * " 1/"! / ."(7 0&2"(5 &*"4,"*/&2" /+(10&+* 0+ %*!(" !&/' #&(1."/ 10 &0 %/ )*5 /&*$(" ,+&*0/ +# #&(1." &* 0%" !&/' ,0% *! &/ *+0 $++! #+. 0%" /%+.0 .*!+) 3.&0" 1,!0"/ 0%0 ." 05,& ((5 #+1*! &* 0.*/ 0&+* /5/0")/ * &* )&..+.&*$ %/ 0%" !&/!2*0$" 0%0 &0 &/ *+0 &*0"$.0"! &* 0%" 7 +,".0&*$ /5/0") *! * 0%"."#+." +*(5 " 1/"! #+. * &* !0 *! *+0 #+. /5 +. 0/ !2*0$" &/ 0%0 &0 * 10+)0& ((5 %*!(" )+." #&(1." +*!&0&+*/ 0%* 7 )&..+.&*$ * &* )&..+.&*$ &/ /(+3". 0%* 7 )&.7 .+.&*$ 10 &0 %/ #/0". ." +2".5 0&)" %"." ." 03+ ,.&).5 /+(10&+*/ #+. *+!" #&(1."/ 3&0 %7 +2". *! ".2& "1.! * 3&0 %+2". ,.&).5 *+!" *! /0*!5 *+!" ." +*#&$1."! 3&0% )1(0&%+/0"! !&/'/ %" ,.&).5 *+!" .1*/ &* 0%" *+.)( /" %" /0*!5 *+!" &/ (/+ +**" 0"! 0+ 0%" !&/'/ *! 1/"/ %".0"0 ,.+0+ +( 0+ !"0" 0 #&(1." +# 0%" ,.&).5 *+!" %"* 0%" /0*!5 *+!" !"0" 0/ 0%0 0%" ,.&).5 *+!" %/ #&("! &0 //1)"/ 0%" ,.&).5 *+!"/ &!"*0&05 5 ++0&*$ +## 0%" ,.&7 ).5 *+!"/ !&/'/ *! 1/&*$ 0%" ,.&).5 *+!"/ !!."// %" /0*!5 *+!" 0%"* 1/"/ 0%" ,.&).5 *+!"/ !&/'/ 0+ ."++0 *! 0+ ."/0.0 0%" /5/0") ,.+ "//"/ *! ,,(& 0&+*/ %&/ ((+3/ #/0 ."/0.0 #0". 0%" ,.&).5 *+!" %/ ./%"! ."/1(0&*$ &* /)(( !+3*0&)" %" ,.&).5 *! /0*!5 *+!"/ /%+1(! " #.+) 0%" /)" %.!3." #)&(5 &0% 3&0 %+2". 0%" * &* ,.+ "//"/ ." ."/0.0"! 3%"* 0%" /0*!5 *+!" ."++0/ /&*$ * &*/ 0.*/7 ,."*0 &*!&*$ (&"*0/ ." 10+)0& ((5 ." +**" 0"! 0+ 0%" /".2"./ +3"2". &* 0%&/ /" (&"*0 0.*/ 0&+*/ 3&(( '"", +.0&*$ 1*0&( 0%" #&(+2". &/ +),("0" * ".2& "1.! ,,(& 0&+*/ *! !0 ." "* ,/1(0"! / , '$"/ 0%0 * " .1* +* 2.&+1/ *+!"/ +# (1/0". ".2& "1.! ((+3/ 0%" 1/". 0+ !"#&*" 0%" , '$"/ *! " % , '$" %/ ,.&+.&0&6"! (&/0 +# *+!"/ &0 * .1* +* ".2& "1.! "*/1."/ 0%0 , '$" +*(5 .1*/ +* +*" *+!" 0 0&)" , '$" &/ !"#&*"! 5 /0.01,/%107 !+3* / .&,0 *! * .",."/"*0 *5 ,,(& 0&+* %" *+!"/ .1**&*$ , '$"/ )+*&0+. " % +0%"./ /001/ *! ."/0.0 , '$"/ 3%"* 0%"5 !"0" 0 0%" #&(1." +# *+0%". *+!" , '$" * " * * &* ,,(& 0&+* /".2". .1**&*$ 1*!". /&*$(" * &* *+!" )*$". %" , '$" * " ")". "3("007 '.! +1.*( (/+ &* (1!" //+.0"! 0++('&0 /".2"./ (&'" 0%" /0.1 01."! #&(" /5/0") ." +2".(" -1"1"&*$ /".2& " +. * * &* )+*&0+. ,0&+*((5 , '$" * %2" +*" +. )+." !!."//"/ # /," &#&"! , '$"/ !!."// &/ //+ &0"! 3&0% 0%" *"03+.' &*0".# " +* 0%" ) %&*" 1.."*0(5 "4" 107 &*$ 0%" , '$" &0% ".2& "1.! 1/". * +*#&$1." /&),(" #&(+2". / %")" %" 1/". * (/+ !"#&*" /&*$(" , '$" 0%0 * "4" 10" +* ,.&).5 +. '1, *+!" %&/ / %")" &/ $"*".( *! * " 1/"! #+. 0%" * &* (+$ /0.1 01."! #&(" /5/0") ." +2".(" -1"1"&*$ /".2& " )+*&0+. *! *! +." /".2"./ * &* /".2"./ * " &*0"$.0"! 3&0% ".2& "1.! * 0%&/ /" 0%" * &* /".2"./ /%+1(! " +*#&$7 1."! &* ".2& "1.! (1/0". *! , '$" /%+1(! " ."0"! #+. 0%" /".2"./ %" , '$" /%+1(! +*0&* .1* *! %(0 / .&,0/ #+. 0%" /".2"./ 3%& % /," &#5 0%" 0&+*/ 0+ 0'" 3%"* , '$" &/ /0.0"! +. 0".)&*0"! %" 0&+*/ &* .1* / .&,0 &* (1!" !!&*$ 0%" ."(+ 0(" !!."// 0+ 0%" *"03+.' &*0".# " )+1*0&*$ (( (+$& ( 2+(1)"/ *! ((&*$ * * &* / .&,0 0+ /0.0 (( 0%" * &* /".2"./ %" 0&+*/ &* %(0 / .&,0 &* (1!" ((&*$ * * &* / .&,0 0+ %(0 (( 0%" * &* /".2"./ 1*)+1*0&*$ (( 0%" (+$& ( 2+(1)"/ *! .")+2&*$ 0%" ."(+ 0(" !!."// ".2& "1.! +##"./ )+." #("4&(" /+(10&+* #+. %&$% 2&(&(&05 0 * " +*#&$1."! 3&0% !"!& 0"! /0*!5 /+(10&+* /&)&(. 0+ 3&0 %+2". +. &0 * " +*#&$1."! &* )+." (1/0".7(&'" +*#&$1.0&+* 0 (/+ %/ #/0". ." +2".5 0&)" /&* " #&(+2". *+!"/ !+ *+0 *""! 0+ ."++0 * &* (/+ ,.+2&!"/ 0%" &(&05 0+ ,".#+.) ,,(& 0&+*7 ("2"( .",(& 0&+* +# !0 * (0".*0&2" 0+ ,,(& 0&+*7("2"( .",(& 0&+* &/ 0%" .",(& 0&+* +# !0 ,.+2&!"! 5 !0/"/ 0/"7("2"( .",(& 0&+* %/ 0%" !2*0$" +# "&*$ 0.*/7 ,."*0 0+ 0%" 1/". *! &0 &/ ."(0&2"(5 "##& &"*0 ,,(& 0&+*7 ("2"( .",(& 0&+* +* 0%" +0%". %*! &/ ("// !","*!"*0 +* /," &#& ,(0#+.)/ *! * " 1/"! 0+ ,.+2&!" .",(& 7 0&+* .+// ,(0#+.)/ * !!&0&+* &0 &/ )+." #("4&(" *! * " ,".#+.)"! &* /5* %.+*+1/ +. /5* %.+*+1/ )**". 0 )5 " &),+.0*0 0+ ,".#+.) /5* %.+*+1/ .",(&7 0&+* .+// 0+ %&"2" #/0". ."/,+*/" 0&)" %" !&/!2*0$" +# ,,(& 0&+*7("2"( .",(& 0&+* &/ 0%0 0%" ,,(&7 0&+* !"2"(+,". )1/0 !"/&$* *! &),(")"*0 0%" .",(& 0&+* / %")" * "4),(" +# .",(& 0&+* 1/&*$ * &* &/ )/0"./(2" .",(& 0&+* +# !0 3&0% !"#".."! 1,!0"/ 0+ 0%" /(2" * 0%&/ / %")" 0%" )/0". +,5 +# 0%" !0/" &/ )&*0&*"! +* ) %&*" %" ,,(& 0&+* 1,!0"/ 0%" )/0". !0/" *! /0+."/ +,5 +# 0%" 1,!0" &* 0%" ." +2".(" -1"1"&*$ /".2& " &0% 0%&/ /"01, 0%" ,,(& 0&+* * 0.*/ 0&+*((5 1,!0" 0%" )/0". !0/" *! /0+." +,5 +# 0%" 1,!0"/ &* 0%" ." +2".(" -1"1"&*$ /".2& " 0 (0". 0&)" 0%" !0 &/ 0.*/ 0&+*((5 !"-1"1"! #.+) 0%" ." +2".(" -1"1"&*$ /".2& " *! ,,(&"! 0+ 0%" /(2" !0/" +* *+0%". )7 %&*" %" /0."*$0% +# 0%&/ ,,.+ % &/ 0%0 0%" 03+ )7 %&*"/ %+(!&*$ +,&"/ +# 0%" !0 !+ *+0 %2" 0+ " .1**&*$ 0 0%" /)" 0&)" *! 0%" 1,!0" * " !"#".."! 0+ 0&)" 3%"* 0%" (+! +* 0%" /5/0") &/ (+3 0 (/+ 2+&!/ %2&*$ 0+ !+ +*(&*" 03+7,%/" +))&0 .+// 0%" ) %&*"/ +37 "2". 0%"." &/ 0%" !.3 ' 0%0 0%" .",(& &/ *+0 +*/&/0"*0 3&0% 0%" )/0". *! 0%" 1,!0"! !0 3+1(! " 1*2&((" 3%&(" 0%" )/0". *+!" &/ !+3* *(! *" /$! *((*) )%)6.! -$%/!/0-!. %)6 '0 ! *-+*-/! !)/-'%5! / -$%/!/0-! -!#%*) !)/-'6 %5! / -$%/!/0-! ) -)$ / -$%/!/0-! ) !$ *" /$!.! -$%/!/0-!. 2! *).% !- *-+*-/%*) /* ! ) !)/%/4 /$/ $. !)/-' / +-*!..%)# !)/!- '*/! / %/. $! ,0-/!-. $! *-+*-/%*). 0.%)!.. %. #!*#-+$%''4 .+-! *1!- .!1!-' -!#%*). ) !$ -!#%*)' !)/!- $. / +-*!..%)# !)/!- $ -!#%*) '.* *)/%). (0'/%+'! -)$ *""%!. ) /$! -)$ *""%! $. )0(!- *" 0.!-. 2$* -! !3!0/%)# /-)./%*). ) /$! +./ *(+)%!. !(6 +'*4! (%)"-(!. / /$! *-+*-/! $! ,0-/!-. 2$!-! '' /$! / 2. (%)/%)! $%. 2. !3+!).%1! /* (%)/%) ) /$! -!.+*).! /%(! #*/ 2*-.! . /$! / *) /$! (%)6 "-(! %)-!.! ) *-+*-/! !)/-'%5! / -$%/!/0-! / %. ./%'' (%)6 /%)! / /$! (%)"-(! $*./ *))!/%*) /* /$! (%)"-(! %. /$-*0#$ #/!24 ($%)!. /$/ -0) /$! )%) !3!0/%1! !+!) %)# *) /$! 1%'%'%/4 -!,0%-!(!)/. /$! #/!24 ($%)!. *0' ! %(+'!(!)/! 2%/$ /$! $%#$6 1%'%'%/4 .*'0/%*). (!)/%*)! !-'%!- )! *+/%*) 2*0' ! )*/ /* $1! )4 ($%)!. / /$! -)$ *""%!. *- /$! -!#%*) *""%!. 0/ -/$!- /* $1! . / /$!.! *""%!. 2$%$ /'& %-!/'4 /* /$! (%)"-(! '/!-)/!'4 /$! -!#%*)' !)6 /!-. *- /$! -)$!. *0' $1! ($%)!. ) /$! -!#%*)' ($%)! *0' -*0/! -!,0!./ "-*( -)$ /* /$! *-+*6 -/! !)/!- '' /$! / %. (%)/%)! / /$! *-+*-/! !)/!) /$!-! %. )* '*' 0.%)!.. / / !%/$!- /$! -!#%*)' *"6 "%!. *- /$! -)$ *""%!. $%. -$%/!/0-! %. .$*2) %) %# $%. -$%/!/0-! %. 0.!"0' %" %/ %. $- /* -!+'! /$! (%)6 "-(! ($%)!. ) / '/!-)/!'4 %/ (4 ! +*..%'! /* *""'* .*(! *" /$! / "-*( /$! (%)"-(! /* ($%)!. -0))%)# /$! 6 *+!-/%)# .4./!( / /$! *-+*-/! / !)/!- $! -!#%*)' !)/-'%5! / -$%/!/0-! %. .%(%'- /* /$! *-+*-/! !)/-'%5! / -$%/!/0-! !3!+/ /$/ /$! / %. +-/%/%*)! -*.. /$! -!#%*)' / !)/!-. $! / *0' '.* ! ./*-! 2%/$ /$! (%)"-(! / /$! *-+*-/! / !)/!- '%!)/. ) -0) / /$! -)$ ($%)!. *- / /$! -!#%*)' !)/!- +/%*)''4 /$!-! *0' ! /.! / !%/$!- /$! *-+*-/! !)/!- *- /$! -!#%*). /$/ ..%./. %) -*0/6 %)# -!,0!./ /* /$! ++-*+-%/! -!#%*)' !)/!- $%. -$%6 /!/0-! %. .$*2) %) %# ) /$! -!#%*)' !)/-'%5! / -$%/!/0-! )%) .!-1!-. /4+%''4 -0) *) /$! -!#%*)' ($%)!. '%!)/. ) -0) / /$! -)$ *- -!#%*)' *""%!. '%!)/. !(+'*4 '**&0+ (!$)%.(. /* '*/! /$! ++-*+-%/! .!-1!- ) /$!) (&! ''. /* /$! .!-1!-. ) )%) ) ! 0.! /* /-)./%*)''4 -! *- 0+ /! / ./*-! / /$! *-+*-/! !)/!- $! -!#%*)' !)/-'%5! / -$%/!/0-! $. /$! 1)/#! *" 1*% %)# *//'!)!& +-*'!(. 2$!) '-#! )0(!*" /-)./%*). $1! /* ! +-*!..! *) .%)#'! /.! %)! /$! /.!. -! .+-! /$-*0#$*0/ /$! -!#%*). /$!4 '' ) $) '! /-)./%*)' !.. /* /$! / ''*2%)# $%#$!- 1*'0(! *" /-)./%*)' /-""% ) %/%*) %" 0.!-. "-!,0!)/'4 !.. / / /$! )!-4 -!#%*)' !)/!- )!/2*-& /-""% 2%'' ! '*'%5! ) /$! -)$ / -$%/!/0-! !$ -)$ (%)/%). %/. '*' -)$ / $! / ) '.* ! ##-!#/! ) (%)/%)! / /$! *-+*-/! !)/!- 0/ 0.!-. +-%(-%'4 6 !.. /$! / / -)$ ($%)! +/%*)''4 *-+*-/! *-!#%*)' !)/!-. ) (%)/%) -*..6-!"!-!)! /.! /* ..%./ 2%/$ -*0/%)# 0.!- -!,0!./ /* /$! ++-*+-%/! -)$ $%. -$%/!/0-! %. .$*2) %) %# $! (%) 1)/#! *" /$%. .*'0/%*) %. /$! "./ -!.+*).! /%(! .%)! "*- (*./ /-)./%*). / ) ! '**&! 0+ '*''4 ) !3+!).%1! /2*6+$.! *((%/. *1!- /$! ) ! (%)%(%5! $! -2& *" /$%. .$!(! %. $1%)# /* (%)6 /%) '-#! )0(!- *" /.!. ) (%)%./!-%)# /$!( $! )%) +-* 0/ +-*1% !. ) ++'%/%*) !1!'*+6 (!)/ !)1%-*)(!)/ "*- !1!'*+%)# ++'%/%*). ) /$! -0)6/%(! .0++*-/ "*- -0))%)# ) (%)%./!-%)# /$! ++'%6 /%*). /. ./-!)#/$. -! /$! "'!3%%'%/4 %/ +-*1% !. "*- %./-%0/! ++'%/%*). *(+-! /* /$! /- %/%*)' /.! +-* 0/. ) %/. ./-*)# %)/!#-/%*) 2%/$ /$! +-* 0/ / +-*1% !. ) %)"-./-0/0-! "*- 0./*(!-. /* 2-%/! -!'%'! Corporate Center Corporate Center Consolidated Data and Backup Mainframe Maintains All Data Mainframe Some Data Regional Offices Regional Office Regional Machine Regional Machine May Route Branch Connections Regional Machine Holds Regional Data Data Branch Office Branch Offices Connects to Corporate Directly or Through Region *-+*-/! !)/-'%5! / -$%/!/0-! Use Applications in Regional Office -!#%*)' !)/-'%5! / -$%/!/0-! !!(!- !2'!//6&- *0-)' Corporate Center Hold Some Consolidated Data Mainframe Some Data Regional Center #/& 3'%52' #11-+%#4+0/3 (02 4*'+2 .+33+0/9%2+4+%#- &#4# &&+9 4+0/#--8 4*' /%+/# 120&5%4 1206+&'3 #&&'& 6#-5' +/ 4*' #2'#3 0( 3834'. #&.+/+342#4+0/ #/& (#5-4 40-'2#/%' 705-& -+,' 40 4*#/, #8 #3+ (02 *+3 +/3+)*4(5- &+3%533+0/3 0/ 3'6'2#- 401+%3 .'/4+0/'& +/ 4*+3 1#1'2 Regional Machine Regional Machine Branch Machine Branch Machine Hold Some Consolidated Data Some Data Branch Office Data • Use Applications in Branches • Maintain Own Data Encina/9000 Reference Manuals, #24 5.$'2 '7-'44 #%,#2& 0.1#/8 OSF DCE Application Development Guide '6+3+0/ 2'/4+%' #-- 033 Nested Transactions: An Approach to Reliable DistribĆ uted Computing, 2'33 CAE Specification Distributed Transaction Processing: The XA Specification, "1'/ 53/#%, #/& ,'+' +3, 22#8 #33 402#)' #5-4 0-'29 #/%' (02 '26'23 HewlettĆPackard Journal, !0- /0 5/' 11 40 HP-UX 9.* and 10.0 for HP 9000 Series 700 and 800 computers are X/Open Company UNIX 93 branded products. UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited. 2#/%* &#4# #2%*+4'%452' '%'.$'2 '7-'449#%,#2& 052/#- X/Open is a registered trademark and the X device is a trademark of X/Open Company Limited in the UK and other countries. Open Software Foundation and OSF are trademarks of the Open Software Foundation in the U.S. and other countries.