NewSQL = NoSQL+ACID

NewSQL = NoSQL+ACID
Ilaa dhawaan, Odnoklassniki waxa uu kaydiyay ilaa 50 TB oo xog ah oo lagu farsameeyay wakhtiga dhabta ah gudaha SQL Server. Mugga noocan oo kale ah, waa wax aan macquul aheyn in la bixiyo si degdeg ah oo la isku halleyn karo, iyo xitaa xarunta xogta guuldarada-dulqaadka isticmaalka SQL DBMS. Caadi ahaan, xaaladahan oo kale, mid ka mid ah kaydinta NoSQL ayaa la isticmaalaa, laakiin wax walba laguma wareejin karo NoSQL: hay'adaha qaarkood waxay u baahan yihiin dammaanad lacageed oo ACID ah.

Tani waxay nagu keentay isticmaalka kaydinta NewSQL, taas oo ah, DBMS oo bixisa dulqaadka qaladka, miisaanka iyo waxqabadka nidaamyada NoSQL, laakiin isla mar ahaantaana ilaalinta ACID waxay dammaanad qaadeysaa nidaamyada caadiga ah. Waxaa jira nidaamyo warshadeed oo yar oo ka mid ah fasalkan cusub, markaa waxaanu hirgelinay nidaamkan oo kale oo aanu galnay hawlgal ganacsi.

Sida ay u shaqeyso iyo sida ay wax u dhaceen - ka hoos akhri.

Maanta, dhagaystayaasha billaha ah ee Odnoklassniki waa in ka badan 70 milyan oo booqdayaal gaar ah. Anaga Waxaan ku jirnaa shanta ugu sareysa shabakadaha bulshada ee ugu waaweyn adduunka, iyo ka mid ah labaatanka goobood ee isticmaalayaashu ku qaataan wakhtiga ugu badan. Kaabayaasha OK waxay qabtaan culaysyo aad u sarreeya: in ka badan hal milyan oo codsi HTTP ah/sekkii hore. Qaybo ka mid ah koox-kooxeedyo ka badan 8000 oo xabbo ayaa ku yaal meel isku dhow - oo ku yaal afar xarumood oo xogta Moscow ah, taas oo u oggolaanaysa daahitaanka shabakad ka yar 1 ms dhexdooda.

Waxaan isticmaaleynay Cassandra ilaa 2010, laga bilaabo nooca 0.6. Maanta waxa jira dhawr iyo toban kooxood oo shaqaynaya. Kooxda ugu dhaqsiyaha badan waxay shaqeysaa in ka badan 4 milyan oo hawlgal ilbiriqsikii, iyo dukaamada ugu weyn 260 TB.

Si kastaba ha ahaatee, kuwani waa dhammaan kooxaha NoSQL caadiga ah ee loo isticmaalo kaydinta daciifnimo la isku duwo xogta. Waxaan rabnay inaan bedelno kaydinta joogtada ah ee ugu weyn, Microsoft SQL Server, oo la isticmaalayey tan iyo aasaaskii Odnoklassniki. Kaydinta ayaa ka koobnayd in ka badan 300 oo SQL Server Standard Edition mashiino, kuwaas oo ka koobnaa 50 TB oo xog ah - hay'ado ganacsi. Xogtan waxa wax laga beddelay iyada oo qayb ka ah macaamilka ACID oo u baahan joogtayn sare.

Si loo qaybiyo xogta dhammaan noodhka SQL Server, waxaanu isticmaalnay mid toosan iyo mid toosan labadaba qaybin (sharing). Taariikh ahaan, waxaan isticmaalnay nidaam xog-qeybsi fudud: koox kasta waxaa lala xiriiriyay calaamad - shaqada aqoonsiga cidda. Hay'adaha leh calaamad isku mid ah ayaa lagu dhejiyay isla SQL server. Xidhiidhka tafaasiisha Master-ka ayaa la hirgeliyay si calaamadaha diiwaanka ugu weyn iyo carruurta ay had iyo jeer u dhigmaan oo ay ku yaalliin isla server isku mid ah. Shabakadda bulshada dhexdeeda, ku dhawaad ​​dhammaan diiwaannada waxaa loo soo saaray magaca isticmaalaha - taas oo macnaheedu yahay in dhammaan xogta isticmaalaha ee ku dhex jira hal nidaam hoose oo shaqeynaya ay ku kaydsan yihiin hal server. Taasi waa, macaamil ganacsi oo had iyo jeer ku lug lahaa miisaska hal server SQL, kaas oo suurtageliyay in la hubiyo joogtaynta xogta iyadoo la adeegsanayo macaamilka ACID ee maxaliga ah, iyada oo aan loo baahnayn isticmaalka. gaabis ah oo aan la isku hallayn karin xawaalad ACID qaybisay.

