Żewġ servers tal-applikazzjoni f'żewġ reġjuni, klijent wieħed li jikteb permezz ta' VPN, u mistoqsija li ħadd ma kiteb: liema komponent jiddeċiedi li l-kitba seħħet? Ir-rotot iġibu t-talba lil proċess. Konfini ta' tranżazzjoni jiddeċiedi meta l-bidla ssir dejjiema u viżibbli. Dawn huma xogħlijiet differenti mwettqa minn sistemi differenti, u l-vojt bejniethom huwa fejn jgħixu ħafna mill-bugs tal-kitba f'ħafna reġjuni.

Ibda mir-regola tan-negozju, mhux mill-mappa

Ibda b'sentenza dwar ir-regola tan-negozju u mhux dwar il-ġeografija: liema qari u kitbiet iridu jirnexxu flimkien, u liema bidliet konkorrenti għandhom ikunu impossibbli waqt li jiġri dan. Għal riżervazzjoni tal-inventar dan ifisser li l-verifika tal-istokk u r-riżervazzjoni jew it-tnejn jieħdu effett jew ħadd, u ebda ordni oħra ma tista' tikkonsma l-istess unità bejniethom.

RequirementWhat satisfies itWhat does not
All-or-nothing applicationA transaction inside one owning systemA VPN path between regions
No double spendIsolation strong enough to exclude the conflictAtomicity alone
Survive a region lossReplication the database itself documentsTwo independent databases behind one client

Propju dak il-filliera tan-nofs jinqabżu t-timijiet. L-atomika mingħajr iżolament biżżejjed tippermetti li żewġ tranżazzjonijiet kull waħda tiġi kkonfermata b'mod korrett u xorta tipproduċi stat li n-negozju jikkunsidra impossibbli, u xejn ta' loġika ta' prova mill-ġdid ma jsewwih wara.

Konfini awtorevoli wieħed jgħeleb żewġ servers reġjonali

Is-servers tal-applikazzjoni reġjonali jistgħu jibqgħu fejn huma, sakemm jissottomettu l-operazzjoni lil servizz li jwettaqha fi ħdan konfini wieħed ta' tranżazzjoni appoġġjat. Is-saff tal-applikazzjoni jsir router tal-intenzjoni; is-saff tad-data jippossjedi l-verità.

Żomm dan il-konfini qasir u qrib id-data li jmiss. Tranżazzjoni miżmuma miftuħa waqt li bniedem iwieġeb mistoqsija, jew waqt li sejħa taqsam żewġ reġjuni, tqatta' ħinha żżomm is-serraturi u żżid iċ-ċans li xi ħaġa oħra tispiċċa l-ħin warajha. Dak il-falliment jidher bħala problema tal-bażi tad-data u fil-verità hija problema tad-disinn liebsa hekk. Ċaqliq tad-deċiżjoni lejn is-saff tad-data normalment jeliminaha kompletament.

BEGIN;
UPDATE inventory SET reserved = reserved + 1
 WHERE sku = 'A-100' AND available >= 1;
INSERT INTO reservation (sku, order_id) VALUES ('A-100', 'ord-9f');
COMMIT;

Aqra dak l-abbozz bħala konfini, mhux bħala rakkomandazzjoni ta' prestazzjoni. Il-punt huwa li l-verifika u l-insert jaqsmu konferma waħda, għalhekk ordni konkorrenti jew jara l-istokk ikkonsmat jew ma jarahx affattu.

X'jagħti u x'ma jagħtix bażi tad-data replikata

Bażi tad-data replikata tista' tipprovdi konfini usa' meta l-mudell tat-tranżazzjonijiet tagħha stess jappoġġjah. Spanner jiddokumenta tranżazzjonijiet atomiċi ta' qari u kitba fi ħdan bażi tad-data waħda fuq tabelli, b'iżolament u mġiba ta' prova mill-ġdid definiti. Din hija garanzija li taqra, tittestja u tiddependi fuqha b'mod deliberat.

Hija wkoll garanzija li ġejja mill-prodott, mhux mir-rotta. VPN bejn reġjuni jbiddel kif jivvjaġġaw il-pakketti u kif jidhru l-fallimenti. Ma jestendix konfini ta' tranżazzjoni lanqas b'filliera waħda, kemm jidher b'saħħtu l-mina. Li tħallat it-tnejn jipproduċi arkitetturi fejn kull komponent jgħaddi l-verifika tiegħu u d-data xorta ma taqbilx.

Żewġ bażijiet tad-data ma jsirux sistema waħda

Żewġ bażijiet tad-data amministrati b'mod indipendenti ma jakkwistawx maniġer tat-tranżazzjonijiet komuni għax il-klijenti jistgħu jilħqu t-tnejn. Jekk in-negozju verament jeħtieġ impenn atomiku fuq il-par, il-mekkaniżmu ta' koordinazzjoni, il-parteċipanti u l-proċess ta' rkupru kollha jridu jintgħażlu u jiġu kkwalifikati minflok ma jiġu preżunti.

Aħseb fil-mument li fih parteċipant jew konnessjoni tisparixxi wara li x-xogħol ikun ippreparat. Impenn distribwit appoġġjat jista' jħalli stat dubjuż li jeħtieġ proċedura ta' rkupru u deċiżjoni umana, u ma jiġix bi promessa li kull reġjun jibqa' miktub permezz ta' kull qasma.

Jekk minflok hija aċċettabbli koordinazzjoni asinkronika, għidha b'mod espliċitu u ikteb l-istati tan-negozju intermedji flimkien mar-regoli tar-rikonċiljazzjoni. Katina ta' passi kkonfermati lokalment b'kumpens hija disinn leġittimu; hija sempliċement mhux tranżazzjoni atomika waħda b'isem ieħor.

Iddisinja l-prova mill-ġdid qabel l-ewwel waqfa

Klijent jista' jitlef ir-risposta wara li l-operazzjoni tkun ġiet ikkonfermata, għalhekk min isejjaħ ma jistax jittratta timeout bħala falliment. Ippreserva identità tat-talba dejjiema u uża r-riżultat tas-servizz jew mekkaniżmu ta' idempotenza qabel ma terġa' tipprova mutazzjoni, inkella l-prova mill-ġdid issir kitba oħra.

Sejħiet lura awtomatiċi tat-tranżazzjonijiet jistgħu wkoll jitħaddmu aktar minn darba wara abort li jista' jiġi ppruvat mill-ġdid, li jagħmilhom dar fqira għal effetti esterni irreversibbli. Żomm dawk barra mis-sejħa lura sakemm il-fluss tax-xogħol ma jiddefinixxi protokoll sikur espliċitu għalihom. L-istess kawtela tapplika għal kull ħaġa li tiswa flus jew tibgħat messaġġ. Ċarġ doppju hija konverżazzjoni ferm aktar diffiċli minn linja tal-log doppja.

L-aċċettazzjoni għandha terġa' tilgħab erba' xenarji: żewġ klijenti jiġġieldu għall-istess filliera, abort li s-servizz jgħid li jista' jiġi ppruvat mill-ġdid, konferma li r-risposta tagħha qatt ma tasal, u t-telf ta' reġjun jew tal-konnessjoni bejniethom. Irreġistra r-riżultat tan-negozju kkonfermat u l-istati mhux solvuti ħdejn id-disinn tar-rotot, sabiex ħadd ma jħawwad in-netwerk mal-komponent li jipprovdi l-garanzija.

Artikli relatati