Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta

Ogow. turjumi: Jaana Dogan waa Injineer khibrad u leh Google oo hadda ka shaqaynaysa la socoshada adeegyada wax soo saarka ee shirkadda ee ku qoran Go. Maqaalkani, kaas oo helay caan weyn oo ka mid ah dhagaystayaasha Ingiriisiga ku hadla, waxay ku soo ururisay 17 dhibcood faahfaahin farsamo oo muhiim ah oo ku saabsan DBMS-yada (iyo mararka qaarkood nidaamyada loo qaybiyo guud ahaan) kuwaas oo faa'iido leh in la tixgeliyo horumarinta codsiyada waaweyn / dalbanaya.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta

Inta badan nidaamyada kombuyuutarku waxay la socdaan xaaladdooda, sidaas awgeed, waxay u baahan yihiin nooc ka mid ah nidaamka kaydinta xogta. Waxaan urursaday aqoonta ku saabsan xog-ururinta muddo dheer, intii aan jidka ku jiray samaynta khaladaad naqshadeed oo horseeday luminta xogta iyo maqnaanshaha. Nidaamyada socodsiiya tiro badan oo macluumaad ah, xog ururintu waxay ku yaalaan wadnaha qaab dhismeedka nidaamka waxayna u shaqeeyaan sidii shay muhiim ah oo lagu dooranayo xalka ugu fiican. In kasta oo xaqiiqda ah in fiiro gaar ah loo yeesho shaqada kaydka xogta, dhibaatooyinka ay horumariyayaashu isku dayaan inay saadaaliyaan inta badan waa cirifka barafka. Maqaalladan taxanaha ah, waxaan ku wadaagayaa fikrado waxtar u leh horumarinta kuwaas oo aan ku takhasusay goobtan.

  1. Nasiib baad leedahay haddii 99,999% wakhtiga shabakadu aanay dhibaato keenayn.
  2. ACID macnaheedu waa waxyaabo badan oo kala duwan.
  3. Xog-ururin kastaa waxa ay leedahay habab u gaar ah oo lagu hubinayo joogteynta iyo go'doominta.
  4. Xannibaadda rajo-gelinta leh ayaa soo samatabbixinaysa marka ay adagtahay in la ilaaliyo midda caadiga ah.
  5. Waxaa jira cillado kale oo aan ka ahayn akhrinta wasakhaysan iyo luminta xogta.
  6. Xogta kaydka iyo isticmaaluhu mar walba kuma heshiiyaan habka ficilka.
  7. Sharing heerka codsiga waxa loo rari karaa meel ka baxsan codsiga.
  8. Kordhinta iswada waxay noqon kartaa khatar.
  9. Xogta dhacday waxay noqon kartaa mid faa'iido leh oo aan loo baahnayn in la xiro.
  10. Qalloocintu waxay caadi u tahay ilo waqti kasta.
  11. Daahitaanku macnayaal badan buu leeyahay.
  12. Shuruudaha waxqabadka waa in lagu qiimeeyaa macaamil gaar ah.
  13. Wax kala iibsiga buulku wuxuu noqon karaa khatar.
  14. Macaamilada waa in aan lagu xidhin gobolka codsiga.
  15. Qorshayaasha weydiimaha ayaa wax badan kaaga sheegi kara xog-ururinta.
  16. Socdaalka onlaynka ah waa adag yahay, laakiin waa suurtagal.
  17. Korodhka weyn ee kaydka xogta waxay keenaysaa koror aan la saadaalin karin.

Waxaan jeclaan lahaa inaan uga mahadceliyo Emmanuel Odeke, Rein Henrichs iyo kuwa kale ra'yi-celinta ay ka bixiyeen nuqulkii hore ee maqaalkan.

Nasiib baad leedahay haddii 99,999% wakhtiga shabakadu aanay dhibaato keenayn.

Su'aashu waxay ku saabsan tahay sida teknoolajiyada casriga casriga ah ee la isku halleyn karo iyo inta jeer ee nidaamyada hoos u dhacaan sababtoo ah fashilka shabakada. Macluumaadka arrintan ku saabsan ayaa ah mid aad u yar, cilmi baaristana waxaa inta badan gacanta ku haya ururo waaweyn oo leh shabakado, qalab iyo shaqaale gaar ah.

Iyada oo la helayo heerka helitaanka 99,999% ee Spanner ( kaydka xogta caalamiga ah ee Google), Google wuxuu sheeganayaa in kaliya 7,6% dhibaatooyinku waxay la xiriiraan shabakada. Isla mar ahaantaana, shirkadu waxay ugu yeertaa shabakadeeda gaarka ah "tiirka ugu weyn" ee helitaanka sare. Waxbarasho Bailis iyo Kingbury, oo la qabtay 2014, waxay caqabad ku tahay mid ka mid ah "fikradaha khaldan ee ku saabsan xisaabinta la qaybiyay", kaas oo Peter Deutsch uu sameeyay 1994. Shabakadu ma tahay mid la isku halayn karo?

Cilmi-baaris dhamaystiran oo ka baxsan shirkadaha waaweyn, oo loo sameeyay internetka ballaaran, ma jiraan. Sidoo kale ma jirto xog ku filan oo ka timid ciyaartoyda waaweyn ee ku saabsan boqolkiiba inta dhibatada macaamiishooda ay la xiriiraan shabakada. Waxaan si fiican uga warqabnaa maqnaanshaha isku xidhka shabakadaha bixiyayaasha daruuriga ah ee hoos u dhigi kara qayb dhan oo internetka ah dhowr saacadood si fudud sababtoo ah waa dhacdooyin heersare ah oo saameeya tiro badan oo dad ah iyo shirkado ah. Go'itaanka shabakadu waxay sababi kartaa dhibaatooyin badan kiisas badan, xitaa haddii kiisaskaas oo dhan aysan ahayn kuwa isha lagu hayo. Macaamiisha adeegyada daruuraha sidoo kale waxba kama oga sababaha dhibaatooyinka. Haddii ay jirto guuldarro, waxay ku dhowdahay wax aan macquul ahayn in loo nisbeeyo qaladka shabakadda ee dhinaca bixiyaha adeegga. Iyaga, adeegyada dhinac saddexaad waa sanduuqyo madow. Suurtagal ma aha in la qiimeeyo saamaynta iyada oo aan la noqon adeeg bixiye weyn.