Waad ku mahadsan tahay sharding iyo dedejinta SQL:

  • Ma isticmaalno caqabadaha furaha ajnabiga ah, maadaama marka la wadaagayo aqoonsiga cidda laga yaabo inuu ku yaal server kale.
  • Ma isticmaalno hababka kaydsan iyo kiciyeyaasha sababtoo ah culeyska dheeriga ah ee CPU DBMS.
  • Uma isticmaalno JOINs sababtoo ah dhammaan kuwa kor ku xusan iyo wax badan oo kadis ah oo laga akhriyo saxanka.
  • Wax kala iibsiga ka baxsan, waxaan isticmaalnaa akhrinta heerka go'doominta aan la go'aamin si loo yareeyo xirmooyinka.
  • Waxaan sameynaa kaliya macaamil ganacsi gaaban (celcelis ahaan wax ka yar 100 ms).
  • Ma isticmaalno CUSBOONAYSIINTA safka badan iyo tirtirka sababtoo ah tirada badan ee xirmooyinka - waxaan cusbooneysiineynaa hal rikoor markiiba.
  • Had iyo jeer waxaan su'aalaha ku samaynaa tusmooyinka - su'aalaha leh qorshe buuxa oo sawir-qaadis ah oo annaga noo ah macnaheedu waa culeyska xad-dhaafka ah ee xogta oo keenaya inuu guuldareysto.

Tallaabooyinkani waxay noo oggolaadeen inaan ka saarno wax-qabadka ugu sarreeya ee SQL. Si kastaba ha ahaatee, dhibaatooyinka ayaa noqday kuwo aad u badan. Aynu eegno iyaga.

Dhibaatooyinka SQL

  • Maaddaama aan isticmaalnay shaandheyn is-qoritaan ah, ku darida jeexjeexyada cusub waxaa gacanta ku sameeyay maamulayaasha. Wakhtigan oo dhan, nuqulada xogta la miisaami karo may ahayn adeegida codsiyada.
  • Marka tirada diiwaannada miiska kor u kaco, xawaaraha gelinta iyo wax ka beddelka ayaa hoos u dhacaya; marka lagu daro tusmooyinka miiska jira, xawaaruhu wuxuu hoos u dhacayaa qodob; abuurista iyo dib-u-abuurista tusmooyinka waxay ku dhacdaa wakhtiga hoos u dhaca.
  • Haysashada qadar yar oo Windows ah oo loogu talagalay Server-ka SQL ee wax soo saarka ayaa ka dhigaysa maareynta kaabayaasha adag

Laakiin dhibaatada ugu weyn ayaa ah

dulqaadka qaladka

Server-ka caadiga ah ee SQL waxa uu leeyahay dulqaad liidata. Aynu nidhaahno waxaad haysataa hal kayd oo keliya, oo saddexdii sannadoodba hal mar wuu guuldarraystaa. Inta lagu jiro wakhtigan goobta ayaa hoos u dhacday 20 daqiiqo, taas oo ah mid la aqbali karo. Haddii aad leedahay 64 server, markaa goobta ayaa hoos u dhacda hal mar saddexdii toddobaadba mar. Oo haddii aad haysato 200 oo server, markaa goobtu ma shaqeyso toddobaad kasta. Tani waa dhibaato.

Maxaa la samayn karaa si loo hagaajiyo dulqaadka qaladka ee server-ka SQL? Wikipedia ayaa nagu martiqaadaya inaan dhisno koox aad loo heli karo: haddii ay dhacdo in mid ka mid ah qaybaha uu ku guuldareysto uu jiro mid kayd ah.

Tani waxay u baahan tahay raxan qalab qaali ah: nuqulo badan, fiber indhaha, kaydinta la wadaago, iyo ku darida kaydku uma shaqeeyaan si la isku halleyn karo: qiyaastii 10% beddelashada waxay ku dhammaataa fashilka noodhka kaydinta sida tareen ka dambeeya qanjidhada weyn.

Laakin qasaaraha ugu weyn ee kutlada aadka loo heli karo waa eber helitaan haddii xarunta xogta ay ku taal ay fashilanto. Odnoklassniki waxay leedahay afar xarumood oo xog ah, waxaanan u baahanahay inaan hubinno hawlgalka haddii ay dhacdo in mid ka mid ah ay si buuxda u fashilanto.

Tan waan u isticmaali karnaa Multi-Master ku-celinta oo lagu dhisay SQL Server. Xalkani aad ayuu qaali u yahay sababtoo ah qiimaha software-ka oo uu ku dhaco dhibaatooyin caan ah oo ku saabsan dib-u-celinta - dib-u-dhac ganacsi oo aan la saadaalin karin oo leh dib-u-celin isku-dhafan iyo dib-u-dhac ku yimaada codsashada nuqullada (iyo, natiijada, isbeddellada lumay) oo leh dib-u-celinta asynchronous. La maldahan xallinta khilaafka gacanta waxay ka dhigaysaa doorashadan mid gebi ahaanba aan annagu khusayn.

Dhibaatooyinkaas oo dhami waxay u baahdeen xal xagjir ah, waxaanan bilownay inaan si faahfaahsan u falanqeyno. Halkan waxaan u baahanahay inaan barano waxa SQL Server uu inta badan sameeyo - macaamil ganacsi.

Wax kala iibsiga fudud

Aynu tixgelinno macaamil ganacsi ee ugu fudud, marka laga eego aragtida barnaamijka SQL ee la dabaqay: ku darista sawir albamka. Albaabka iyo sawiradu waxay ku kaydsan yihiin taariko kala duwan. Albamku waxa uu leeyahay miiska sawirka dadweynaha. Kadibna wax kala iibsigu waxa loo qaybiyaa talaabooyinkan soo socda:

  1. Albaabka waxaan ku xidhnay furaha
  2. Ku samee gelid miiska sawirka.
  3. Haddii sawirku leeyahay xaalad dadweyne, ka dibna ku dar miiska sawirka dadweynaha albamka, cusboonaysii diiwaanka oo samee macaamil ganacsi.

