From b849313663e550cbea78352e42a0263a8fa0811b Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Tue, 11 Feb 2014 12:10:35 +0100 Subject: [PATCH 01/19] Init --- .gitignore | 7 + Makefile | 22 +++ TA_status.png | Bin 0 -> 35441 bytes Transaktionen.tex | 383 ++++++++++++++++++++++++++++++++++++++++++++++ komp_matrix.png | Bin 0 -> 46331 bytes protokoll.png | Bin 0 -> 25401 bytes protokoll2.png | Bin 0 -> 19991 bytes sperrgranulat.png | Bin 0 -> 29824 bytes 8 files changed, 412 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 TA_status.png create mode 100644 Transaktionen.tex create mode 100644 komp_matrix.png create mode 100644 protokoll.png create mode 100644 protokoll2.png create mode 100644 sperrgranulat.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0e6f7d --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.fls +*.pdf +*.aux +*.out +*.log +*.toc +*.fdb* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b6d90e3 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +PDF = Transaktionen + +all: $(PDF) + +continuous: $(PDF).continuous + +%.continuous: %.pdf + latexmk -jobname=$(@:%.continuous=%) -pvc -pdf $(@:%.continuous=%).tex + +$(PDF): $(PDF).pdf + +%.pdf: %.tex + latexmk -jobname=$(@:%.pdf=%) -pdf $< + +clean: + latexmk -c -f $(PDF).tex + +distclean: + latexmk -C -f $(PDF).tex + rm -f $(PDF).pdf + +.PHONY: all clean distclean $(PDF) continuous diff --git a/TA_status.png b/TA_status.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b50d2e525e97b667810019289b021c5c72ac7c GIT binary patch literal 35441 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 LH5KztUG)DS^GR&B literal 0 HcmV?d00001 diff --git a/protokoll.png b/protokoll.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3a4141ec595c736f962f664aee6b47e024d56 GIT binary patch literal 25401 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 A>i_@% literal 0 HcmV?d00001 diff --git a/protokoll2.png b/protokoll2.png new file mode 100644 index 0000000000000000000000000000000000000000..bac99416658cbdfccc9d86efc4a56f3f28cf787f GIT binary patch literal 19991 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 SvlDJ8K@hwX!Lb_WpZp(QAqWcq literal 0 HcmV?d00001 diff --git a/sperrgranulat.png b/sperrgranulat.png new file mode 100644 index 0000000000000000000000000000000000000000..cf81190e0f00acd0764ca04137a8d9651d9ed137 GIT binary patch literal 29824 zcma%jWmuJKv@MDPA|MUY4T5xsbc=wLG>W8jH>iMsq;w-8NDByplyrA@NJ^J9+{xbO zoag*F=ia-XN8NkDTI>7XcfNCuImVbPNLf(^9hC?b0RaJBPF7L{0pZqP_@jh!8=hfP z@X&yN?%B#}IUpclG~fKW6~lx<3{N6E$~}`pp1qBVj)<&)#@>#AK!G49DW>K+xtZdo ztFS@dmS&RZ%=}$8EArEq=x9sYN2M#$QtjBK4#iB~u@-YqdK*%)8F#U$p6X31%Q04c za(0|D8<>4uFOs@#x82S4jC(|F?zpRKqnp3aO<*;FGwncVZs+(^*wB)P_!eA13KlBY z&A+lj@D~F11NiH0Ga~#=v3K*te|!4>_OpLp^1r<9zdilm-m~8hGk^|0>urY-5iv0i zc}sIM4J~c8%Z|07VX4^w6*DvQV*l^9@R^yJ4%+3VB}Yd`5>irnrBpQLM^u3&6P9Lo zVP(;fe5EtxdJ4aOjfjn{vtRz`>x($Mv$G>&+MAsE#3L^^cfmzM zOKT!WDQ(>HZ}zh!3{rtRp^s4CrXwLBC?cT|M(ncY=H`C+^5sRb{ugD2gVnz9;9%-F z-SRhhEPwxQO>J&&c6Tf2>CI5fgk@!Ci*vq*h3dccSta*irKj3v=|#UB&DHtwPEb&gL7is!J)u+Y*M^mfuz**l zjQ5$8B`DAp?Ls6Q8yhss*i~9{TadRjuuy+gz1jROud=&Q^vMS zm;LayoHXyr3M=BOZvXoPvCKLZmJ_7`56BzG1|FhudybbH2gk>chZ6G!K5^NeP9IuN zOiawq&Xx$kP*+hoTaGjMRw~HHSD;;vO37unC<(WxD@;w@)Y&Ny!8<&x_Tq<>qy} zpCqk#czCF#Ln`flOBd_cet;9pt_-DOkcGj#($Ws0a?^V40~BGBWbM=)z33 z%kS1u)#uOId3eZ#Ju6E~_lI*;gFk-U9q>B;J7D&mfK`8OV`FIjaG@z6|La#TCv)PC&_nUz{U9dom@O=M+dpFKnO zBu&v>EdTx;jy*OGPJVv=-oYyy8&-OHm(|{s%F4=&d$CJyfYchY7pGg zOeCbO+Ggh51B-7nS4YbIMlExI0~gi5!$@2vhm-gX%J9g@(9qER`}fZe*MINqu+q`t zV`6^J%=A6KJvlkq6!5@jZ_&T3tSl&~V`HosOFUCLG?DGqZSl2V?+~l1s(#qarSdz_ ziMKa58^Ibl3PApRLPK+B%s^ZF&(_uxpDWMl%i^zJ$A3C)KuiYlyP~8+WDz}lNa-gX zMxyoN#qnyIkF=y@d{UB#_eEt^*3xv9!+iplW?IO|>gwwJ;_jy1@pgNQQZ+O1VQ|JE z_K6KB8?G+TAsE+JR-9M5AF>PAvmuy0gS%~M4M`zmH@yu{Z> zPD!b+px`kM4$i}e4^N~8>YJl3IU&Cv?(TjbFgsDUvSQ{5niti!e*gZx`{CNVBht+D z^jFr_WJE;T&!1B=F+G)KdoF5VK)xYdV!G7+Npp@p7@zsoM^$AcDvE%0yUmE> z`s#cqD~smdy`W5)@W!}7TAI4gpG6fE6tuJ+`dq-8vglUso*iw3goGR(I&LO6SGZz~ zTRNMV&?WWIU6c?)vNqxn@wp0dFoP4&-qnR8vv=+*Bo6UFn-)e|p{1qO{M+Mne|dLz z_xnGOj~`K|)#=m3b%pxQ5)`tls|EeVgF-_K^YS8NV?X4enmx_4*if8B4{|+!H~!j~ zi*Lot-A$dliZGN>zs-okulI@T$~BkCI_~}Zh_xU7JZ53}ySLXcg^i8<#N%%=x5em3 zJf_FY%>43n|2(kkF}S(8k&y$QCGqV27(+~vT&#z5x6p(vkP_xghlq#>E1s+N=j-!K zODijMbo8U6BVu>laZ4TyJFPMk^yBB^&cx*(ZR1<)9+1k^WPSM(N-D@BA~H8VK0Z7Q zw>dIBJ>AifTUr|FDWB=nI5VTCr{{Hfb_5yoXm|H5+z@g6MS_Q*>Zb?GLzc0t8XO^;PGb2^|L{M1s^Bx!G2@&n?nl$ID4;3Q4`Fj>l6&QR! zKC!>!=5epipM`l3u)(Xc2|o`9$aq{tTX5tZ1xR-qK82xcxpHxFb#`@)6&oncrlq7X zGciqN27F$qO%wK_@==F3ypRb zhDoTVn-RC}TeW^=?39Rdme*#_prfF833U+_6?J2@un8#^mJ7}t&RH1dPvdnG!If&Z0%h0-KR;Yt zToir&Q~#y)^+zl$b!Gz@A9U{{P~evC2WzDLbmy9<9CdLsPY5luR4TAvSqndqlz+d% z)w`KkomA!RRW#qe^x&xw%UOWb54Ke7wWZn+2!U zk|87}B-Fa@EsmGG<}~ev=&H3}?yPcHHRIBTb5e9iNl?Ib_ob)j1;Dck>lq?U%x{kC zgWcWT_i*TN@$t8(s}81q*uW>)3{F!K6DRp1KVW2J)c@(Y4)~0Pg#|E_1WM>bPC6kW z&z?kXD4bXX1U@Ib3-Dv8ze%68ktw+#b3;kpoGjn)xjvuUslUeP!>4dWmG3MP3i_yU z^~%|WOk~hHx+MBeq1+KeyZp6)$G)Y*P$nA{|b4`DcXb>C>lfZl_RyFRTgK4etnl?DM+5 zss*(63VmlNC;Z0`-skBtF)@%pPL<~GIhppQwvfYFT5Ji1@)&Lr5fP#J!y3*5sW7aQ z91qdMIl)vN+KegbKErkeMQmR?9rO^wghsSG^C#NPc@ z2E?JE5etdCqJpPp|JHNg4nr(!m71L5y#3aR3hg(Yp{asaGM8o?X2&0-ubT(nlAj{o zxyE@LhY~#z ze8GIvvApev^nFgvM)Qa>V4S)=`b(^=(4LFG;WqLO^2YqmTWj*ciBq!TA+}Nond01e za6A(eD|4CU$GfhEV(=Sg!V35s3;9_N4^pu_0&^95^1n@BhcBSizKDpK5HL-oNKbgX zhG5=vOOz(?X^#-uiJzsjjmwjAwtiwxKgAj+c_v0)H~pRbyqeduXz`49Yh4i#?oct+ z2L>v&p)d*8`q#SN-sa-#sUW=t4N$*2L*Z8e@{5qiDUC-~s81K!r^#Nf?opd2CB1(~ zMni`1_WDJGtIAVmM?9oDeF zzczf!6XCjex3#3;CFjcG?VC&cG@me=&+OYdrLf4(-2D~t=3N5b>FkX5eSfHEGh~@< z^>_~@QUm%P(VT#(Hv{@lt-jYbzlJ&!xQxg?A7sT!@$MD^is~ev$vfv~bJY66wlxbB z#SskCM4vjysiH(g2j$mV;642W-+%Le*eu}4nyRqz#S{TH>NE3vdpm=`!COhOMRuxq zBlMf4$aZ=z#a#SzO;%_zhVkJ)pZqpZMOj6fFp-_g%nbigP}{HlcW~(xgSG*|fd#Tb zpPO-5Wi^E{;nkA&w-0rw$PSrHVK>{y5xbCYF5KhK^MItEj~20&YPh9_w9p}d^loo| zVH1$QjXx0QD!wMgwuB3>7T_21@+CDBs}7^uleB31=TrKnFXh8f>chs1H#M>6`s44# zKDZNvjPPpEd}ZBHGN{egU0B;~3m3L%4LeW~sf2}P59Qxqp=_*me@-7byxor-{w^!# zX0Zon4NdiYzvIYyO0d5C_loau+;v?1ys1dN7q4g{jR@PS;rIHDagO7f69>GzVAGU0 zKQp{L=6WxM%ll}>hp}UiXvrG>xwcedhS!LXH<2Chx&A$;&~gj- zpeYI9-95*YdpPhc^0~2nv#euot^&oL_zsh;g2%R}*IoFWrjX()>XfnWZ%Ap3 zvYt=p&G&S;YY%SD|2vFb>ZSP3I}e*h7yW17trc`3i{C~R&05gEzEv8AARZvAEhjlA zP3IG+u#G0iluqyNlU7 zJZP?vL9s`=XTEvopWvf9ba;e5&K zV0--7axhB{?jkleRzN@iE@)t20B{D>H?YKxi!fR3zg+Ve5_wr!a-z|HAQeu=4ygT9quD$rfsGl=$589{;68- zX%DH0{riEJV!EReAJ96wyV367=VWJZ@Q7Df0Z6TsB2aGkyA@a&$GwVW%_vdLcQw!o zX=`gkvyO#@)!BKpay2+O7=%OL+T1){@8i=M{b-ANkDZ;pD~^?3ScL%>76onwsx$#X zob}94?%WEX1(19Ps$FcvP>Z$8836*buwZx(QZaF*+svK{d!5$iC62FiSxX*U+nc_> zqWZg=+<8ZQ$P!@FXmVZWsVV`^>#~UeJ<`+Q=TI;sBVoOwpkqEsD=z){6Q~eqm!HYW zy~AIrFVz&2n<)HRIX~XaA8UdWf^?tou`RT@37n>6LazNYGnXPZ(Yw2Fi*Q%au~c}` z2y<}_L)<`9AR&QB*=$nQ)z#%-Z%>FO4XaD`#GT8mpF+$ad|?3^RTLDIc(zyXDVFJ< zCE^khb-rYqPr&I(Ysib5t(uePOJ(OF4ho{oKyK#5NB7I7E#O-?s#+uNlOTE$eWm*& zqOS^82GH>aw0idTrIC@?r~LrHjE#(T`$$AgV zu&`dedc|(s84b7kTsD@RF6tB*0pQ`B0mD8dc*NzBUsmQI{?EhE(9qr8T~4k8P@k~Z znURGBQ)L_-E$x@@-_>?S{wy!Yq^4qoCz?f`@$Ynv8Ey;TN#E(p(R9E38EslnQczHk zm1U%&qGGq_eowB`42p`ks2Sk%_jl>=~}uqMDReFtjwhxN>R)9>7Xg5-P88gqUf z=ly{OP8>IJf8QR67?k2e5B#2b(cx;ftGmrDEe}ZecKbxGp`meFX!Hk?(i=FH;`%Fr zm%rWuIF5RXgp6!6{;i>>XA9u6UQLta&P-H`wQ}HuWd-Y_($5V){PW(teECvZx)l-t zq#ZM^$;ksXY<5l$R)3d>Lofr24xG*A{5(R&V_oUBBa83dY`P`i~1u;Ba4U7Q>opC_=y@6&}$EV-p9y@Pz}872(G9#C<_JeJDp>a@ z(y!pZ-A>8b^Y~7Y(6)4Z2S4T=vif_Xs*MiEYN(Yfo3Q~0%jbQ;H;{`Q|ClF@Md&&= z9s>gd7u9&G!U|TEe&-rK4%l(XmcUyEVg4D)>FZ4qG`@0TLqbCGzP|G6j%U}a=;=5R zavd~~2)(Z11n}b*k)O{blXCz(4<#ifum!4WYHBJf9GsjIC||O&NT8)%=}AiBv3jE< z(F4qni06rD&d^@S!LMJU(A+Y{2)r3)00~7xLc+_-3yyc{YUzX}Pf}=)%Ct<7i*yuf zFxH;CDAUGy9?mQt_sB(Xp}>Nd`_}E$^<)wfk_y09R#QB1Zl64<{osc*wCP%^*wOSt zjvM_vnI4^Y-sdOe(K@elApALii3bD#EQ0LQr#ac#XJ=>l`1tOwt`X>b@qnkkJdG>T zENT4p>$62gm5(MDzd$NIdHvE{xLmwI%BWKc71gTOenYQyeNJ!#3T^- z=&1hUVNZ=pG$Hn{U>zZI6Q$5j{>1hH?v^LX%El&Kq)6vSm~>{X+rbCLVsgg)gkR$6 z%Krl+CKGN#fTUe@zeC&MjFG)|%6&Y-rw$KifE(b$S>B`ilXGhEuix|bcSGlASU9WB zV|p-&5bAY<9>uMkA(|v5346vg8$JdH7cO=O$>=5A}5)Ta*)WN~A zv71|L4JCe2sD0E%?(_BQ*Xc^T*G)+6-o3>8(P!M81?9uhFBC}Y-CO;ZRUhy52L2$w z6SQ%%o|Cq?xCl813bEnq*Y%#K``a^u)?UZQ$3IF-?VX$;12JChIdcOAf6wbhL~K>5 z-8#1mZ;l=HZmRX5isEnSWUaEd4D}rc0_5j3q0$a6E`4xNAti#WFjwOS2Ls@d{HV)q z=re#22AZ(BwY5Tu^$N5QzRh<%CQt;QKwH4csS2faZjRig5~^cQcej3xs~t!W5WCPE z=vUb{8H*KENty}BilamkN@Etv!_W-u^sW^w_a^3 z3X_x*{wsGI2(Z+H^DuIe?bTHR990pwEeKB(N^^5>^?QW`aKb#u|9Kb~%=PyJ|J4!0 z^a6SY!vMw=C`*79=U`ibFTcT$(6Ycjv%hZj3kdlAIT27v7$G~=4TUO*I66BEFR#{{}BeU|foH#%=3`B-btP5b4a01Mns>$n8e z(xYAhAjq4dW)HB4AV-0|((iJ$Gv?)e)ZmcF*h%t=Qw`O4Bia0#$bk{4a-EY^sGqSc zdT(rOL;zBK^8s#rT>w2b#z1oP818?1y)|&v=d%gx>fX^TwPl(Sj|D~p@V5r_-l08w zQc_Y-R|z?c0&{a8rKwI*CfHhATYG!gefS_Pu`=A)C~jwGXOEiI*x1;YCUOiF6J*io zR(JAejA$tLOQlrg6#wo^zbLIc(Dg>~Fus@Xl_`gLdayP?t)nvqmGaS}T$b^xXHa@XmLUDQA_6`vlu<$gVcJ+V^fygdNuvN+f3~G&Vj?J8^ zwwAhwK9g;2rdyNcXh@kE8I7HtokK%qN@>Cww0okf)I#e|J|*gkX@Bq_ne0b(AThTo zuBtBo>u#Q+Znr{uhGUbo@xZJ-o$)36XSuUF&yTb&$!JPJtKW^geOh{Lp!=V zJ5@9^G?bOizOy;nzl#O-vdduZ^z)Z&&+(B@CzXHvc*#w1`!QF2eO$HTo>f?WjelRj zHL=qvvP|@FT@-U9&=eKT zT0e~<`Adq#RZPO59GQKjkfhC7!5y8_spw6hlVw;E?a_Z7fJWi|DU?P1*2_B&2rY1# zxtHfwCa|c-)ah$)kW!l~eDVLmMZ(5%;I$t77^C&dp!bxln@b`D~@E{j(MDgkF>H@z-Wk5hcM#dr} zL;@DwuSG@PR~K$@o>C`f1yKQalJH}nd@d-c0Vq!UG&X|Z#~&{0(O69yVwKaV{1qIN zPGFPED-udGB{WP+-`qE3qBy*JQ50$~LibL{|7a=iRPB}IYr#-X&M|V)5Zx!%Pq6iZ zOiMJGUKHtmH~SPDi$7ZiCk5J-p&X^Qwl)LEqtM;}WdU8s^71mNJBzNP;}9B(#b`mp z2EJ1^z4xj*C477&Sva0UU^wVu_ai@4TMW{$GVzx6JiAxFF_1LxVif@mfMKJUDq<_q zvgx^;pBD%4M5Eu7P-PZ(W~$>NBj1nFHb_cIb+oq^XqGIB*Z^g8|9&ti?w|tfUjg!h zivb{Ypg`ATQU*#jv^9HZnsiZeG~{%#uM3Nc6lG;8SRK^0v`zs@!9m-rnLj){gi>jz zi&V7_xdvcW&X+Hr!m;DpUb6A6;Bcv>gPxh0Nv#+?XD(fEZ@sZZc3)Ecc`AwY>4BCA zO6C%O#GA;tnALdmO9kSZ6g>p*F{Gmu61EDLl3LqUE9FPgTfIX;pYlPPvCB=!VAzA+ z%#~lmQ0aJk212yz;J0qIGcz@{Z~L~6mR1#bDS#m%BqrY2*Z|q&0Csq3AM|)=Q$U5} z=Hby$RlRZZK(>b3Lhp&o+6JQk2)H7E-~#ac3!F+KBG<4RfQkV^4h;_jgrHhAz_@o0 zycp09gZKkKilTdVw!hqloe3rSrZa%$0R0@AaIn<)AR_w0_EP#qMn#!(X@mO)^b~Wh zNq~NLaxp2F=I50)H3M;qoNjv&6iG$WBXWCSnFI{xbr!}Ueh%*tpr>K>Lj zm^gGQZ5Il4egrOi0Id67UT&u%0MO6Wbaj2b3Pd+3QS&gu(HxxLf8&;5bSU0*s4ycksNdyz;r=Mt^pMbe$tn~xe7KLqs-?c&H0JIf zwUnb6`k655npu!HD0s;KomtFWYNXHfvi)o}(s?EPeZir|s(EvpRh;!bhow$ycGpK+ z;Mua@Jl@-T{`~pr05>t8Ev%Kfxw+)60(XnCBHF)fglILDa&B(?Nj=Vvj<`5D!Qc`@ zwVbLzr{sFwigq#3*@+s=ai#g{~5-kO=$uq6==|ahTFvGnwv1lzR~Vt zqF?Z=J1$B#D7|7!xUR+(O86@QCBB14geXKz<1c%-dGhvLqdSBv^`vV zUh@rsQc;AKzs2wuHw~~^9;bEFy0P{bAC<7h_lzb$l$w`seS4(Ae`ET*4{NR&c z=!3r@iPm<=d@9Esdf(GK9ub%Plfk8HQgUJ$@{SvZoMFK}q=vlv8lRK^9wGUG;Ev z1+ztgRvFT&U~hZ7C`v+ne8dZ#nK~~)aRw$P@Gq?a%xl)3CEV^7RAY=u9!!+~0+?h$ zN-OBeIQPfvY4AgJ_$W$CXM=5_rhu(2@}1|X3*I;J3_Cvjq-{~zz+h^cQ6y>&>zKJ8 zX84q%weAe>&M+AZD440EHR%}rOJ}bF=E~i)R0SUTo{fquKvOg+J;x4J8tr`Km;m{3 z`%$!j|2GXJ#qp>5hUWkz!Dj^0E(!M=TrB}!%klm)(>@T;XMZ|bGzVfS(5WgYSOOfK ze&n-<{XKB(O+JbLU4w1JuJ3SO3JaOrDD4%!8pi&)M5BOSOHb#m_f5R-SCt57guGT| ztHx+Jm)Fbhlhw(Sv}(v_MyhMx8ZV)^XU+3>7dm_6t)&Z;!`b$p_4#O-+jTyhdev#yr0$>g5Ah2y@{F6@}KUPpu zvRNPe^4|NF8sn?)ST&8nl>oPbfrE*_b#JGC)%cnyFi4j0ReBzS65)H_jJaPSWs1I- zG~Uqofdd6NFeB0$&r=S6@l$B>z#?(HHRS@0FR7q2AtB+(>1j_qJ7VxT1Z```LkA#w zK(c`H!XzX#-O#WAJQw7z(V-y;l*_+UHo$15LZbmr9w8wix@U0rsc80hM{KQ)n(l5#gUqQ|7(b?-K%}n3y$ah_=;^J)~t`&?<0KD`0Wjp zqs*L~?CeUwqBSwpl_So}`vY7|@V*_Lo#Jt~&5)LyaD0+X>2;Zekn@%FTFCV7nm=Sc z{-UONNr=XcLh0dg4sDHorR}@(2r$p2rl$VGuv<$|(gJ{jgy|@dQm})Pe)m59A(XcZ=i7 zi}URB{|JhkwbeXy%>|cx;S|rNWcruJ`jEY2*U1y+s1sN z^oEDy0(QMR#|)C z`K}JJhmM6iO4HqV0ynrK+3wA&&oV~H0^S?G-vS3TnD&zB0HK3hFp|y1#O-l%h7izn2-bC30J0-UAvl1W^=B zcScrbiO~rjY5DgRb{byzBU#-f>8wnsH{Of5Ow!td>5zxw*9$J_cj}pL-1y9II}Ax5 zSSqnHAwwhod-E*J(_Cs9IK*AjcQ<}?1#9W%SdC#1t$S8h2H%IHdybIjx1brh=df&s z0KSHw7)Gr5RaXei+|RXMzU&DhUtjNg;)*nfd-LYcRyv~?Qu8LaBQA@;vGFp+@y2eF zC@rsOZM2VEQ)?Gn__Z)qzyw84^^3P!Ngpf9MG<%z5KvH~T7Y2j`@yXq-G-JPJc+0B zDB6JZKh|K#?SwICxAf}IOQyv8c5mnKZmb=2;NzA$VUz0Y>O`NAuoWi!_no+q_@$+? z0N%>V^~WleG*4mKH2kxY2nLeVU7ewYLGRudpv@xvyBO$HXRy>?aXUx(hjyLKrHs|= z89l>qu4otVpWc%uc`jH$wBb!|XW81hBeP#k&=j69-nf2F9+2pdzDukX=x@Qnck}D- zsE#ltyt%Mz@i18}o{7@edNu#_>4`B0cMKSAR_DlQnE*T#qKAQaMqdP{nPHJ+tcCt# zUr;EUjY`6%T~BOWG+RfTKU2@%o!CiK)x6{V;${so#Tgj+p}(FjEph7o9=2$_jP&mf zUj+P_{F!;{NbjUXLLfdahIqFcY$^zEUH?#Mkqa_FUF-cVvuO3tv!Zd?IIdb%30Btf zCwk$t|9-NgoIn7)46uZEHu`KY3&KB31J8!W#Uw2_S|M6JtMR%L<2%uV+x~1J_P3PC z%);3b`oay9(be|H`FV#JUKn$gffN|e5D=^oCc5OmQohT{Sp_HI)zE2%GLX&CApmfP zZd3v5l%+l|qXx)LSGPUzVmW7i$Yt#0b&pL-(s6X;a(fUX9}^dsGqes+vi#e(xAe&F z;LiDj8y$_MuK_lvs&ZC%u(M-P4j&l6c?CiS1o!fn4Y#55z_3e#UKKBECbih@lu0;QG_o{$T6JS&{@=4_w&VGybyvtRz*(pf#% zQy&{W753o2?yu4t+ddHvzS33m3E$YVN?bA?86CZX2>@Fir$AzY*twC`RuizO!%z#= zeu1-7kcjR4FA%>nGc&C$Ey3FdR$Umh0EUAPoZ$^jd%L@A?Ch^N5^m@Drlyidj?4L5dssI&Yz|yT%ScPRySaUGQA`y&z2W_L0DB~XuNsQAVlrQe*ST}L0g_Dqjdaq{AqNFQ zQrjGO0^n+kii$F9{4tYtp4*XhDq160@yRO4rYaBV&ZF>cm+CtkXIO*$$FXa34jLDtbjojmOdknT(vwH4w7L7Cpj8< z3o-P_FtGzIl-l#>3q_~UoZNWZBO>~ThHwZ7=v|Uw*ktwq7> z%jZL4c45K7mbD`!rm8}Dk>RZUC$W`TD!lk z0ec=76GJ;kD*hFG3CzsT`O zi&4p&ha#~Hi18#XToufDyc-s-y592eu%|jCj|>XHMNAa^bM_^GOj-K3XL1U znhc7Rw6y(ULtDth1IQL|Qm{PWB@+LGjiC(8=HN+qhY7SyX-SC~ik!UspzEiIi23>X zZ*N8z{rW-u1~3B*2M{vgdujK%1SkS(3m~2*^+Me$`;JIj(AS|Cd!eeD^u&Y54O97l z=9QZN=b@PSMB+uDMBrdU^JYE!mWzhQPcdiX&mZvWf>}T*k!u~`CHjOFNOL*RX6NLX znwao_e&^(L1Xha0%;`dR*i@oWd^|k=`(Oa>N#M)@Hvt4OsD!{AfDCIn7Uun#Xc{_hj$&w*19EkI9m|MFDMhBjqZ9cVAfTj!>tkwas;i@8rpkeyg=HIv zHQ1oz-Q8c|zrkn&G2n{{`!))JfF%wM&d&>0xTBjMNgRg60u^(r;ZapZ=?6FE1Oq#e z`TuT=?LdsvP91$xJO2}{i7o|QqwV^pvT0Kp-o`vn{}N zLr`GA$PgMD!2O%SBRK1KYwW~WMgVM&jU6A)`S^hG0M-Od7}cJq_V$;+U|aH>!|$d1 zCcv8*KfK&gA2H~1Jr@UwD;0FR)Kq;<%}Sssp*}+b+OG^~c&VwaeKYa}PvW93-%O~% z@>hKTuOJZM^Cw+@|1{1){4khN@ozjem%=-~ieoj%{_@4x#Kik_AI6}Bp-W_CRRW3b z_2Eq&0-;PGB^7G0nc2xw2aeceR(=yc(!X97$rM=cBoOCdqU&2aLYe!~8^)N#)KtaI zpx|H$6gY+0K43j*W;NPA134Ym8pXMj1ctf&*z~JA1|6w_Jy7s>SaI; zJqHIi~kF@OfbI^3 z66|1$=e2gfKZJy!4Y)(#kE67jl)=*boNw_$%7F$Kj5mLOUe=e@?^Yd~3wj^BoxRtE zjYg&POXFRnglf>@O=N$gV1oJJo95#SyMYWT$SoIBcYt1O4Ep+9T^(+;yS<&yZqY9# zg)~&U8j1=?Au#R)<0-ZY&?UlvD~!8h;{O06sUP@m@UA<7C$+M&Vq#?ccJ6Qb5UgIP z{)@kV`-;G{nUSd}j-IPufBPqD7}yI62M$9T&)C- zxow%Q&Q4(9)2bT*SppQpX+4HwNy0p2mcPhLB_2r9Pen;t@@6CtHf365(dYMV{X8I` zq4cC>Lyg@5RvO%4t81K>DJfm`2J;H||U*fzCBvJN;ixrg8%V`rF!Mw6)#Giu7P)vH1#k58%90c7LFg z3Gp#81^Xl+$X1r=0KyzA(83`k)YQ}@#KQwJ0gs%#9(0O~Un18RWl-{9v}a>|9ViCF zp*zsD$$iGt$41P{EP7{}@{!rPnSOh0?MIa^pV) zsO+a-sY(}UuiAT!gko~jPkJE*z~l-P_-zR=mo;D;C@b3nWCGYOB`IlUZjSYUr7j*y zN+hfFzeK1fyAc?*;LQF3Bx3RA4UFh4KF^~lkpq$h;)5i06__(>KfupKwRX2yV?5m@ zp5*}KaJ(zPb@giC`3@2LaI}WT_AV+e&F>;Vzh>~dFyMAVHMEQ01ik~-_fkTswiZtP zZW$;RanaF6<`cd5*2)g*dEVsYz2?FuEX>cZHti#$ivle}rSVJv7!32FY^-f2km)xw zR)^>iu;nFt;FKTi@56xV-tStm^boQqXK=-kih*VX<|iU12I3qJFbvYboMmZwIXC!j z$HwT73*71s2$;2T$;ht2wV{wA5OZz(ShtdmhK7cX%@)R}!AAntTV*vhnlM8Tl&V$P zi||ZgFp~78AT@V)hm5bFj4d2bW+~snnt)IRe_YJN z!60aAXXQV=08o)&0pO=_J@$5XFony)$fymIvu}9>$STz6aH{2qZ`M>j!nx^|2miTHASR!CnQz3-n+KA*aqBzVBWnxuD`Yu`T@m8QAr8ZF@ZKM606%NGK;|HfJnR2 zm!?D({@Nh`Muz3(QF+LV|I0z-+7RirC^YfYDZjXQ=g&w!g!9koqJP(3As4_q{L&*3u0O!)>|a;fxJ}1PHhTvL0QX8{qEOD! zDJ9XGzp*D0HX49r2afui(LJmcV+0u@jCo^;9;z9OT-{^Of;= zGiz(bH5g`Z#ga!aXM8ARumC`UKB)z8h{P8aJ3m^VL|8m4JE+)@eYPs=Gu}s*K1&sG zkJg+6wPtRjDlF4T%MGtYG!mrQt5-*I_&=RzAB> z*>VZc=J5Lvu8dXcm$quos2w?=vi6ub(0pwmeE5)^Fa!)C;#}}`2K0)_gjiU6pj7Rn z=tNItamv;N2X{q3QcV^1nuG=iN>?hh>fs_+@n9Ca!mv#)2lSedprxWR2rI(D!EuwH zAc4JZ3xjVbp!$Uo0J?kC;M5e1&bfo37FbrulmMfJ22Z|No1lx6n_5;aAVA3oXo> zHmgm`2o8phu5JkC{_gJA{QRc}40Qi0>OCkelTb(C7y^9bg?{Mq z9${fJ%H}e4enkWD52U9r0DK0eog53x4zMRMx4_T6MW+K2E=Axt|=Xp$;Y&xvbZRZf6`qx#n_wKo`{1)&hn% zfl2%~Ti^cpxtOaP`;s2`=pcr_Ow_)HYD%vVzYAde1~R^dosp!$l-E^+@5O+tfocBs zTFXsq+D`cL3`4n=n`{ek9m+O*%>^*;d`B?dR-B%02R@GvEUv%^144yE0N+nQVR^sV z;31zag*XF0e}bo*8si8UieQF!${$>tfZ>9NNDLt<;+SsrofvAf$Q}~{JUjqVSRbB3%MVkmwvzjM^>)H>A9cLJ z7{4UwG)yF=07@Js9dvFX>gU?p@+^Qd11laR8nGqhE4t&jEFEteo9HiyU7s&`6y)YR z2%r2eGVn5+A|Tk zB4Pjl9L1i>m;MHdp~icB{jaIc@z*b3f<*d`dfSJOq`Bp0FQM1~Ce49gk&y{7bsq#B z9!M<6z%cHLzar6!wE^v>XSNKtJjgjfB|sMGsaNWG$yQo+Gm~yAW?bk6a3qtKNK>K+Gn7;f#NDs*;Jo~{3x!7GvSKE>_IrA7nF-+6ed z;k~mBpFJm`X{gBNpFm8iDQApo0n}2AVL0-(S*!`rXhas`1MdVzycCi&Jq>9cn^;l^S=s%6sbQht$_! z!=?`n4hH5TAn<}^jhxd&K}~HK) z%D|q(9F0Dujt*KieKGBo!^yj-rKBABi_XP5_tuZjtUni4O&Qa@idu+p^;6EN+F&sX zCb)}1CbR|wD>zzVN$HH)te=2USmD{Tsv#rIMzG<#{u z&@0Wvq?waNS^arkaUO>_L-l6{rh2o_CdG3rBT7t6g?YM8jY+FZ-UBuP9}ZKFKZpJ< zQgUn3o~78ktz}tcP(KUI10Y$4Bx=a^KoAa%GCxfRYGWCiX~2cM$$NmK=>d(rmvQ^p z@A?V%b}R%!Xkd(*tfV7( zm{Ltj^khTCMeli4+p2!sPm72X=Xt0)Fjqn@?8(N#u_z4FW}Yz9QBltbc4*)bZXqK5 za%jDo4lpq`=5F$wtBa7B$ICKSEY_!>6=N#=+L&?%a*Jo|7qYJtPgSKJQsVCYl>qCD zc)NM>!*rLHWxU&po_JNq)Ad^v^Hor@yN@<}2*7bmKrZ#G?-orRmZU?2X3Zd_kf{)O ztXATk9-rCz{o2v941d-EUtME=I7DnX(9G`oyEoWXdNBN zKw1P)Y`LgIu-CM2W+l;OP%d7*kOAL~A7)fb7{JE68E(w{VfR3c)8Yn^YU@5>;PeT?490EuoSmmDW9xh?!VTfc={IarvilGW1+ zzEgj|yScu$4}y16J);9-lC7*6T~j1|t{alL`l?F~N+FSk9PuDJgx@kG8t)h_(C zUyF4d`70@y^T%$YzR}G5lq4v3m+F||wzH;|Jdg7}?t_(46lEC~-%jVXr0F74KuX>K z?%kdb^68fL@d}kxKwcufioO~1W#q!Wt&}ZS5-DW&?JMsbOxhACO-WVje7%m!5Y;w` zYBG9b!P4-Rf@!P75M$3SYSl>ynGhzr5z-sz@1!cIzNW1jP*J7Bj@lb8{hM+EYSdvG z?p>=$JQc9WZGP0;3wXiod#jHI?hNJG+^OF$94=~&NP5XeM3}oyy*p{Qm>;qfo<%{% zwDMhRbPg1+e`K|CG&-RuxIPN56Te?k=K2LRO8iZyXjHS_^XsZsZ9&DA5{0=LHx5=M zYi{8?TeEMkxsRG5Bb$a0NoNM8>HQF0oKx>W0By?*>q27wULq+|2M$%*Ev&Sr!u>7o zJts&;Ll!GPY*8%^Y*UQvJXRBDJ7*S3Zq!rCUm|d8PYr3S9&-AHEl;hkcYPRb!`%Bn zg?)KAmF?TEN?OXWEJNlgQ=t?YA|gqWA!VveNu)Bp37KNa(2Ecpagpw16-i3y}-IQN>y;V;p^6 z{Ii4iiuq4Xn>}}T>`G*{Tt|qX9k>~$zKeCKw%J+N`}43TU$i@+ zv9DrQ*Z9&{tYRF^BfQ(p?4+pDZZ3u4&;n8#)5}3g!ZYB~b$_90+M2M~;movJ+fR6R z5c?zI)4$|T1zba*SukSb;+h>m*XH;fl4VKVQ6E6L)JEVRQnzl8^vrNJ>bAA*6qm2L&vtjM3Ee_rI zkb6fvACNuvKCudT033M#b|DkX9Z)FhDKRdx z21Q%VMy&t2v%lCAxiO=k;`ZH#v%-19o*(QlWBpT$yR`bxKS(FCtk?gs`dmFvM1gAb ze$7EQW>l`a)`YmahTJw>{bMbzE+Qs*NoqHjer)hR&%J%g!GffcAb&Gw*HE^8oy-i;gx;4_p@3b8VfW<278_AdjbYgrEc_q; z?!*@*Hi{kQl=b?)`n2V`nwR)78elLd?l`8cTkj@8!)i%%Q)SzuacQ&|n{sv-CN=2H z+9G_q$Owgl$OSDIoK+PlpyAzlr3*YMzE?MQr1a@+rF z?1-yGk##VoBx-eLCtkDiP2X7zJq(@`#7 z8wR)OdJ~ihL-i0W#rqt@_VGH4E40xgN2Q_m{phiK8xeR8*pqf+Ig#phT+=f$bw$Kj z!+70vy;qj<1aw2!!y&=_;0wH6Gw(rW7^zNYma45g%1#lzy?N7xd3ZQcoZ^j7YItoR z7M%cv9L06NlM_>Rit1-F%zXoKcYNCR*E;uD%H`T8-j)8tfi1>H>I;=XHB*{ILZP^a%+ zdi3!oNQdvxqj~o(JS4=x_|cT+?YKC!j(3ZRjiRIj_EN2kJ~uq-Vs$b)?AM&8nuiki zb*rlOY70^f;y4D^3zIhAJ`}e;Y;(Zr?K>re%{Sh*&^ei7Vfozn(8YXXhl0iIE2Wpa z7|jjHr(D!I4CU2}r6?R5ZCPXaD6V~Knfn($QK<%x>t?;zrq7P*j;bUi{8W~0Q;{VF z)u1OYpL8su7yM}mBqi83C+LnQEoR#k5*Av$y-R4bQR3ZyeBuJNkB_h1d7wtEXdc8W zfX;KUA^NjhS@~mqJ*4&LpkR}st~pP!IM8d63eECve$=2-d^9n^vGaq^!}mwM!=w6x zmzn>FOZ8uyJLj}hJ*!bGiKESvwZ79{u7BL!SGG^!-bl*l8qsS^Hzfk4;T1uy^_uFH z?UP;C!RwyBh_+vv!3&$Z&Br03M~&$57#RG4NeN!2EI{e#M?Zc{&iXU2y)gGB{+Pag zq^VT>8q2R6wVyYxR|oWhc1Wr_#A6wcAGh~c3g{PTi%`}Il#fes7+oTVYW7Uv34zyT zX5srMW@CV=US#5)b73IK&54}loV{24#Kh+?=?Z<2M#q6HF9m*;xGUMqbxqeJO>?=E zEZ%%&aELrgr`R2Lg@H?*OusNo_v3)m0YaVr1Ws*F~n2FXQ{m(YWg;Q{$e%c9T8 z?~v;D?NC$L*HGzUK?qejDlhai;?ACjmbT*Q;Bu=?A%~RdfnyAi#}=9b<|hFRm4j51 ziwoRDEA$T?9J2HCq1$)=R{Ibhr*(CZ#WZwxyW=B4o~^li)ogKbQ3OtbTemX*^fmiE z`!rcJVP~4X|460s@nfwgLcktT(fA683U4Q+3HbeS0g^>ZTl+JnChj+e@{&j4vL?yQ-25M-L5LpKW+MGi zc_u4g-6<>k6MF`R8kCxrmhxZ@G@!s&0o8$V+587AA)rr(w*>$N*cJfZC|n_>0ip*x z2?akm6>9hZ>@C28LB@R361z0kiz4ck9HNfZqK9~3K|o>2jr+0>gv_F z6Uh1@HeRaUB=BeY6?2!%3IxcoF4NU*255j_0UnJ9EFY-tfSFk|K(h5#6%YdFcI3+! zf3kUncgfn6Zj$^Y=qui;YO1OhhYoEND!%-AA5*X!093S50SD%tdj2C=z?V#-g(jt( z+jFdyFF+79;7#Rp=y#xD1|=nCANs*)AQz*VgSHp79qc45G9a@>*01Pb^9sTeNFsEB zg$|u!W*MNhOKjgxbg=I%9NqiqNvCbP#jci>6^TdJtL}AnkP7Y{gkW%}8wAj7#|^P)@bUR9?gx8id|;phy^UM9{4F;?5QFCo z#UOy#6{oTJ*+JKm6Ytex;Rir%r_!_1mD9mk@T6~QZ0Go2etv71a6m1#Q85f?#f-MC zP0g5ktNMYG1=Zq{vUy!GH_)hiK3MDd|31O~EV}rmwEHuj+p}AhKXT2A9^?#E$;9`f z%kZvDn5rx>(Tj44Kp!8x7AZnDhmiG`lqMd^FzE6y<3O@victR}(*G0$up2eIhU zBy#yVdJH!K>x|?9bdI2&2MGcEB32Tu$LHfxSJ#1AKoHcx9swft?D1m$HQ<^;RA9o* z1I{9QOirAbGuMM-3%?7q7o$xB%To$j1OGv*emg#%l~&05fwsuE@$u}OoJ2*J`*{xP zM~=|{b?nlWz7lDH{?=V8ad$rTz01!{TWwR4&8Ks+qy*|kE{;VXW`D=BTTMYuVH0}VYYO0skt8iy;BEO zGreFj;5fpwqtK9xI2W>c&{^yb6kJ-TR+x!tDh6u$1b10 zrRRC_TtrrRomERJ@m;WBrdxGY{8yX~Tg!lN4uKWoCyNHGVx%~}1D_s#ytU!j8*5N5 z;JtGS`e_KIvd4SW(layX!Nfn_iTf`U&x#j{jbPFsmEK_cW!*8Z{Y{1L?UZIf7TXCP zvc`Xy*==LbpFPvz1nIwV#1+%j_Ve??LPMDDdbl@W=LeA*qg2^>>WyvQ4?#VqRo<=_ zZv?KjGB_tKKfE8-WX%)qyH);0MFxXL5d=}fR9HTX7Anu-7Jzjq+J5{U-XAP96l~y^d5P`p3}BZNeOFHQ9|P3LTLV7 zevPkaJFY}~@JE`QKCOGhz06}q7zW6~r(g#%z2I{L@i$8^g?pvx%~f zP%PUcB2tTghCdvbQcWW-U%b%N(mKAe1B)KC5@F#Q2rznkl^}uW>LQGXVP!Kgw=Qc4Qq(&UdHstmse!COG% zX?>dr4TD&%6=B`<&cxD?neD6$CrCvghT7i6qedz zm6%C&i>G?ewkY%qQsGddN2cwoo$EL(U}m<$QJ`EHzMpbdj{&U@9;@V(t3EGwr4{&Bjxft9 z5Jh|#8y&?w9(3a##{5))%EY>dMO0qy&vm=?GzSvZRi|&ZjWwB1*M9x>?Ty({TNzFd z!2(5K`$p|EIW61AR$Juv`uRj1paE}b|*7&}`lCMCH-RuCWYWrBq~WAAw@Cx4t^(Wev@jH(h?}J(XT1#*kY8uQruG?=h6k>YG65@Xf zEzvvQ54zLxy`h0-BqZ@tX5d#YdauGM=+o!V*~&ac`Bv{Uf_hF@Nl}38s`8F4eM{>jDQYA!I=iQCUJ+m|N3^a zOdga+C5%3QBq(Z!&lFAW<)f+Es&*QF=1zm0f!DV=TK;&Pk(=v?TmyZpS^>y@wEpJ2 z&ioKrB?BA|wrsh!Jm=u*x@U>qY@CKBf}4iZ923+I`{D2s8RQgnLSNPt_D<~W$74}Y89K99GM4Tlsy)`i19v;Y5 zLo?pq-Vky+qviY(T~CCBJT*A*`%6_BZeU;snJOSK5OgI7K*N|nHH1wK4n6@J2U+u= zwJK(0*rq-m!oV4sPiw1QnUNIOC4z!q+S3ja*=Cw64NxYJ?^ymS{LDh2$+EDq4a4{v zTA@8Egp#sL?H5iC&{ml?rttB7?(Ox&j`eM(29vNCO~VsRG!mp^-Tft-aQH!=yHyE0 zegmMv51RVXc4GO9QwaAv8 z!pjSjCK*#kF!PUATm*OUvb8mU4z!9=QqCYLX!m@Hr#U$>F>K3ufezqg;49GIaIyg8 z$iu^sWj439iK{&;F8)-0?JDvqu$AB?xVaB{`<-fPl~12u`69oCc72^CJ6iEk>6)_+ zj*d-jZ3X%HD=|FhFpmLqtU`;0T>)CiFJoix`}$T3{8pMid?1)SU0kMEnLa+{d9Hv* z&~{RkU}S?c-PyAU7=dct-QA;OW6z&HZQLP^tHEvltI8Ra9$l&`bBuJWzA|gkrEp9u zdHK?Jwox3af!i_R)m9+0NpTP~u%H}- z*sh&BN1YX&I))ayxfrS>_zl@XDqjQ&fvx;4a}Ju7AOe6!wQMb!vg)_C;D^)zB^o6j z3^g!F1R$fNggzWs;dg>e3^ql&P|JZY^roc+b}6EJ#gT873P*iK!~}&wBkfiqC^C-t zSIPp4nU*(iC?s0Hd%l{&hTw@@zWk_`Gp@xBIbmYM&_Lw={rg|cCnhDKG_z$~wteT1 z3Vu711WY4}$!=^zP`thC=vZ1BOFiP#zz*AXZVnDe>x;mpwKy-2Scr$#rKy^#FRfYO z`4+`sh^BCWAa;evH*e&v3-vsXD^ghrysZ+mElXa=!j!y4<-`1vYECh`$;tnMgVGe&nsjG{rw`KEYn?ln?EqoV9 z*MtgeBK^Q_TYUlcBg;0eTg!Wq@z&RCd2d%y;T2-z;W_$EF|`d)nAlC%t5>r=Y$KEG zT9c2g9snl@ipBqmzlq5^mPeDEUc0=6$`BO?GOFnekTtHEuv8YWq6;rX1s6CYTEHB@U?DNm&;8$h{bH2S~+5w2#&!2yeTEY7Y zZjV-7PC;Q4E$x?Ybvb;jtOt!ZCbd*J53J7~!qZe+nTwGM#Mjd6OVLU%DJ?ZQd6I=j zhNds1)^BMfo+Kn7kc#Q^8C0IqsftcymU|MgFLYhp!Xfo##>3;a*wMkD%Fd1sLv-`O zXQq;uZiUnh!e$;PP{1tvAK8$miHQjnVIlYdyNJ9zhfpy*k}%64VroS&0R$)$jBh(Mx^Sp1jH;K_`$WK zl25LROwZ42kzl2Hi=v<20WD4e=w2u?y&LfR$WiY~?ypGAU{H@u7(uZtmApLD zAb|a=(JQ@k9E=gLd_V(T&r!R$=;2T|Q55d{6nWDl=!0LqN{7X`v~;*$)+uxIdL)p@ z3l1M1x_SiWPTOZNixE5FI5Iag0||MAsT5e@nH~11i1582<;8BSE5^z*F*vA^-hs>p z`!;MHJYgw@x*fu)moN7@1cIyDV!H=n!w-TBK-eK6Bs?nkTj0I|_0}CcItb$fysRJL zGd;~E1ZN4+3(xTNgb1Cn_|d_0($!I(cmQM#!d<~gQ#cA0F+Mq>>A?;X(;1J|KS~Ln z@ZSLO?nLj(mq6y%x!7NE(1~!}?Hx0yDz^VRc95(IohP^{NN!Rome7_5=}NFghnl_s zlfx_4LoCM3*jUT%?p{X@i-#v3&^@l*b?TX}-Zg8{SdVo^@S5P$ATjF|)_(u`6-F2X zxf*Hhz%M~s?vL6r6Q)2Aw^6hrj1hDqI~ZK;o_96)XkQn`ZhHe*9km^WO$K{Wn|zJa zP2~3%{H$a+*I)P7ZES7TA^`bYlt}VExY;EL5yCfu^SvjdtPH2XNS%4fX0p*DS+D?L zeNx^L`ao$ZDdc2^aCx_@4~#|~f-&^FqcC{0t*vd>jveDj>A+mE~6W5O_6L6nGno;WUB4I%W&m2umH@o zO6gwN1O!b-2Z!o!y9^D(?!+f2PmGM9HUopVYwZ3H6lbs3PMMktQZY9l6m5U21={(E z=eoAGwm>`q!Zx1c;Z2k5aLSJLgn2O40DPqc$YV?l4P8KD@#Q*=X%HWe@&Wip;j6fG=B7E%;^%GU)Lbi` zBPLBKVBk^!yICV+V=*$xxv|T)$*w4yPQ_=LO-QqX{efc=>S)O^SB84_D^SGK2Lh5~ zXJ(=ES35GO04~-J?gt&r`Bq}-rqISREnh(x4SvnoH&B)bTXH~NB zKz>0%C1}U0BQM^Euu$Q7Nxt$YBuY={ysWE^(E~aW-vC;K9$#RrQ1g|PcouA##Wuvt z6zmm?r0eGwmq&AF*yNnRxK(zaxTEBjSy|}^2U^X6x4V2d29lO9Zle!`BO~-N%~mqt zP{Hv)3JGR&GtknEQrcfB*PRr|j*S)r*lY#{gg!f|XZZ_>%&fm|wYItf79#d%2pj4` zkyFIAhMuqXAZ05qCLm+dBH^TxIKdEjD;Nd)qE5oIdRqrD-`K| zLQyzQ^?m0rl)!&&Nr79|jzQxg_M3hAy-ywE(P^BM%5Sqs z%ghwBb_R$1$}BC-iZ2IUx#pi~{UrJDuB!opt*L6e_N&#!d;++$-C_|zZu-sS|AvD8 z;V2peI|1#0VCf?4t!uBAmz80h3%Bqvk4(Q5eU}3X$nkSHsN@u&g3~)q?n~(Fx1p>? z8FzfYHo_SO+^60L6Hzvy8P>o9&)EpyJD@{drIOl}7Y;<|UFv-@f}9QsJjHhm5gqzG zBw54U%*5%B)S4$S#TG+D_e4ip~1QM}Z zPVT|J?@-ct{mL~s#VVxvt4s|A-_2bWubZ1E;-3;vuD%`=;Iy5`u-gHjIjZls?w$a{ z^7_k0Mlm@##HluzHrT{q@(Zjd;^ZuFs;*>o9AIK{n^o>edPm&x>AAUD!%4vYiknY~ zPzLO8VWWlb-!>&BPte>*X~gqv7)JBvY!=a+Kt}`CaIOZROZ1> z-*$lj87%vY9a#CTb{yZJcwY=hCi&)qo$9wZ5N!HG?e|0xJe~-fhsDMAaYC33wrGsf zOkxg{ksusHWBtgYJS@^$Xh`cJ%ifg>f&qdca0ZdlYTNvS-Q$d7G0@7g2QJ>2~+tJ$#2wjKKKSqFfF5qjUnt_W-aGQE9k(AQWMf2#tI8EpV z8)cN~Hxk+NJLVyXiwq17FusP6?%G(&)#;P4F5&(B>3cUJ!2}9&%VHMFM1uwQ#(0lH zQ{WF4u8y1tzQy(|TrIu3LZ^!8*lv3?6Uw7&Q~RIzD)P31RtmOyw&&wo)QfFsdYl$i zav7veP`CMRRLLD8NaFSVS+~`aOdFM&8p)jc<>%5$?4s&NZSz6M*B?s0Lc0Ss3qU(0 zy^E8Q(lfN`WzaytUgkk$-|N?;sr%mwYFTL^UOkX zhbUTd`Uet`Va?+_q3xrD91qH~^*IwmDtXu*NnTVVZ z#ULN!+z~f7H#4&YaD%JPj3F6BY%0HdiH2rnP1Q$f z;&9BW)D3^90}lEhfSP~(`TvjY{0mF^*Zck(?z0;4M@_tX)!+5QYXEdKG)E5UX+F}h G3iw}^+N4MT literal 0 HcmV?d00001 From c9b437db2409e28155bdbed98866da1300cdd3da Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Tue, 11 Feb 2014 17:38:35 +0100 Subject: [PATCH 02/19] =?UTF-8?q?Transaktionen=20Kapitel=20um=20=C3=9Cbung?= =?UTF-8?q?en=20erweitert.=20Rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Transaktionen.tex => IDB.tex | 35 +++++++++++++++++++++++++++-------- Makefile | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) rename Transaktionen.tex => IDB.tex (91%) diff --git a/Transaktionen.tex b/IDB.tex similarity index 91% rename from Transaktionen.tex rename to IDB.tex index 862ff8b..4da76ab 100644 --- a/Transaktionen.tex +++ b/IDB.tex @@ -320,8 +320,26 @@ wiederherzustellen. \end{itemize} } \end{itemize} -\subsubsection{Physische Protokollierung} -\vspace{5pt} +\subsubsection{Backward-/Forward Recovery} +\begin{enumerate} + \item{ Forward:\\ + Änderungen sind noch nicht in DB, aber schon in Log. Bevor + diese auf DB geschrieben werden, wird ein Commit-Record in + Log File geschrieben. Falls was schief geht und der Commit Record noch da ist, werden alle diese Änderungen wiedehrolt und ansonsten nichts getan, da alte Version noch in DB steht.} + \item{ Backward:\\ + Ins Log kommt immer \textbf{alte} Version eines Wertes. Bei + einem Commit wird gewartet bis alle neuen werte in DB stehen. + Danach erst wird CommitRecord erstellt und eine Bestätigung + signalisiert. + Bei Verlust werden entweder alte Daten hergestellt oder nichts getan.} +\end{enumerate} +\paragraph{Vergleich} +\begin{itemize} + \item{ Forward Recovery: Hoher Speicherplatzbedarf! Daten werden erst nach Beendigung der TA in DB geschrieben und deswegen solange in Puffer behalten} + \item{ Backward-Recovery: Hoher I/O Aufwand! Alle Änderungen müssen vor TA-Ende in Datenfiles stehen.} +\end{itemize} +\subsubsection{Undo-/Redo Logging} +Verbesserung zu Backward-/Forward Recovery. \begin{figure}[H] \begin{center} \includegraphics[scale=0.8]{protokoll.png} @@ -335,8 +353,8 @@ Zustände vor bzw nach einer Änderungen werden protokolliert: \item für jede veränderte Seite (3) wird jeweils eine vollständige Kopie vor (2) und nach (4) der Änderung in den Log geschrieben.\\ - + schnelle Recovery\\ - - hoher E/A Aufwand + $+$ schnelle Recovery\\ + $-$ hoher E/A Aufwand \end{itemize} \paragraph{Optimierungen} Um Log-Aufwand zu reduzieren nur geänderte \textbf{Teile einer Seite} @@ -353,7 +371,7 @@ Ma"snahmen zur Begrenzung des REDO Aufwands nach Systemfehlern (alle erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederholt werden $\rightarrow$ nicht praktikabel! \paragraph*{Methoden} \begin{itemize} - \item{ \textbf{Tranaction-Oriented Checkpoint}\\ + \item{ \textbf{Transaction-Oriented Checkpoint}\\ Geänderte Seiten einer TA nach TA-ende sofort in DB bringen (siehe FORCE) $\rightarrow$ zu hohe Belastung} \item{ \textbf{ Transaction-COnsisten Checkpoint} \begin{itemize} @@ -375,9 +393,10 @@ erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederhol \begin{enumerate} \item Analyse Lauf Vom letzten Checkpoint bis zum Log Ende. Bestimmung von Gewinner und Verlierer TA's, sowie Seiten, die von ihnen geändert wurden - \item Undo Lauf + \item Undo Lauf \\ Rücksetzen der Verlierer TA's durch Rückwärtslesen des Logs bis zum BOT Satz der ältesten Verlierer TA - \item Redo Lauf - Vorwärtslesen des Logs (Startpunkt abhängig ovn Checkpoint Typ) und Änderungen der Gewinner TA's wiederholen + \item Redo Lauf \\ + Vorwärtslesen des Logs (Startpunkt abhängig von Checkpoint Typ) und Änderungen der Gewinner TA's wiederholen \end{enumerate} + \end{document} diff --git a/Makefile b/Makefile index b6d90e3..a1a0dda 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PDF = Transaktionen +PDF = IDB all: $(PDF) From 1b13dcb525c0e4d12318038ffa03c9468f7f8bca Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Tue, 11 Feb 2014 18:29:24 +0100 Subject: [PATCH 03/19] fixed include task. mehrere dateien nun --- IDB.tex | 352 ++-------------------------------------------- Speicherung.tex | 1 + Transaktionen.tex | 342 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 351 insertions(+), 344 deletions(-) create mode 100644 Speicherung.tex create mode 100644 Transaktionen.tex diff --git a/IDB.tex b/IDB.tex index 4da76ab..7072382 100644 --- a/IDB.tex +++ b/IDB.tex @@ -1,4 +1,5 @@ -\documentclass[12pt,a4paper]{article} +\listfiles +\documentclass[12pt,a4paper]{scrartcl} \usepackage[utf8]{inputenc} \usepackage[ngerman]{babel} \usepackage{graphicx} @@ -6,10 +7,13 @@ \usepackage{amssymb} \usepackage{amsfonts} \usepackage{lmodern} +\usepackage{a4wide} \usepackage{psfrag} \usepackage{colortbl} \usepackage{color} -\usepackage{hyperref} +\usepackage{textcomp} +\usepackage{cancel} +\usepackage[pdfborder={0 0 0}, colorlinks=true, filecolor=blue, linkcolor=blue, citecolor=blue, urlcolor=blue]{hyperref} \usepackage{float} \usepackage{listings} \usepackage{lstautogobble} @@ -57,346 +61,6 @@ \begin{document} \tableofcontents \newpage -\section{Transaktionen} -\subsection{Allgemein} -\subsubsection{Was sind Transaktionen?} -Transaktionen sind eine logische Arbeitseinheit, die mehrere -DB Schritte zusammenfassen.\\ -Z.B. einfügen eines neuen Mitarbeiters besteht aus vielen kleinen -DB Befehlen, bis Datenbank wieder konsistent ist - -\subsubsection{Wofür sind sie gut?} -Sie überleiten von einem konsistenten Zustand in den nächsten. -Im Fehlerfall muss die Möglichkeit gegeben werden, wieder in -einen konsistenten Zustand zu finden. -Im Mehrfachbetrieb muss gewährleistet werden, dass keine -Nebenläufigkeitsprobleme auftauchen. - -\subsubsection{ACID Eigenschaften von Transaktionen:} -\begin{itemize} - \item \textbf{Atomic:} Alle Änderungen von TA werden aktiv oder keine - \item \textbf{Consistency:} TA überführt DB von konsistent in konsistenten Zustand - \item \textbf{Isolation:} TA wird nicht von anderer TA beeinflusst - \item \textbf{Durability:} Änderungen sind Dauerhaft in DB übernommen -\end{itemize} - -\subsection{Konsistenzen:} -\subsubsection{Physische Konsistenz:} -Alle Speicheurngsstrukturen sind korrekt. Alle TID's stimmen etc. - -\subsubsection{Logische Konsistenz:} -Setzt Physische Konsistenz voraus.\\ -Korrektheit der Dateninhalte.\\ -Alle Bedingungen des Datenmodells und alle Benutzerdefinierten -Bedingungen sind erfüllt (Assertions). - -\subsection{Synchronisation} -\subsubsection{Zustandsdiagramm TA} -\begin{figure}[H] - \begin{center} - \includegraphics[scale=0.6]{TA_status.png} - \caption{Transaktionszustände} - \end{center} -\end{figure} - -\subsubsection{Anomalien ohne Synchronisation} -\begin{itemize} - \item \textbf{lost updates}\\ - $r_1(x) r_2(x) w_1(x) w_2(x)$ - \item Abhängigkeiten von nicht freigegeben Änderungen - \begin{itemize} - \item \textbf{dirty read}\\ - $w_1(x)r_2(x)a_1 c_2$\\ - Änderung wird noch nicht freigegeben (ggf abgebrochen) aber trotzdem gelesen - \item \textbf{dirty write}\\ - $w_1(x)r_2(x)w_2(x)a_1 c_2$\\ - Änderung wird noch nicht freigegeben (ggf abgebrochen) aber trotzdem geschrieben - \end{itemize} - \item \textbf{Non Repeatable Read}\\ - $r_1(x)w_2(x)r_1(x)$\\ - T1 sieht beim erneuten lesen einen anderen Wert als zuvor - \item \textbf{Phantom}\\ - $r_1(P)w_2(x in P)r_1(P)$\\ - Wie bei \textit{Non Repeatable Read} nur Prädikat statt einzelnes Element -\end{itemize} -\textit{Legende: c = commit, a = abort, w = write, r = read} -\subsubsection{Serialisierung} -Hintereinanderausführung aller TA's. Problem werden -sehr große Wartezeiten. Allgemein ist deine Datenbank für Mehrbenutzerbetrieb -ausgelegt, dies würde ab adsurdum geführt durch Serialisierung. -Was tun im Fehlerfall - -\subsubsection{Serialisierbarkeit} -Ziel:\\TA's laufen \textit{verzahnt} ab, aber ihr Ergebnis gleicht dem eines seriellen -Ablaufes.\\ -$\rightarrow$ Ein Schedule von TA's ist \textbf{serialisierbar}, wenn es einen äquivalten -\textbf{seriellen} Ablauf gibt. - -\subsubsection{Implementierung von Sperren} -\textbf{Wann sperren?}\\ -Statisch:\\ -Alles sperren was evtl gebraucht wir (preclaiming) - -Dynamisch:\\ -Zur Laufzeit von TA nach Bedarf sperren\\ -$\rightarrow$ Gefahr von Verklemmungen! - -Sperrgranulat:\\ -Warum nicht Tupel: -\begin{itemize} - \item Nicht immer effizient, bei großen Mengen - \item Phantom Tupel; es können nur bereits existente Tupel gesperrt werden. -\end{itemize} -Deshalb wird \textit{hierarchische Schachtelung} der Datenobjekte:\\ -\begin{figure}[H] - \begin{center} - \includegraphics[scale=0.8]{sperrgranulat.png} - \caption{Sperrgranulate} - \end{center} -\end{figure} - -Für jedes Objekt kann man nun einen Sperrmodus vergeben. -Andere TA können daran erkennen, ob sie ihre Aktion ausführen dürfen. -\begin{figure}[H] - \begin{center} - \includegraphics[scale=0.6]{komp_matrix.png} - \caption{Kompatibilitätsmatrix} - \end{center} -\end{figure} -Das Problem an dieser Art der Sperrung ist, dass -\begin{itemize} - \item Alle Nachfolgeknoten implizit mitgesperrt werden - \item Alle Vorgängerknoten auch gesperrt werden müssen -\end{itemize} -Daher werden sogenannte \textbf{(Intention) Anwartschaftssperren} eingeführt: -\begin{itemize} - \item {IS Sperre:\\ - falls auf untergeordnete Objekte lesend zugegriffen wird} - \item {IX Sperre:\\ - falls auf untergeordnete schreibend zugegriffen wird} -\end{itemize} -$\rightarrow$ Benutzung von Untersperre wird angezeigt, aber nochmal explizit weiter unten gesetzt! -\paragraph{TOP-DOWN bei Sperre} -\begin{itemize} - \item Bevor ein Knoten mit S oder IS gesperrt werden darf, müssen alle Vorgänger - in der Hierarchie im IX- oder im IS-Modus gesperrt worden sein. - \item - Bevor ein Knoten mit X oder IX gesperrt werden darf, müssen alle Vorgänger - in der Hierarchie im IX-Modus gesperrt worden sein. -\end{itemize} -\paragraph{BOTTOM-UP bei Freigabe} -\begin{itemize} - \item Freigabe von unten nach oben - \item kein Knoten darf entsperrt werden, wenn noch andere Nachfolger dieses Knotens - gesperrt sind -\end{itemize} -Als Optimierung gibt es noch die \textbf{SIX} Sperre. Alles wird lesend gesperrt -und eine Menge an Nachfolgern schreibend. Das lohnt sich z.B. wenn aus einer Relation -nur wenige Tupel verändert werden. - -\subsubsection{Probleme beim Sperren} -\begin{itemize} - \item Sperren muss sehr schnell gehen, da Anforderungen sehr hoch - \item halten von Sperren bis TA-ende führt zu langen Wartezeiten - \item Eigenschaften des Schemas können \glqq hotspots\grqq erzeugen - \item {Optimierungen: - \begin{itemize} - \item Nutzung mehrere Objektversionen - \item spezialisiertes Sperren - \item Änderungen auf privaten Objektkopien - \end{itemize} - } -\end{itemize} - -\subsubsection{Verklemmungen} -Lösungsmöglichkeiten: -\begin{itemize} - \item{\textbf{Timout:}\\ - Transaktion nach bestimmter Wartezeit zurücksetzen.\\ - $\rightarrow$ problematisch Länge des Timeouts zu bestimmen - } - \item{\textbf{Verhütung (Prevention)}\\ - Durch Preclaiming (s.o.) keine Deadlock Verhinderung zur Laufzeit notwenig.} - \item{\textbf{Vermeidung (Avoidance)}\\ - Potentielle Deadlocks im vorhinein erkennen und vermeiden\\ - $\rightarrow$ Laufzeitunterstützung notwendig - } - \item{\textbf{Erkennung (Detection)}\\ - Explizites führen eines Wartegraphen und darin Zyklensuche. Im Zyklus dann - eine oder mehrere (am besten billigste) TA zurücksetzen.} -\end{itemize} -\textbox{Deadlock - nicht serialisierbarer Schedule}{ - Nicht serialisierbare Schedules, beschreibt Abläufe die zu - keinem seriellen Ablauf äquivalent sind. Die somit zu Deadlocks führen. - Führt man diese mit \textit{dynamischen} Sperren aus, muss es aber nicht - zwangsläufig auch zu Deadlocks kommen! -} -\subsection{Recovery} -\textbf{Recovery Klassen:} -\begin{itemize} - \item {Partial Undo (R1-Recover) - \begin{itemize} - \item nach Transaktionsfehler - \item isoliertes und vollständiges Zurücksetzen der Daten - in Anfangszustand - \item beeinflusst andere TA nicht - \end{itemize} - } - \item {Partial Redo (R2-Recover) - \begin{itemize} - \item nach Systemfehler (mit Verlust von HS) - \item Wiederhlung aller verlorengegangenen Änderungen - (waren nur im Puffer) von abgeschlossenen TA - \end{itemize} - } - \item {Global Undo (R3-Recover) - \begin{itemize} - \item nach Systemfehler (mit Verlust von HS) - \item Zurücksetzen aller durch Ausfall unterbrochenen TA - \end{itemize} - } - \item {Global Redo (R4-Recover) - \begin{itemize} - \item nach Gerätefehler - \item Einspielen von Archivkopie und nachvollziehen - aller beendeten TA's - \end{itemize} - } -\end{itemize} -\subsubsection{Archivkopien} -Arten: -\begin{itemize} - \item \glqq cold backup\grqq: DBS muss au"ser Betrieb sein - \item \glqq hot backup\grqq: Beeinträchtigung des laufenden Betriebs -\end{itemize} -\subsubsection{Einbringstrategien} -Wann werden geänderte Daten aus dem Puffer auf die Platte geschrieben? -\begin{itemize} - \item {STEAL:\\ - Bei Verdrängung au dem Puffer, auch vor ende der Transaktion} - \item {NO STEAL:\\ - Frühestens am Ende der Transaktion $\rightarrow$ kein UNDO erfoderlich (aber großen Puffer)} - - \item {FORCE:\\ - Spätestens am Ende der Transaktion $\rightarrow$ kein Partial Redo erfoderlich} - - \item {NO FORCE:\\ - Erst bei Verdränung aus dem Puffer} -\end{itemize} -Wie werden geänderte Daten aus dem Puffer auf Platte geschrieben? -\begin{itemize} - \item{ATOMIC:\\ - Indirekte Einbringstrategie.\\ - Ununterbrechbares Umschalten} - \item{NOT ATOMIC: - Direkte Einbringstrategie.\\ - Ist nicht ununterbrechbar. - } -\end{itemize} -\subsubsection{Protokolldaten} -Als Protollinformation zählt was über die Einbringungsstrategie hinaus -benötigt wird, um nach einem Systemausfall den jüngsten konsisten Zustand -wiederherzustellen. -\begin{figure}[H] - \begin{center} - \includegraphics[scale=0.6]{protokoll2.png} - \caption{Protokollinformationen} - \end{center} -\end{figure} - -\paragraph{Wann wird in Protokolldatei geschrieben?} -\begin{itemize} - \item{UNDO-Information:\\ - \begin{itemize} - \item bevor die zugehörigen Änderungen in Datenbestand eingebracht werden - \item sonst rücksetzen unmöglich - \end{itemize} - } - \item{REDO-Information:\\ - \begin{itemize} - \item muss geschrieben sein (in tmp Log Datei und Archivdatei), bevor der Abschluss der TA - an Programm bzw Benutzer gemeldet wird - \item sonst Wiederherstellung nicht möglich - \end{itemize} - } -\end{itemize} -\subsubsection{Backward-/Forward Recovery} -\begin{enumerate} - \item{ Forward:\\ - Änderungen sind noch nicht in DB, aber schon in Log. Bevor - diese auf DB geschrieben werden, wird ein Commit-Record in - Log File geschrieben. Falls was schief geht und der Commit Record noch da ist, werden alle diese Änderungen wiedehrolt und ansonsten nichts getan, da alte Version noch in DB steht.} - \item{ Backward:\\ - Ins Log kommt immer \textbf{alte} Version eines Wertes. Bei - einem Commit wird gewartet bis alle neuen werte in DB stehen. - Danach erst wird CommitRecord erstellt und eine Bestätigung - signalisiert. - Bei Verlust werden entweder alte Daten hergestellt oder nichts getan.} -\end{enumerate} -\paragraph{Vergleich} -\begin{itemize} - \item{ Forward Recovery: Hoher Speicherplatzbedarf! Daten werden erst nach Beendigung der TA in DB geschrieben und deswegen solange in Puffer behalten} - \item{ Backward-Recovery: Hoher I/O Aufwand! Alle Änderungen müssen vor TA-Ende in Datenfiles stehen.} -\end{itemize} -\subsubsection{Undo-/Redo Logging} -Verbesserung zu Backward-/Forward Recovery. -\begin{figure}[H] - \begin{center} - \includegraphics[scale=0.8]{protokoll.png} - \caption{Physische Protokollierung} - \end{center} -\end{figure} -Zustände vor bzw nach einer Änderungen werden protokolliert: -\begin{itemize} - \item alter Zustand: Before Image (BI) für UNDO - \item neuer Zustand: After Image (AI) für REDO - \item für jede veränderte Seite (3) wird jeweils eine - vollständige Kopie vor (2) und nach (4) der Änderung in den Log - geschrieben.\\ - $+$ schnelle Recovery\\ - $-$ hoher E/A Aufwand -\end{itemize} -\paragraph{Optimierungen} -Um Log-Aufwand zu reduzieren nur geänderte \textbf{Teile einer Seite} -protokollieren.\\ -Sammlung und Pufferung im HS: -\begin{itemize} - \item $+$ reduzierter E/A Aufwand - \item $-$ komplexeres und zeitaufwändigeres Recovery\\ - Zurückspeichern gleicht eher dem Neu einfügen (freien Platz suchen, TID vergeben), da Stelle von wo Einträge stammen andersweitig genutzt werden können -\end{itemize} - -\subsubsection{Sicherungspunkte} -Ma"snahmen zur Begrenzung des REDO Aufwands nach Systemfehlern (alle -erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederholt werden $\rightarrow$ nicht praktikabel! -\paragraph*{Methoden} -\begin{itemize} - \item{ \textbf{Transaction-Oriented Checkpoint}\\ - Geänderte Seiten einer TA nach TA-ende sofort in DB bringen (siehe FORCE) $\rightarrow$ zu hohe Belastung} - \item{ \textbf{ Transaction-COnsisten Checkpoint} - \begin{itemize} - \item Einbringung aller Änderung erfolgreicher TA's - \item Lesesperee auf ganzer DB zum Zeitpunkt des Sicherungspunktes - \item Verzögerung von TA's - \item Sicherungspunkt begrenzt Undo und Redo Recovery - \end{itemize} - } - \item{ \textbf{Action-Consisten Checkpoint} - \begin{itemize} - \item Zum Zeitpunkt des Sicherungspunktes dürfen keine Änderunen aktiv sein - \item Begünstigt nur Recovery, dafür kürzere Totzeit von System - \end{itemize} - } -\end{itemize} -\subsubsection{Allgemeine Restart Prozedur} -\textbf{3-phasiger Ansatz} -\begin{enumerate} - \item Analyse Lauf - Vom letzten Checkpoint bis zum Log Ende. Bestimmung von Gewinner und Verlierer TA's, sowie Seiten, die von ihnen geändert wurden - \item Undo Lauf \\ - Rücksetzen der Verlierer TA's durch Rückwärtslesen des Logs bis zum BOT Satz der ältesten Verlierer TA - \item Redo Lauf \\ - Vorwärtslesen des Logs (Startpunkt abhängig von Checkpoint Typ) und Änderungen der Gewinner TA's wiederholen -\end{enumerate} - +\include{./Speicherung} +\include{./Transaktionen} \end{document} diff --git a/Speicherung.tex b/Speicherung.tex new file mode 100644 index 0000000..2c4e643 --- /dev/null +++ b/Speicherung.tex @@ -0,0 +1 @@ +\section{Speicherung} diff --git a/Transaktionen.tex b/Transaktionen.tex new file mode 100644 index 0000000..1c00f75 --- /dev/null +++ b/Transaktionen.tex @@ -0,0 +1,342 @@ +\section{Transaktionen} +\subsection{Allgemein} +\subsubsection{Was sind Transaktionen?} +Transaktionen sind eine logische Arbeitseinheit, die mehrere +DB Schritte zusammenfassen.\\ +Z.B. einfügen eines neuen Mitarbeiters besteht aus vielen kleinen +DB Befehlen, bis Datenbank wieder konsistent ist + +\subsubsection{Wofür sind sie gut?} +Sie überleiten von einem konsistenten Zustand in den nächsten. +Im Fehlerfall muss die Möglichkeit gegeben werden, wieder in +einen konsistenten Zustand zu finden. +Im Mehrfachbetrieb muss gewährleistet werden, dass keine +Nebenläufigkeitsprobleme auftauchen. + +\subsubsection{ACID Eigenschaften von Transaktionen:} +\begin{itemize} + \item \textbf{Atomic:} Alle Änderungen von TA werden aktiv oder keine + \item \textbf{Consistency:} TA überführt DB von konsistent in konsistenten Zustand + \item \textbf{Isolation:} TA wird nicht von anderer TA beeinflusst + \item \textbf{Durability:} Änderungen sind Dauerhaft in DB übernommen +\end{itemize} + +\subsection{Konsistenzen:} +\subsubsection{Physische Konsistenz:} +Alle Speicheurngsstrukturen sind korrekt. Alle TID's stimmen etc. + +\subsubsection{Logische Konsistenz:} +Setzt Physische Konsistenz voraus.\\ +Korrektheit der Dateninhalte.\\ +Alle Bedingungen des Datenmodells und alle Benutzerdefinierten +Bedingungen sind erfüllt (Assertions). + +\subsection{Synchronisation} +\subsubsection{Zustandsdiagramm TA} +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.6]{TA_status.png} + \caption{Transaktionszustände} + \end{center} +\end{figure} + +\subsubsection{Anomalien ohne Synchronisation} +\begin{itemize} + \item \textbf{lost updates}\\ + $r_1(x) r_2(x) w_1(x) w_2(x)$ + \item Abhängigkeiten von nicht freigegeben Änderungen + \begin{itemize} + \item \textbf{dirty read}\\ + $w_1(x)r_2(x)a_1 c_2$\\ + Änderung wird noch nicht freigegeben (ggf abgebrochen) aber trotzdem gelesen + \item \textbf{dirty write}\\ + $w_1(x)r_2(x)w_2(x)a_1 c_2$\\ + Änderung wird noch nicht freigegeben (ggf abgebrochen) aber trotzdem geschrieben + \end{itemize} + \item \textbf{Non Repeatable Read}\\ + $r_1(x)w_2(x)r_1(x)$\\ + T1 sieht beim erneuten lesen einen anderen Wert als zuvor + \item \textbf{Phantom}\\ + $r_1(P)w_2(x in P)r_1(P)$\\ + Wie bei \textit{Non Repeatable Read} nur Prädikat statt einzelnes Element +\end{itemize} +\textit{Legende: c = commit, a = abort, w = write, r = read} +\subsubsection{Serialisierung} +Hintereinanderausführung aller TA's. Problem werden +sehr große Wartezeiten. Allgemein ist deine Datenbank für Mehrbenutzerbetrieb +ausgelegt, dies würde ab adsurdum geführt durch Serialisierung. +Was tun im Fehlerfall + +\subsubsection{Serialisierbarkeit} +Ziel:\\TA's laufen \textit{verzahnt} ab, aber ihr Ergebnis gleicht dem eines seriellen +Ablaufes.\\ +$\rightarrow$ Ein Schedule von TA's ist \textbf{serialisierbar}, wenn es einen äquivalten +\textbf{seriellen} Ablauf gibt. + +\subsubsection{Implementierung von Sperren} +\textbf{Wann sperren?}\\ +Statisch:\\ +Alles sperren was evtl gebraucht wir (preclaiming) + +Dynamisch:\\ +Zur Laufzeit von TA nach Bedarf sperren\\ +$\rightarrow$ Gefahr von Verklemmungen! + +Sperrgranulat:\\ +Warum nicht Tupel: +\begin{itemize} + \item Nicht immer effizient, bei großen Mengen + \item Phantom Tupel; es können nur bereits existente Tupel gesperrt werden. +\end{itemize} +Deshalb wird \textit{hierarchische Schachtelung} der Datenobjekte:\\ +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.8]{sperrgranulat.png} + \caption{Sperrgranulate} + \end{center} +\end{figure} + +Für jedes Objekt kann man nun einen Sperrmodus vergeben. +Andere TA können daran erkennen, ob sie ihre Aktion ausführen dürfen. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.6]{komp_matrix.png} + \caption{Kompatibilitätsmatrix} + \end{center} +\end{figure} +Das Problem an dieser Art der Sperrung ist, dass +\begin{itemize} + \item Alle Nachfolgeknoten implizit mitgesperrt werden + \item Alle Vorgängerknoten auch gesperrt werden müssen +\end{itemize} +Daher werden sogenannte \textbf{(Intention) Anwartschaftssperren} eingeführt: +\begin{itemize} + \item {IS Sperre:\\ + falls auf untergeordnete Objekte lesend zugegriffen wird} + \item {IX Sperre:\\ + falls auf untergeordnete schreibend zugegriffen wird} +\end{itemize} +$\rightarrow$ Benutzung von Untersperre wird angezeigt, aber nochmal explizit weiter unten gesetzt! +\paragraph{TOP-DOWN bei Sperre} +\begin{itemize} + \item Bevor ein Knoten mit S oder IS gesperrt werden darf, müssen alle Vorgänger + in der Hierarchie im IX- oder im IS-Modus gesperrt worden sein. + \item + Bevor ein Knoten mit X oder IX gesperrt werden darf, müssen alle Vorgänger + in der Hierarchie im IX-Modus gesperrt worden sein. +\end{itemize} +\paragraph{BOTTOM-UP bei Freigabe} +\begin{itemize} + \item Freigabe von unten nach oben + \item kein Knoten darf entsperrt werden, wenn noch andere Nachfolger dieses Knotens + gesperrt sind +\end{itemize} +Als Optimierung gibt es noch die \textbf{SIX} Sperre. Alles wird lesend gesperrt +und eine Menge an Nachfolgern schreibend. Das lohnt sich z.B. wenn aus einer Relation +nur wenige Tupel verändert werden. + +\subsubsection{Probleme beim Sperren} +\begin{itemize} + \item Sperren muss sehr schnell gehen, da Anforderungen sehr hoch + \item halten von Sperren bis TA-ende führt zu langen Wartezeiten + \item Eigenschaften des Schemas können \glqq hotspots\grqq erzeugen + \item {Optimierungen: + \begin{itemize} + \item Nutzung mehrere Objektversionen + \item spezialisiertes Sperren + \item Änderungen auf privaten Objektkopien + \end{itemize} + } +\end{itemize} + +\subsubsection{Verklemmungen} +Lösungsmöglichkeiten: +\begin{itemize} + \item{\textbf{Timout:}\\ + Transaktion nach bestimmter Wartezeit zurücksetzen.\\ + $\rightarrow$ problematisch Länge des Timeouts zu bestimmen + } + \item{\textbf{Verhütung (Prevention)}\\ + Durch Preclaiming (s.o.) keine Deadlock Verhinderung zur Laufzeit notwenig.} + \item{\textbf{Vermeidung (Avoidance)}\\ + Potentielle Deadlocks im vorhinein erkennen und vermeiden\\ + $\rightarrow$ Laufzeitunterstützung notwendig + } + \item{\textbf{Erkennung (Detection)}\\ + Explizites führen eines Wartegraphen und darin Zyklensuche. Im Zyklus dann + eine oder mehrere (am besten billigste) TA zurücksetzen.} +\end{itemize} +\textbox{Deadlock - nicht serialisierbarer Schedule}{ + Nicht serialisierbare Schedules, beschreibt Abläufe die zu + keinem seriellen Ablauf äquivalent sind. Die somit zu Deadlocks führen. + Führt man diese mit \textit{dynamischen} Sperren aus, muss es aber nicht + zwangsläufig auch zu Deadlocks kommen! +} +\subsection{Recovery} +\textbf{Recovery Klassen:} +\begin{itemize} + \item {Partial Undo (R1-Recover) + \begin{itemize} + \item nach Transaktionsfehler + \item isoliertes und vollständiges Zurücksetzen der Daten + in Anfangszustand + \item beeinflusst andere TA nicht + \end{itemize} + } + \item {Partial Redo (R2-Recover) + \begin{itemize} + \item nach Systemfehler (mit Verlust von HS) + \item Wiederhlung aller verlorengegangenen Änderungen + (waren nur im Puffer) von abgeschlossenen TA + \end{itemize} + } + \item {Global Undo (R3-Recover) + \begin{itemize} + \item nach Systemfehler (mit Verlust von HS) + \item Zurücksetzen aller durch Ausfall unterbrochenen TA + \end{itemize} + } + \item {Global Redo (R4-Recover) + \begin{itemize} + \item nach Gerätefehler + \item Einspielen von Archivkopie und nachvollziehen + aller beendeten TA's + \end{itemize} + } +\end{itemize} +\subsubsection{Archivkopien} +Arten: +\begin{itemize} + \item \glqq cold backup\grqq: DBS muss au"ser Betrieb sein + \item \glqq hot backup\grqq: Beeinträchtigung des laufenden Betriebs +\end{itemize} +\subsubsection{Einbringstrategien} +Wann werden geänderte Daten aus dem Puffer auf die Platte geschrieben? +\begin{itemize} + \item {STEAL:\\ + Bei Verdrängung au dem Puffer, auch vor ende der Transaktion} + \item {NO STEAL:\\ + Frühestens am Ende der Transaktion $\rightarrow$ kein UNDO erfoderlich (aber großen Puffer)} + + \item {FORCE:\\ + Spätestens am Ende der Transaktion $\rightarrow$ kein Partial Redo erfoderlich} + + \item {NO FORCE:\\ + Erst bei Verdränung aus dem Puffer} +\end{itemize} +Wie werden geänderte Daten aus dem Puffer auf Platte geschrieben? +\begin{itemize} + \item{ATOMIC:\\ + Indirekte Einbringstrategie.\\ + Ununterbrechbares Umschalten} + \item{NOT ATOMIC: + Direkte Einbringstrategie.\\ + Ist nicht ununterbrechbar. + } +\end{itemize} +\subsubsection{Protokolldaten} +Als Protollinformation zählt was über die Einbringungsstrategie hinaus +benötigt wird, um nach einem Systemausfall den jüngsten konsisten Zustand +wiederherzustellen. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.6]{protokoll2.png} + \caption{Protokollinformationen} + \end{center} +\end{figure} + +\paragraph{Wann wird in Protokolldatei geschrieben?} +\begin{itemize} + \item{UNDO-Information:\\ + \begin{itemize} + \item bevor die zugehörigen Änderungen in Datenbestand eingebracht werden + \item sonst rücksetzen unmöglich + \end{itemize} + } + \item{REDO-Information:\\ + \begin{itemize} + \item muss geschrieben sein (in tmp Log Datei und Archivdatei), bevor der Abschluss der TA + an Programm bzw Benutzer gemeldet wird + \item sonst Wiederherstellung nicht möglich + \end{itemize} + } +\end{itemize} +\subsubsection{Backward-/Forward Recovery} +\begin{enumerate} + \item{ Forward:\\ + Änderungen sind noch nicht in DB, aber schon in Log. Bevor + diese auf DB geschrieben werden, wird ein Commit-Record in + Log File geschrieben. Falls was schief geht und der Commit Record noch da ist, werden alle diese Änderungen wiedehrolt und ansonsten nichts getan, da alte Version noch in DB steht.} + \item{ Backward:\\ + Ins Log kommt immer \textbf{alte} Version eines Wertes. Bei + einem Commit wird gewartet bis alle neuen werte in DB stehen. + Danach erst wird CommitRecord erstellt und eine Bestätigung + signalisiert. + Bei Verlust werden entweder alte Daten hergestellt oder nichts getan.} +\end{enumerate} +\paragraph{Vergleich} +\begin{itemize} + \item{ Forward Recovery: Hoher Speicherplatzbedarf! Daten werden erst nach Beendigung der TA in DB geschrieben und deswegen solange in Puffer behalten} + \item{ Backward-Recovery: Hoher I/O Aufwand! Alle Änderungen müssen vor TA-Ende in Datenfiles stehen.} +\end{itemize} +\subsubsection{Undo-/Redo Logging} +Verbesserung zu Backward-/Forward Recovery. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.8]{protokoll.png} + \caption{Physische Protokollierung} + \end{center} +\end{figure} +Zustände vor bzw nach einer Änderungen werden protokolliert: +\begin{itemize} + \item alter Zustand: Before Image (BI) für UNDO + \item neuer Zustand: After Image (AI) für REDO + \item für jede veränderte Seite (3) wird jeweils eine + vollständige Kopie vor (2) und nach (4) der Änderung in den Log + geschrieben.\\ + $+$ schnelle Recovery\\ + $-$ hoher E/A Aufwand +\end{itemize} +\paragraph{Optimierungen} +Um Log-Aufwand zu reduzieren nur geänderte \textbf{Teile einer Seite} +protokollieren.\\ +Sammlung und Pufferung im HS: +\begin{itemize} + \item $+$ reduzierter E/A Aufwand + \item $-$ komplexeres und zeitaufwändigeres Recovery\\ + Zurückspeichern gleicht eher dem Neu einfügen (freien Platz suchen, TID vergeben), da Stelle von wo Einträge stammen andersweitig genutzt werden können +\end{itemize} + +\subsubsection{Sicherungspunkte} +Ma"snahmen zur Begrenzung des REDO Aufwands nach Systemfehlern (alle +erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederholt werden $\rightarrow$ nicht praktikabel! +\paragraph*{Methoden} +\begin{itemize} + \item{ \textbf{Transaction-Oriented Checkpoint}\\ + Geänderte Seiten einer TA nach TA-ende sofort in DB bringen (siehe FORCE) $\rightarrow$ zu hohe Belastung} + \item{ \textbf{ Transaction-COnsisten Checkpoint} + \begin{itemize} + \item Einbringung aller Änderung erfolgreicher TA's + \item Lesesperee auf ganzer DB zum Zeitpunkt des Sicherungspunktes + \item Verzögerung von TA's + \item Sicherungspunkt begrenzt Undo und Redo Recovery + \end{itemize} + } + \item{ \textbf{Action-Consisten Checkpoint} + \begin{itemize} + \item Zum Zeitpunkt des Sicherungspunktes dürfen keine Änderunen aktiv sein + \item Begünstigt nur Recovery, dafür kürzere Totzeit von System + \end{itemize} + } +\end{itemize} +\subsubsection{Allgemeine Restart Prozedur} +\textbf{3-phasiger Ansatz} +\begin{enumerate} + \item Analyse Lauf + Vom letzten Checkpoint bis zum Log Ende. Bestimmung von Gewinner und Verlierer TA's, sowie Seiten, die von ihnen geändert wurden + \item Undo Lauf \\ + Rücksetzen der Verlierer TA's durch Rückwärtslesen des Logs bis zum BOT Satz der ältesten Verlierer TA + \item Redo Lauf \\ + Vorwärtslesen des Logs (Startpunkt abhängig von Checkpoint Typ) und Änderungen der Gewinner TA's wiederholen +\end{enumerate} + From c9f7e3a4b1d19e3025dad74045c522e21b1f25c6 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Tue, 11 Feb 2014 20:28:21 +0100 Subject: [PATCH 04/19] Speicherung angefangen. Bilderordner sortiert. --- .gitignore | 2 + IDB.tex | 1 + Speicherung.tex | 82 +++++++++++++++++++- Transaktionen.tex | 10 +-- TA_status.png => pics/TA_status.png | Bin komp_matrix.png => pics/komp_matrix.png | Bin protokoll.png => pics/protokoll.png | Bin protokoll2.png => pics/protokoll2.png | Bin pics/satz_speicherstruktur.png | Bin 0 -> 21898 bytes sperrgranulat.png => pics/sperrgranulat.png | Bin 10 files changed, 89 insertions(+), 6 deletions(-) rename TA_status.png => pics/TA_status.png (100%) rename komp_matrix.png => pics/komp_matrix.png (100%) rename protokoll.png => pics/protokoll.png (100%) rename protokoll2.png => pics/protokoll2.png (100%) create mode 100644 pics/satz_speicherstruktur.png rename sperrgranulat.png => pics/sperrgranulat.png (100%) diff --git a/.gitignore b/.gitignore index e0e6f7d..1371594 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ *.fls +*.lof +*.swp* *.pdf *.aux *.out diff --git a/IDB.tex b/IDB.tex index 7072382..376aba4 100644 --- a/IDB.tex +++ b/IDB.tex @@ -60,6 +60,7 @@ \begin{document} \tableofcontents +\listoffigures \newpage \include{./Speicherung} \include{./Transaktionen} diff --git a/Speicherung.tex b/Speicherung.tex index 2c4e643..46f5d4b 100644 --- a/Speicherung.tex +++ b/Speicherung.tex @@ -1 +1,81 @@ -\section{Speicherung} +\section{Speicherung von Tupeln und Relationen} +\subsection{Ziele} +\begin{itemize} + \item Relationen mit Mitteln der darunter implementierten Schichten sichern + \item Anfragen (SQL) möglichst effizient auswerten +\end{itemize} +\subsection{Speicherung von Tupeln in Sätzen} +\subsubsection{Aufbau von Sätzen} +\begin{itemize} + \item Sätze sind aus \textbf{Feldern} zusammengesetzt (Name, Typ, Länge) + \item \textbf{Systemkatalog}\\Informationen über Felder und Reihenfolge +\end{itemize} +\subsubsection{Satztyp} +\begin{itemize} + \item Menge von Sätzen mit gleicher Struktur $\rightarrow$ einmalige + Beschreibung im Systemkatalog + \item beim speichern eines Satzes wird im ein Satztyp zugeordnet + \item Länge der Sätze zumeist variabel +\end{itemize} +\textbf{Annahme: Reihenfolge der Felder egal} + +\subsubsection{Anforderungen} +\textbf{Speicherplatzeffizienz}: +\begin{itemize} + \item variable Länge + \item undefinierte Werte nicht speichern + \item Hilfsstrukturen minimieren +\end{itemize} + +\textbf{direkter Zugriff auf Felder}: +\begin{itemize} + \item ohne vorher andere Felder lesen zu müssen + \item direkt zur Anfangs-Byte Position innerhalb des Satzes +\end{itemize} + + +\textbf{Flexibilität}: +\begin{itemize} + \item Hinzufügen von Feldern bei allen Sätzen + \item Löschen eines Feldes aus allen Sätzen +\end{itemize} + +\subsubsection{Speicherungsstruktur im Satz} +Der Satz wird in zwei logische Teile untergliedert. Einer beinhaltet +alle Felder fester Länge und der andere alle der variablen. +Mit Katalogdaten und Längenangaben im Satz, lässt sich \textbf{flexibel} +und \textbf{direkt} auf die Felder zugreifen. + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/satz_speicherstruktur.png} + \caption{Variable Satz Speicherstruktur} + \end{center} +\end{figure} + +\subsection{Speicherung von Relationen} +\subsubsection{Spaltenweise Speicherung (C-Store)} +\begin{itemize} + \item Auf das Lesen hin optimiert. Gut für Auswertung + großer Datenmengen + \item Nur Attribute lesen, die gebraucht werden + \item kompakte Speicherung der Attributwerte +\end{itemize} +\textbf{Prototyp} +\begin{itemize} + \item speichert Sammlung von Spaltengruppen nach Attribut sortiert + \item Gruppen von Spalten = Projektion + \item Speicherung + \begin{itemize} + \item \textbf{Schreibspeicher} für schnelles Einfügen und Ändern von Tupeln + \item \textbf{Lesespeicher} für umfangreiche Analysen + \end{itemize} + \item Änderung durch Löschen und Einfügen +\end{itemize} +\textbf{Projektionen} +\begin{itemize} + \item Die Projektionen besitzen ein oder mehrere Attribute aus einer logischen +Tablle (ggf durch Fremdschlüssel auch Attribute aus anderen Tabellen) + \item Duplikate bleiben erhalten + \item Als Sortierschlüssel wird eines der Attribute hergenohmen +\end{itemize} diff --git a/Transaktionen.tex b/Transaktionen.tex index 1c00f75..246e7fc 100644 --- a/Transaktionen.tex +++ b/Transaktionen.tex @@ -35,7 +35,7 @@ Bedingungen sind erfüllt (Assertions). \subsubsection{Zustandsdiagramm TA} \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{TA_status.png} + \includegraphics[scale=0.6]{pics/TA_status.png} \caption{Transaktionszustände} \end{center} \end{figure} @@ -91,7 +91,7 @@ Warum nicht Tupel: Deshalb wird \textit{hierarchische Schachtelung} der Datenobjekte:\\ \begin{figure}[H] \begin{center} - \includegraphics[scale=0.8]{sperrgranulat.png} + \includegraphics[scale=0.8]{pics/sperrgranulat.png} \caption{Sperrgranulate} \end{center} \end{figure} @@ -100,7 +100,7 @@ Für jedes Objekt kann man nun einen Sperrmodus vergeben. Andere TA können daran erkennen, ob sie ihre Aktion ausführen dürfen. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{komp_matrix.png} + \includegraphics[scale=0.6]{pics/komp_matrix.png} \caption{Kompatibilitätsmatrix} \end{center} \end{figure} @@ -240,7 +240,7 @@ benötigt wird, um nach einem Systemausfall den jüngsten konsisten Zustand wiederherzustellen. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.6]{protokoll2.png} + \includegraphics[scale=0.6]{pics/protokoll2.png} \caption{Protokollinformationen} \end{center} \end{figure} @@ -283,7 +283,7 @@ wiederherzustellen. Verbesserung zu Backward-/Forward Recovery. \begin{figure}[H] \begin{center} - \includegraphics[scale=0.8]{protokoll.png} + \includegraphics[scale=0.8]{pics/protokoll.png} \caption{Physische Protokollierung} \end{center} \end{figure} diff --git a/TA_status.png b/pics/TA_status.png similarity index 100% rename from TA_status.png rename to pics/TA_status.png diff --git a/komp_matrix.png b/pics/komp_matrix.png similarity index 100% rename from komp_matrix.png rename to pics/komp_matrix.png diff --git a/protokoll.png b/pics/protokoll.png similarity index 100% rename from protokoll.png rename to pics/protokoll.png diff --git a/protokoll2.png b/pics/protokoll2.png similarity index 100% rename from protokoll2.png rename to pics/protokoll2.png diff --git a/pics/satz_speicherstruktur.png b/pics/satz_speicherstruktur.png new file mode 100644 index 0000000000000000000000000000000000000000..d62fbb0929df26d18a24a6d0fb80a7271eb7b40f GIT binary patch literal 21898 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 Date: Wed, 12 Feb 2014 11:41:27 +0100 Subject: [PATCH 05/19] Kap 9: Speicherung fertig --- Speicherung.tex | 52 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/Speicherung.tex b/Speicherung.tex index 46f5d4b..49875b0 100644 --- a/Speicherung.tex +++ b/Speicherung.tex @@ -52,7 +52,11 @@ und \textbf{direkt} auf die Felder zugreifen. \caption{Variable Satz Speicherstruktur} \end{center} \end{figure} - +Würden man alle Felder mit den Zeiger erreichen, wäre das Speicherplatzverschwendung. +So sind alle Felder fester Größe direkt erreichbar. +\textbox{Speicheurngsstruktur in Sätzen}{ + Blatt 9 Aufgabe 2 üben. +} \subsection{Speicherung von Relationen} \subsubsection{Spaltenweise Speicherung (C-Store)} \begin{itemize} @@ -63,19 +67,59 @@ und \textbf{direkt} auf die Felder zugreifen. \end{itemize} \textbf{Prototyp} \begin{itemize} - \item speichert Sammlung von Spaltengruppen nach Attribut sortiert + \item speichert Sammlung von Spaltengruppen + über mehrere Sätze verteilt + \item Sortierschlüssel ist ein Attribut \item Gruppen von Spalten = Projektion \item Speicherung \begin{itemize} \item \textbf{Schreibspeicher} für schnelles Einfügen und Ändern von Tupeln \item \textbf{Lesespeicher} für umfangreiche Analysen \end{itemize} - \item Änderung durch Löschen und Einfügen + \item Änderung durch Löschen und Einfügen durch Tuple Mover \end{itemize} \textbf{Projektionen} \begin{itemize} \item Die Projektionen besitzen ein oder mehrere Attribute aus einer logischen Tablle (ggf durch Fremdschlüssel auch Attribute aus anderen Tabellen) \item Duplikate bleiben erhalten - \item Als Sortierschlüssel wird eines der Attribute hergenohmen + \item Als Sortierschlüssel wird eines der Attribute hergenommen \end{itemize} +\textbf{Komprimierungen} +Abhängig von zwei Eigenschaften der Spalte: +\begin{itemize} + \item Sortierung (nach der Spalte selbst) : ja/nein + \item Anzahl der verschiedenen Werte: wenig/viel +\end{itemize} +\begin{enumerate} + \item sortiert mit wenigen verschiedenen Werten:\\ + organisiert in einem B-Baum mit + \begin{itemize} + \item dichter Packung $\rightarrow$ alle Seiten voll (keine Änderungen!) + \item und großen Seiten $\rightarrow$ geringe Höhe + \end{itemize} + \item unsortiert mit wenigen verschiedenen Werten:\\ + Offset-Indexe: B-Baum für Abbildung von Positiionen in einer Spalte auf die Werte in dieser Spaltebegin + \item sortiert mit vielen verschiedenen Werten:\\ + \begin{itemize} + \item B-Baum mit dichter Packung + \item Delta Codierung: Differenzen zum Vorgänger speichern + \end{itemize} + \item unsortiert mit vielen verschiedenen Werten + \begin{itemize} + \item unkomprimiert + \item B-Baum mit dichter Packung als sek. Organisation möglich + \end{itemize} +\end{enumerate} +\subsubsection{Ausführung von Anfragen} +\textbox{Schritte für Ausführung von Query:}{ +\begin{enumerate} + \item Syntaxprüfung + \item gibt es die Relation und Attribute + \item wie heißt Datei zur Relation + \item was für eine Datei ist das - direkt oder schlüsselbasiert + \item gibt es passende Projektionen + \item wo liegen die Verbund Indizes + \item müssen Partitionen zusammgeführt werden +\end{enumerate} +} From e89c3b4f2876003dc62a7c9956fb29bcfd56dace Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Wed, 12 Feb 2014 12:25:19 +0100 Subject: [PATCH 06/19] Kap 10: Anfrageverarbeitung fertig --- Anfrageverarbeitung.tex | 86 +++++++++++++++++++++++++++++++++++ IDB.tex | 3 +- pics/anfrageverarbeitung.png | Bin 0 -> 39795 bytes pics/operatorbaum.png | Bin 0 -> 24220 bytes 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 Anfrageverarbeitung.tex create mode 100644 pics/anfrageverarbeitung.png create mode 100644 pics/operatorbaum.png diff --git a/Anfrageverarbeitung.tex b/Anfrageverarbeitung.tex new file mode 100644 index 0000000..dc86994 --- /dev/null +++ b/Anfrageverarbeitung.tex @@ -0,0 +1,86 @@ +\section{Anfrageverarbeitung} + +\subsection{Allgemein} +Eine SQL Anfrage ist ein mengenorientierter Zugriff. +D.h. diese mengenorientierten Operatoren müssen auf satzorientierte +Operatoren abgebildet werden. +\subsubsection{Phasen} +\textbf{Verarbeitungsschritte}: +\begin{itemize} + \item Syntax überprüfen + \item Rechte und Integritätsbedingungen (Formate) prüfen + \item \textbf{Anfrageoptimierung} um effizient Query zu bearbeiten + \item Code Generieung +\end{itemize} +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.7]{pics/anfrageverarbeitung.png} + \caption{Phasen der Anfrageverarbeitung} + \end{center} +\end{figure} +\textbf{Ziel}:\\ +Umsetzung deskriptiver Anfragen in eine \glqq optimale\grqq Folge +interner DBS-Operationen +\subsection{Interndarstellung} +\subsubsection{Relationale Algebra} +Definition von relationalen \textbf{logischen Operatoren}: +\begin{itemize} + \item Selektion: Auswahl von \glqq Zeilen \grqq (\textbf{where}-Klausel) + \item Projektion Auswahl von \glqq Spalten \grqq (\textbf{select}-Klausel) +\item Kreuzprodukt: Konkatenation derjenigen Tupel aus zwei Relationen(\textbf{from}) + \item Verbund: Konkatenation derjenigen Tupel aus zwei Relationen + die eine Bedingung erfüllen(\textbf{from-where}) + \item Mengenoperationen auf zwei Relationen: + \begin{itemize} + \item $R \cup S$ bzw \textbf{UNION(R,S)} + \item $R \cap S$ bzw \textbf{INTERSECT(R,S)} + \item $R \setminus S$ bzw \textbf{EXCEPT(R,S)} + \end{itemize} +\end{itemize} +\subsubsection{Operatorbaum} +Beispiel: +\begin{lstlisting} +select Name, Beruf +from Abt a, Pers p, + PM pm , Projekt pj + where a.ANr = p.ANr + and a.AOrt = "Erlangen" + and p.PNr = pm.PNr + and pm.JNr = pj.JNr + and pj.POrt = "Erlangen" +\end{lstlisting} + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.7]{pics/operatorbaum.png} + \caption{Operatorbaum} + \end{center} +\end{figure} +Blattknoten: Relationen\\ +Gerichtete Kanten: Datenfluss\\ +Knoten: Operatoren der Relationalen Algebra +\subsection{Restrukturierung} +Regeln: +\begin{enumerate} + \item Ein n-facher Verbund kann durch eine Folge von binären Verbunden ersetzt und werden und umgekehrt + \item Verbund ist kommutativ + \item Verbund ist assoziativ + \item Selektionen können zusammengefasst werden + \item Projektionen können zusammengefasst werden + \item Selektionen und Projektionen dürfen vertauscht werden + \item Selektionen und Verbund dürfen vertauscht werden + \item Selektion darf mit Vereinigung und Differenz vertauscht werden + \item Selektion und Kreuzprodukt können zu Verbund zusammengefasst weren +\end{enumerate} +\subsubsection{Algorithmus} +\textbf{Ziel}: Kreuzprodukt vermeiden +Heuristik: +\begin{itemize} + \item komplexe Verbundoperationen zerlegen in binäre Verbunde (Regel 1) + \item Selektionen mit mehreren Prädikat Termen separieren in Selektionen mit jeweils einem Prädikat Term (Regel 4) + \item Selektionen so früh wie möglich ausführen (Regel 7 und 8) + \item Selektionen und Kreuzprodukt zu Verbund zusammenfassen, wenn + das Selektioinsprädikat Attribute aus den beiden Relationen verwendet (Regel 9) + \item Projektionen so früh wie möglich ausführen + +\end{itemize} diff --git a/IDB.tex b/IDB.tex index 376aba4..7da96bd 100644 --- a/IDB.tex +++ b/IDB.tex @@ -30,7 +30,7 @@ commentstyle=\color{dkgreen}, % comment style frame=single, % adds a frame around the code keywordstyle=\color{blue}, % keyword style - language=C++, % the language of the code + language=sql, % the language of the code mathescape=true, autogobble, numbers=left % where to put the line-numbers; possible values are (none, left, right) @@ -63,5 +63,6 @@ \listoffigures \newpage \include{./Speicherung} +\include{./Anfrageverarbeitung} \include{./Transaktionen} \end{document} diff --git a/pics/anfrageverarbeitung.png b/pics/anfrageverarbeitung.png new file mode 100644 index 0000000000000000000000000000000000000000..36e423f45fc8e4159c8b5df61fc5b537905793e0 GIT binary patch literal 39795 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 literal 0 HcmV?d00001 From fb9cfa396fc08feb11fddeea9e6ed3da55770047 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Wed, 12 Feb 2014 13:37:19 +0100 Subject: [PATCH 07/19] =?UTF-8?q?Anfrageverarbeitung=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Anfrageverarbeitung.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Anfrageverarbeitung.tex b/Anfrageverarbeitung.tex index dc86994..a169cff 100644 --- a/Anfrageverarbeitung.tex +++ b/Anfrageverarbeitung.tex @@ -81,6 +81,6 @@ Heuristik: \item Selektionen so früh wie möglich ausführen (Regel 7 und 8) \item Selektionen und Kreuzprodukt zu Verbund zusammenfassen, wenn das Selektioinsprädikat Attribute aus den beiden Relationen verwendet (Regel 9) - \item Projektionen so früh wie möglich ausführen + \item Projektionen so früh wie möglich ausführen, allerdings nicht vor Selektion und Mengenoperationen. \end{itemize} From 3bf31fafbd502ec946051ecdc2bf765adf056506 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Wed, 12 Feb 2014 15:11:45 +0100 Subject: [PATCH 08/19] Kap 11: Relationale Operatoren fertig --- IDB.tex | 15 +++ Relationale_Operatoren.tex | 196 +++++++++++++++++++++++++++++++++++++ pics/hash_join.png | Bin 0 -> 32622 bytes pics/merge_sort_join.png | Bin 0 -> 29558 bytes pics/trefferrate.png | Bin 0 -> 11941 bytes 5 files changed, 211 insertions(+) create mode 100644 Relationale_Operatoren.tex create mode 100644 pics/hash_join.png create mode 100644 pics/merge_sort_join.png create mode 100644 pics/trefferrate.png diff --git a/IDB.tex b/IDB.tex index 7da96bd..8a9150d 100644 --- a/IDB.tex +++ b/IDB.tex @@ -39,6 +39,19 @@ \setcounter{secnumdepth}{4} \setcounter{tocdepth}{4} \setlength{\parindent}{0pt} +% wrapping environment for pic in paragraphs +\usepackage{floatflt} +% Einruecken nach newline via '//' unterbinden +\setlength{\parindent}{0pt} + +\makeatletter +\renewcommand\paragraph{% + \@startsection{paragraph}{4}{0mm}% + {-\baselineskip}% + {.5\baselineskip}% +{\normalfont\normalsize\bfseries}} +\makeatother + %==INFOBOXEN========================================= %idee: http://tex.stackexchange.com/a/66822 \usepackage[tikz]{bclogo} @@ -64,5 +77,7 @@ \newpage \include{./Speicherung} \include{./Anfrageverarbeitung} +\include{./Relationale_Operatoren} \include{./Transaktionen} + \end{document} diff --git a/Relationale_Operatoren.tex b/Relationale_Operatoren.tex new file mode 100644 index 0000000..42bf1a7 --- /dev/null +++ b/Relationale_Operatoren.tex @@ -0,0 +1,196 @@ +\section{Relationale Operatoren} +\subsection{Allgemein} +Die grundsätzliche Aufgabe besteht darin die logischen Operatoren +(SEL(),PROJ(),JOIN(),\ldots) durch \textbf{Planoperatoren} zu ersetzen.\\ +Teilaufgaben: +\begin{itemize} + \item Erkennung gemeinsamer Teilbäume (notwendig: Zwischenspeicherung + von Ergebnisrelation) + \item {Bestimmung der Verknüpfungsreihenfolge bei Verbundoperationen: + \begin{itemize} + \item Ziel: minimale Kosten für die Operationsfolge + \item Heuristik: Minimierung der Größe der Zwischenergebnisse, + d.h. kleinsten Relationen immer zuerst verknüpfen + \end{itemize} + } + \item Gruppierung von direkt benachbarten Operatoren zu einem einzelnen Planoperator (z.B. Verbund mit Selektion) +\end{itemize} +\subsection{Planoperatoren} +SQL erlaubt Anfragen über k-Relationen: +\begin{itemize} + \item Ein Variablen Ausdrücke (eine Relation) + \item Zwei Variablem AUsdrücke (zwei Relationen) + \item k-Variablen Ausdrücke (zerlegt in Ein- und Zwei Variablen Ausdrücke) +\end{itemize} + +\subsubsection{Selektion} +\begin{itemize} + \item Nutzung eines \textbf{Scan}-Operators\\ + Definition von Start- und Stoppbedingungen sowie Suchargumenten + \item Index Scan $\rightarrow$ Auswahl des kostengünstigsten Index + \item Relationen Scan +\end{itemize} +\subsubsection{Projektion} +\begin{itemize} + \item meist in Kobination mit Verbund, Selektion und Sortierung + \item auch als eigener Planoperator +\end{itemize} +\subsubsection{Sortierung} +\begin{itemize} + \item erforderlich bei \textbf{order by} + \item beschleunigt ggf Joins + \item Duplikateleminierung (\textbf{distinct}) +\end{itemize} +\subsubsection{Joins} +Joins werden in \textbf{binäre} Verbunde gegliedert. Bei $n$ Verbunden +sind $n!$ Reihenfolgen möglich. Die optimale Reihenfolge ist abhängig von +\begin{itemize} + \item Planoperatoren + \item passenden Sortierordnungen + \item Größe der Operanden usw +\end{itemize} +Verbundoperationen sind sehr häufig und auch teuer $\rightarrow$ Optimierung.\\ +Typisch sind \textbf{Gleichverbunde}. +Standartszenario für Verbunde: +\begin{lstlisting} +select * from R,S +where R.VA $\Theta$ S.VA // Verbundpraedikat + // $\Theta \in \{=, >, <, \neq, \geq, \leq\}$ +and P(R.SA) // lokale Selektion +and P(S.SA) // VA = Verbundattribut + // SA = Selektionsattribut + +\end{lstlisting} +\paragraph{Nested Loop Verbund} + +Annahmen:\\ +Sätze in R und S sind nicht nach Verbundsattributen geordnet.\\ +Es sind keine Indexstrukturen $I_R(VA)$ und $I_S(VA)$ vorhanden. +\begin{lstlisting} +Scan ueber $S$; //aeussere Schleife +fuer jeden Satz s, fuer den $P(s.SA)$ gilt: + Scan ueber $R$; //innere Schleife + fuer jeden Satz r, + fuer den P(r.SA) AND (r.VA $\Theta$ s.VA) gilt: + uebernimm kombinierten SAtz (r,s) + in das Ergebnis; +\end{lstlisting} +Komplexität: $\mathcal O(N^2)$ + +\paragraph{Sort-Merge Verbund} + + +Zweiphasiger Algorithmus:\\ + +Phasen: +\begin{enumerate} + \item Sortierung von R und S nach R.VA und S.VA, dabei Eliminierung nicht benötigter Tupel (durch Prüfung von P(R.SA) oder P(S.SA)) + \item schritthaltende Scans über R- und S-Relationen mit Durchführung des Verbundes bei r.VA=s.VA +\end{enumerate} + +Komplexität: $\mathcal O(N \log N)$ +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.7]{pics/merge_sort_join.png} + \caption{Merge Sort Verbund} + \end{center} +\end{figure} + +\paragraph{Hash Verbund} +Spezialisierung für \textbf{Gleichverbund}. +Da der Hauptspeicher immer größer ist, lassen sich Zwischenergebnisse +besser ausnutzen.\\ +Idee: +\begin{itemize} + \item Tupel der einen Relation im HS ablegen, so dass sie über VerbundAttribut schnell gefunden werden können + \item Tupel der anderen Relation sequenziell durchlaufen und mit Wert + des VerbundAttributs die passenden Verbundpartner im HS aufsuchen + \item Organisation der Tupel im HS über \textbf{Hashing} +\end{itemize} +Einfachster Fall: \textbf{Classic Hashing}:\\ +Funktionsweise:\\ +Äußere Schleife +\begin{itemize} + \item Abschnittweise lesen der kleineren Relation R + \item Relation wird in $p$ Abschnitte aufgeteilt, die alle in HS passen + \item Aufbau einer Hash Tabelle mit $\text{h}_\text{A}($r.VA$)$ +\end{itemize} +Innere Schleife +\begin{itemize} + \item Überprüfung für jeden Satz von S mit P(S.SA) $\rightarrow$ + ebenfalls mit Hashing + \item wenn sich Verbundpartner in dieser Adresse befindet, Durchführung des Verbundes +\end{itemize} +Komplexität: $\mathcal O(p \times N)$. Da Verbundpartner S $p$-mal gelesen werden muss. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.8]{pics/hash_join.png} + \caption{Hash Verbund} + \end{center} +\end{figure} +Problem ist, dass S $p$-mal durchlaufen werden muss. Daher die Idee +S analog zu R zu partitionieren.\\ +Stichwort Simple Hashing. + +\subsection{Anfrageoptimierung} +Ziel:\\$\rightarrow$ Ermittlung des \textit{kostengünstigsten} +Auswertungsweges + +Zentrales Problem: +\begin{itemize} + \item globales Optimieren hat hohe Komplexität (NP-Schwer zur Laufzeit) + \item Einsatz von Heuristiken, da nicht alles nötige Wissen immer vorhanden ist +\end{itemize} +Optimierungsziel: +\begin{itemize} + \item Maximierung des Outputs bei gegeben Ressoucren + \item Minimierung der Resourcennutzung +\end{itemize} +Die Wichtigsten Kostenarten sind: +\begin{itemize} + \item Berechnungskosten (CPU) + \item I/O Kosten (Anzahl physischer Referenzen) +\end{itemize} + +\subsubsection{Ausführungsplan} +Ziel ist es eine möglichst guten Ausführungsbaum zu erstellen. +Problematisch ist die riesige Anzahl an Möglichkeiten mit steigender +Komplexität der Anfrage (z.B. Query mit 15 Verbunden $10^{70}$ Möglichkeiten).\\ +Diese Vielfalt entsteht durch verschiedene Implementierungen der Planoperatoren und der Operationsreiehenfolgen. + +$\rightarrow$ \textbf{Ziel der Plangenerierung}: +\begin{itemize} + \item finden von Plänen gelingt immer schnell + \item mit möglichst wenig generierten Plänen auskommen +\end{itemize} +Unterschiedliche Strategieklassen: +\begin{itemize} + \item voll enumerativ + \item beschränkt enumerativ + \item zufallsgesteuert +\end{itemize} + +\paragraph{Kostenformeln} +\begin{itemize} + \item{ gewichtetes Ma"s für I/O und CPU Belastung:\\ + C = \#physische-Seitenzugriffe + W $\times$ \#Aufrufe-des Zugriffsystems} + \item{ CPU-bound : höherer I/O-, geringerer CPU Aufwand:\\ + $\text{W}_{\text{CPU}}$ = \#Instr-pro-Aufruf-des-Zugriffsystems /\\ \#Instr-pro-I/O-Vorgang + } + \item{ I/O-bound : geringere I/O-, höherer CPU Aufwand:\\ + $\text{W}_{\text{CPU}}$ = \#Instr-pro-Aufruf-des-Zugriffsystems /\\ (\#Instr-pro-I/O-Vorgang + Zugriffzeit $\times $ MIPS-Ratte) + } +\end{itemize} + +\paragraph{Selektivitätsanschätzung} +Der \textbf{Selektivitätsfaktor} beschreibt den erwarteten Anteil an +Tupeln, die ein Prädikat p erfüllen.\\ +Diese Trefferate gibt auch an, inwiefern eine vorhandene Indexstruktur +die Laufzeit reduzieren. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/trefferrate.png} + \caption{Qualitatives Zugriffsdiagramm} + \end{center} +\end{figure} +Nur bei sehr geringen Trefferraten lohnt sich ein Index Scan! diff --git a/pics/hash_join.png b/pics/hash_join.png new file mode 100644 index 0000000000000000000000000000000000000000..c41a8b5f72e0825fb0a9d2e821d039a2ee2070b2 GIT binary patch literal 32622 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 A;{X5v literal 0 HcmV?d00001 diff --git a/pics/merge_sort_join.png b/pics/merge_sort_join.png new file mode 100644 index 0000000000000000000000000000000000000000..b15180ca7f66e3a12a5825bcd0fae3ed401bb3a2 GIT binary patch literal 29558 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 ZUdXSq2EnrEfo27PNQ%lri-h$*|358DWSIZ} literal 0 HcmV?d00001 diff --git a/pics/trefferrate.png b/pics/trefferrate.png new file mode 100644 index 0000000000000000000000000000000000000000..fed5bf94fd6092cfbcbb8f3d4e43c03d98569e1c GIT binary patch literal 11941 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 D=dHGX literal 0 HcmV?d00001 From 8aefc54eb66a76b59fbaa85d567e6d53a4c6cbdd Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Thu, 13 Feb 2014 11:48:24 +0100 Subject: [PATCH 09/19] =?UTF-8?q?Einf=C3=BChrung=20fertig.=20S=C3=A4tze=20?= =?UTF-8?q?begonnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Einfuehrung.tex | 39 +++++++++++++++++++++++++++++++++++++ IDB.tex | 2 ++ Relationale_Operatoren.tex | 2 +- Saetze.tex | 16 +++++++++++++++ pics/schichten.png | Bin 0 -> 110199 bytes 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Einfuehrung.tex create mode 100644 Saetze.tex create mode 100644 pics/schichten.png diff --git a/Einfuehrung.tex b/Einfuehrung.tex new file mode 100644 index 0000000..2fab344 --- /dev/null +++ b/Einfuehrung.tex @@ -0,0 +1,39 @@ +\section{Einführung} +\subsection{Basiswissen} +\begin{enumerate} + \item {Warum ein Datenbanksystem benutzen? + \begin{itemize} + \item vielseitig verwendbar + \item Mehrbenutzerbetrieb + \item redundanzfrei + \item ausfallsicher + \item leistungsfähig + \end{itemize} + } + \item {Wozu dient Schichtenbildung in der Softwarearchitektur? + \begin{itemize} + \item Höhere Ebenen werden einfacher, weil sie tiefere benutzen können + \item Änderungen in höheren Ebenen haben keinen Einfluss auf tiefere + \item tiefere Ebenen können getestet werden, bevor höhere lauffähig sind + \item Optimierungen von unteren Ebenen + \end{itemize} + Schichtenmodell: + \begin{figure}[H] + \begin{center} + \includegraphics[scale=0.6]{pics/schichten.png} + \caption{Schichtenübersicht} + \end{center} + \end{figure} + + } + \item { Was tut eine Schicht: + \begin{itemize} + \item Realisiert einen bestimmten Dienst, den sie der Schnittstelle nach oben zur Verfügung stellt + \item Nimmt Dienste der darunter liegenden Schicht in Anspruch + \item Verbirgt darunter liegende Schicht vollständig und muss daher alle erforderlichen Funktionen anbieten + \end{itemize} + } + \item { Was bedeutet Datenunabhängigkeit einer Anwendung:\\ + Speichern und Wiedergewinnen von persistenten Daten + ohne Kenntnis der Details der Speicherung.} +\end{enumerate} diff --git a/IDB.tex b/IDB.tex index 8a9150d..152fe01 100644 --- a/IDB.tex +++ b/IDB.tex @@ -75,6 +75,8 @@ \tableofcontents \listoffigures \newpage +\include{./Einfuehrung} +\include{./Saetze} \include{./Speicherung} \include{./Anfrageverarbeitung} \include{./Relationale_Operatoren} diff --git a/Relationale_Operatoren.tex b/Relationale_Operatoren.tex index 42bf1a7..d66ee8b 100644 --- a/Relationale_Operatoren.tex +++ b/Relationale_Operatoren.tex @@ -2,7 +2,7 @@ \subsection{Allgemein} Die grundsätzliche Aufgabe besteht darin die logischen Operatoren (SEL(),PROJ(),JOIN(),\ldots) durch \textbf{Planoperatoren} zu ersetzen.\\ -Teilaufgaben: +\textbf{Teilaufgaben}: \begin{itemize} \item Erkennung gemeinsamer Teilbäume (notwendig: Zwischenspeicherung von Ergebnisrelation) diff --git a/Saetze.tex b/Saetze.tex new file mode 100644 index 0000000..fb0885d --- /dev/null +++ b/Saetze.tex @@ -0,0 +1,16 @@ +\section{Sätze} +\subsection{Allgemein} +Warum wurden Sätze eingeführt? \\ +Sätze abstrahieren von Blöcken. Blöcken sind Hardware spezifisch. +Sie haben unterschiedliche Längen und die Aufgabe von Einheiten von +Platte und HS zu transportieren. Daher hat man eine anwendungspezifische +Einheit eingeführt, die Daten zusammenfasst.\\ +$\rightarrow$ Neue Schicht über Blöcke +\subsection{Wechselpuffertechnik} +Optimierungsmöglichkeit bei sequenziellen Dateien. +Man verwendet \textit{zwei} Blockpuffer.\\ +Anwendung beim +\begin{itemize} + \item Lesen: während Sätze in Puffer 1 gelesen werden \textbf{gleichzeitig} nächsten Block von Platte in Puffer 2 lesen + \item Schreiben: wenn Puffer 1 voll, \textbf{asynchron} auf Platte schreiben und gleichzeitig Puffer 2 zur Aufnahme weiterer Sätze verwenden +\end{itemize} diff --git a/pics/schichten.png b/pics/schichten.png new file mode 100644 index 0000000000000000000000000000000000000000..537725801017da0afb7ffe759d989b6c595fffc8 GIT binary patch literal 110199 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 literal 0 HcmV?d00001 From e0d1b3d6500c8a1ee4c3b95bca5d5568548beeba Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Thu, 13 Feb 2014 13:43:22 +0100 Subject: [PATCH 10/19] Saetze fortgesetzt. Hashing nur sehr kurz --- Saetze.tex | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Saetze.tex b/Saetze.tex index fb0885d..e5c382c 100644 --- a/Saetze.tex +++ b/Saetze.tex @@ -5,6 +5,9 @@ Sätze abstrahieren von Blöcken. Blöcken sind Hardware spezifisch. Sie haben unterschiedliche Längen und die Aufgabe von Einheiten von Platte und HS zu transportieren. Daher hat man eine anwendungspezifische Einheit eingeführt, die Daten zusammenfasst.\\ +\subsection{Satzadresse} +Eine Satzadresse ist ein Bezeichner unter der man einen einzelnen Satz wiederfinden kann. Sie wird als stabil bezeichnet, wenn sich beim +verschieben des Satzes die Adresse nicht ändert. $\rightarrow$ Neue Schicht über Blöcke \subsection{Wechselpuffertechnik} Optimierungsmöglichkeit bei sequenziellen Dateien. @@ -14,3 +17,45 @@ Anwendung beim \item Lesen: während Sätze in Puffer 1 gelesen werden \textbf{gleichzeitig} nächsten Block von Platte in Puffer 2 lesen \item Schreiben: wenn Puffer 1 voll, \textbf{asynchron} auf Platte schreiben und gleichzeitig Puffer 2 zur Aufnahme weiterer Sätze verwenden \end{itemize} +\subsection{Satzzugriff über Schlüsselwerte} +\subsection{Normales Hashing} +Man möchte nun Sätze und deren Inhalt nicht nur über +die Satzadresse wiederfinden, sondern auch über \textbf{inhaltliche Kriterien}. +\textbf{Schlüssel} definieren ein oder mehrere Felder eines Satzes, über +das man den Satz wiederfinden kann. + +Lösung dafür ist \textbf{Hashing} der Sätze nach Schlüssel. + +Kollisionen verhindern: +\begin{itemize} + \item Open Addressing (ausweichen auf Nachbar Buckets) + \begin{itemize} + \item $+$ kein zusätzlicher Speicherplatz erforderlich + \item $-$ beim Suchen findet man im Bucket auch Überläufer + \item $-$ beim löschen Überläufer zurückholen + \item $-$ in Nachbarbuckets werden ggf weitere Überläufe erzeugt + \end{itemize} + \item Overflow Buckets + \begin{itemize} + \item Anlegen spezieller Überlauf Buckets für jeden Bucket + \begin{itemize} + \item $-$ zusätzlicher Speicherplatz erforderlich + \item $+$ keine Mischung von sätzen + \item $+$ keine Beeinträchtigung der Nachbarbuckets + \end{itemize} + \end{itemize} +\end{itemize} +\subsubsection{Bewertung} +\begin{itemize} + \item sehr schneller Zugriff über Schlüssel (1 bis 2 Blockzugriffe) + \item gestreute Speicherung kann nur nach \textbf{einem} Schlüssel erfolgen + \item Speicherplatz muss um voraus belegt werden +\end{itemize} +\subsection{Virtuelles Hashing} +Vorteile vom virtuellen Hashing ggü. normalen Hashing:\\ +Das normale Hashing ist nicht erweiterbar, d.h. man muss den gesamten +Speicher im voraus belegen. Dadurch kommt man in Platznot oder verschwendet zuviel. +Beim linearen Hashing versucht man durch kontinuierliche Reorganisation +Überlaufprobleme zu vermeiden. + +Beschreibung von Dateizustand: From 7e9530364b1407f8e854db89416daf5f2b69b45a Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Thu, 13 Feb 2014 15:03:30 +0100 Subject: [PATCH 11/19] BBaum fortgestzt --- BBaum.tex | 75 +++++++++++++++++++++++++++++++++++++++++++ IDB.tex | 1 + pics/bbaumknoten.png | Bin 0 -> 4720 bytes pics/bstern.png | Bin 0 -> 16783 bytes 4 files changed, 76 insertions(+) create mode 100644 BBaum.tex create mode 100644 pics/bbaumknoten.png create mode 100644 pics/bstern.png diff --git a/BBaum.tex b/BBaum.tex new file mode 100644 index 0000000..559316f --- /dev/null +++ b/BBaum.tex @@ -0,0 +1,75 @@ +\section{BBaum} +Idee: Zusammenfassung ganz bestimmter Sätze in einem Block. +Mehrwegbaum: jeder Knoten entspricht einem Block. + +\subsection{Aufbau} +Am Anfang eines jeden Knotens steht $n$. $n$ ist Anzahl der verwendeten +Einträge, $k \leq n \leq 2k$ (in root $ 1 \leq n \leq 2k$). + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/bbaumknoten.png} + \caption{BBaum Knoten} + \end{center} +\end{figure} +Danach folgen Tripel (Ki,Di,Pi) welche einen \textbf{Eintrag} bilden: +Ki = Schlüsselwert\\ +Di = Datensatz\\ +Pi = Zeiger auf Nachfolgeknoten +\subsection{Eigenschaften} +\begin{itemize} + \item jeder Pfad ist perfekt balanciert + \item jeder Knoten mit Ausnahme von root und Blättern hat + mindesten $k+1$ Nachfolger und höchstens $2k+1$ + \item jeder Knoten (Ausnahme root) immer mindestens halb voll +\end{itemize} +\subsection{Löschvorgang} +\begin{enumerate} + \item Suche Knoten, in dem der zu löschende Schlüssel S liegt + \item Falls S in Blattknoten, dann lösche S und behandle ggf Unterlauf + \item Fall S in innerem Knoten dann untersuche linken und rechten + Unterbaum von S + \begin{itemize} + \item finde direkten Vorgänger $\text{S}'$ und Nachfolger $\text{S}''$ + \item Wähle dne aus der mehr Elemente hat + \item Ersetze zu löschenden Schlüssel S durch $\text{S}'$ oder $\text{S}''$ aus gewähltem Blattknoten und behandle ggf Unterlauf + + \end{itemize} +\end{enumerate} +\subsection{Unterlauf} +\begin{itemize} + \item Ein endgülter Unterlauf entsteht bei obigen Algorithmus erst auf Blattebene + \item \textbf{Unterlaufbehandlung} wird durch MIschen des Unterlaufknotens mit seinem Nachbarknoten und darüber liegenden Diskriminator durchgeführt $\rightarrow$ Splitt rückwärts + \item Unterlaufbehandlung endet in einem der Blätter! +\end{itemize} +\subsection{B*-Baum} +Alle Sätze werden in den Blattknoten abgelegt. Innere Knoten enthalten nur noch Verzweigungsinformationen, keine Daten. +Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten am Ende. +\begin{figure}[H] + \begin{center} + \includegraphics[scale=1.0]{pics/bstern.png} + \caption{B*-Baum Aufbau} + \end{center} +\end{figure} +\textbf{Merke:}\\ +Beim Löschen von Werten bleibt der gleiche Diskriminator in inneren +Knoten enthalten. +\subsection{Vergleich} +\begin{itemize} + \item BBaum: + \begin{itemize} + \item keine Redundanz + \item lesen von Baum Inorder nur mit Stack von Höhe h + \item Gergingerer Verzweigungsgrad $\rightarrow$ größere Höhe + \item einige wenige Sätze (root) mit 1 Blockzugirff + \end{itemize} + \item $\text{B}^*$Baum: + \begin{itemize} + \item Schöüsselwerte teilweise redundant + \item Kette von Blattknoten liefert alle Sätze nach Reihenfolge sortiert + \item hohe Verzweigung der inneren Knoten $\rightarrow$ geringe Höhe + \item für alle Blöcke müssen h Sätze gelesen werden + \item Schlüsselwerte der inneren Knoten müssen nicht in den + Datensätzen vorkommen + \end{itemize} +\end{itemize} diff --git a/IDB.tex b/IDB.tex index 152fe01..03ae93d 100644 --- a/IDB.tex +++ b/IDB.tex @@ -77,6 +77,7 @@ \newpage \include{./Einfuehrung} \include{./Saetze} +\include{./BBaum} \include{./Speicherung} \include{./Anfrageverarbeitung} \include{./Relationale_Operatoren} diff --git a/pics/bbaumknoten.png b/pics/bbaumknoten.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb04ee42adb20ec098260364017c10127c4fe9f GIT binary patch literal 4720 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 literal 0 HcmV?d00001 diff --git a/pics/bstern.png b/pics/bstern.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb5445d5e5aa9208e573473a08bfffb1ae951df GIT binary patch literal 16783 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 G@c#g2CQ$eQ literal 0 HcmV?d00001 From 8c7e0463059d1f8a3e8a6cfb9becd61b7e67f4e4 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Thu, 13 Feb 2014 16:44:53 +0100 Subject: [PATCH 12/19] fertig --- BBaum.tex | 39 +++++++++++++++++++++++- IDB.tex | 2 ++ Programmschnittstellen.tex | 55 +++++++++++++++++++++++++++++++++ Puffer.tex | 61 +++++++++++++++++++++++++++++++++++++ pics/clock.png | Bin 0 -> 6097 bytes pics/lru.png | Bin 0 -> 7099 bytes 6 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 Programmschnittstellen.tex create mode 100644 Puffer.tex create mode 100644 pics/clock.png create mode 100644 pics/lru.png diff --git a/BBaum.tex b/BBaum.tex index 559316f..8749216 100644 --- a/BBaum.tex +++ b/BBaum.tex @@ -33,7 +33,7 @@ Pi = Zeiger auf Nachfolgeknoten \item finde direkten Vorgänger $\text{S}'$ und Nachfolger $\text{S}''$ \item Wähle dne aus der mehr Elemente hat \item Ersetze zu löschenden Schlüssel S durch $\text{S}'$ oder $\text{S}''$ aus gewähltem Blattknoten und behandle ggf Unterlauf - + \end{itemize} \end{enumerate} \subsection{Unterlauf} @@ -54,6 +54,24 @@ Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten am Ende. \textbf{Merke:}\\ Beim Löschen von Werten bleibt der gleiche Diskriminator in inneren Knoten enthalten. +\subsubsection{Löschen} +Entsteht durch das LÖschen ein Unterlauf? +\begin{itemize} + \item Nein:\\Entferne Satz aus Blatt + \item Ja:\\ + Mische das Blatt mit einem Nachbarknoten. Ist die + Summe der Einträge in beiden Knoten größer als 2k? + \begin{itemize} + \item Nein:\\ + Fass beide Blätter zu einem Blatt zusammen. Falls Unterlauf + in Vaterknoten entsteht: Misch die inneren Knoten analog + \item Ja:\\ + Teil die Sätze neu auf beide Knoten auf, so dass ein Knoten + jeweils die Hälfte der Sätze übernimmt. Der Diskriminator ist + zu aktualisieren. + + \end{itemize} +\end{itemize} \subsection{Vergleich} \begin{itemize} \item BBaum: @@ -73,3 +91,22 @@ Knoten enthalten. Datensätzen vorkommen \end{itemize} \end{itemize} +\subsection{Bitmap Index} +\textbf{B-Bäume (und Hashing) machen nur Sinn bei hoher Selektivität! ($\approx 5\%$)} +Lege für jeden Schlüsselwert eine Bitliste an. Bitwert 1 bedeutet, der +Schlüssel hat im Satz den Wert zu dem die Liste gehört. 0 bedeutet er hat keinen anderen Wert.\\ +Gut bei Wertigkeiten bis ca. 500. Hilft bei einfacher und effizienter +Verknüpfung. + +\subsection{Primär- und Sekundär-Organisation} +\textbf{Primär-Organisation}:\\ +Bedeutung: Speicherung der Sätze selbst. + +\textbf{Sekundär-Organisation}:\\ +Bedeutung: verweist nur auf Sätze, die nach beliebigen anderen Kriterien +abgespeichert werden. Ist allerdings nur möglich, wenn Primärorganisation +Direktzugriff auf einzelnen Satz haben. + +$\rightarrow$ B-Baum/$\text{B}^*$Baum als Sekundär Organsiation (Di); +auch gestreute Speicherung als Sekundär Organsiation möglich (Buckets +[Schlüsseltwer,Satzadresse] Paare) diff --git a/IDB.tex b/IDB.tex index 03ae93d..e3b1b79 100644 --- a/IDB.tex +++ b/IDB.tex @@ -78,6 +78,8 @@ \include{./Einfuehrung} \include{./Saetze} \include{./BBaum} +\include{./Puffer} +\include{./Programmschnittstellen} \include{./Speicherung} \include{./Anfrageverarbeitung} \include{./Relationale_Operatoren} diff --git a/Programmschnittstellen.tex b/Programmschnittstellen.tex new file mode 100644 index 0000000..384ecb7 --- /dev/null +++ b/Programmschnittstellen.tex @@ -0,0 +1,55 @@ +\section{Programmschnittstellen} +Vor- und Nachteile:\\ +Programmzugriff: +\begin{itemize} + \item Keine SQL Injection nötig + \item Kompakt + \item spezieller Übersetzer nötig +\end{itemize} +Unterprogrammaufruf +\begin{itemize} + \item Optimierung und Typprüfung + \item SQL Injection möglich + \item Aufwändig für Programmierer +\end{itemize} +\subsection{SQL Anfrage} +Aufruf einer SQL Anfrage mit Index: +\begin{lstlisting}[language=java] +RecordFile index = new KeyedRecordFile("KNr","r"); +TID tid = index.read.Key(23); +RecordFile saetze = new DirectRecord(Kunden", "r"); +Record ergebnis = saetze.read(tid); +print(ergebnis.toString()); +\end{lstlisting} +Aufruf einer SQL Anfrage ohne Index: +\begin{lstlisting}[language = java] +RecordFile saetze = new DirectRecordFile("Kunden","r"); +Record ergebnis; +while (saetze.hasNext()){ + ergebnis = saetze.next(); + if(ergebnis.getKNr() == 23){ + print(ergebnis); + break; + } +} +\end{lstlisting} + +\subsection{SQL Schnittstelle} +\begin{enumerate} + \item Verbindung aufbauen + \begin{lstlisting}[language=java] + Connection DriverManager.connect(username, password, database) + \end{lstlisting} + \item Methode um eine Anfrage auszuführen + \begin{lstlisting}[language=java] + Handle Connection.executeQuery (String query); + \end{lstlisting} + \item Methode um zu prüfen, ob es weitere Ergebnisse gibt + \begin{lstlisting}[language=java] + Boolean Handle.hasNext(); + \end{lstlisting} + \item Methode um überhaupt an Ergebnisse zu kommen + \begin{lstlisting}[language=java] + Boolean Handle.hasNext(); + \end{lstlisting} +\end{enumerate} diff --git a/Puffer.tex b/Puffer.tex new file mode 100644 index 0000000..bca67c4 --- /dev/null +++ b/Puffer.tex @@ -0,0 +1,61 @@ +\section{Puffer} +Frame = Im HS vorgesehener Platz zur Aufnahme eines Blocks $\rightarrow$ normalerweise so groß wie Block + +Bei Zugriff auf Blöcke im HS müssen diese ggf eingelagert werden. +\subsection{Ersetzungsstrategie} +\begin{itemize} + \item wählt den zu verdrängenden Block aus + \item Ziel: Minimierung von physischen Zugriffen +\end{itemize} + +\subsubsection{FIFO} +Block der am längsten im Puffer ist wird ersetzt.\\ $\rightarrow$ ungünstig +da häufig benutzte Blöcke gerade im Puffer bleiben sollen + +\subsubsection{LFU (least frequently used)} +Block auf den am seltensten zugegriffen wird ersetzt. +\begin{itemize} + \item $-$ für sequentielles Lesen nicht brauchbar + \item $-$ hat ein Block einmal wieder zugegriffen bleibt der lange erhalten +\end{itemize} + +\subsubsection{LRU (least recently used)} +\begin{itemize} + \item bewertetes Alter seit dem letzten Zugriff + \item quasi verkettete Liste aller Blöcke im Puffer, wo bei Verdrängung letzter Block der Kette ersetzt wird +\end{itemize} +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.7]{pics/lru.png} + \caption{LRU} + \end{center} +\end{figure} +\subsubsection{Clock} +LRU Verhalten mit einfacher Implementierung. +\textbf{Prinzip}: +\begin{itemize} + \item Benutzt(Dirty)-Bit eines Blocks im Puffer wird bei Zugriff auf + 1 gesetzt + \item bei Verdrängung zyklischer SUche mit dem Auswahlzeiger: + \begin{itemize} + \item Falls Benutzt Bit = 1, wird es auf 0 gesetzt $\rightarrow$ Zeiger wandert zum nächsten Block + \item Falls Benutzt Bit = 0, Block wird ersetzt + \end{itemize} +\end{itemize} + +\subsection{Dienste einer Pufferverwaltung} +Einkapselung der Pufferverwaltung: +\begin{lstlisting}[language=C] +char * Buffer::fix (BlcokFile FIle, int BlockNo, char Mode); +\end{lstlisting} +\begin{itemize} + \item Block ist zur Verdrängung geschützt + \item \textbf{Mode} gibt an welcher Block nur gelesen oder auch + geändert werden soll +\end{itemize} +\begin{lstlisting} +void Buffer::unix (char * BufferAddresse) +\end{lstlisting} +\begin{itemize} + \item gibt Block im Puffer zur Ersetzung frei +\end{itemize} diff --git a/pics/clock.png b/pics/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..011d660a67df11d662738eb093c4e724e15d5c8a GIT binary patch literal 6097 zcmYj#1yodR)b$J?Dcv0dqDTlRog>{PAt@o&_pL@CYoPGA$XMa*tk;TQP!iGQ~xbkvR8W0Hd4fvdai2`2jIN8s^8LHFb~}e~GiG zv{~#9V>(TW)szBPIHyCT*-fRDixJfL0b~S(^v0xx7FZFy)7HiQ*)K8jwF|PxRl-+f ztcA@bN)!;;404ci2{tM7r)WpF&RgjZ8PJ1%AKhHXuc7car+N#X{mF2paH&g!Kt$RF zzCa+K2_c9G2*ex>QjjF1@RvP4K3-m4K4-Pssm?$wGujN>N>*aAsHjK{O+uzXMN@OE zJp^B0Utb-&r4F6I*w~ntm-liX+2ln`M5LswTwGMNva;gsZ6sk5`Q_}%q!lh@f`y70!qfw8uBa0P@1rJjYAwaln#wzoHo zU}b%s&+FgrSiWiwJ0b$%z!VeOy*lDvQc@z#MA(b+8*_7Vc=&66zU*SUfOEDMo3tK; z61womrEcZ1K%GHpUf%y)k&=SqF(1u0jVIxq@c(w$+1rx}Ge|MTl$3D%cbOXNvAn9P zs@+{XxSWfN%bPb@iHYRBC^;0RSyV}#;pDPXQnj_UR<^e8@872jy|?N8^5iiN18k}J z-|kH1`<=1X2h?s^CPN(+Vj z4%KO$o~Dq7n3(wBLL`Jy{!bbn!UCLpI;`r+7?_#ON59GEoSH=Ek-o&_giHRnuU*B= z3>F6YnjNvZyZgPcu&}uJWxQ7zOc~r>zC2t*Wq|d zG1j{ixa_lvIYKcpv8bph)AHK-`jj5?{rNiLYPy;~E}o{QE87#r&LbQJk72!ieXcGp zZEbB757Fa#9^&9ADl6MNI?C3Cu=@Gk6%-U~Zd!do(fUHj6eFjo*w@zPUvFz~zc4zg z@%nX`3%=^kR2dfs$9rdI$tNb5S1^)Oqk`b=Ujh_THPuVFksX+9iC zxyt+^wBvS4cwdiIg}>odb~a`ZkVhzIXRhE+d(op1z}KDR+f#T z*}6FgHGxkjLP0@Mkg^~EN+60>m`=>QpufxOY@dUj{d&LQAfs9m)KDgug0b;k!@)28 zA12WEXTM`$eTiK8JWS%^i*s{V$3x^iMYPu9`hGx@olRZWe?kniPIenLV5Nd3vbpN@+)RaGLM zN6d`ot^N;^lau%M_P{}5_x(oa)nE%_5mC{D#b!rq>x+}EF+dUky1bTyjs4*%g064X z)CeZH4-=cOg9ui(whBEw#V%o81m8vY7);9r`1mGUT1+O2UX8=t_vf9RoJ@F<2?+@` z^OWkmFI+r4&bgYeT`o_o>v5JUhs3%Y12_L@Ce|bw8O%~ zNiigTR#lOZlTS@e5yKlB8>8sOjX-^`t{$(aIsyRxIzxKBLzPul<`5OVnJm!9ZmUhdQ>R_Sa>~g1!7*0b=OE2Q_IU@t0 z*ulagC<3y%1(^DT-z+20=Z%5lPYaABX67LJWKr>o7l`lCZg-*b!1>Drc zMEq=CMMcGrAD=JhFR!ljb#>E3JY#!9Zy#V__}$%{Sy)(PWo3=SxVgDcDk&)`!MlTl zLwR|*jg1XB;CHiQEJ%abbXbXrhO+(5h%-?!ceJZZ1_L9c(sJk@(q*kT9t2fX)Tccd zH_Rs?iQMZUH!p8{>vjmh&?$X9!RYL4QC^<5rsnFw!QJVUaplY|h+SG5jjF0@=dVu) z1Omh}P24YIFjUZWefVy=JDT3n%q%V@<}g;+ZDTO~h3%xSzJ4ai>sK=vE-o&>Q(**v zSiRR-soLXta2w@j-J64nw^_8%Vf*E_phfRvTpu0I#JigVzq7NmMNk9rPjvuXF&Ps% z4YOSX|1GtmUh<_5XnTkCnE(1ik_9ja0xTpXw6(RRr2}^aC{E-u&O30JsjvX`^DZnX zFmPD4x~2vl9sPEd{_e+*ADB2eFJ&Miny#*{Mn=eVVRv2j$(7DXJY3|0XeeK zMok}1K}xk2zonKv`nwpxnHZ~q2beTgxtE=}mWDB?i^k2UQ z5G@c;6EWV|-YzOEOa^7jj=KES9!Eq+8&{ZP1+*?X34n+IQfzQpQ;?Mnkz>Zj$2YFB8maWX z1|5dq5t%0DQxCwBo4Yn%s5z7_e6~~8JW9>X%Bq^oBi&OdQHV8D;7Zo}bJ2GWCbg-U zipl8f>kG=6-tYPl0QpLZrZY1Br{A4#odI&=kC|53>3Ox4Y)g_A`|fl(jD@9hc=$&q zeScry@$qpEH6}nSxc$J-(c-sBLZ|0*i?{!7uMUI-1Ufo8lrqIc`T5vfcnlNAD|4Pv&Xzb_xt?({LR%_Lv3w8cq%==lm2AhprD|4?SD2h{W#g!MyICk{I@sJ)Tj$q$_3BgvOGn4D za)yqMPW<|Bz)AwZxF$^@5Do?g21??Jn9Ii(VROe9-kqv?-rgb$2SDVc#>KtFyx6TA zDzJ1!Hp=71W`L^5Q%=n|El-qVcBum_wMzU*i6PK#@mJFj`RQ7s@xSv{EaFGHy1M5V z7XaTQsX&!@dU&Y)q^6=me%Rr#Sq%am-fRYMH&cI9fB{oa*gW=qbBge!u{OL_Uy^fl%Q9f%}{ch(j1c?J?*P zqVF~dsBnH`A~FDZ{jeG#0&!4PR1G-q*ugfsJpb&ie?DA(eyxA2MJWrlj zk2lIa45hOn`qVKum)eU$MTL`txtw^P}K9toPAj^47ZB(na|}(Xeef(*6UZVUTJ8=W@ggUfi90^ z^cKrZL8n3&gaH{1BJ)8cDJEulf8WU1xU5!2?e*)|l9H`Igf8;kv9#U-eHiyhdBvs9 zTkMWy!`L2864D@q*lrA3}_yOtyP2RA< zEz8a9o8eahYNoxjML*;EcZHFWxC?e)6mrL}``U|MsUEx%CvIvrsew(F85_TTtq?sL zlE@s_(_!lD>U#WpcCV<2O-E-6lo+8b0p$pBH3X}OPZzqpzTUO$1cY#0T-+<~6b2G( zQt~7XBR#!j0FR)c&R7;jCxRHlXH`(=z1bHwMW=vk0Q}{ci6*Y!f08nFbiA9jEwjg( z=NtYpJTgLv9mJ}Vre?5=2NZR{aSu?v%Pw_c(3s53#rgT&<>i>AOZWUv|&8uC0|7d>OMhQVMqVlO0QS{N|U61$5_ z3NH@3>2q>&wh+&r->*g>>;XqkmFSa`k-2RSGk%gHs^Cg#+!G8Gu6h(;9;GpB&95LKO1X*o6wW8oQfKl_ydE*BsbOF}$0GXut<+IL$TodTbG%z=UgYvJs;QqFgBcz-^VSKgA<(<71O zTEb;;hmzs}I{J4}I%&fN1fd?nHIgxrgG6Y0&Mza~zS4@2lpsUINX^8geYG1@3bN7D zRY3u}$=ShylhJ%{wmOgiD6ylXqpZ2|>})1?clTJjMPVu+*2~x#8a*195Qx8josyLj zz+@61&q5Zitfb`P>Ixdp>dFce3|2@?0P4Rp$SBzVW6U9jq6Zf-ZkVDSDh~>}3XGIw&MWlkjs~-0Jdj>#|e99%zAF2DLxzW_Tuck)T(wRKE~V`ny7@ zuCK4S;PG*$z=`fD0pG9YTC@712pm?{>+ zEpS^J8|@GaEC2ZT3JdeK_)~3sVvWLgU$ZiSN=!%yc5f>fIdjkK>gswtAkkyaqw46` zi4Y*BKd^Mnyoo?SC|dV0fdWnAdH9?G>A8{q2z@nmR0EfT11^^>;dHw>av!CAA2bS$ zBw;@%l(vb1lAzBoDJjQ2FxVKdaj>7!KmRIj`aMpL*|w=E6-zKJCJRh@aXn0Y4*h+- zaETVH{b(wrBb;EAA;!+#bu6KekN_|w6A88;&0wC-)h6QapTl)sJ;VBUSWu|I6vfUZO(-D= z0Rbgl)Cy#l&}<Gp%9@9jun;Q2=6IEsW!gkYA}SuZ9x56`G&rB}o_=wL>H2*e29lX(=MiV9#RakO{1{nzn{ z*zcBiZur>~M#*GS?vOflJ})&nIm}6HxG;P|LC zF2cz;+MFVm^UBK!r756$p(Ed#nnbrcu!8F^iC{Tj?dOJHV*SQErxz3yJZ-)qqa;1` z6LvRM@ItiqhXR@h!tk-!=*Wn=me#k@QU`nclJi}Ra1I@Hqg^{kaj+w%6rXlr|W#Y{xw3I@a~I|ql( zcinOzQZ9}+fRc|!xI|EQuer!N5<%>S0y1F`;qqKbnDl02#X=niBIblkWQmPvnWyHl1laY0qJWEn~3lsv-MP6RQ zY_|r$7IJfQ1L9LfMWs86*4EZmQ*uC4LnDFHu->dY3Jhy21PC@BI5Uy8wY8qEuG+ov z1GJ}tqN2Jp3ouxKK6`+M1~k{^&Q6(L<$7H{giF(vGf`h#yT+^=Pm2y14M4(w`0(Mx zaJzZTs(w%*etT!r(9oq z*BNBQ##Y$PRQRsfNDjPVPPZk1$HvBrh=`n=o(c;I0q?`q%uLKR?Gogor z-U%olzXG*0PGV6TDMM?J6oNe*1wp(?Af#x=N4Wlvl?8+r%+pZ%XJ&yw4-xzl?@IKLZy|!;J$7FG4J@Ht*@UNAK$rg zTDLZina;O~2O#I% zW!E6-o!I6)dM{t1GJfl3B0){@?CI=$;7A1+lIVU!13mS_hf839g623rF;NJ$6D7-P z!6t#+P`EAn3Mp1DCo4*Qen{-5gGaN<;#-q-*jFiFgM$Mm(ibmY%-H<{B$L_D@d)&dKrDQGzvayIXK&h)c`ccV z-~Z}0Jbs& zLdhMRoSK@02|=^{3juxVe|>E*2mF6Xg1*qQd3N{BaS)e*RDKWG@ep}w6{%9ViU0ot D#9Gm} literal 0 HcmV?d00001 diff --git a/pics/lru.png b/pics/lru.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a830362a58ed1fcde8b051bf448bf970d840ba GIT binary patch literal 7099 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 jP#}t2$RSg`=a Date: Sat, 15 Feb 2014 13:37:47 +0100 Subject: [PATCH 13/19] test: Tippo korrigiert, chap: 2.1 --- Saetze.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Saetze.tex b/Saetze.tex index e5c382c..0a8d589 100644 --- a/Saetze.tex +++ b/Saetze.tex @@ -1,7 +1,7 @@ \section{Sätze} \subsection{Allgemein} Warum wurden Sätze eingeführt? \\ -Sätze abstrahieren von Blöcken. Blöcken sind Hardware spezifisch. +Sätze abstrahieren von Blöcken. Blöcke sind Hardware spezifisch. Sie haben unterschiedliche Längen und die Aufgabe von Einheiten von Platte und HS zu transportieren. Daher hat man eine anwendungspezifische Einheit eingeführt, die Daten zusammenfasst.\\ From 4131eadf17aea003bc647a320d8f49931b54dd7c Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Sat, 15 Feb 2014 16:52:33 +0100 Subject: [PATCH 14/19] gitignore ergaenzt --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1371594..c1647c2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ *.log *.toc *.fdb* +X.tex From 99242ae42cdf241e63b6c7d560cd4b216d2accc8 Mon Sep 17 00:00:00 2001 From: Christian Strate Date: Sat, 15 Feb 2014 18:04:35 +0100 Subject: [PATCH 15/19] eigentlich nur typos korrigiert --- BBaum.tex | 10 +++++----- Puffer.tex | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BBaum.tex b/BBaum.tex index 8749216..051f317 100644 --- a/BBaum.tex +++ b/BBaum.tex @@ -31,7 +31,7 @@ Pi = Zeiger auf Nachfolgeknoten Unterbaum von S \begin{itemize} \item finde direkten Vorgänger $\text{S}'$ und Nachfolger $\text{S}''$ - \item Wähle dne aus der mehr Elemente hat + \item Wähle den aus der mehr Elemente hat \item Ersetze zu löschenden Schlüssel S durch $\text{S}'$ oder $\text{S}''$ aus gewähltem Blattknoten und behandle ggf Unterlauf \end{itemize} @@ -39,12 +39,12 @@ Pi = Zeiger auf Nachfolgeknoten \subsection{Unterlauf} \begin{itemize} \item Ein endgülter Unterlauf entsteht bei obigen Algorithmus erst auf Blattebene - \item \textbf{Unterlaufbehandlung} wird durch MIschen des Unterlaufknotens mit seinem Nachbarknoten und darüber liegenden Diskriminator durchgeführt $\rightarrow$ Splitt rückwärts + \item \textbf{Unterlaufbehandlung} wird durch Mischen des Unterlaufknotens mit seinem Nachbarknoten und darüber liegenden Diskriminator durchgeführt $\rightarrow$ Splitt rückwärts \item Unterlaufbehandlung endet in einem der Blätter! \end{itemize} \subsection{B*-Baum} Alle Sätze werden in den Blattknoten abgelegt. Innere Knoten enthalten nur noch Verzweigungsinformationen, keine Daten. -Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten am Ende. +Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten. \begin{figure}[H] \begin{center} \includegraphics[scale=1.0]{pics/bstern.png} @@ -55,7 +55,7 @@ Am Ende eines Knotens ist ein Zeiger auf den nächsten enthalten am Ende. Beim Löschen von Werten bleibt der gleiche Diskriminator in inneren Knoten enthalten. \subsubsection{Löschen} -Entsteht durch das LÖschen ein Unterlauf? +Entsteht durch das Löschen ein Unterlauf? \begin{itemize} \item Nein:\\Entferne Satz aus Blatt \item Ja:\\ @@ -83,7 +83,7 @@ Entsteht durch das LÖschen ein Unterlauf? \end{itemize} \item $\text{B}^*$Baum: \begin{itemize} - \item Schöüsselwerte teilweise redundant + \item Schlüsselwerte teilweise redundant \item Kette von Blattknoten liefert alle Sätze nach Reihenfolge sortiert \item hohe Verzweigung der inneren Knoten $\rightarrow$ geringe Höhe \item für alle Blöcke müssen h Sätze gelesen werden diff --git a/Puffer.tex b/Puffer.tex index bca67c4..8c880c6 100644 --- a/Puffer.tex +++ b/Puffer.tex @@ -36,7 +36,7 @@ LRU Verhalten mit einfacher Implementierung. \begin{itemize} \item Benutzt(Dirty)-Bit eines Blocks im Puffer wird bei Zugriff auf 1 gesetzt - \item bei Verdrängung zyklischer SUche mit dem Auswahlzeiger: + \item bei Verdrängung zyklischer Suche mit dem Auswahlzeiger: \begin{itemize} \item Falls Benutzt Bit = 1, wird es auf 0 gesetzt $\rightarrow$ Zeiger wandert zum nächsten Block \item Falls Benutzt Bit = 0, Block wird ersetzt @@ -46,10 +46,10 @@ LRU Verhalten mit einfacher Implementierung. \subsection{Dienste einer Pufferverwaltung} Einkapselung der Pufferverwaltung: \begin{lstlisting}[language=C] -char * Buffer::fix (BlcokFile FIle, int BlockNo, char Mode); +char * Buffer::fix (BlockFile File, int BlockNo, char Mode); \end{lstlisting} \begin{itemize} - \item Block ist zur Verdrängung geschützt + \item Block ist vor Verdrängung geschützt \item \textbf{Mode} gibt an welcher Block nur gelesen oder auch geändert werden soll \end{itemize} From 473b8187bf4489f1032181d8a79ef4b031eb87f7 Mon Sep 17 00:00:00 2001 From: Christian Strate Date: Sat, 15 Feb 2014 21:25:03 +0100 Subject: [PATCH 16/19] typos und ein TODO in Kapitel5 --- Programmschnittstellen.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Programmschnittstellen.tex b/Programmschnittstellen.tex index 384ecb7..239a960 100644 --- a/Programmschnittstellen.tex +++ b/Programmschnittstellen.tex @@ -48,7 +48,8 @@ while (saetze.hasNext()){ \begin{lstlisting}[language=java] Boolean Handle.hasNext(); \end{lstlisting} - \item Methode um überhaupt an Ergebnisse zu kommen + \item Methode um überhaupt an Ergebnisse zu kommen + %TODO das soll vermutlich weder vom Typ Boolean sein, noch hasNext() heißen \begin{lstlisting}[language=java] Boolean Handle.hasNext(); \end{lstlisting} From 8bff52d98a5410bc2e35a7dac37d706c818440b7 Mon Sep 17 00:00:00 2001 From: Christian Strate Date: Mon, 17 Feb 2014 08:11:42 +0100 Subject: [PATCH 17/19] typos in chap. 6, 7, 8, 9 --- Anfrageverarbeitung.tex | 6 +++--- Relationale_Operatoren.tex | 10 +++++----- Speicherung.tex | 4 ++-- Transaktionen.tex | 24 ++++++++++++------------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Anfrageverarbeitung.tex b/Anfrageverarbeitung.tex index a169cff..4acece2 100644 --- a/Anfrageverarbeitung.tex +++ b/Anfrageverarbeitung.tex @@ -25,8 +25,8 @@ interner DBS-Operationen \subsubsection{Relationale Algebra} Definition von relationalen \textbf{logischen Operatoren}: \begin{itemize} - \item Selektion: Auswahl von \glqq Zeilen \grqq (\textbf{where}-Klausel) - \item Projektion Auswahl von \glqq Spalten \grqq (\textbf{select}-Klausel) + \item Selektion: Auswahl von \glqq Zeilen\grqq (\textbf{where}-Klausel) + \item Projektion Auswahl von \glqq Spalten\grqq (\textbf{select}-Klausel) \item Kreuzprodukt: Konkatenation derjenigen Tupel aus zwei Relationen(\textbf{from}) \item Verbund: Konkatenation derjenigen Tupel aus zwei Relationen die eine Bedingung erfüllen(\textbf{from-where}) @@ -80,7 +80,7 @@ Heuristik: \item Selektionen mit mehreren Prädikat Termen separieren in Selektionen mit jeweils einem Prädikat Term (Regel 4) \item Selektionen so früh wie möglich ausführen (Regel 7 und 8) \item Selektionen und Kreuzprodukt zu Verbund zusammenfassen, wenn - das Selektioinsprädikat Attribute aus den beiden Relationen verwendet (Regel 9) + das Selektionsprädikat Attribute aus den beiden Relationen verwendet (Regel 9) \item Projektionen so früh wie möglich ausführen, allerdings nicht vor Selektion und Mengenoperationen. \end{itemize} diff --git a/Relationale_Operatoren.tex b/Relationale_Operatoren.tex index d66ee8b..17f8c8c 100644 --- a/Relationale_Operatoren.tex +++ b/Relationale_Operatoren.tex @@ -19,7 +19,7 @@ Die grundsätzliche Aufgabe besteht darin die logischen Operatoren SQL erlaubt Anfragen über k-Relationen: \begin{itemize} \item Ein Variablen Ausdrücke (eine Relation) - \item Zwei Variablem AUsdrücke (zwei Relationen) + \item Zwei Variablen Ausdrücke (zwei Relationen) \item k-Variablen Ausdrücke (zerlegt in Ein- und Zwei Variablen Ausdrücke) \end{itemize} @@ -72,7 +72,7 @@ fuer jeden Satz s, fuer den $P(s.SA)$ gilt: Scan ueber $R$; //innere Schleife fuer jeden Satz r, fuer den P(r.SA) AND (r.VA $\Theta$ s.VA) gilt: - uebernimm kombinierten SAtz (r,s) + uebernimm kombinierten Satz (r,s) in das Ergebnis; \end{lstlisting} Komplexität: $\mathcal O(N^2)$ @@ -156,7 +156,7 @@ Die Wichtigsten Kostenarten sind: Ziel ist es eine möglichst guten Ausführungsbaum zu erstellen. Problematisch ist die riesige Anzahl an Möglichkeiten mit steigender Komplexität der Anfrage (z.B. Query mit 15 Verbunden $10^{70}$ Möglichkeiten).\\ -Diese Vielfalt entsteht durch verschiedene Implementierungen der Planoperatoren und der Operationsreiehenfolgen. +Diese Vielfalt entsteht durch verschiedene Implementierungen der Planoperatoren und der Operationsreihenfolgen. $\rightarrow$ \textbf{Ziel der Plangenerierung}: \begin{itemize} @@ -178,11 +178,11 @@ Unterschiedliche Strategieklassen: $\text{W}_{\text{CPU}}$ = \#Instr-pro-Aufruf-des-Zugriffsystems /\\ \#Instr-pro-I/O-Vorgang } \item{ I/O-bound : geringere I/O-, höherer CPU Aufwand:\\ - $\text{W}_{\text{CPU}}$ = \#Instr-pro-Aufruf-des-Zugriffsystems /\\ (\#Instr-pro-I/O-Vorgang + Zugriffzeit $\times $ MIPS-Ratte) + $\text{W}_{\text{IO}}$ = \#Instr-pro-Aufruf-des-Zugriffsystems /\\ (\#Instr-pro-I/O-Vorgang + Zugriffzeit $\times $ MIPS-Ratte) } \end{itemize} -\paragraph{Selektivitätsanschätzung} +\paragraph{Selektivitätsabschätzung} Der \textbf{Selektivitätsfaktor} beschreibt den erwarteten Anteil an Tupeln, die ein Prädikat p erfüllen.\\ Diese Trefferate gibt auch an, inwiefern eine vorhandene Indexstruktur diff --git a/Speicherung.tex b/Speicherung.tex index 49875b0..bee5118 100644 --- a/Speicherung.tex +++ b/Speicherung.tex @@ -14,7 +14,7 @@ \begin{itemize} \item Menge von Sätzen mit gleicher Struktur $\rightarrow$ einmalige Beschreibung im Systemkatalog - \item beim speichern eines Satzes wird im ein Satztyp zugeordnet + \item beim Speichern eines Satzes wird ihm ein Satztyp zugeordnet \item Länge der Sätze zumeist variabel \end{itemize} \textbf{Annahme: Reihenfolge der Felder egal} @@ -30,7 +30,7 @@ \textbf{direkter Zugriff auf Felder}: \begin{itemize} \item ohne vorher andere Felder lesen zu müssen - \item direkt zur Anfangs-Byte Position innerhalb des Satzes + \item direkt zur Anfangs-Byte-Position innerhalb des Satzes \end{itemize} diff --git a/Transaktionen.tex b/Transaktionen.tex index 246e7fc..0dc4461 100644 --- a/Transaktionen.tex +++ b/Transaktionen.tex @@ -23,7 +23,7 @@ Nebenläufigkeitsprobleme auftauchen. \subsection{Konsistenzen:} \subsubsection{Physische Konsistenz:} -Alle Speicheurngsstrukturen sind korrekt. Alle TID's stimmen etc. +Alle Speicherungsstrukturen sind korrekt. Alle TID's stimmen etc. \subsubsection{Logische Konsistenz:} Setzt Physische Konsistenz voraus.\\ @@ -64,7 +64,7 @@ Bedingungen sind erfüllt (Assertions). \subsubsection{Serialisierung} Hintereinanderausführung aller TA's. Problem werden sehr große Wartezeiten. Allgemein ist deine Datenbank für Mehrbenutzerbetrieb -ausgelegt, dies würde ab adsurdum geführt durch Serialisierung. +ausgelegt, dies würde ad adsurdum geführt durch Serialisierung. Was tun im Fehlerfall \subsubsection{Serialisierbarkeit} @@ -214,7 +214,7 @@ Arten: Wann werden geänderte Daten aus dem Puffer auf die Platte geschrieben? \begin{itemize} \item {STEAL:\\ - Bei Verdrängung au dem Puffer, auch vor ende der Transaktion} + Bei Verdrängung aus dem Puffer, auch vor Ende der Transaktion} \item {NO STEAL:\\ Frühestens am Ende der Transaktion $\rightarrow$ kein UNDO erfoderlich (aber großen Puffer)} @@ -222,7 +222,7 @@ Wann werden geänderte Daten aus dem Puffer auf die Platte geschrieben? Spätestens am Ende der Transaktion $\rightarrow$ kein Partial Redo erfoderlich} \item {NO FORCE:\\ - Erst bei Verdränung aus dem Puffer} + Erst bei Verdrängung aus dem Puffer} \end{itemize} Wie werden geänderte Daten aus dem Puffer auf Platte geschrieben? \begin{itemize} @@ -247,13 +247,13 @@ wiederherzustellen. \paragraph{Wann wird in Protokolldatei geschrieben?} \begin{itemize} - \item{UNDO-Information:\\ + \item{UNDO-Information: \begin{itemize} \item bevor die zugehörigen Änderungen in Datenbestand eingebracht werden - \item sonst rücksetzen unmöglich + \item sonst Rücksetzen unmöglich \end{itemize} } - \item{REDO-Information:\\ + \item{REDO-Information: \begin{itemize} \item muss geschrieben sein (in tmp Log Datei und Archivdatei), bevor der Abschluss der TA an Programm bzw Benutzer gemeldet wird @@ -266,7 +266,7 @@ wiederherzustellen. \item{ Forward:\\ Änderungen sind noch nicht in DB, aber schon in Log. Bevor diese auf DB geschrieben werden, wird ein Commit-Record in - Log File geschrieben. Falls was schief geht und der Commit Record noch da ist, werden alle diese Änderungen wiedehrolt und ansonsten nichts getan, da alte Version noch in DB steht.} + Log File geschrieben. Falls was schief geht und der Commit Record noch da ist, werden alle diese Änderungen wiederholt und ansonsten nichts getan, da alte Version noch in DB steht.} \item{ Backward:\\ Ins Log kommt immer \textbf{alte} Version eines Wertes. Bei einem Commit wird gewartet bis alle neuen werte in DB stehen. @@ -304,7 +304,7 @@ Sammlung und Pufferung im HS: \begin{itemize} \item $+$ reduzierter E/A Aufwand \item $-$ komplexeres und zeitaufwändigeres Recovery\\ - Zurückspeichern gleicht eher dem Neu einfügen (freien Platz suchen, TID vergeben), da Stelle von wo Einträge stammen andersweitig genutzt werden können + Zurückspeichern gleicht eher dem Neu einfügen (freien Platz suchen, TID vergeben), da Stelle von wo Einträge stammen anderweitig genutzt werden können \end{itemize} \subsubsection{Sicherungspunkte} @@ -314,10 +314,10 @@ erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederhol \begin{itemize} \item{ \textbf{Transaction-Oriented Checkpoint}\\ Geänderte Seiten einer TA nach TA-ende sofort in DB bringen (siehe FORCE) $\rightarrow$ zu hohe Belastung} - \item{ \textbf{ Transaction-COnsisten Checkpoint} + \item{ \textbf{ Transaction-Consisten Checkpoint} \begin{itemize} \item Einbringung aller Änderung erfolgreicher TA's - \item Lesesperee auf ganzer DB zum Zeitpunkt des Sicherungspunktes + \item Lesesperre auf ganzer DB zum Zeitpunkt des Sicherungspunktes \item Verzögerung von TA's \item Sicherungspunkt begrenzt Undo und Redo Recovery \end{itemize} @@ -332,7 +332,7 @@ erfolgreichen Änderungen die im Puffer verloren gegangen sind müssen wiederhol \subsubsection{Allgemeine Restart Prozedur} \textbf{3-phasiger Ansatz} \begin{enumerate} - \item Analyse Lauf + \item Analyse Lauf\\ Vom letzten Checkpoint bis zum Log Ende. Bestimmung von Gewinner und Verlierer TA's, sowie Seiten, die von ihnen geändert wurden \item Undo Lauf \\ Rücksetzen der Verlierer TA's durch Rückwärtslesen des Logs bis zum BOT Satz der ältesten Verlierer TA From c8b34f72abe67988b562b63778c29eed6eb2eda9 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Mon, 23 Jun 2014 10:25:12 +0200 Subject: [PATCH 18/19] Makefile angepasst --- Makefile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index a1a0dda..ed0a8ed 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,6 @@ $(PDF): $(PDF).pdf latexmk -jobname=$(@:%.pdf=%) -pdf $< clean: - latexmk -c -f $(PDF).tex + latexmk -c -f -distclean: - latexmk -C -f $(PDF).tex - rm -f $(PDF).pdf - -.PHONY: all clean distclean $(PDF) continuous +.PHONY: all clean $(PDF) continuous From c58e48248db6a8d8856da9d232901f90d2f76434 Mon Sep 17 00:00:00 2001 From: Christian Bay Date: Mon, 23 Jun 2014 10:25:23 +0200 Subject: [PATCH 19/19] Organisatorisches --- IDB.tex | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/IDB.tex b/IDB.tex index e3b1b79..45fc0c8 100644 --- a/IDB.tex +++ b/IDB.tex @@ -17,6 +17,7 @@ \usepackage{float} \usepackage{listings} \usepackage{lstautogobble} +\usepackage{datetime} \usepackage{wrapfig} \newcommand{\RM}[1]{\MakeUppercase{\romannumeral #1{.}}} \definecolor{dkgreen}{rgb}{0,0.6,0} @@ -71,7 +72,31 @@ }% %---------------------------------------------------- +\title{IDB Skript} +\date{\today ~- \currenttime ~Uhr} \begin{document} +\maketitle +\noindent{Dieses Skript zur Vorlesung Implementierung von + Datenbanksystemen im Wintersemester 2013/14 wurde von + untenstehenden Studenten erarbeitet. Es ist somit + offensichtlich inoffiziell und erhebt weder einen + Anspruch auf Korrektheit noch auf Vollständigkeit. +} + +\begin{description} + \item[Christian Bay] christian.bay@studium.fau.de +\end{description} + +\vfill + +\noindent { + \textbf{\footnotesize Dieses Skript ist keine offizielle + Veröffentlichung des Lehrstuhls 6 am Department Informatik der + Friedrich-Alexander-Universität Erlangen-Nürnberg.} +} + +\newpage + \tableofcontents \listoffigures \newpage