Irkupra tagħbija minn SQL Server għal Oracle wara li taqa' l-VPN
VPN li taqa' tħalli lill-ġejjieni mhux ċert jekk il-commit f'Oracle seħħx. ID tal-lott dejjiema tippermetti li l-estrazzjoni, l-applikazzjoni u r-rikonċiljazzjoni jiġu mwieġba waħda waħda.
Trasferiment bejn databases imut meta taqa' l-VPN, u «erġa' ħaddimha» mhijiex pjan ta' rkupru. L-estrazzjoni mis-sors tista' tkun kompluta, id-destinazzjoni tista' tkun diġà għamlet commit, jew it-tweġiba tista' sempliċement tkun intilfet fit-triq lura. Dawn it-tliet stati jeħtieġu azzjonijiet differenti, u klijent li jaf biss «żball» ma jistax jiddistingwihom.
Is-soluzzjoni hija arkitettonika: agħti lil kull eżekuzzjoni identità tal-lott dejjiema, u ħalli d-databases iwieġbu l-mistoqsijiet minflok ma tħalli lill-klijent jaqta' bl-addoċċ.
X'jipprovdi tassew id-database
SQL Server u Oracle it-tnejn jagħtu atomiċità ġewwa transazzjoni. L-ebda waħda ma tagħtik atomiċità bejniethom. Konnessjoni mitlufa ma tħassarx id-database u lanqas iġġiegħel rollback manwali, għax is-server isolvi t-transazzjoni tiegħu stess mingħajrek. Dak li jinkiser hija l-għarfien tal-ġejjieni dwar ir-riżultat.
Commit separat ifisser commit separat. VPN li ġġorr iż-żewġ konnessjonijiet ma tgħaqqadx żewġ commits f'unità waħda ta' xogħol.
Il-commit li qatt ma smajt bih
Mod wieħed ta' falliment jikkastiga loġika ta' tentattivi mill-ġdid naive: is-server jagħmel commit, u l-konferma qatt ma tasal għand il-ġejjieni. Oracle jiddokumenta dan bħala l-problema tar-riżultat mhux magħruf u jipprovdi Transaction Guard għaliha fid-dokumentazzjoni tat-transazzjonijiet. Żball ta' komunikazzjoni mhuwiex prova li commit mibgħut falla, u li tittrattah bħala prova hija t-triq li biha lott jiġi ppubblikat darbtejn. Id-differenza tgħodd l-aktar fit-triq tat-tentattivi mill-ġdid, fejn l-operatur għandu messaġġ ta' żball u l-ebda sinjal ieħor li jaġixxi fuqu.
Għalhekk il-pass tal-irkupru jrid jaqra r-riżultat mid-destinazzjoni minflok ma jiddeduċih mit-test tal-iżball.
Agħti lill-trasferiment identità tal-lott
Kull eżekuzzjoni tikseb ID tal-lott immutabbli, u d-destinazzjoni tirrekordja x'għamlet b'dik l-ID. Iċ-ċiklu tal-ħajja huwa erba' passi, u jidher l-istess irrispettivament mill-fornitur:
- Estratta lott tas-sors identifikat u immutabbli b'skem u konfini rrekordjati.
- Ittrasferixxi fl-area tal-preparazzjoni tad-destinazzjoni u skopri kontenut mhux komplet jew konfliġġenti qabel ma tiddikjarah lest.
- Applika taħt ir-regoli tal-uniċità jew tal-illokkjar tad-destinazzjoni stess u rrekordja t-tlestija fl-istess transazzjoni lokali.
- Irikonċilja r-riżultat dejjiemi permezz tal-protokoll appoġġjat qabel ma tikkonferma jew terġa' tipprova.
It-tentattivi mill-ġdid jużaw l-istess ID. ID ġdida għal kull tentattiv tfixkel il-prevenzjoni tad-duplikati li għadek kemm bniet, li tidher ovvja sakemm wrapper tat-tentattivi mill-ġdid jiġġenera waħda awtomatikament.
L-ID tagħtik ukoll xi ħaġa li tirrikonċilja magħha aktar tard, ħafna wara li l-proċess tal-klijent ikun sparixxa.
Ikklaim il-lott, imbagħad applika
Il-pass tal-applikazzjoni jrid jikklaim l-ID tal-lott, jagħmel il-bidliet tan-negozju u jirrekordja t-tlestija f'transazzjoni lokali waħda. Li tagħmel il-verifika u l-insert bħala dikjarazzjonijiet separati jerġa' jdaħħal it-tellieqa li kien qed tipprova tneħħi. Jekk żewġ ħaddiema jikkompetu, eżattament klaim waħda tirbaħ u l-ieħor jiġi mgħarraf.
Rekord tat-tlestija nieqes mhuwiex prova li transazzjoni għaddejja qatt mhi se tagħmel commit. Il-klaim trid tisserjalizza t-tentattivi kompetituri, jew il-protokoll irid jaqra r-riżultat dejjiemi qabel ma jiddeċiedi xejn.
Uża l-mekkaniżmu appoġġjat tad-database għal dik is-serjalizzazzjoni minflok loop ta' verifika-u-erġa' fil-kodi tal-applikazzjoni.
X'għadu ma jistax iwiegħed id-disinn
Il-preparazzjoni tagħmel ix-xogħol jista' jerġa' jibda u tnaqqas id-dipendenza fuq sessjoni waħda twila. Ma toħloqx commit atomiku wieħed ma' SQL Server, Oracle u kwalunkwe effett sekondarju estern li jagħmel ix-xogħol. Jekk in-negozju verament jeħtieġ dan, iddisinja u kkwalifika transazzjoni distribwita appoġġjata jew proċess ta' rikonċiljazzjoni, inkluż min jippossjedi x-xogħol b'riżultat inċert. Kwalunkwe ħaġa aktar dgħajfa minn dik tappartjeni għal runbook ta' rikonċiljazzjoni, mhux għall-kodi tat-trasferiment.
Aċċetta l-interruzzjoni fi tliet postijiet: waqt it-trasferiment, waqt l-applikazzjoni, u wara l-commit imma qabel il-konferma. Imbagħad iċċekkja r-riżultat tan-negozju minflok il-messaġġ tal-klijent, u ħalli l-ledger tal-lott jgħid jekk ix-xogħol huwiex mhux komplet, commitat jew għadu mhux solvut.