Ama ku qor pseudocode:

TX.start("Albums", id);
Album album = albums.lock(id);
Photo photo = photos.create(…);

if (photo.status == PUBLIC ) {
    album.incPublicPhotosCount();
}
album.update();

TX.commit();

Waxaan aragnaa in dhacdada ugu caansan ee macaamil ganacsigu ay tahay in la akhriyo xogta laga soo bilaabo kaydka kaydka xusuusta server-ka codsiga, wax ka beddelo oo dib u badbaadiso qiyamka cusub ee kaydinta. Caadiyan macaamilka noocan oo kale ah waxaan cusbooneysiineynaa dhowr shirkadood, dhowr miisas.

Marka la fulinayo wax kala iibsiga, wax ka beddelka isla xogta isla xogta laga yaabaa inuu dhaco. Tusaale ahaan, Antispam waxay go'aansan kartaa in isticmaaluhu si uun uga shakisan yahay sidaas darteed dhammaan sawirada isticmaaluhu waa inaysan sii ahaan dadweynaha, waxay u baahan yihiin in loo diro dhexdhexaadin, taas oo macnaheedu yahay in sawirka sawirka loo beddelo qiimo kale oo la damiyo xisaabiyeyaasha u dhigma. Sida iska cad, haddii hawlgalkani dhaco iyada oo aan la damaanad qaadin atomity codsiga iyo go'doominta wax ka beddelka tartanka, sida AASHITO, ka dibna natiijadu ma noqon doonto waxa loo baahan yahay - ama miiska sawirku wuxuu muujin doonaa qiimaha khaldan, ama dhammaan sawirada looma diri doono dhexdhexaadin.

Koodh badan oo la mid ah, oo lagu maamulayo ganacsiyo kala duwan oo hal ganacsi ah, ayaa la qoray dhammaan jiritaanka Odnoklassniki. Iyada oo ku saleysan waayo-aragnimada u haajiridda NoSQL ee ka yimid Joogtada Aakhirka Waxaan ognahay in caqabadda ugu weyn (iyo maalgashiga waqtiga) ay ka timaaddo horumarinta koodka si loo ilaaliyo joogtaynta xogta. Sidaa darteed, waxaanu tixgelinay shuruudaha ugu muhiimsan ee kaydinta cusub si ay u noqoto bixinta macaamilka dhabta ah ee ACID ee macquulka ah ee codsiga.

Kuwa kale, oo aan ka muhiimsanayn, shuruuduhu waxay ahaayeen:

  • Haddii xarunta xogtu ay fashilanto, akhrinta iyo qorista kaydinta cusub labadaba waa inay diyaar ahaadaan.
  • Ilaalinta xawaaraha horumarka hadda jira. Taasi waa, marka la shaqeynayo kayd cusub, qadarka koodku waa inuu ahaadaa isku mid; waa in aan loo baahnayn in wax lagu daro kaydka, horumarinta algorithms ee xallinta khilaafaadka, ilaalinta tusmooyinka sare, iwm.
  • Xawaaraha kaydinta cusubi waa in ay ahaataa mid aad u sareysa, marka la akhrinayo xogta iyo marka la farsameynayo wax kala iibsiga, taas oo macnaheedu yahay in tacliin ahaan adag, caalami ah, laakiin xalal gaabis ah, sida, tusaale ahaan, aan lagu dabaqi karin laba waji baa la sameeyaa.
  • Miisaanka tooska ah ee duulista.
  • Isticmaalka server-yada jaban ee caadiga ah, iyada oo aan loo baahnayn in la iibsado qalab qalaad.
  • Suurtagalnimada horumarinta kaydinta ee horumarinta shirkadu. Si kale haddii loo dhigo, mudnaanta ayaa la siiyay xalalka il-lahaaneed ama furan, oo doorbidan Java.

Go'aamo, go'aanno

Falanqaynta xalalka suurtagalka ah, waxaan u nimid laba doorasho oo suurtagal ah oo naqshadeed:

Midda ugu horreysa waa in la qaato server-ka SQL oo la hirgeliyo dulqaadka loo baahan yahay, habka cabbirka, kooxda fashilantay, xallinta khilaafaadka iyo qaybinta, la isku halayn karo oo degdeg ah macaamil ganacsi ACID. Waxaan ku qiimaynay doorashadan mid aan fududayn oo xoog badan.

Doorashada labaad waa inaad qaadato kaydka NoSQL oo diyaarsan oo leh miisaan la hirgaliyay, koox guuldaraystay, xalinta isku dhaca, oo aad hirgaliso macaamil ganacsi iyo SQL laftaadu. Jaleecada hore, xitaa hawsha fulinta SQL, oo ​​aan ku xusin macaamilka ACID, waxay u egtahay hawl qaadan doonta sanado. Laakin markaas waxaan ogaanay in qaabka SQL-ga ee aan u isticmaalno ficil ahaan uu ka fog yahay ANSI SQL sida Cassandra CQL ka fog ANSI SQL. Markaan si qoto dheer u eegno CQL, waxaan ogaanay inay aad ugu dhowdahay waxa aan u baahanahay.

Cassandra iyo CQL

Marka, maxaa xiiso leh oo ku saabsan Cassandra, awooddee ayay leedahay?