Marka la eego waxa ay ciyaartoyda waaweyni ka sheegaan nidaamkooda, waa ammaan in la yiraahdo waxaad nasiib u leedahay haddii dhibaatooyinka shabakadu ay ku xisaabtamaan boqolkiiba yar oo keliya arrimaha wakhtiga dhimista. Isgaadhsiinta shabakadu wali waxay la ildaran tahay waxyaabo aan caadi ahayn oo ay ka mid yihiin cilladaha hardware-ka, isbeddellada topology-ga, isbeddelka qaabaynta maamulka, iyo goynta korontadu. Dhawaan, waxaan la yaabay inaan ogaado in liiska dhibaatooyinka suurtagalka ah lagu daray qaniinyada shark (haa, si sax ah ayaad u maqashay).

ACID macnaheedu waa waxyaabo badan oo kala duwan

Soo gaabinta ACID waxay u taagan tahay Atomity, Consistency, Solation, Reliability. Qalabkan wax kala iibsiga waxaa loogu talagalay in lagu xaqiijiyo ansaxnimadooda haddii ay dhacdo guuldarrooyin, khaladaad, cillado hardware, iwm. La'aanteed ACID ama qorshayaal la mid ah, way ku adkaan doontaa horumarinta codsiyada inay kala saaraan waxa ay mas'uul ka yihiin iyo waxa kaydku ka masuul yahay. Inta badan xogta macluumaadka macaamilka ee la xidhiidha waxay isku dayaan inay u hoggaansamaan ACID, laakiin habab cusub sida NoSQL ayaa keenay kayd badan oo aan lahayn macaamil ACID sababtoo ah waa qaali in la fuliyo.

Markii ugu horeysay ee aan soo galo warshadaha, hogaankayaga farsamada ayaa ka hadlay sida fikradda ACID ay u habboon tahay. Si cadaalad ah loo hadlo, ACID waxa loo tixgaliyaa sharraxaad qallafsan halkii laga ahaan lahaa halbeeg dhaqangelineed oo adag. Maanta waxaan u arkaa inay inta badan faa'iido leedahay sababtoo ah waxay kor u qaadaysaa qayb gaar ah oo arrimo ah (waxayna soo jeedinaysaa xalal badan oo suurtagal ah).

Ma aha DBMS kasta inuu u hoggaansamo ACID; Isla mar ahaantaana, hirgelinta xogta xogta ee taageerta ACID waxay si kala duwan u fahmayaan jaangooyada shuruudaha. Mid ka mid ah sababaha ay fulinta ACID u jajaban tahay waxaa sabab u ah ganacsiga badan ee loo baahan yahay in la sameeyo si loo fuliyo shuruudaha ACID. Abuurayaashu waxa laga yaabaa inay u soo bandhigaan xog-ururintooda inay yihiin ACID-waafaqsan, laakiin tarjumaadda kiisaska cidhifyada ayaa si weyn u kala duwanaan kara, sidoo kale habka loo maareeyo dhacdooyinka "aan macquul ahayn". Ugu yaraan, horumariyayaashu waxay heli karaan faham heer sare ah oo ku saabsan qallafsanaanta hirgelinta saldhigga si ay u helaan faham habboon oo ku saabsan hab-dhaqankooda gaarka ah iyo naqshadeynta ganacsiga-offs.

Doodda ku saabsan haddii MongoDB ay u hoggaansanto shuruudaha ACID way sii socotaa xitaa ka dib marka la sii daayo nooca 4. MongoDB lama taageerin muddo dheer goynta, inkastoo xogta caadiga ah lagu go'aamiyay saxanka wax ka badan hal mar 60kii ilbiriqsi kasta. Bal qiyaas dhacdadan soo socota: arji ayaa laba qoraya (w1 iyo w2). MongoDB waxay si guul leh u kaydisaa w1, laakiin w2 way luntay cillad qalabeed awgeed.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Jaantuska muujinaya muuqaalka. MongoDB way burburtaa ka hor inta aanay u qorin xogta saxanka

U heellanaanta saxanka waa nidaam qaali ah. Iyagoo ka fogaanaya ballanqaadyada soo noqnoqda, horumariyayaashu waxay wanaajiyaan waxqabadka duubista iyagoo kharashka ku baxaya kalsoonida. MongoDB hadda waxay taageertaa gooynta, laakiin qoraalada wasakhaysan ayaa wali saamayn kara daacadnimada xogta maadaama diiwaannada la qabto 100m kasta si caadi ah. Taasi waa, xaalad la mid ah ayaa weli suurtogal u ah diiwaannada iyo isbeddelada lagu soo bandhigay iyaga, inkastoo khatarta ay aad uga yar tahay.

Xog-ururin kastaa waxay leedahay joogtayn iyo habab gooni-gooni ah

Shuruudaha ACID, joogteynta iyo go'doominta ayaa ku faanta tirada ugu badan ee fulinta kala duwan sababtoo ah kala duwanaanshaha ganacsigu waa ka sii ballaaran yahay. Waa in la sheegaa in joogtaynta iyo go'doominta ay yihiin hawlo qaali ah. Waxay u baahan yihiin iskudubarid waxayna kordhiyaan tartanka joogtaynta xogta. Kakanaanta dhibaatadu aad bay u korodhaa marka ay lama huraan tahay in xogta si toos ah loo cabbiro xarumaha xogta badan (gaar ahaan haddii ay ku yaalaan gobollo kala duwan). Gaaritaanka heer sare oo joogto ah waa mid aad u adag, maadaama ay sidoo kale yareyso helitaanka waxayna kordhisaa kala qaybinta shabakada. Si aad u hesho sharraxaad guud oo dheeraad ah oo ku saabsan dhacdadan, waxaan kugula talinayaa inaad tixraacdo Aragtida CAP. Waxa kale oo xusid mudan in codsiyadu ay xamili karaan xaddi yar oo is-waafaqid la’aan ah, barnaamij-sameeyayaashuna waxay si fiican u fahmi karaan nuxurka mushkiladda si ay u hirgeliyaan caqli-gal dheeraad ah oo ku saabsan codsiga si ay u maareeyaan is-waafajinta iyaga oo aan si weyn ugu tiirsanayn kaydka xogta si loo maareeyo.

