I-delta feed yakho yeqa ama-commit afika emuva: akha i-cursor ethembekile
Umugqa owodwa wafika emuva ngoba uphawu lwamanzi lwalungelona umngcele we-commit. Landela ukwehluleka, bese uchaza ukumboza, umngcele, ukugcinwa nokuqhubeka okuphephile.
Lena yinto ehlulekile engayibona kabili, emishinini emibili ehlukene. Ukuthunyelwa kwedatha kusebenza ngo-10:00 futhi kurekhoda isigxivizo sesikhathi sokugcina sokushintshwa esikhulu kunazo zonke esasibonile. Umshwana owodwa owaqala ngo-09:58 usuvuliwe, wenza i-commit ngo-10:03 futhi uthwala isigxivizo sesikhathi sangesikhathi eyaqala ngaso. Ukuthunyelwa okulandelayo kucela kuphela imigqa emisha kunango-10:00 futhi akukaze kuyibone. Usayizi wokudlulisa wawuhle kakhulu futhi idatha yayinephutha.
Landela ukuthunyelwa okulahlekelwa umugqa owodwa
Landela ukulandelana kwezigigaba, hhayi i-SQL. Uhlelo lubhala isikhathi sokushintsha komugqa lapho umshwana uqala, hhayi lapho wenza i-commit. Umthumeli ufunda uphawu lwamanzi lwewashi lodonga ngenkathi lowo mshwana usuvuliwe. Bese umshwana wenza i-commit ngesikhathi sokushintsha esidala kunophawu lwamanzi olugciniwe. Iqoqo elilandelayo lomsebenzisi liqala ngemva kophawu lwamanzi, ngakho umugqa uhlala ngemva kwe-cursor futhi ngeke uphinde ukhethwe.
Akukho okurekhoda iphutha, ngoba akukho okwehlulekile. Yikho lokhu okwenza leli qembu lamaphutha libize: i-delta feed iyashesha, izibalo zemigqa zibonakala zikholeka, futhi umugqa ongekho uvela emasontweni kamuva njengephepha lokubuyisana okungekho muntu ongakwazi ukuliphindaphinda.
Izinombolo zokulandelana zinesimo esifanayo sephutha ngesinye isizathu. I-ID elandelanayo ikutshela ukulandelana kokwabiwa kwamanani, hhayi ukulandelana kwama-commit emishwana. Umshwana othathe inombolo encane ungase wenze i-commit ngemva kwalowo othathe inombolo enkulu, ngakho i-cursor esekelwe ekulandelaneni kokwabiwa nayo ingashiya imbobo.
Izethembiso ezinhlanu okufanele i-feed izinikeze
Ngaphambi kokukhetha ukuthutha, cela uhlelo lomthombo isivumelwano esinezigaba ezinhlanu. Uma kukhona isigaba esingekho, unokuqagela hhayi i-feed yezinguquko.
- Ukumboza: ukufakwa, ukubuyekezwa nokufinyelelwa, ngakunye kunokhiye ozinzile odingekayo ukuze kusetshenziswe.
- Umngcele: isho ukuthini inani le-cursor nokuthi iqoqo elihambisanayo liqukethe ini.
- Ukuhambisana: ukuthi amathebula ahlobene afundwa kanjani ngaphandle kokuhlanganisa izimo zomthombo ezingahambisani.
- Ukugcinwa: isikhathi umsebenzisi onqanyuliwe angaphinda aqhubeke ngaso esuka endaweni egciniwe.
- Ukuqalisa kabusha: isithombe esigcwele esisekelwe lapho leyo ndawo ingasasebenzi.
Indlela esekelwe ingahlangabezana nazo zontathu ezinhlanu. Imibhalo ye-SQL Server mayelana nokulandela izinguquko iyisibonelo esisodwa eshicilelwe esibonakalayo: ichaza inguqulo encane esebenzayo, irekhoda ukufinyelelwa kanye nezinguquko, futhi ichaza umshwana wesithombe ogubungela ukuqinisekisa, ukuthwebula kwenguqulo kanye nemibuzo yezinguquko ehlobene. Kuyisibonelo salokho okufanele ukufune kumthombo, hhayi isakhiwo somusho ongasinamathisela kwenye imishini.
Dizayina iphuzu lokuhlola njengengxenye ye-pipeline
Indawo egciniwe yomsebenzisi iwumshini wangempela wezimo, ngakho yibhale kanjalo. I-cursor ingaqhubekela phambili kuphela ngokuhamba komsebenzi osekwesisetshenzisile iqoqo futhi senze i-commit kumshwana oqondiwe.
cursor = durable_checkpoint() # last fully applied position
batch = extract(cursor, upper_bound) # one consistent batch
apply(batch) # idempotent at the target
commit()
checkpoint(batch.upper_bound) # only now
Uma ukulethwa kuhluleka phakathi nendawo, hlanganisa lelo qoqo elifanayo esikhundleni sokuqamba indawo entsha yomthombo. Ukukhipha kabusha ngomngcele ophezulu omusha yikho okwenza ukusetshenziswa okuyingxenye kube imbobo ehlala njalo. Umthetho wesibuko usebenza nangakolunye uhlangothi: ukusetshenziswa kwe-idempotent endaweni eqondiwe kuvimbela ukuphindaphinda futhi akwenzi lutho kuguquko umthombo ongakaze ulubone.
Ukufinyelelwa kudinga amarekhodi, hhayi iziphetho
Ukuqhathanisa imigqa esekhona namanje akukwazi ukutshela umsebenzisi ukuthi yikuphi okhiye abanyamalalayo. Umthombo ongalokothi urekhode ukufinyelelwa ukushiya izinketho ezimbili ezingaphelele: ukugcina umlando wokhiye isikhathi eside ngokwanele ukuze uqhathaniswe, noma ukwenza ukubuyisana okugcwele okusobala ngokohlelo. Kokubili kuyizinqumo zokwakha ezinendleko, futhi akukho okukodwa okukhona ngaphandle uma kukhona umnikazi.
Ukugcinwa kuyisinqumo sohlobo olufanayo. Yonke i-feed yezinguquko esekelwe inewindi; isho esivumelwaneni futhi uxwayise lapho iphuzu lokuhlola lomsebenzisi lisondela kulo. Umsebenzisi ovuka ngemva kokuphazamiseka kwamasonto amabili kufanele afunde iphutha elicacile "ukuqalisa kabusha kuyadingeka" esikhundleni sokuthola buthule iqoqo eliyingxenye.
Bese ulinganisa ukuthi i-delta yayifanele yini
Ukubuyela ekuqhathaniseni wonke ukhiye ne-hash kwesinye isikhathi kulungile, futhi kufanelekile ukwazi ukuthi kubiza malini. Usadlulisa ulwazi mayelana nomugqa ngamunye, ama-hash awakunikezi isithombe esihambisanayo emathebuleni, futhi uhlelo lwe-hash luletha imibuzo yalo mayelana nokumelelwa nokungqubuzana. Amabhayithi ambalwa anomngcele oqinisekisekayo yiwo umgomo; amabhayithi ambalwa alahla buthule ushintsho olwenziwe i-commit akuyona neze i-delta.
Ikholamu yokushintshwa kokugcina iyinkomba. I-cursor ephila ngaphezu kwe-commit yamuva, ukufinyelelwa nokuphazamiseka okude iyisivumelwano.