Marka hore, halkan waxaad ku abuuri kartaa jadwal taageera noocyo kala duwan oo xog ah; waxaad ku samayn kartaa SELECT ama UPDATE furaha aasaasiga ah.

CREATE TABLE photos (id bigint KEY, owner bigint,…);
SELECT * FROM photos WHERE id=?;
UPDATE photos SET … WHERE id=?;

Si loo hubiyo joogtaynta xogta nuqul ka mid ah, Cassandra waxay isticmaashaa habka kooramka. Xaaladda ugu fudud, tani waxay ka dhigan tahay in marka saddex nuqul oo isku mid ah lagu dhejiyo noodaha kala duwan ee kooxda, qorista waxaa loo tixgeliyaa mid guul leh haddii inta badan qanjidhada (taas oo ah, laba ka mid ah saddexdiiba) ay xaqiijiyeen guusha hawlgalkan qorista. . Xogta safka ah ayaa loo tixgalinayaa inay joogto tahay haddii, marka la akhrinayo, inta badan qanjidhada ayaa la raray oo la xaqiijiyay. Sidaa darteed, oo leh saddex nuqul, xog dhamaystiran oo degdeg ah waa la dammaanad qaaday haddii hal nood uu ku guuldareysto. Habkani wuxuu noo oggolaaday inaan hirgelinno qorshe la isku halleyn karo: mar walba codsiyo u dir dhammaan saddexda nuqul, annaga oo sugayna jawaabta labada kuwa ugu dhaqsiyaha badan. Jawaabta daahday ee nuqulka saddexaad waa la tuuray kiiskan. Noodka soo daaha ka jawaabista ayaa laga yaabaa inay leedahay dhibaatooyin halis ah - biriiga, ururinta qashinka ee JVM, dib u soo celinta xusuusta tooska ah ee kernel-ka Linux, cillad hardware, goynta shabakada. Si kastaba ha ahaatee, tani sinaba uma saamaynayso hawlaha macmiilka ama xogta.

Habka marka aan la xiriirno saddex nood oo aan jawaab ka helno laba ayaa la yiraahdaa mala-awaal: Codsiga nuqullo dheeri ah ayaa la soo diraa xitaa ka hor inta uusan " dhicin".

Faa'iidada kale ee Cassandra waa Batchlog, hannaan hubinaya in isbeddellada aad samaysay si buuxda loo dabaqay ama aan gebi ahaanba la dabaqin. Tani waxay noo ogolaanaysaa inaan ku xalinno A ee ACID - atomity out of the box.

Waxa ugu dhow ee macaamil ganacsi ee Cassandra waa waxa loogu yeero "macaamilo fudud" Laakiin way ka fog yihiin macaamilka "dhabta ah" ACID: dhab ahaantii, tani waa fursad lagu sameeyo CAS Xogta laga helay hal diiwaan oo kaliya, iyadoo la adeegsanayo is-afgarad iyadoo la isticmaalayo borotokoolka Paxos ee miisaanka culus. Sidaa darteed, xawaaraha wax-kala-iibsiga noocan oo kale ah waa mid hooseeya.

Waxa naga maqan Cassandra

Markaa, waxay ahayd inaan Cassandra ka hirgelino macaamil ganacsi oo ACID ah. Isticmaalka kaas oo aan si fudud u hirgelin karno laba astaamood oo kale oo ku habboon DBMS-ga caadiga ah: tusmooyinka degdegga ah ee joogtada ah, taas oo noo oggolaan doonta inaan ku samayno xulashooyinka xogta oo keliya maaha furaha aasaasiga ah, iyo soo-saare joogto ah oo ah aqoonsiga is-kordhinta ee monotonic.

C*Mid

Sidaa darteed DBMS cusub ayaa ku dhashay C*Mid, oo ka kooban saddex nooc oo noodhka server ah:

  • Kaydinta – (ku dhawaad) server-yada caadiga ah ee Cassandra ee masuulka ka ah kaydinta xogta saxannada deegaanka. Markay culayska iyo mugga xogtu korodho, tiro ahaan si fudud ayaa loo cabbiri karaa tobanaan iyo boqolaal.
  • Isku-duwayaasha wax kala iibsiga - xaqiiji fulinta wax kala iibsiga.
  • Macaamiishu waa adeegayaal arji oo hirgeliya hawlaha ganacsiga oo bilaabaya wax kala iibsiga. Waxa jiri kara kumanaan macmiil oo noocaas ah.

NewSQL = NoSQL+ACID

Adeegayaasha dhammaan noocyada kala duwan waa qayb ka mid ah koox caadi ah, isticmaal nidaamka fariinta Cassandra ee gudaha si ay ula xiriiraan midba midka kale xanta si ay isu waydaarsadaan xogta kutlada Wadnaha garaaca, adeegayaashu waxay bartaan guul-darrooyinka labada dhinac, waxay ilaaliyaan hal nidaam xogta - miisaska, qaabkooda iyo ku celcelintooda; nidaamka qaybinta, cluster topology, iwm.

Macaamiisha

NewSQL = NoSQL+ACID