DBMS-yadu waxay inta badan bixiyaan heerar kala duwan oo go'doomin ah. Soosaarayaasha arjiga waxay dooran karaan kan ugu waxtarka badan iyagoo ku saleysan dookhyadooda. Go'doominta hoose waxay u oggolaanaysaa xawaaraha korodhka, laakiin sidoo kale waxay kordhisaa khatarta tartanka xogta. Dahaarka sare wuxuu yareeyaa ixtimaalkan, laakiin wuxuu hoos u dhigaa shaqada wuxuuna keeni karaa tartan, taasoo u horseedi doonta in bareegga noocan oo kale ah uu salka ku hayo guul-darradu.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Dib-u-eegis lagu sameeyo moodooyinka is-dhaafsiga ee jira iyo xidhiidhka ka dhexeeya

Halbeegga SQL waxa uu qeexayaa afar heer oo keli ah, in kasta oo aragti ahaan iyo dhaqan ahaanba ay jiraan kuwo kale oo badan. Jepson.io wuxuu bixiyaa dulmar heersare ah oo ku saabsan moodooyinka is-dhaafsiga ee jira. Tusaale ahaan, Google Spanner wuxuu dammaanad qaadayaa serializability dibadda ah oo leh isku-dubarid saacad, iyo in kasta oo kani yahay lakab go'doomin adag, laguma qeexin lakabyada go'doominta caadiga ah.

Halbeegga SQL wuxuu sheegayaa heerarka go'doominta ee soo socda:

  • Qalabayn karo (ka ugu adag uguna qaalisan): Fulinta Serializable waxay leedahay saamayn la mid ah fulinta macaamil ganacsi oo xidhiidhsan. Fulinta isku xigxiga macneheedu waa in wax kala iibsi kasta oo soo socda uu bilaabmo kaliya ka dib marka kii hore la dhammeeyo. Waa in la ogaadaa in heerka Qalabayn karo inta badan waxaa loo hirgeliyay waxa loogu yeero go'doominta sawir-qaadista (tusaale, gudaha Oracle) iyadoo ay ugu wacan tahay kala duwanaanshiyaha tarjumaada, in kasta oo go'doominta sawir-qaadka lafteeda aan lagu matalin heerka SQL.
  • Akhrinta soo noqnoqda: Diiwaanada aan la fulin ee macaamilka hadda jira ayaa diyaar u ah macaamilka hadda jira, laakiin isbeddelada ay sameeyeen macaamilada kale (sida safaf cusub) aan muuqan.
  • Akhri go'an: Xogta aan ka go'neyn lama heli karo wax kala iibsiga Xaaladdan oo kale, wax kala iibsiga ayaa arki kara oo keliya xogta go'an, iyo akhrinta khiyaanada ayaa dhici karta. Haddii wax kala iibsigu galo oo sameeyo safaf cusub, wax kala beddelashada hadda waxay awoodi doontaa inay aragto iyaga marka la waydiiyo.
  • Akhris la'aan (heerka ugu adag iyo kan ugu qaalisan): Wax akhrinta wasakhda ah waa la oggol yahay, wax kala beddelashada waxay arki kartaa isbeddellada aan la fulin ee ay sameeyeen macaamilada kale. Ficil ahaan, heerkani wuxuu faa'iido u yeelan karaa qiyaasaha qallafsan, sida weydiimaha COUNT(*) miiska dushiisa.

Heerka Qalabayn karo waxay yaraynaysaa halista tartanka xogta, halka ay tahay kan ugu qaalisan ee la hirgaliyo oo keenaya culayska ugu sarreeya ee nidaamka. Heerarka kale ee go'doominta way fududahay in la fuliyo, laakiin waxay kordhiyaan suurtogalnimada jinsiyadaha xogta. Qaar ka mid ah DBMS-yada waxay kuu oggolaanayaan inaad dejiso heer go'doon gaar ah, kuwa kale waxay leeyihiin dookhyo xooggan oo dhammaan heerarka lama taageero.

Taageerada heerarka go'doominta waxaa badanaa lagu xayaysiiyaa DBMS la siiyay, laakiin kaliya daraasad taxaddar leh oo habdhaqankeeda ayaa muujin karta waxa dhabta ah ee dhacaya.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Dib u eegista cilladaha isdhaafsiga ee heerarka go'doominta ee kala duwan ee DBMS-yada kala duwan

Martin Kleppmann mashruuciisa dhaqashada xoolaha Wuxuu is barbar dhigayaa heerar go'doon oo kala duwan, wuxuu ka hadlayaa cilladaha is-dhaafsiga ah, iyo haddii xog-ururinta ay awoodaan inay u hoggaansamaan heer go'doon oo gaar ah. Cilmi-baadhista Kleppmann waxay tusinaysaa sida ay u kala duwan yihiin kuwa horumariya xog-ururinta uga fikiraan heerarka go'doominta.

Xannibaadda rajo-gelinta leh ayaa soo samatabbixinaysa marka ay adagtahay in la ilaaliyo midda caadiga ah.

Xannibaadu waxay noqon kartaa mid aad qaali u ah, ma aha oo kaliya sababtoo ah waxay kordhisaa tartanka kaydka, laakiin sidoo kale sababtoo ah waxay u baahan tahay adeegayaasha codsiga inay si joogto ah ugu xidhmaan xogta. Kala qaybsanaanta shabakadu waxay ka sii dari kartaa xaaladaha gaarka ah ee quful waxayna u horseedi kartaa xirmo ay adagtahay in la garto lana xaliyo. Kiisaska aan qufulka gaarka ah ku habboonayn, quful rajo leh ayaa caawinaysa.

Quful rajo leh waa hab marka la akhrinayo xadhig, lagu xisaabtamayo noociisa, checksum, ama wakhtiga waxka bedelka ugu dambeeya. Tani waxay kuu ogolaaneysaa inaad hubiso inuusan jirin nooca atomiga ka hor inta aadan bedelin soo gelida:

