Eskualde anitzeko idazketak: non baieztatzen da aldaketa benetan?
Bideratzeak eskaera eskualde batera eramaten du; transakzio-muga batek baino ez ditu idazketak atomiko egiten. Izenda ezazu inbariantea, aukeratu jabea eta diseinatu berriro saiakera haren inguruan.
Bi eskualdetan bi aplikazio-zerbitzari, VPN baten bidez idazten duen bezero bat eta inork idatzi ez zuen galdera bat: zein osagai erabakitzen du idazketa gertatu dela? Bideratzeak eskaera prozesu batera eramaten du. Transakzio-muga batek erabakitzen du noiz bihurtzen den aldaketa iraunkor eta ikusgai. Sistema ezberdinek egindako lan ezberdinak dira, eta bien arteko hutsunea eskualde anitzeko idazketa-erroreen gehiengoa bizi den lekua da.
Hasi negozio-arauetik, ez mapatik
Hasi negozio-arauari buruzko esaldi batekin, ez geografiari buruzkoarekin: zein irakurketa eta idazketa lortu behar dute elkarrekin eta zein aldaketa konkurrente izan behar dira ezinezkoak hori gertatzen den bitartean. Inbentario-erreserba baterako horrek esan nahi du stock-egiaztapenak eta erreserbak edo biek hartzen dutela indarra edo batek ere ez, eta bigarren eskaerak ezin duela unitate bera bitartean kontsumitu.
| Requirement | What satisfies it | What does not |
|---|---|---|
| All-or-nothing application | A transaction inside one owning system | A VPN path between regions |
| No double spend | Isolation strong enough to exclude the conflict | Atomicity alone |
| Survive a region loss | Replication the database itself documents | Two independent databases behind one client |
Erdiko errenkada hori da taldeek saltatzen dutena. Isolamendurik gabe atomikotasunak bi transakzioi bakoitza behar bezala baieztatzen uzten die eta, hala ere, negozioak ezintzat jotzen duen egoera bat sortzen dute, eta berriro saiatzeko logikaren edozein kopuruk ez du hori gero konpontzen.
Muga autoritario batek bi eskualde-zerbitzari gainditzen ditu
Eskualdeko aplikazio-zerbitzariek han jarrai dezakete, baldin eta eragiketa onartzen duen zerbitzu bati bidaltzen badiote, hark transakzio-muga onartu bakarrean egiten badu. Aplikazio-geruza asmoaren bideratzaile bihurtzen da; datu-geruzak egia du.
Mantendu muga hori labur eta ukitzen dituen datuetatik hurbil. Pertsona batek galdera bati erantzuten dion bitartean edo deialdi batek bi eskualde zeharkatzen dituen bitartean irekita dagoen transakzioak blokeoak eusten ematen du denbora eta atzean beste zerbait iraungitzeko probabilitatea handitzen du. Hutsegite hori datu-basearen arazoa dirudi eta, egiatan, horrela mozorrotutako diseinu-arazoa da. Erabakia datu-geruzara eramateak normalean guztiz ezabatzen du.
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;
Irakurri zirriborro hori muga gisa, ez errendimendu-gomendio gisa. Kontua da egiaztapenak eta txertaketak baieztapen bakarra partekatzen dutela, beraz, aldi bereko eskaerak stocka kontsumituta ikusten du edo ez du inoiz ikusten.
Zer ematen duen eta zer ez duen erreplikatutako datu-base batek
Erreplikatutako datu-base batek muga zabalagoa eman dezake bere transakzio-ereduak hori onartzen duenean. Spannerrek transakzio atomikoak dokumentatzen ditu datu-base bakar baten barruan tauletan zehar, isolamendu eta berriro saiakera-jokabide zehaztuekin. Irakurri, probatu eta nahita fidatzen zaren bermea da.
Produktutik datorren bermea ere bada, ez bidetik. Eskualdeen arteko VPN batek aldatzen du nola bidaiatzen duten paketeek eta nola aurkezten diren hutsegiteek. Ez du transakzio-muga ilara bakar bat ere luzatzen, tunelak osasuntsu ematen duen arren. Biak nahasteak arkitektura sortzen ditu non osagai bakoitzak bere egiaztapena gainditzen duen eta datuek oraindik bat ez duten egiten.
Bi datu-base ez dira sistema bakarra bihurtzen
Modu independentean kudeatutako bi datu-basek ez dute transakzio-kudeatzaile partekaturik lortzen bezeroek bietara iritsi daitezkeelako. Negozioak benetan bikotearen artean konpromiso atomikoa behar badu, koordinazio-mekanismoa, parte-hartzaileak eta berreskuratze-prozesua aukeratu eta kalifikatu behar dira, suposatu beharrean.
Pentsa ezazu lana prestatu ondoren parte-hartzaile bat edo esteka bat desagertzen den unean. Onartutako banatutako baieztapenak zalantzazko egoera utz dezake, berreskuratze-prozedura eta giza erabakia behar dituena, eta ez du promesik ematen eskualde bakoitza banaketa bakoitzean idazgarri jarraituko denik.
Horren ordez koordinazio asinkronikoa onargarria bada, esan argi eta garbi eta idatzi tarteko negozio-egoerak gehi adiskidetze-arauak. Konpentsazioarekin tokian tokiko baieztatutako urratsen katea diseinu legitiboa da; besterik gabe ez da izen ezberdineko transakzio atomiko bat.
Diseinatu berriro saiakera lehen etenaren aurretik
Bezeroak erantzuna gal dezake eragiketa baieztatu ondoren, beraz deitzaileak ezin du denbora-muga hutsegite gisa hartu. Gorde eskaeraren identitate iraunkorra eta erabili zerbitzuaren emaitza edo idempotentzia-mekanismoa mutazioa berriro saiatu aurretik, bestela berriro saiakera bigarren idazketa bihurtzen da.
Transakzioen atzera-dei automatikoek ere behin baino gehiagotan exekuta daitezke abortu errepikagarri baten ondoren, eta horrek efektu kanpoko itzulezinentzako etxe txarra bihurtzen ditu. Mantendu horiek atzera-deitik kanpo, lan-fluxuak haientzako protokolo seguru esplizitua definitzen ez badu behintzat. Kontuz berbera aplikatzen zaie dirua kostatzen duen edo mezu bat bidaltzen duen edozeri. Kobrantza bikoitza log-lerro bikoitza baino askoz elkarrizketa zailagoa da.
Onarpenak lau eszenatoki errepikatu beharko lituzke: ilara beragatik lehiatzen duten bi bezero, zerbitzuak errepikagarria dela dioen abortu bat, inoiz iristen ez den erantzuna duen baieztapen bat, eta eskualde bat edo bien arteko esteka galtzea. Erregistratu baieztatutako negozio-emaitza eta konpondu gabeko egoerak bideratze-diseinuaren ondoan, inork sarea bermea ematen duen osagaiarekin nahas ez dezan.