Halkii laga heli lahaa darawallada caadiga ah, qaabka Macmiilka Dufan ayaa la isticmaalaa. Noodka noocan oo kale ah ma kaydiyo xogta, laakiin wuxuu u dhaqmi karaa iskuduwaha codsiga fulinta, taas oo ah, Macmiilka laftiisa wuxuu u shaqeeyaa sidii iskuduwaha codsiyadiisa: wuxuu waydiiyaa nuqullada kaydinta waxayna xalliyaan isku dhacyada. Tani ma aha oo kaliya in la isku halleyn karo oo ka dhaqso badan darawalka caadiga ah, kaas oo u baahan isgaarsiin xiriiriyaha fog, laakiin sidoo kale wuxuu kuu ogolaanayaa inaad xakameyso gudbinta codsiyada. Ka baxsan macaamil ganacsi oo furan macmiilka, codsiyada waxaa loo diraa meelaha kaydka ah. Haddii macmiilku furay macaamil ganacsi, markaa dhammaan codsiyada ku jira macaamilka waxaa loo diraa isku-duwaha wax kala iibsiga.
NewSQL = NoSQL+ACID

C*Hal Isuduwaha Wax kala iibsiga

Isuduwuhu waa shay aanu u hirgalinay C*Mid ka soo bilaw. Waxay mas'uul ka tahay maaraynta wax kala iibsiga, qufulka, iyo sida ay u kala horreeyaan wax kala iibsiga.

Wax kala iibsi kasta oo loo adeego, isuduwaha ayaa soo saara shaambad waqti: wax kala iibsi kasta oo xiga ayaa ka weyn macaamilkii hore. Maadaama nidaamka xallinta khilaafaadka Cassandra uu ku salaysan yahay shaambada wakhtiga (laba diiwaan oo iska soo horjeeda, midkii ugu dambeeyay waxa loo tixgaliyaa hadda), isku dhaca had iyo jeer waa la xalin doonaa iyada oo la door bidaayo wax kala iibsiga xiga. Sidaas ayaanu ku dhaqan galnay Lamport watch - hab raqiis ah oo lagu xalliyo khilaafaadka hab qaybsan.

Quful

Si loo xaqiijiyo go'doominta, waxaan go'aansanay inaan isticmaalno habka ugu fudud - quful niyad jab leh oo ku saleysan furaha aasaasiga ah ee diiwaanka. Si kale haddii loo dhigo, wax kala iibsiga, rikoodhada waa in marka hore la xidhaa, ka dibna la akhriyaa, wax laga beddelo, oo la kaydiyaa. Keliya ka dib ballan-qaad guul leh ayaa diiwaanka la furi karaa si ganacsiyada tartamaya ay u isticmaalaan.

Hirgelinta qufulka noocan oo kale ah waa mid sahlan meel aan la qaybin. Nidaamka la qaybiyey, waxaa jira laba ikhtiyaar oo waaweyn: ama hirgeli quful qaybsan ee kutlada, ama qaybiyaan wax kala iibsiga si macaamilka ku lug leh diiwaanka isku midka ah uu had iyo jeer u adeego iskuduwe isku mid ah.

Tan iyo markii ay xaaladdeenna xogta ayaa mar hore loo qaybiyey kooxaha ka mid ah macaamil ganacsi maxaliga ah ee SQL, waxaa la go'aamiyay in lagu meeleeyo kooxaha xawaalad maxaliga ah ee isku-duwayaasha: mid ka mid ah isku-dubarid wuxuu sameeyaa dhammaan macaamil ganacsi oo leh calaamado laga bilaabo 0 ilaa 9, kan labaad - oo leh calaamado laga bilaabo 10 ilaa 19. iyo wixi la mida. Natiijo ahaan, mid kasta oo ka mid ah tusaalooyinka isuduwaha ayaa noqda sayidkii kooxda wax kala iibsiga.

Kadibna qufullada waxaa loo hirgelin karaa qaabka banal HashMap ee xusuusta iskuduwaha.

Guuldarrooyinka isku duwaha

Maaddaama mid ka mid ah isku-duwaha uu si gaar ah ugu adeego koox macaamil ganacsi ah, aad bay muhiim u tahay in si dhakhso ah loo ogaado xaqiiqda guul-darradeeda si isku dayga labaad ee lagu fuliyo macaamilku uu waqti u qaato. Si tan looga dhigo mid degdeg ah oo la isku halayn karo, waxaanu isticmaalnay borotokoolka garaaca maqalka kooramku si buuxda isugu xidhan:

Xarun kasta oo xogeed waxay martigelisaa ugu yaraan laba noodood oo xidhiidhiye ah. Marmar, iskuduwe kastaa waxa uu fariin garaaca wadnaha u diraa isuduwayaasha kale waxa uuna la socodsiinayaa sida ay u shaqeyso, iyo sidoo kale fariimaha garaaca wadnaha ee uu ka helay iskuduwayaasha kooxda markii ugu dambeysay.

NewSQL = NoSQL+ACID

Helitaanka macluumaadka la midka ah kuwa kale oo qayb ka ah farriimaha garaaca wadnaha, isku-duwaha kastaa wuxuu go'aamiyaa nafsaddiisa kuwa noodhka ah ee shaqaynaya iyo kuwa aan ahayn, oo uu hagayo mabda'a kooramka: haddii noodhka X uu ka helay macluumaadka inta badan qanjidhada kooxda ee ku saabsan sida caadiga ah. Helitaanka fariimaha laga helo noodhka Y, ka dibna , Y wuu shaqeeyaa. Taas bedelkeeda, isla marka inta badan ay soo sheegaan fariimaha maqan ee noodhka Y, ka dibna Y waa diiday. Waxaa xiiso leh in haddii kooramku uu ku wargeliyo noodhka X in aanu hadda ka helin farriimaha, markaas noode X lafteedu waxay isu qaadan doontaa in ay guuldarraysatay.