UPDATE products
SET name = 'Telegraph receiver', version = 2
WHERE id = 1 AND version = 1

Xaaladdan oo kale, cusbooneysiinta miiska products lama fulin doono haddii hawlgal kale uu hore isbeddel ugu sameeyay safkan. Haddii aan la samayn qalliin kale oo safkan ah, isbeddelka hal saf ayaa dhacaya oo waxaan dhihi karnaa cusbooneysiinta waa lagu guuleystay.

Waxaa jira cillado kale oo aan ka ahayn akhrinta wasakhaysan iyo luminta xogta

Marka ay timaado joogteynta xogta, diiradda ayaa saaran suurtagalnimada xaaladaha jinsiyadeed ee keeni kara akhrinta wasakh ah iyo luminta xogta. Si kastaba ha ahaatee, cilladaha xogtu kuma eka.

Hal tusaale oo ka mid ah cilladaha noocaas ah waa duubista qallooca (qor skews). Qalloocyada way adag tahay in la ogaado sababtoo ah inta badan si firfircoon looma raadiyo. Ma aha sabab u ah akhrinta wasakhaysan ama luminta xogta, laakiin waa xadgudubyada caqabadaha macquulka ah ee la saaray xogta.

Tusaale ahaan, aan tixgelinno arjiga la socodka ee u baahan hal hawlwadeen in la soo waco mar walba:

BEGIN tx1;                      BEGIN tx2;
SELECT COUNT(*)
FROM operators
WHERE oncall = true;
0                               SELECT COUNT(*)
                                FROM operators
                                WHERE oncall = TRUE;
                                0
UPDATE operators                UPDATE operators
SET oncall = TRUE               SET oncall = TRUE
WHERE userId = 4;               WHERE userId = 2;
COMMIT tx1;                     COMMIT tx2;

Xaaladda kor ku xusan, musuqmaasuq rikoor ah ayaa dhici doona haddii labada macaamiloodba si guul leh loo sameeyo. In kasta oo aanay jirin wax akhrin wasakh ah ama xog lumis ah, daacadnimada xogta ayaa la wiiqay: hadda laba qof ayaa loo tixgaliyaa wicitaanka isku mar.

Go'doomin taxane ah, naqshadaynta schema, ama caqabadaha xogta ayaa kaa caawin kara baabi'inta musuqmaasuqa qoraalka. Horumariyayaashu waa inay awoodaan inay aqoonsadaan cilladaha noocaas ah inta lagu jiro horumarka si ay uga fogaadaan wax soo saarka. Isla mar ahaantaana, qalloocinta duubista aad bay u adag tahay in laga raadiyo saldhigga koodka. Gaar ahaan nidaamyada waaweyn, marka kooxo horumarineed oo kala duwan ay mas'uul ka yihiin fulinta hawlaha ku salaysan jaantusyo isku mid ah oo aan ku heshiinin waxyaabaha gaarka ah ee helitaanka xogta.

Xogta xogta iyo isticmaaluhu mar walba kuma heshiiyaan waxa la samaynayo

Mid ka mid ah sifooyinka muhiimka ah ee xogta macluumaadka waa dammaanadda amarka fulinta, laakiin amarkan laftiisa ayaa laga yaabaa inuusan u caddayn horumariyaha software. Databases-ku waxay u fuliyaan wax kala iibsiga sida ay u kala horreeyaan, ma aha sida ay u rabaan barnaamijyada. Sida ay u kala horreeyaan wax kala iibsigu way adag tahay in la saadaaliyo, gaar ahaan hababka is barbar socda ee aadka u raran.

Inta lagu jiro horumarinta, gaar ahaan marka la shaqaynayo maktabadaha aan xannibin, qaabka liidata iyo akhriska hooseeya waxay keeni kartaa isticmaalayaasha in ay rumaystaan ​​in wax kala iibsiga loo fuliyo si isdaba-joog ah, marka dhab ahaantii ay ku iman karaan xogta nidaam kasta.

Jaleecada hore, barnaamijka hoose, T1 iyo T2 ayaa loogu yeeraa si isdaba joog ah, laakiin haddii hawlahani aysan xannibin oo isla markiiba ku soo celi natiijada foomka ballanqaad, ka dib habka wicitaanada waxaa lagu go'aamin doonaa daqiiqadaha markii ay galeen xogta:

natiijo1 = T1() // Natiijooyinka dhabta ah waa ballan
natiijo2 = T2()

Haddii atomity loo baahan yahay (taas oo ah, dhammaan hawlgallada waa in la dhammeeyaa ama la iska tuuraa) iyo arrimaha isku xigxiga, markaa hawlgallada T1 iyo T2 waa in lagu sameeyaa hal macaamil.

Sharing heerka codsiga waxa loo rari karaa meel ka baxsan codsiga

Sharding waa hab toosan oo loo qaybiyo kaydka xogta. Kaydka xogta qaarkood waxay si toos ah u kala qaybin karaan xogta si toos ah, halka kuwa kalena aanay awoodin, ama aanay aad ugu fiicnayn. Marka xogta naqshadeeyayaasha/ horumariyayaashu ay awoodaan inay si sax ah u saadaaliyaan sida xogta loo heli karo, waxay samayn karaan qaybo toosan meel bannaan oo isticmaalaha halkii ay shaqadan u diri lahaayeen kaydka xogta. Habkan waxa loo yaqaan "sharding-heer codsi" (sharing heerka codsiga).

Nasiib darro, magacani wuxuu inta badan abuuraa fikradda khaldan ee ah in qaybintu ay ku nooshahay adeegyada codsiyada. Dhab ahaantii, waxaa loo hirgelin karaa lakab gooni ah oo hor yaal kaydka xogta. Iyada oo ku xidhan kobaca xogta iyo ku celcelinta schema, sharuudaha qaybintu waxay noqon karaan kuwo aad u adag. Xeeladaha qaarkood ayaa laga yaabaa inay ka faa'iidaystaan ​​awoodda lagu celceliyo iyada oo aan dib loo hawlgelin adeegayaasha codsiyada.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Tusaalaha qaab-dhismeedka kaas oo adeegayaasha codsiyada ay ka soocaan adeegga sharding

