Document 12961193

advertisement
 '" "
#$"%$ "#$ " ##
!!$ #
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.
Download