Farriimaha garaaca wadnaha waxaa lagu soo diraa soo noqnoqosho aad u sarreeya, qiyaastii 20 jeer ilbiriqsikii, oo leh 50 ms. Java gudaheeda, way adagtahay in lagu dammaanad qaado jawaabta codsiga gudaha 50 ms sababtoo ah dhererka joogsiga barbardhiga ah ee uu keenay qashin ururiyaha. Waxaan awoodnay inaan gaarno waqtigan jawaabta annagoo adeegsanayna G1 qashinka aruuriya, kaasoo noo ogolaanaya inaan qeexno bartilmaameedka inta GC uu hakad ku jiro. Si kastaba ha ahaatee, mararka qaarkood, marar dhif ah, ururiyaha ayaa hakadkoodu ka badan yahay 50 ms, taas oo keeni karta in la ogaado qalad been ah. Si aanay taasi u dhicin, xidhiidhiyuhu ma soo sheego in ay ku fashilantay meel fog marka fariinta garaaca wadnaha ee ugu horeysa ee ka timaada ay meesha ka baxdo, kaliya haddii dhowr ka mid ah la waayay oo isku xigta. ms

Laakiin kuma filna inaad si dhakhso leh u fahamto noodhka joojiyay shaqayntiisa. Waxaan u baahanahay inaan wax ka qabano arrintan.

Boos sii qabsi

Nidaamka caadiga ah wuxuu ku lug leeyahay, haddii ay dhacdo guuldarro sayid, bilaabida doorasho cusub iyadoo la adeegsanayo mid ka mid ah moodada caalami ah algorithms. Si kastaba ha ahaatee, algorithms-yada noocan oo kale ah waxay leeyihiin dhibaatooyin si fiican loo yaqaan oo ku saabsan isku-dhafka wakhtiga iyo dhererka habka doorashada laftiisa. Waxaan awoodnay inaan ka fogaano daahitaanka dheeraadka ah ee noocaas ah anagoo adeegsanayna nidaamka beddelka iskuduwaha ee shabakad si buuxda ugu xiran:

NewSQL = NoSQL+ACID

Aynu nidhaahno waxaan rabnaa inaan ku fulino macaamilka kooxda 50. Aynu horay u sii go'aaminno nidaamka beddelka, taas oo ah, qanjidhada ayaa fulin doona macaamilada kooxda 50 haddii ay dhacdo fashil ku yimaada iskuduwaha ugu weyn. Hadafkayagu waa in aan ilaalino nidaamka shaqaynta haddii ay dhacdo in xarun xogeed ay fashilanto. Aynu go'aansanno in kaydka koowaad uu noqon doono buro ka yimid xarun kale oo xog ah, kaydka labaadna wuxuu noqon doonaa noode ka yimid saddex meelood meel. Nidaamkan waxa la doortaa hal mar mana is beddelo ilaa topology-ga kooxdu is beddelo, taas oo ah, ilaa qanjidhada cusubi soo galaan (taas oo dhacda marar dhif ah). Habka lagu dooranayo sayid cusub oo firfircoon haddii kii hore ku guuldareysto wuxuu had iyo jeer ahaan doonaa sidan soo socota: kaydka koowaad wuxuu noqonayaa sayid firfircoon, haddii uu joogsado shaqadiisa, kaydka labaad wuxuu noqonayaa sayid firfircoon.

Nidaamkani waa mid aad loogu kalsoonaan karo marka loo eego algorithm caalamiga ah, tan iyo markii la dhaqaajiyo sayid cusub waa ku filan tahay in la go'aamiyo fashilka kii hore.

Laakiin sidee macaamiishu u fahmi doonaan sayidkee hadda shaqaynayo? Suurtagal maaha in kumanaan macaamiil ah loogu diro 50 ms. Xaalad ayaa suurtagal ah marka macmiilku soo diro codsi si uu u furo macaamil ganacsi, isaga oo aan weli ogeyn in sayidku aanu sii shaqaynayn, codsiguna wuu dhammaan doonaa. Si looga hortago in tani dhacdo, macaamiishu waxay si macquul ah u soo diraan codsi si ay u furaan macaamil ganacsi kooxeed iyo labadaba kaydkiisa hal mar, laakiin kaliya kan ah sayidkiisa firfircoon ee xilligan ayaa ka jawaabi doona codsigan. Macmiilku waxa uu samayn doonaa dhammaan isgaadhsiinta xiga ee macaamilka dhexdiisa oo keliya sayidiyaha firfircoon.

Masters meel kaabta helay codsiyada macaamil ganacsi oo aan kooda galay safka macaamil ganacsi aan dhalan, halkaas oo ay ku kaydsan yihiin in muddo ah. Haddii sayidkii firfircooni uu dhinto, habab sayid cusub ayaa codsanaya in laga furo xawaalad safkeeda oo u jawaaba macmiilka. Haddii macmiilku uu horay u furay macaamil ganacsi oo la leh sayidkii hore, ka dibna jawaabta labaad waa la iska indhatiray (iyo, si cad, macaamilka noocan oo kale ah ma dhamaystiri doono waxaana lagu celin doonaa macaamilka).

Sida macaamilku u shaqeeyo

