Rejesha upakiaji kutoka SQL Server kwenda Oracle baada ya VPN kuanguka
VPN iliyoanguka humfanya mpigaji simu kuwa na uhakika kama commit katika Oracle imefanyika. Kitambulisho cha kundi cha kudumu huruhusu uchimbaji, matumizi na upatanisho kujibiwa kimoja kimoja.
Uhamishaji kati ya hifadhidata hufa VPN inapoanguka, na «iendeshe tena» si mpango wa urejeshaji. Uchimbaji kutoka chanzo unaweza kuwa umekamilika, lengo linaweza kuwa limefanya commit tayari, au jibu linaweza kuwa limepotea njiani kurudi. Hali hizi tatu zinahitaji hatua tofauti, na mteja anayejua «kosa» pekee hawezi kuzitofautisha.
Suluhisho ni la usanifu: ipe kila utekelezaji utambulisho wa kundi la kudumu, na iachie hifadhidata zijibu maswali badala ya kumruhusu mteja kukisia.
Hifadhidata inahakikisha nini kwa kweli
SQL Server na Oracle zote hutoa atomiki ndani ya muamala. Hakuna inayokupa atomiki kati yao wawili. Muunganisho uliopotea hauharibu hifadhidata na haulazimishi kurudi nyuma kwa mkono, kwa sababu seva hutatua muamala wake yenyewe bila wewe. Kinachovunjika ni ujuzi wa mpigaji simu kuhusu matokeo.
Kufanya commit kando kunamaanisha kufanya commit kando. VPN inayobeba miunganisho yote miwili haiunganishi commit mbili katika kitengo kimoja cha kazi.
Commit ambayo hukuisikia kamwe
Hali moja ya kushindwa huadhibu mantiki ya kujaribu tena isiyo na uangalifu: seva hufanya commit, na uthibitisho hauwahi kumfikia mpigaji simu. Oracle huandika hili kama tatizo la matokeo yasiyojulikana na hutoa Transaction Guard kwa ajili yake katika nyaraka za miamala. Hitilafu ya mawasiliano si ushahidi kwamba commit iliyotumwa imeshindwa, na kuichukulia kama ushahidi ndiyo njia ambayo kundi huchapishwa mara mbili. Tofauti hii ni muhimu zaidi kwenye njia ya kujaribu tena, ambapo mwendeshaji ana ujumbe wa hitilafu na hakuna ishara nyingine ya kuchukua hatua.
Kwa hiyo hatua ya urejeshaji lazima isome matokeo kutoka kwa lengo badala ya kuyakisia kutoka kwa maandishi ya hitilafu.
Ipe uhamishaji utambulisho wa kundi
Kila utekelezaji hupata kitambulisho cha kundi kisichobadilika, na lengo hurekodi kile kilichofanya na kitambulisho hicho. Mzunguko wa maisha una hatua nne, na unaonekana sawa bila kujali muuzaji:
- Chimbua kundi la chanzo lililotambuliwa na kisichobadilika lenye skema na mpaka zilizorekodiwa.
- Hamisha hadi eneo la maandalizi la lengo na ugundue maudhui yasiyokamilika au yanayopingana kabla ya kulitangaza kuwa tayari.
- Tumia chini ya sheria za kipekee au za kufunga za lengo yenyewe na urekodi ukamilishaji katika muamala huo huo wa ndani.
- Patanishe matokeo ya kudumu kupitia itifaki inayotumika kabla ya kuthibitisha au kujaribu tena.
Majaribio ya tena hutumia kitambulisho kimoja. Kitambulisho kipya kwa kila jaribio huharibu uzuiaji wa nakala rudufu ambao umetengeneza hivi punde, jambo ambalo huonekana dhahiri hadi kifuniko cha kujaribu tena kizalisha kimoja kiotomatiki.
Kitambulisho pia hukupa kitu cha kupatanisha nacho baadaye, muda mrefu baada ya mchakato wa mteja kutoweka.
Dai kundi, kisha tumia
Hatua ya matumizi lazima idai kitambulisho cha kundi, ifanye mabadiliko ya biashara, na irekodi ukamilishaji katika muamala mmoja wa ndani. Kufanya ukaguzi na uingizaji kama taarifa tofauti hurejesha mbio ulizokuwa ukijaribu kuondoa. Ikiwa wafanyakazi wawili wanashindana, dai moja hasa hushinda na mwingine huambiwa.
Kutokuwepo kwa rekodi ya ukamilishaji si ushahidi kwamba muamala unaoendelea hautawahi kufanya commit. Dai lazima lifanye majaribio shindani kuwa mfululizo, au itifaki lazima isome matokeo ya kudumu kabla ya uamuzi wowote.
Kwa ufuatiliaji huo tumia utaratibu wa hifadhidata unaotumika badala ya mzunguko wa kagua-na-rudia katika msimbo wa programu.
Kile ambacho usanifu bado hauwezi kuahidi
Maandalizi hufanya kazi iweze kuanzishwa upya na hupunguza utegemezi wa kikao kimoja cha muda mrefu. Haiundi commit moja ya atomiki kuvuka SQL Server, Oracle na athari yoyote ya nje ambayo kazi hufanya. Ikiwa biashara inahitaji hilo kweli, sanifu na uhitimishe muamala uliosambazwa unaotumika au mchakato wa upatanisho, ikiwa ni pamoja na nani anamiliki kazi yenye matokeo yasiyo na uhakika. Kitu chochote dhaifu kuliko hicho ni cha kitabu cha upatanisho, si cha msimbo wa uhamishaji.
Kubali kuingiliwa katika maeneo matatu: wakati wa uhamishaji, wakati wa matumizi, na baada ya commit lakini kabla ya uthibitisho. Kisha angalia matokeo ya biashara badala ya ujumbe wa mteja, na uache leja ya kundi iseme kama kazi haijakamilika, imefanyiwa commit, au bado haijatatuliwa.