U raritaan jeexid adeeg gaar ah waxay balaadhisaa awoodda isticmaalka xeelado kala duwan oo jeexjeexa iyada oo aan loo baahnayn in dib loo habeeyo codsiyada. Vitess waa tusaale ka mid ah nidaamka sharding sida heerka codsiga. Vitess waxay siisaa sharding toosan MySQL waxayna u ogolaataa macaamiisha inay ku xidhmaan nidaamka MySQL. Nidaamku wuxuu u kala qaybiyaa xogta unugyo MySQL oo kala duwan oo aan waxba kala garanayn midba midka kale.

Kordhinta iswada waxay noqon kartaa khatar

AUTOINCREMENT waa hab caadi ah oo lagu soo saaro furayaasha aasaasiga ah. Inta badan waxaa jira kiisas marka xog-ururinta loo isticmaalo soosaarayaal Aqoonsi ahaan, kaydkuna waxa uu ka kooban yahay jaantusyo loo qaabeeyey in lagu soo saaro aqoonsiyaal. Waxaa jira dhowr sababood oo soo saarista furayaasha aasaasiga ah iyadoo la adeegsanayo is-kordhinta tooska ah ay uga fog tahay ku habboonaanta:

  • Xogta la qaybiyay, is-kordhintu waa dhibaato halis ah. Si loo sameeyo aqoonsiga, quful caalami ah ayaa loo baahan yahay. Taa beddelkeeda, waxaad abuuri kartaa UUID: tani uma baahna isdhexgalka u dhexeeya noodaha xogta ee kala duwan. Kordhinta tooska ah ee qufullada waxay u horseedi kartaa muran waxayna si weyn u yaraynaysaa waxqabadka gelinta xaaladaha la qaybiyey. Qaar ka mid ah DBMS-yada (tusaale, MySQL) ayaa laga yaabaa inay u baahdaan qaabayn gaar ah iyo feejignaan dheeraad ah si loo habeeyo ku celcelinta sayid-mastaradka. Wayna fududahay in la sameeyo khaladaad marka la habeynayo, taas oo u horseedi doonta guul darrooyinka duubista.
  • Kaydka macluumaadka qaarkood waxay leeyihiin algorithms qaybsan oo ku salaysan furayaasha aasaasiga ah. Aqoonsi is-daba joog ah ayaa u horseedi kara dhibco kulul oo aan la saadaalin karin iyo culayska oo kordha qaybaha qaar halka kuwa kalena ay yihiin kuwo aan shaqayn.
  • Furaha aasaasiga ah waa habka ugu dhaqsaha badan ee lagu galo safka kaydka xogta. Siyaabaha ugu wanagsan ee lagu garto diiwaanada, ID-yada isdaba jooga ahi waxay u rogi karaan tiirka ugu muhiimsan ee jaantusyada tiir aan faa'iido lahayn oo ay ka buuxaan qiimayaal aan macno lahayn. Sidaa darteed, mar kasta oo ay suurtogal tahay, fadlan dooro fure caalami ah oo gaar ah oo dabiici ah (tusaale magaca isticmaalaha).

Kahor intaadan go'aansan habka, tixgeli saamaynta is-kordhinta aqoonsiyada iyo UUID-yada ee tusmaynta, qaybinta, iyo kala qaybinta.

Xogta dhacday waxay noqon kartaa mid faa'iido leh oo uma baahna quful

Xakamaynta is-waafajinta isku-dhafka ah (MVCC) waxay fulisaa qaar badan oo ka mid ah shuruudaha joogtaynta kuwaas oo si kooban kor looga hadlay. Xog-ururin (tusaale ahaan, Postgres, Spanner) waxay u isticmaalaan MVCC inay "ku quudiyaan" wax kala beddelashada sawir-qaadista-noocyadii hore ee kaydka. Wax kala iibsiga sawir-qaadista sidoo kale waa la sii dari karaa si loo hubiyo joogtaynta. Markaad wax ka akhrinayso sawir hore, xogta duugowday waa la akhriyaa.

Akhrinta xogta fadhiidka ah ee inyar ayaa faa'iido yeelan karta, tusaale ahaan, marka la soo saarayo falanqaynta xogta ama la xisaabinayo qiimaha wadarta guud.

Faa'iidada ugu horreysa ee ku shaqeynta xogta dhaxalka ah waa daahitaan hoose (gaar ahaan haddii xogta macluumaadka lagu qaybiyo juqraafiyo kala duwan). Midda labaad waa in wax kala beddelashada akhris-kaliya ay yihiin kuwo quful la'aan. Tani waxay faa'iido weyn u tahay codsiyada wax badan akhriya, ilaa inta ay xamili karaan xogta fadhiidka ah.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Adeegaha arjigu waxa uu akhriyaa xogta nuqulka maxaliga ah ee 5 ilbiriqsi dhacay, xitaa haddii nuqulkii u dambeeyay laga heli karo dhinaca kale ee Badweynta Baasifigga.

DBMS-yadu waxay si toos ah u nadiifiyaan noocyadii hore, mararka qaarkoodna, waxay kuu oggolaadaan inaad tan samayso haddii la codsado. Tusaale ahaan, Postgres waxay u ogolaataa isticmaalayaasha inay sameeyaan VACUUM marka la codsado, iyo sidoo kale xilliyada qaarkood si toos ah u fulinaya hawlgalkan. Spanner wuxuu wadaa qashin ururiyaha si uu uga takhaluso sawir-qaadista ka weyn hal saac.

Waqti kasta ilaha waxay ku xiran yihiin qallooc

Sirta ugu wanaagsan ee lagu xafido sayniska kombuyuutarku waa in dhammaan API-yada waqtiyaynta ay been sheegaan. Dhab ahaantii, mashiinadayadu ma yaqaanaan wakhtiga saxda ah ee hadda jira. Kumbuyuutarada waxaa ku jira kiristaalo quartz ah oo dhaliya gariir loo isticmaalo in lagu ilaaliyo waqtiga. Si kastaba ha ahaatee, maaha kuwo sax ah oo ku filan waxaana laga yaabaa inay ka dambeeyaan wakhtiga saxda ah. Wareeggu wuxuu gaari karaa 20 ilbiriqsi maalintii. Sidaa darteed, wakhtiga kumbiyuutarkayaga waa in si xilliyo ah lala jaanqaadaa shabakadda mid.