Aynu nidhaahno macmiilku wuxuu codsi u diray isku-duwaha si uu u furo macaamil ganacsi oo noocaas ah iyo cidda leh furaha aasaasiga ah ee noocaas ah. Isku duwaha ayaa quful goobtan oo dhigaya miiska qufulka ee xusuusta. Haddi loo baahdo, iskudubariduhu waxa uu ka akhriyaa qaybtan kaydinta waxaanu ku kaydiyaa xogta ka dhalata xaalada wax kala iibsiga ee xasuusta isku xidhaha.

NewSQL = NoSQL+ACID

Marka macmiilku rabo inuu beddelo xogta wax kala iibsiga, wuxuu u soo dirayaa codsi isku-duwaha si uu wax uga beddelo cidda, isku-duwahana wuxuu kaydiyaa xogta cusub ee miiska heerka macaamilka xusuusta. Tani waxay dhamaystiraysaa duubista - wax duubis ah looma samayn kaydinta.

NewSQL = NoSQL+ACID

Marka macmiilku codsado xogtiisa la beddelay oo qayb ka ah macaamil ganacsi oo firfircoon, xidhiidhiyuhu wuxuu u dhaqmaa sida soo socota:

  • haddii aqoonsigu horeyba ugu jiray macaamilka, markaa xogta ayaa laga soo qaaday xusuusta;
  • Haddii aysan jirin aqoonsi xusuusta, ka dibna xogta maqan waxaa laga akhriyaa qanjidhada kaydinta, oo lagu daro kuwa horeba xusuusta, natiijadana waxaa la siiyaa macmiilka.

Sidaa darteed, macmiilku wuu akhriyi karaa isbeddelkiisa, laakiin macaamiisha kale ma arkaan isbeddeladan, sababtoo ah waxay ku kaydsan yihiin oo kaliya xusuusta iskuduwaha; weli kuma jiraan qanjidhada Cassandra.

NewSQL = NoSQL+ACID

Marka macmiilku soo diro ballan, gobolka ku jiray xusuusta adeegga waxa kaydiya isuduwaha oo ku jira dufcad xidhan, waxaana loo diraa sidii qayb galsan kaydinta Cassandra. Bakhaarradu waxay sameeyaan wax kasta oo lagama maarmaanka ah si loo hubiyo in xirmadan si toos ah (si buuxda) loo dabaqay, oo ay u soo celiyaan jawaabta iskuduwaha, kaas oo sii daaya qufulka oo xaqiijinaya guusha macaamilka macaamilka.

NewSQL = NoSQL+ACID

Iyo dib-u-soo-noqoshada, isku-duwaha wuxuu u baahan yahay kaliya inuu xoreeyo xusuusta ay haysato gobolka wax kala iibsiga.

Natiijadii horumarka kor ku xusan, waxaanu fulinay mabaadi'da ACID:

  • Atomiity. Tani waa dammaanad ah in wax kala beddelasho ah aan qayb ahaan lagu diiwaan gelin doonin nidaamka; midkoodna dhammaan hawl-hoosaadyadiisa waa la dhammaystiri doonaa, ama midna lama dhammaystiri doono. Waxaan u hoggaansanahay mabda'an anagoo adeegsanayna Dufcaddii la soo geliyay ee Cassandra.
  • Joogteynta. Xawaalad kasta oo guulaysata, qeexitaan ahaan, waxay diiwaan gelisaa kaliya natiijooyin sax ah. Haddii, ka dib furitaanka macaamil ganacsi iyo fulinta qayb ka mid ah hawlgallada, la ogaado in natiijadu ay tahay mid aan sax ahayn, dib-u-celinta ayaa la sameeyaa.
  • Karantiil. Marka wax kala iibsi la fuliyo, wax kala iibsigu waa in aanu saamayn natiijadiisa. Wax kala iibsiga tartanka waa la go'doomiyey iyadoo la isticmaalayo quful rajo-xumo leh oo saaran isku-duwaha. Wixii wax akhriya ee ka baxsan wax kala iibsiga, mabda'a go'doominta waxaa lagu arkay heerka Akhriska go'an yahay.
  • Badbaadinta. Iyadoo aan loo eegin mashaakilaadka heerarka hoose — nidaamka madoobaadka, cilladda qalabka—isbeddellada lagu sameeyay macaamil ganacsi oo si guul leh loo dhammeeyay waa in la ilaaliyaa marka ay dib u bilaabmaan hawlgallada.

Akhrinta tusmooyinka

Aan soo qaadano miis fudud:

CREATE TABLE photos (
id bigint primary key,
owner bigint,
modified timestamp,
…)

Waxay leedahay aqoonsi (furaha aasaasiga ah), mulkiilaha iyo taariikhda wax ka beddelka. Waxaad u baahan tahay inaad samayso codsi aad u fudud - dooro xogta mulkiilaha oo leh taariikhda isbeddelka "maalinta u dambaysa".

SELECT *
WHERE owner=?
AND modified>?

Si weydiimahan oo kale si degdeg ah looga baaraandego, SQL DBMS caadiga ah waxaad u baahan tahay inaad ku dhisto tusmooyin tiirar (milkiile, wax laga beddelay). Tan si fudud ayaan u samayn karnaa, maadaama aan hadda haysanno dammaanad-qaadyada ACID!

Tusmooyinka ku jira C*One

Waxaa jira miis isha oo sawiro leh kaas oo aqoonsiga diiwaanku uu yahay furaha koowaad.

NewSQL = NoSQL+ACID

Tusaha, C * Mid wuxuu abuuraa miis cusub oo ah nuqulka asalka ah. Furuhu waxa uu la mid yahay tibaaxaha tusmada, waxa kale oo ku jira furaha koowaad ee diiwaanka miiska isha:

NewSQL = NoSQL+ACID

Hadda su'aasha "milkiilaha maalinta u dambaysa" waxaa dib loo qori karaa iyadoo laga soo xusho miis kale:

SELECT * FROM i1_test
WHERE owner=?
AND modified>?

Joogteynta xogta ku jirta sawirada miiska isha iyo miiska tusaha i1 waxaa si toos ah u ilaalinaya iskuduwaha. Iyada oo ku saleysan qorshaha xogta oo keliya, marka isbeddel la helo, isku-duwaha ayaa soo saara oo kaydiya isbeddel ma aha oo kaliya miiska weyn, laakiin sidoo kale nuqullo. Wax ficil ah oo dheeri ah laguma sameeyo miiska tusmada, qormooyinka lama akhriyo, qufulna lama isticmaalo. Taasi waa, ku darista tusmooyinku ma luminayaan wax kheyraad ah oo wax saameyn ah kuma yeelanayaan xawaaraha wax ka beddelka.

Isticmaalka ACID, waxaan awoodnay inaan hirgelino tusmooyinka SQL-sida. Waa kuwo joogto ah, la miisaami karo, degdeg ah, la isku dari karo, oo lagu dhex dhisay luqadda weydiinta CQL. Wax isbeddel ah oo lagu sameeyo koodka codsiga looma baahna si loo taageero tusmooyinka. Wax walba waa u fududahay sida SQL. Iyo tan ugu muhiimsan, tusmooyinka ma saameeyaan xawaaraha fulinta wax ka beddelka miiska macaamil ganacsi ee asalka ah.

Maxaa dhacay

Waxaan horumarinay C * Hal saddex sano ka hor oo aan bilownay hawl ganacsi.

Maxaan helnay aakhirkii? Aynu ku qiimayno tan inagoo tusaale u ah hab-hoosaadka hab-hoosaadka sawirka iyo kaydinta, mid ka mid ah noocyada ugu muhiimsan ee xogta shabakada bulshada. Kama hadlayno meydadka sawirada laftooda, laakiin ku saabsan dhammaan noocyada macluumaadka-meta. Hadda Odnoklassniki waxay leedahay ilaa 20 bilyan oo rikoodhadaas ah, nidaamku wuxuu socodsiiyaa 80 kun oo codsi akhrin ah ilbiriqsi kasta, ilaa 8 kun oo macaamil ACID ah ilbiriqsi kasta oo la xidhiidha wax ka beddelka xogta.

Markii aan isticmaalnay SQL oo leh factor replication = 1 (laakin RAID 10), xogta sawirka waxaa lagu kaydiyay koox aad loo heli karo oo 32 mashiin ah oo ku shaqeeya Microsoft SQL Server (oo lagu daray 11 kaydinta). 10 server ayaa sidoo kale loo qoondeeyay kaydinta kaydka. Wadar dhan 50 baabuur oo qaali ah. Isla mar ahaantaana, nidaamku wuxuu ku shaqeeyaa culeys la qiimeeyay, iyada oo aan lahayn kayd.

Ka dib markii loo soo guuray nidaamka cusub, waxaan helnay factor replication = 3 - nuqul ka mid ah xarun kasta oo xogta. Nidaamku wuxuu ka kooban yahay 63 qanjidhada kaydinta Cassandra iyo 6 mashiinnada isku xidhka, wadar ahaan 69 adeegayaal. Laakiin mishiinadan aad bay uga jaban yihiin, wadarta qiimahoodu waa 30% qiimaha nidaamka SQL. Isla mar ahaantaana, culeyska waxaa lagu hayaa 30%.

Markii la bilaabay C * One, daahitaanku sidoo kale wuu yaraaday: SQL, hawlgal qoraal ah wuxuu qaatay qiyaastii 4,5 ms. Gudaha C * Mid - qiyaastii 1,6 ms. Muddada wax kala iibsigu waa celcelis ahaan in ka yar 40 ms, ballan-qaadku waxa uu ku dhammaaday 2 ms, muddada wax-akhrinta iyo qoraalka waa celcelis ahaan 2 ms. Boqolkiiba 99-aad - kaliya 3-3,1 ms, tirada wakhtigu hoos u dhacay 100 jeer - dhammaan waxaa sabab u ah isticmaalka baahsan ee mala-awaalka.

Hadda, inta badan noodhka SQL Server waa la jaray; badeecooyin cusub ayaa la soo saaray oo keliya iyadoo la adeegsanayo C * Mid. Waxaan u habeynay C*Mid inuu ku shaqeeyo daruurteena hal-daruur, taas oo suurto gelisay in la dedejiyo daad-gureynta kooxaha cusub, fududaynta habaynta iyo si toos ah hawlgalka. La'aanteed koodka isha, samaynta tani waxay noqon doontaa mid aad u adag oo dhib badan.

Hadda waxaan ka shaqeyneynaa inaan u wareejino tas-hiilaadkayada kale ee kaydinta daruuraha - laakiin taasi waa sheeko gebi ahaanba ka duwan.

Source: www.habr.com

Add a comment