Adeegayaasha NTP waxaa loo isticmaalaa isku xidhka, laakiin habka isku xidhka laftiisa ayaa ku xidhan dib u dhac shabakadeed. Xataa ku wada shaqaynta serverka NTP ee isla xarunta xogta waxay qaadataa wakhti. Way caddahay in la shaqaynta adeegaha dadweynaha ee NTP ay keeni karto qallooc ka sii weyn.

Saacadaha Atomikada iyo kuwa dhiggooda ah ee GPS-ka ayaa ku fiican in la go'aamiyo waqtiga hadda la joogo, laakiin waa qaali oo waxay u baahan yihiin habayn adag, markaa laguma rakibi karo baabuur kasta. Taas awgeed, xarumaha xogtu waxay isticmaalaan hab heersare ah. Saacadaha atomiga iyo/ama GPS-ku waxay muujinayaan wakhtiga saxda ah, ka dib waxaa lagu sii daayaa mashiinada kale iyada oo loo marayo server-yada sare. Tani waxay ka dhigan tahay in mishiin kastaa uu la kulmi doono wax ka dhimis gaar ah wakhtiga saxda ah.

Xaaladdu waxay sii xumaynaysaa xaqiiqda ah in codsiyada iyo kaydinta xogta ay inta badan ku yaalaan mashiinno kala duwan (haddii aysan ku jirin xarumaha xogta kala duwan). Sidaa darteed, waqtigu kuma kala duwanaan doono oo keliya qanjidhada DB ee loo qaybiyay mashiinnada kala duwan. Waxa kale oo ay ku kala duwanaan doontaa server-ka codsiga.

Google TrueTime waxay qaadataa hab gebi ahaanba ka duwan. Dadka intooda badan waxay aaminsan yihiin in horumarka Google ee jihada this waxaa lagu sharxay kala guurka banal ee atamka iyo saacadaha GPS, laakiin tani waa qayb ka mid ah oo kaliya sawirka weyn. Waa kan sida TrueTime u shaqeyso:

  • TrueTime waxay isticmaashaa laba ilo oo kala duwan: GPS iyo saacadaha atomiga. Saacadahani waxay leeyihiin qaabab guuldarradeed oo aan xidhiidh la lahayn. [eeg bogga 5 wixii faahfaahin ah halkan - qiyaastii. turjumi.), sidaas darteed isticmaalkooda wadajirka ah wuxuu kordhiyaa kalsoonida.
  • TrueTime waxay leedahay API aan caadi ahayn. Waxay soo celisaa wakhtiga iyadoo dhexda ah oo leh khalad cabbir iyo hubaal la'aan lagu dhex dhisay. Waqtiga dhabta ah ee waqtiga waa meel u dhaxaysa xuduudaha sare iyo hoose ee u dhexeeya. Spanner, xogta Google qaybisay, waxay si fudud u sugaysaa ilaa inta ay nabdoon tahay in la yidhaahdo wakhtiga hadda la joogo waa ka baxsan yahay. Habkani wuxuu soo bandhigayaa qaar ka mid ah daahitaanka nidaamka, gaar ahaan haddii hubin la'aanta sayidyadu ay sarreeyaan, laakiin waxay hubisaa saxnaanta xitaa xaalad caalami ah oo qaybsan.

Horumariyayaal badan waa inay tan ka ogaadaan xog-ururinta
Qaybaha Spanner waxay adeegsadaan TrueTime, halkaas oo TT.now() ay ku soo celiso muddo, sidaa darteed Spanner-ku si fudud ayuu u seexdaa ilaa barta uu ku kalsoonaan karo in wakhtiga hadda la joogo uu ka gudbay meel cayiman.

Saxnaanta la dhimay ee go'aaminta wakhtiga hadda la joogo waxay la macno tahay korodhka muddada hawlgallada Spanner iyo hoos u dhaca waxqabadka. Tani waa sababta ay muhiim u tahay in la ilaaliyo saxnaanta ugu sareysa ee suurtogalka ah inkastoo aysan suurtagal ahayn in la helo saacad sax ah oo dhammaystiran.

Daahitaanku macnayaal badan buu leeyahay

Haddii aad waydiiso daraasiin khabiiro ah waxa dib u dhacu yahay, waxa ay u badan tahay in aad heli doonto jawaabo kala duwan. Daahitaanka DBMS waxaa badanaa loogu yeeraa "daahitaanka xogta" waana ka duwan yahay waxa uu garto macmiilku. Xaqiiqdu waxay tahay in macmiilku u fiirsado wadarta daahitaanka shabakada iyo daahitaanka xogta xogta. Awoodda lagu go'doomiyo nooca daahitaanka ayaa muhiim ah marka la tirtirayo dhibaatooyinka sii kordhaya. Markaad ururinayso oo aad muujinayso cabirrada, had iyo jeer isku day inaad isha ku hayso labada nooc.

Shuruudaha waxqabadka waa in lagu qiimeeyaa macaamil gaar ah

Mararka qaarkood sifooyinka waxqabadka DBMS iyo xaddidaadyadiisa ayaa lagu qeexaa marka la eego qoraalka/akhrinta wax-soo-saarka iyo daahitaanka. Tani waxay bixinaysaa dulmar guud oo ku saabsan halbeegyada nidaamka muhiimka ah, laakiin marka la qiimeeyo waxqabadka DBMS cusub, hab aad u dhammaystiran ayaa ah in si gaar ah loo qiimeeyo hawlgallada muhiimka ah ( weydiimo kasta iyo/ama macaamil ganacsi). Tusaalooyinka:

  • Qor wax soo saarka iyo daahitaanka markaad gelinayso saf cusub miiska X (oo leh 50 milyan oo saf) oo leh caqabado cayiman iyo safaf saf ah oo ku jira miisaska la xidhiidha.
  • Dib u dhigista muujinta asxaabta saaxiibada isticmaale gaar ah marka tirada celceliska saaxiibadu tahay 500.
  • Latency ee ka soo ceshanaya 100-ka wax ee ugu sarreeya taariikhda isticmaalaha marka isticmaaluhu uu raaco 500 isticmaale kale oo leh X gelinta saacaddii.

Qiimaynta iyo tijaabinta waxa ku jiri kara kiisas halis ah ilaa aad ku kalsoon tahay in kaydku buuxiyo shuruudaha hawlqabadka. Xeerka suulka la mid ah ayaa sidoo kale tixgalinaya burburkan marka la ururinayo cabbirrada daahitaanka iyo go'aaminta SLOs.

Ka digtoonow wadnanimada sare marka aad ururinayso cabbirada hawlgal kasta. Isticmaal diiwaannada, ururinta dhacdada, ama raadinta la qaybiyey si aad u hesho xogta wax-ka-hortagga awoodda sare leh. In maqaalka "Ma doonaysaa inaad tirtirto daahnimada?» waxaad naftaada u baran kartaa hababka dib u dhigista.

Wax kala iibsiga buulku wuxuu noqon karaa khatar

DBMS kastaa ma taageerto wax kala iibsiga, laakiin marka ay sameeyaan, wax kala iibsiga noocan oo kale ah waxay keeni karaan khaladaad lama filaan ah oo aan had iyo jeer fududayn in la ogaado (taas oo ah, waa in ay caddahay in uu jiro nooc ka mid ah cillado).

Waxaad ka fogaan kartaa inaad isticmaasho wax kala iibsiga sariirta leh adoo isticmaalaya maktabadaha macmiilka oo ogaan kara oo dhaafi kara iyaga. Haddii wax kala iibsiga buulka ah aan la dayacin karin, taxaddar gaar ah u yeelo hirgelintooda si aad uga fogaato xaaladaha lama filaanka ah halkaas oo wax kala iibsiga la dhammeeyey si lama filaan ah loo burburiyo kuwa buul leh dartiis.

Ku soo koobida wax kala iibsiga ee lakabyo kala duwan waxay u horseedi kartaa macaamil ganacsi oo lama filaan ah, iyo marka laga eego aragtida akhrinta code, waxay adkeyn kartaa fahamka ujeedooyinka qoraaga. Daawo barnaamijka soo socda:

with newTransaction():
   Accounts.create("609-543-222")
   with newTransaction():
       Accounts.create("775-988-322")
       throw Rollback();

Maxaa ka soo bixi doona koodka sare? Miyay dib u soo celin doontaa labadaba macaamil ganacsi, mise midda gudaha? Maxaa dhacaya haddii aan ku tiirsanno lakabyo badan oo maktabado ah oo soo koobaya abuurista wax kala iibsiga? Ma awoodnaa inaan aqoonsanno oo aan wanaajino kiisaska noocaas ah?

Bal qiyaas lakabka xogta oo leh hawlo badan (tusaale. newAccount) ayaa mar hore lagu hirgeliyay macaamilkeeda. Maxaa dhacaya haddii aad u maamusho iyaga oo ah qayb ka mid ah macquulnimada ganacsiga heerka sare ee ka dhex socda macaamilkeeda? Maxay noqon lahayd go'doominta iyo joogtaynta kiiskan?

function newAccount(id string) {
  with newTransaction():
      Accounts.create(id)
}

Halkii laga raadin lahaa jawaabaha su'aalahan aan dhammaadka lahayn, waxaa fiican inaad iska ilaaliso wax kala iibsiga. Ka dib oo dhan, lakabka xogtaada ayaa si fudud u fulin kara hawlgallo heer sare ah iyada oo aan la abuurin macaamilkeeda. Intaa waxaa dheer, macquulka ganacsiga laftiisa ayaa awood u leh inuu bilaabo wax kala iibsiga, fulinta hawlaha, samaynta ama joojinta macaamil ganacsi.

function newAccount(id string) {
   Accounts.create(id)
}
// In main application:
with newTransaction():
   // Read some data from database for configuration.
   // Generate an ID from the ID service.
   Accounts.create(id)
   Uploads.create(id) // create upload queue for the user.

Macaamilada waa in aan lagu xidhin gobolka codsiga

Mararka qaarkood waa wax la damco in la isticmaalo xaaladda codsiga ee wax kala iibsiga si loo beddelo qiyamka qaarkood ama cabbirrada weydiinta. Nuance muhiim ah in la tixgeliyo waa baaxadda saxda ah ee codsiga. Macaamiishu waxay inta badan dib u bilaabaan wax kala iibsiga marka ay jiraan dhibaatooyin shabakadeed. Haddii wax kala iibsigu markaas ku xidhan yahay xaalad lagu beddelayo habraac kale, waxa laga yaabaa inay doorato qiime khaldan iyadoo ku xidhan suurtogalnimada tartanka xogta. Ganacsiyadu waa inay tixgeliyaan halista xaaladaha jinsiyada xogta ee codsiga.

var seq int64
with newTransaction():
    newSeq := atomic.Increment(&seq)
    Entries.query(newSeq)
    // Other operations...

Wax kala iibsiga kore wuxuu kordhin doonaa tirada isku xigxiga mar kasta oo la fuliyo, iyadoon loo eegin natiijada kama dambaysta ah. Haddii ballan-qaadku ku guul-darraysto mashaakilaadka shabakadda, codsiga waxa lagu fulin doonaa lambar taxane ah oo ka duwan marka aad mar kale isku daydo.

Qorshayaasha weydiimaha ayaa wax badan kaaga sheegi kara xog-ururinta

Qorsheeyayaasha weydiimaha ayaa go'aamiya sida su'aasha loogu fulin doono kaydka xogta. Waxay kaloo baaraan codsiyada oo ay hagaajiyaan ka hor intaysan dirin. Qorsheeyayaashu waxay bixin karaan oo kaliya qiyaasaha suurtogalka ah qaarkood oo ku salaysan calaamadaha ay adeegsadaan. Tusaale ahaan, waa maxay habka ugu wanaagsan ee raadinta weydiinta soo socota?

SELECT * FROM articles where author = "rakyll" order by title;

Natiijooyinka waxaa lagu soo celin karaa laba siyaabood:

  • Sawirka miiska oo buuxa: Waxaad eegi kartaa gelid kasta oo shaxda ku jirta oo aad ku soo celin kartaa maqaallo wata magaca qoraaga, ka dibna dalbo.
  • Sawirka tusmada: Waxaad isticmaali kartaa tusaha si aad u hesho aqoonsiyo ku habboon, hel safafkaas, ka dibna aad dalbato.

Qorsheeyaha weydiinta shaqadiisu waa inuu go'aamiyo istiraatiijiyadda ugu fiican. Waxaa haboon in la tixgeliyo in qorshayayaasha waydiinta ay leeyihiin oo kaliya awoodo saadaalineed oo xadidan. Tani waxay keeni kartaa go'aamo xun. DBA-yada ama horumariyayaashu waxay u isticmaali karaan si ay u baadho oo ay u hagaajiyaan su'aalaha aan shaqaynayn. Noocyo cusub oo DBMS ah ayaa habayn kara qorshayaasha waydiinta, iyo is-aqoonsigu waxay ku caawin kartaa marka la cusboonaysiinayo xogta xogta haddii nooca cusubi u horseedo dhibaatooyinka waxqabadka. Diiwaanka su'aalaha qunyar socodka ah, warbixinnada arrinta daahitaanka, ama tirakoobka wakhtiga fulinta ayaa kaa caawin kara aqoonsiga weydiimaha u baahan hagaajinta.

Halbeegyada qaar ee uu soo bandhigay qorsheeyeha waydiinta ayaa laga yaabaa inay hoos yimaadaan buuq (gaar ahaan marka la qiyaasayo daahitaanka ama wakhtiga CPU). Ku darida wanaagsan ee jadwaleeyayaasha ayaa ah aaladaha raadinta iyo dabagalka wadada fulinta. Waxay kuu oggolaanayaan inaad ogaato dhibaatooyinkan oo kale (haah, dhammaan DBMS-yadu ma bixiyaan qalabkan oo kale).

Socdaalka khadka tooska ah waa adag yahay laakiin waa suurtagal

Socdaalka khadka tooska ah, guuritaanka tooska ah, ama guuritaanka waqtiga-dhabta ah macnaheedu waa ka guurista xog-ururin oo loo guuro mid kale iyada oo aan wakhtiga la dhimin ama xogta la musuqmaasuqin. Socdaalka tooska ah waa sahlan tahay in la sameeyo haddii kala-guurku ku dhaco isla DBMS/matoorka dhexdiisa. Xaaladdu way sii adkaanaysaa marka ay lama huraan tahay in loo guuro DBMS cusub oo leh hawl qabad iyo shuruudo kala duwan.

Waxaa jira qaabab kala duwan oo socdaalka onlayn ah. Waa kan mid ka mid ah:

  • Daar geli gelida laba jeer ee labada xog ururin Xogta cusub ee marxaladan ma haysato dhammaan xogta, laakiin kaliya waxay aqbashaa xogtii ugu dambeysay. Markaad tan hubto, waxaad u gudbi kartaa tallaabada xigta.
  • Daar u akhri akhrinta labada kayd.
  • Habbee nidaamka si akhrinta iyo qorista ugu horrayn loogu sameeyo xogta cusub.
  • Jooji qoraalka xogtii hore intaad sii wadeyso akhrinta xogta. Marxaladan, xog-ururinta cusub ayaa wali ka maqan xogta qaar. Waa in laga soo guuriyo kaydkii hore.
  • Xog-ururinta hore waa akhris-kaliya. Ka koobbi xogta maqan kaydkii hore una guuri mid cusub. Kadib guuritaanka ka dib, u beddel waddooyinka kaydka xogta cusub, oo jooji tii hore oo ka tirtir nidaamka.

Macluumaad dheeri ah, waxaan ku talinayaa inaad la xiriirto maqaal, kaas oo faahfaahinaya istiraatiijiyadda socdaalka Stripe ee ku salaysan qaabkan.

Korodhka weyn ee kaydka xogta waxay keenaysaa koror aan la saadaalin karin

Kobaca kaydku wuxuu keenaa dhibaatooyin aan la saadaalin karin oo la xidhiidha miisaankiisa. In badan oo aan ka ogaanno qaab-dhismeedka gudaha ee xog-ururinta, ayaanu si fiican u saadaalin karnaa sida ay u cabbiri doonto. Si kastaba ha ahaatee, daqiiqadaha qaarkood weli suurtagal maaha in la saadaaliyo.
Sida salku u korayo, malo-awaal hore iyo filashooyinka ku saabsan mugga xogta iyo shuruudaha bandwidth network ayaa laga yaabaa inay noqdaan kuwo duugoobay. Tani waa marka su'aashu ay soo baxdo dib u habeyn weyn oo naqshadeyn ah, hagaajin ballaaran oo hawleed, dib-u-eegis lagu sameeyo, ama u guuritaanka DBMS-yada kale si looga fogaado dhibaatooyinka iman kara.

Laakiin ha u maleynin in aqoonta ugu wanaagsan ee qaab dhismeedka gudaha ee xogta jirta ay tahay waxa kaliya ee lagama maarmaanka u ah. Miisaan cusub ayaa la imaan doona waxyaabo cusub oo aan la aqoon. Dhibcaha xanuunka aan la saadaalin karin, qaybinta xogta aan sinnayn, xatooyada lama filaanka ah iyo arrimaha qalabka, taraafikada sii kordheysa iyo qaybaha shabakada cusub ayaa kugu qasbi doona inaad dib uga fikirto habka xogtaada, qaabka xogta, qaabka geynta, iyo cabbirka xogta.

...

Wakhtiga aan bilaabay in aan ka fikiro daabacaadda maqaalkan, waxaa horeba u jiray shan shay oo kale oo liiskaygii asalka ahaa. Kadib waxaa yimid tiro aad u badan fikrado cusub waxa kale oo lagu dabooli karo. Sidaa darteed, maqaalku wuxuu taabanayaa dhibaatooyinka ugu yar ee muuqda ee u baahan feejignaanta ugu badan. Si kastaba ha ahaatee, tani macnaheedu maaha in mawduuca la daalay oo aan dib ugu soo celin doonin agabkayga mustaqbalka, waxna kuma beddeli doono kan hadda jira.

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment