Kuze kube kutshanje kwi-Odnoklassniki, malunga ne-50 TB yedatha eqhutywe ngexesha langempela igcinwe kwi-SQL Server. Ngomthamo onjalo, phantse akunakwenzeka ukubonelela ngokukhawuleza nangokuthembekileyo, kunye nokufikelela kwiziko ledatha elinokunyamezela iimpazamo usebenzisa i-SQL DBMS. Ngokuqhelekileyo kwiimeko ezinjalo enye yeevenkile ze-NoSQL isetyenziswa, kodwa akusiyo yonke into enokuthi idluliselwe kwi-NoSQL: amanye amaqumrhu afuna iziqinisekiso ze-ACID.
Oku kwasikhokelela ekusebenziseni ukugcinwa kweNewSQL, oko kukuthi, i-DBMS enikezela ukunyamezela impazamo, ukulinganisa kunye nokusebenza kweenkqubo ze-NoSQL, kodwa ngexesha elifanayo ligcina iziqinisekiso ze-ACID eziqhelekileyo kwiinkqubo ze-classical. Zimbalwa iinkqubo zemizi-mveliso ezisebenzayo zolu didi lutsha, ngoko ke siphumeze inkqubo enjalo ngokwethu kwaye siyifake kumsebenzi worhwebo.
Indlela esebenza ngayo kwaye kwenzekani - funda phantsi kokusikwa.
Namhlanje, abaphulaphuli benyanga be-Odnoklassniki bangaphezu kwezigidi ezingama-70 zeendwendwe ezizodwa. Thina
Besisoloko sisebenzisa iCassandra ukusukela ngo-2010, ukuqala ngenguqulo 0.6. Namhlanje, amaqela aliqela asebenzayo. Elona qela likhawulezayo liqhuba imisebenzi engaphezu kwezigidi ezi-4 ngomzuzwana, ngelixa elona likhulu ligcina i-260 TB.
Nangona kunjalo, ezi zonke ngamaqela e-NoSQL aqhelekileyo asetyenziselwa ukugcina
Ukusasaza idatha kuzo zonke iindawo ze-SQL Server, sisebenzise zombini ezithe nkqo nezithe tye
Enkosi ngokwabelana kunye nokukhawulezisa iSQL:
- Asisebenzisi izithintelo zesitshixo zakwamanye amazwe, kuba xa ushadi, i-ID yequmrhu inokufumaneka kwenye iseva.
- Asisebenzisi iinkqubo ezigciniweyo kunye nezibangela ngenxa yomthwalo owongezelelweyo kwi-CPU ye-DBMS.
- Asisebenzisi JOIN ngenxa yako konke okungasentla kunye nokuninzi kokufundeka okungahleliwe kwidiski.
- Ngaphandle kwentengiselwano, sisebenzisa inqanaba le-Read Uncommitted solation level ukunciphisa ukuvalwa.
- Senza kuphela iitransekshini ezimfutshane (ngaphantsi kwe-100ms kumndilili).
- Asisebenzisi i-multi-row UPDATE kunye ne- DELETE ngenxa yenani elikhulu le-deadlocks - sihlaziya irekhodi enye kuphela ngexesha.
- Imibuzo isoloko isenziwa kuphela ngezalathisi-umbuzo onesicwangciso esipheleleyo sokuskena itafile ithetha kuthi ukulayisha ngaphezulu kwesiseko sedata kunye nokusilela kwayo.
La manyathelo asivumele ukuba sicudise phantse owona msebenzi uphezulu kwiiseva zeSQL. Noko ke, zaya zisanda iingxaki. Makhe sijonge kubo.
Iingxaki ngeSQL
- Ekubeni sisebenzise i-sharding ebhaliweyo, ukongeza i-shards entsha kwenziwa ngesandla ngabalawuli. Ngalo lonke eli xesha, ii-replicas zedatha ezikhawulezayo azikhange zinikezele izicelo.
- Njengoko inani leerekhodi kwitheyibhile likhula, isantya sokufakwa kunye nokuguqulwa siyancipha, xa ukongeza i-indexes kwitheyibhile ekhoyo, isantya sihla nge-multiple, ukudala kunye nokudalwa kwakhona kwee-indexes kuthatha ixesha lokunciphisa.
- Ukuba nexabiso elincinci leWindows ye-SQL Server kwimveliso yenza ulawulo lweziseko zophuhliso lube nzima
Kodwa eyona ngxaki inkulu
ukunyamezela iimpazamo
Iseva ye-SQL ye-Classic inokunyamezela iimpazamo ezimbi. Masithi uneseva enye kuphela yedatha kwaye iyasilela yonke iminyaka emithathu. Ngeli xesha, isayithi iphantsi kwemizuzu engama-20, oku kwamkelekile. Ukuba unamaseva angama-64, ke isiza siphantsi kanye kwiiveki ezintathu. Kwaye ukuba unamaseva angama-200, ke indawo ayisebenzi veki nganye. Le yingxaki.
Yintoni enokwenziwa ukuphucula ukunyamezela impazamo kwiseva yeSQL? I-Wikipedia isimema ukuba sakhe
Oku kufuna izixhobo ezibiza kakhulu: ukuphindaphinda okuninzi, i-fiber optics, ukugcinwa okwabelwanayo, kunye nokufakwa kwendawo yokugcina akusebenzi ngokuthembekileyo: malunga ne-10% ye-inclusions ekupheleni kokungaphumeleli kwe-backup node kunye nesitimela emva kwe-node enkulu.
Kodwa eyona nto ingalunganga yeqela elifumanekayo kakhulu kukufumaneka kwe-zero kwimeko yokusilela kwiziko ledatha apho ikhoyo. I-Odnoklassniki inamaziko amane edatha, kwaye kufuneka siqinisekise umsebenzi kwenye yazo xa kukho ukungaphumeleli ngokupheleleyo.
Kuba oku umntu angasebenzisa
Zonke ezi ngxaki zazifuna isisombululo esikhulu kwaye saqhubeka nohlalutyo lwazo oluneenkcukacha. Apha kufuneka siqhelane nento eyenziwa ngu-SQL Server ngokwesiseko-intengiselwano.
Intengiselwano elula
Cinga ngeyona ntengiselwano ilula ukusuka kwindawo yokujonga umdwelisi we-SQL osetyenzisiweyo: ukongeza ifoto kwi-albhamu. Iialbham kunye neefoto zigcinwa kwiipleyiti ezahlukeneyo. Icwecwe linekhawuntara yeefoto zikawonke-wonke. Ke intengiselwano enjalo yahlulwe ngokwala manyathelo alandelayo:
- Sivala icwecwe ngesitshixo.
- Yenza ingeniso kwitafile yeefoto.
- Ukuba ifoto inesimo sikawonke-wonke, ngoko sigqibezela ikhawuntara yeefoto zikawonke-wonke kwi-albhamu, sihlaziye irekhodi kwaye senze intengiselwano.
Okanye kwipseudocode:
TX.start("Albums", id);
Album album = albums.lock(id);
Photo photo = photos.create(β¦);
if (photo.status == PUBLIC ) {
album.incPublicPhotosCount();
}
album.update();
TX.commit();
Siyabona ukuba eyona meko ixhaphakileyo yentengiselwano yeshishini kukufunda idatha kwisiseko sedatha kwimemori yeseva yesicelo, utshintshe into kwaye ugcine amaxabiso amatsha kwisiseko sedatha. Ngokwesiqhelo kwintengiselwano enjalo sihlaziya amaziko amaninzi, iitafile ezininzi.
Xa intengiselwano yenziwe, ukuguqulwa kwangaxeshanye kwedatha efanayo ukusuka kwenye inkqubo inokwenzeka. Ngokomzekelo, i-Antispam inokugqiba isigqibo sokuba umsebenzisi ngandlela-thile ukrokre kwaye ngoko ke zonke iifoto zomsebenzisi akufanele zibe sesidlangalaleni, kufuneka zithunyelwe ukumodareyitha, oku kuthetha ukutshintsha i-photo.status kwelinye ixabiso kunye nokucima izinto zokubala ezihambelanayo. Ngokucacileyo, ukuba lo msebenzi uya kwenzeka ngaphandle kweziqinisekiso ze-atomicity yesicelo kunye nokwahlukaniswa kohlengahlengiso olukhuphisanayo, njengaku.
Uninzi lwekhowudi enjalo elawula amashishini ahlukeneyo ngaphakathi kwentengiselwano enye ibhaliwe kubo bonke ubukho be-Odnoklassniki. Ngokutsho amava yokufudukela NoSQL nge
Ezinye iimfuno ezibaluleke ngokulinganayo zazi:
- Kwimeko yokungaphumeleli kweziko ledatha, kokubili ukufunda nokubhala kwisitoreji esitsha kufuneka kufumaneke.
- Ukugcina isantya sangoku sophuhliso. Oko kukuthi, xa usebenza kunye ne-repository entsha, inani lekhowudi kufuneka libe malunga nokulingana, akufanele kubekho imfuneko yokongeza into kwindawo yokugcina, ukuphuhlisa i-algorithms yokusombulula iingxabano, ukugcina i-indexes yesibini, njl.
- Isantya sogcino olutsha kufuneka sikhawuleze ngokwaneleyo, kokubini xa kufundwa idatha naxa kusetyenzwa iintengiselwano, nto leyo ethetha ukuba ingqongqo ngokwezemfundo, injongo jikelele, kodwa izisombululo ezicothayo, ezifana
izibophelelo zesigaba ezibini . - Ukukala okuzenzekelayo kubhabho.
- Ukusebenzisa iiseva ezinexabiso eliphantsi, ngaphandle kwesidingo sokuthenga amaqhekeza entsimbi angaqhelekanga.
- Ithuba lokuphuhliswa kokugcinwa ngabaphuhlisi benkampani. Ngamanye amazwi, okuphambili kwanikwa izisombululo zemithombo yomnini okanye evulekileyo, ngokukhethekileyo kwiJava.
Izigqibo, izigqibo
Ukuhlalutya izisombululo ezinokwenzeka, size nokhetho olunokubakho lwezakhiwo ezimbini:
Eyokuqala kukuthatha nayiphi na iseva ye-SQL kwaye izalisekise ukunyamezela kwempazamo efunekayo, indlela yokulinganisa, i-failover clustering, isisombululo sengxabano, kunye nokusabalalisa, okuthembekileyo, kunye nokukhawuleza kweentengiselwano ze-ACID. Sivavanye olu khetho njengento engenamsebenzi kwaye ichitha ixesha.
Inketho yesibini kukuthatha i-NoSQL yokugcina esele yenziwe nge-scaling ephunyeziweyo, i-failover clustering, isisombululo sengxabano kunye nokuphumeza ukuthengiselana kunye ne-SQL ngokwakho. Ekuboneni kokuqala, kwanomsebenzi wokuphumeza i-SQL, ungakhankanyi ukuthengiselana kwe-ACID, kubonakala ngathi ngumsebenzi weminyaka. Kodwa ke siye saqaphela ukuba iseti yeempawu zeSQL esizisebenzisayo xa siqhuba zikude kwi-ANSI SQL njengoko
Cassandra kunye neCQL
Ke, yintoni enika umdla ngeCassandra, zeziphi iimpawu enazo?
Okokuqala, apha ungenza iitafile ngenkxaso yeentlobo ezahlukeneyo zedatha, ungenza KHETHA okanye UHLAZIYA ngesitshixo sokuqala.
CREATE TABLE photos (id bigint KEY, owner bigint,β¦);
SELECT * FROM photos WHERE id=?;
UPDATE photos SET β¦ WHERE id=?;
Ukuqinisekisa ukuhambelana kwedatha ye-replica, uCassandra usebenzisa
Indlela yokufikelela xa sifikelela kwiindawo ezintathu kwaye sifumana impendulo kwezimbini ibizwa ngokuba
Olunye uncedo lweCassandra yiBatchlog, isixhobo esiqinisekisa ukuba utshintsho olwenzayo lusetyenziswa ngokupheleleyo okanye alusetyenziswanga ngokupheleleyo kwiphakheji. Oku kusivumela ukuba sisombulule i-A kwi-ACID - i-atomicity ngaphandle kwebhokisi.
Eyona nto ikufutshane kwintengiselwano eCassandra yinto ebizwa ngokuba "
Oko sikuphosileyo eCassandra
Ke, kuye kwafuneka ukuba siphumeze iintengiselwano zokwenyani ze-ACID eCassandra. Ngoncedo esinokuthi siphumeze ngokulula ezinye izinto ezimbini ezifanelekileyo ze-DBMS yakudala: izalathisi ezikhawulezayo ezingaguqukiyo, eziya kusivumela ukuba sikhethe idatha kungekuphela nje ngesitshixo esiphambili, kunye nejenereyitha eqhelekileyo yee-ID zokunyusa okuzenzekelayo.
C*Nye
Ngoko i-DBMS entsha yazalwa C*Nye, ebandakanya iindidi ezintathu zeendawo zeseva:
- Iindawo zokugcina zi (phantse) iiseva eziqhelekileyo zeCassandra ezinoxanduva lokugcina idatha kwiidrive zendawo. Njengoko umthwalo kunye nomthamo wedatha ukhula, inani labo linokunyuswa ngokulula ukuya kumashumi kunye namakhulu.
- Abaququzeleli bentengiselwano - qinisekisa ukwenziwa kweentengiselwano.
- Abathengi bangabancedisi bezicelo abasebenzisa imisebenzi yezoshishino kwaye baqalise ukuthengiselana. Kusenokubakho amawakawaka abaxumi abanjalo.
Abancedisi bazo zonke iindidi bakwiqela eliqhelekileyo, sebenzisa iprotocol yomyalezo wangaphakathi weCassandra ukunxibelelana kunye kwaye
Abaxhasi
Endaweni yabaqhubi abaqhelekileyo, imowudi yeFat Client isetyenziswa. I-node enjalo ayigcini idatha, kodwa inokusebenza njengomququzeleli wokwenziwa kwesicelo, oko kukuthi, uMthengi ngokwawo usebenza njengomququzeleli wezicelo zakhe: i-polls replicas yokugcina kwaye isombulule iingxabano. Oku akukona nje ukuthembeka kwaye ngokukhawuleza kunomqhubi oqhelekileyo, ofuna unxibelelwano kunye nomququzeleli ode, kodwa kwakhona ikuvumela ukuba ulawule ukuhanjiswa kwezicelo. Ngaphandle kwentengiselwano evulekileyo kumxhasi, izicelo zithunyelwa kwiindawo zokugcina. Ukuba umxhasi uvule ukuthengiselana, ke zonke izicelo ngaphakathi kwentengiselwano zithunyelwa kumququzeleli wentengiselwano.
C * One Transaction Coordinator
Umnxibelelanisi yinto esiyiphumezileyo kwi-C*One ukusuka ekuqaleni. Inoxanduva lokulawula iitransekshini, izitshixo, kunye nomyalelo wokwenziwa kweentengiselwano.
Kwitransekshini nganye yenkonzo, umnxibelelanisi uvelisa isitampu sexesha: nganye elandelayo inkulu kuneyo yentengiselwano yangaphambili. Kuba inkqubo yokusombulula impixano eCassandra isekwe kwizitampu zexesha (zeerekhodi ezimbini eziphikisanayo, isitampu sexesha samva nje sibonwa sifanelekile), impixano iya kuhlala isonjululwa ngokuxhasa intengiselwano elandelayo. Ngaloo ndlela siye sazalisekisa
Izitshixo
Ukuqinisekisa ukubekwa wedwa, sigqibe kwelokuba sisebenzise eyona ndlela ilula - izitshixo ezingenathemba kwisitshixo esiphambili serekhodi. Ngamanye amazwi, kwintengiselwano, irekhodi kufuneka itshixiwe kuqala, emva koko ifundwe, ilungiswe, kwaye igcinwe. Kuphela kusemva kokuzibophelela okuyimpumelelo apho irekhodi inokuvulwa khona ukuze iintengiselwano ezikhuphisanayo zikwazi ukuyisebenzisa.
Ukuphumeza isitshixo esinjalo kulula kwindawo engasasazwanga. Kwinkqubo esasazwayo, kukho iindlela ezimbini eziphambili: nokuba kuphunyezwe ukutshixa okusasaziweyo kwi-cluster, okanye ukuhanjiswa kweentengiselwano ukwenzela ukuba iitransekshini ezibandakanya irekhodi efanayo zihlala zisenzwa ngumququzeleli ofanayo.
Ekubeni kwimeko yethu idatha sele isasazwe phakathi kwamaqela eentengiselwano zendawo kwi-SQL, kwagqitywa ukuba kwabelwe amaqela eentengiselwano zendawo kubaququzeleli: umququzeleli omnye wenza zonke iintengiselwano kunye nomqondiso ukusuka ku-0 ukuya ku-9, okwesibini - kunye nomqondiso ovela 10 ukuya kwi-19, njalo njalo. Ngenxa yoko, nganye yeemeko zomququzeleli uba yinkosi yeqela lentengiselwano.
Emva koko izitshixo zinokuphunyezwa njenge-banal HashMap kwinkumbulo yomququzeleli.
Ukwaliwa kwabaququzeleli
Ekubeni umnxibelelanisi omnye ekhonza kuphela iqela leentengiselwano, kubaluleke kakhulu ukukhawuleza ukugqiba inyaniso yokusilela kwayo ukuze umzamo ophindaphindiweyo wokuphumeza intengiselwano ungaphakathi kwexesha. Ukwenza oku kukhawuleze kwaye kuthembeke, sisebenzise iprothokholi yekhoram enemeshed ngokupheleleyo:
Iziko ngalinye ledatha libamba ubuncinci iindawo ezimbini zomnxibelelanisi. Ngamaxesha athile, umnxibelelanisi ngamnye uthumela umyalezo wokubetha kwentliziyo kwabanye abaququzeleli aze abaxelele ngokusebenza kwawo, kunye nangexesha lokugqibela efumana imiyalezo yokubetha kwentliziyo apho abaququzeleli kwiqela.
Ukufumana ulwazi olufanayo kwabanye njengenxalenye yemiyalezo yabo yokubetha kwentliziyo, umnxibelelanisi ngamnye uzigqibela ngokwakhe ukuba zeziphi iindawo zeqela ezisebenzayo nezingasebenziyo, ekhokelwa ngumgaqo wekhoram: ukuba i-node X ifumene ulwazi kuninzi lweenodi kwiqela malunga. ulwamkelo oluqhelekileyo lwemiyalezo esuka kwindawo engu-Y, emva koko, uY uyasebenza. Ngokwahlukileyo, kamsinya nje ukuba uninzi luxela imiyalezo elahlekileyo ukusuka kwindawo engu-Y, emva koko u-Y akaphumelelanga. Okumangalisayo kukuba, ukuba ikhoram ixelela i-node X ukuba ayifumani eminye imiyalezo esuka kuyo, i-node engu-X ngokwayo iya kuzithatha ukuba ayiphumelelanga.
Imiyalezo ye-heartbeat ithunyelwa kwi-frequency ephezulu, malunga namaxesha angama-20 ngesibini, kunye nexesha le-50 ms. KwiJava, kunzima ukuqinisekisa impendulo yesicelo ngaphakathi kwe-50ms ngenxa yamaxesha okumisa okuthelekisa okubangelwa ngumqokeleli wenkunkuma. Siye sakwazi ukufezekisa eli xesha lokuphendula ngokusebenzisa umqokeleli wenkunkuma ye-G1, ekuvumela ukuba uchaze injongo yexesha lokumisa i-GC. Nangona kunjalo, ngamanye amaxesha, kunqabile, umqokeleli uyeka ukuya ngaphaya kwe-50 ms, nto leyo inokukhokelela ekubhaqweni kokusilela kobuxoki. Ukuze ugweme oku, umququzeleli akayi ngxelo yokungaphumeleli kwe-node ekude xa umyalezo wokuqala we-heartbeat evela kuyo ulahlekile, kuphela ukuba ezininzi ngokulandelelana zilahlekile.Ngoko sikwazile ukufumanisa ukungaphumeleli kwe-node yomququzeleli kwi-200 ms.
Kodwa akwanelanga ukuqonda ngokukhawuleza ukuba yeyiphi i-node eyekile ukusebenza. Kukho into ekufuneka yenziwe ngayo.
Ugcino
Iskimu seklasiki sithatha ukuba kwimeko yokusilela kwenkosi ukusungula unyulo lwentsha isebenzisa enye
Masithi sifuna ukwenza intengiselwano kwiqela lama-50. Masichaze iskimu sokutshintsha kwangaphambili, oko kukuthi, iinodi eziya kuqhuba iintengiselwano zeqela le-50 kwimeko yokusilela komnxibelelanisi oyintloko. Injongo yethu kukugcina inkqubo kwaye isebenza kwimeko yokungaphumeleli kweziko ledatha. Masichaze ukuba ukugcinwa kokuqala kuya kuba yi-node evela kwelinye iziko ledatha, kwaye i-reserve yesibini iya kuba yi-node esuka kwisithathu. Olu dweliso lukhethwe kanye kwaye alutshintshi de i-topology ye-cluster itshintshe, oko kukuthi, de i-nodes entsha ingene kuyo (okwenzeka kunqabile kakhulu). Umyalelo wokukhetha inkosi entsha esebenzayo kwimeko yokungaphumeleli kwendala iya kuhlala inje: ugcino lokuqala luya kuba yinkosi esebenzayo, kwaye ukuba uyekile ukusebenza, ukugcinwa kwesibini kuya kuba.
Iskimu esinjalo sithembeke ngakumbi kune-algorithm yendalo yonke, ekubeni kusebenze inkosi entsha, kwanele ukugqiba inyaniso yokungaphumeleli komdala.
Kodwa abathengi baya kuqonda njani ukuba yeyiphi iinkosi ezisebenzayo ngoku? Akunakwenzeka ukuthumela ulwazi kumawaka abathengi kwi-50 ms. Kungenzeka ukuba umxhasi athumele isicelo sokuvula i-transaction, engazi ukuba le nkosi ayisasebenzi, kwaye isicelo siya kuxhoma ngexesha. Ukuthintela oku kungenzeki, abathengi bathumela isicelo sokuvula ukuthengiselana kwinkosi yeqela kunye nokugcinwa kwayo zombini ngexesha elinye, kodwa kuphela lowo uyinkosi esebenzayo okwangoku uya kuphendula kwesi sicelo. Lonke unxibelelwano olulandelayo ngaphakathi kwentengiselwano luya kwenziwa ngumthengi kuphela ngenkosi esebenzayo.
Iinkosi ezilindileyo zibeka izicelo ezifunyenweyo zeetransekshini ezingezizo ezazo kumgca wentengiselwano engekazalwa, apho zigcinwa khona ixesha elithile. Ukuba inkosi esebenzayo iyafa, inkqubo entsha ye-master icela ukuvula ukuthengiselana ukusuka kumgca wayo kwaye iphendule kumxhasi. Ukuba umxhasi sele ekwazi ukuvula ukuthengiselana kunye nenkosi endala, ke impendulo yesibini ayinakwa (kwaye, ngokucacileyo, ukuthengiselana okunjalo akuyi kugqiba kwaye kuya kuphinda kuphindwe ngumxhasi).
Isebenza njani intengiselwano
Masithi umxhasi uthumele isicelo kumququzeleli ukuba avule intengiselwano yelo kunye nequmrhu elinesitshixo esinjalo nesingundoqo. Umnxibelelanisi utshixa eli qumrhu kwaye alibeke kwitafile yokutshixa kwinkumbulo. Ukuba kuyimfuneko, umququzeleli ufunda eli qumrhu kwivenkile kwaye ugcina idatha efunyenweyo kwisimo sokuthengiselana kwimemori yomququzeleli.
Xa umxhasi efuna ukutshintsha idatha kwi-transaction, ithumela isicelo kumququzeleli ukuba aguqule iqumrhu, kwaye umququzeleli ubeka idatha entsha kwitheyibhile yesimo sokuthengiselana kwimemori. Oku kugqiba ukurekhoda - indawo yokugcina ayibhalwanga.
Xa umxhasi ecela eyakhe idatha elungisiweyo njengenxalenye yentengiselwano esebenzayo, umnxibelelanisi wenza ngolu hlobo:
- ukuba i-ID sele ikhona kwintengiselwano, ngoko idatha ithathwa kwimemori;
- ukuba akukho-ID kwimemori, ke idatha elahlekileyo ifundwa kwiindawo zokugcina, ezidityaniswe nezo sele zisememori, kwaye umphumo ubuyiselwa kumxhasi.
Ngaloo ndlela, umxhasi unokufunda utshintsho lwakhe, kwaye abanye abathengi ababoni olu tshintsho, kuba zigcinwe kuphela kwimemori yomququzeleli, azikabikho kwi-Cassandra nodes.
Xa umxhasi ethumela isibophelelo, urhulumente owawusesikhumbuzweni senkonzo ugcinwa ngumnxibelelanisi kwibhetshi engenisiweyo, kwaye ithunyelwe kwiivenkile zeCassandra njengebhetshi engenisiweyo. I-repositories yenza yonke into efunekayo ukuze le phakheji isetyenziswe kwi-atom (ngokupheleleyo), kwaye ibuyisele impendulo kumququzeleli, okhupha izitshixo kwaye uqinisekisa impumelelo yentengiselwano kumxhasi.
Kwaye ukubuyisela umva, umnxibelelanisi ufuna kuphela ukukhulula imemori egcinwe yimeko yentengiselwano.
Ngenxa yolu phuculo luchazwe ngasentla, siphumeze imigaqo ye-ACID:
- Iatomicity. Esi sisiqinisekiso sokuba akukho ntengiselwano iya kulungiswa ngokuyinxenye kwisistim, nokuba yonke imisetyenzana yayo iya kwenziwa, okanye akukho nanye kuzo eya kwenziwa. Kwimeko yethu, lo mgaqo ubonwa ngenxa yebhetshi efakiweyo eCassandra.
- Ukungqinelana. Intengiselwano nganye eyimpumelelo, ngokwenkcazo, yenza iziphumo ezisebenzayo kuphela. Ukuba, emva kokuvula ukuthengiselana kunye nokwenza ezinye zemisebenzi, kufunyenwe ukuba umphumo awuvumelekile, i-rollback yenziwa.
- ukubekwa wedwa. Xa intengiselwano yenziwe, ukuthengiselana okuhambelanayo akufanele kuchaphazele umphumo wayo. Iintengiselwano ezifanayo zibekwe zodwa kunye nezitshixo ezingenathemba kumnxibelelanisi. Ukufundwa ngaphandle kwentengiselwano, umgaqo wokuzibekela bucala kwinqanaba elizibophelele ngokuFunda uyahlonitshwa.
- Ukuzinza. Kungakhathaliseki ukuba zeziphi iingxaki kumanqanaba aphantsi - ukucima kwenkqubo, ukungaphumeleli kwe-hardware - utshintsho olwenziwa ngokugqitywa ngempumelelo kufuneka lugcinwe emva kokuqaliswa kokusebenza.
Ukufunda ngokwezalathisi
Masithathe itafile elula:
CREATE TABLE photos (
id bigint primary key,
owner bigint,
modified timestamp,
β¦)
Ine-ID (isitshixo sokuqala), umnini, kunye nomhla wohlengahlengiso. Kufuneka wenze isicelo esilula kakhulu - khetha idatha kumnini kunye nomhla wokutshintsha "ngomhla wokugqibela".
SELECT *
WHERE owner=?
AND modified>?
Ukuze uphendule umbuzo onjalo ngokukhawuleza, kwi-SQL DBMS yakudala, kufuneka wakhe isalathisi kwiikholomu (umnini, ulungisiwe). Singakwenza ngokulula oku, kuba ngoku sineziqinisekiso ze-ACID!
Izalathisi kwi-C*Enye
Kukho itafile yokuqala eneefoto apho i-ID yerekhodi isitshixo esiphambili.
Kwisalathiso, C*Enye yenza itafile entsha eyikopi yetafile yoqobo. Isitshixo siyafana nesalathiso senkcazo, kodwa ikwabandakanya isitshixo esiphambili serekhodi ukusuka kwitheyibhile yomthombo:
Ngoku umbuzo othi "umnini kwiiyure ezingama-XNUMX zokugqibela" unokuphinda ubhalwe njengokukhethiweyo kwenye itafile:
SELECT * FROM i1_test
WHERE owner=?
AND modified>?
Ukuhambelana kwedatha phakathi kweefoto zetafile yomthombo kunye nesalathisi i1 sigcinwa ngokuzenzekelayo ngumququzeleli. Ngokusekelwe kwi-schema yedatha yodwa, xa utshintsho lufunyenwe, umququzeleli uvelisa kwaye ukhumbule utshintsho kungekhona nje kwitheyibhile eyintloko, kodwa kunye noshintsho lweekopi. Akukho zenzo ezongezelelweyo ezenziwa ngetafile yesalathisi, iilogi azifundwanga, izitshixo azisetyenziswanga. Oko kukuthi, ukongeza izalathisi phantse akutyi izixhobo kwaye akuchaphazeli isantya sokusebenzisa uhlengahlengiso.
Ngoncedo lwe-ACID, sikwazile ukuphumeza izalathisi "njenge-SQL". Ziyahambelana, ziyakaleka, ziyakhawuleza, ziyahlanganiswa, kwaye zakhelwe kulwimi lombuzo lweCQL. Inkxaso yesalathisi ayifuni naluphi na utshintsho kwikhowudi yesicelo. Yonke into ilula, njengakwiSQL. Kwaye okona kubaluleke kakhulu, izalathisi azichaphazeli isantya sokwenziwa kohlengahlengiso kwitafile yentengiselwano yokuqala.
Kwenzekentoni
Siphuhlise i-C * One kwiminyaka emithathu edlulileyo kwaye sayifaka kumsebenzi worhwebo.
Sigqibele ngantoni? Makhe sivavanye oku kumzekelo wenkqubo engaphantsi yokucubungula nokugcina iifoto, enye yezona ntlobo zibalulekileyo zedatha kwinethiwekhi yoluntu. Oku akukho malunga nemizimba yeefoto ngokwazo, kodwa malunga nazo zonke iintlobo zolwazi lwemeta. Ngoku kwi-Odnoklassniki kukho malunga neebhiliyoni ezingama-20 zeerekhodi ezinjalo, inkqubo iqhuba i-80 lamawaka ezicelo zokufunda ngomzuzwana, ukuya kwi-8 amawaka eentengiselwano ze-ACID ngesekhondi ehambelana nokuguqulwa kwedatha.
Xa sisebenzisa i-SQL kunye ne-replication factor = 1 (kodwa kwi-RAID 10), i-photo meta-information yagcinwa kwi-cluster ekhoyo kakhulu ye-32 ye-Microsoft SQL Server machines (kunye ne-11 spares). Kwakhona, iiseva ezili-10 zabelwe ukugcina ii-backups. Iimoto ezixabisa kakhulu ezingama-50. Ngexesha elifanayo, inkqubo yasebenza kumthwalo olinganisiweyo, ngaphandle komda.
Emva kokufudukela kwinkqubo entsha, sifumene i-replication factor = 3 - ikopi kwiziko ngalinye ledatha. Inkqubo iqulethe i-63 yokugcina i-Cassandra nodes kunye noomatshini abaququzeleli be-6, kwiiseva ze-69 zizonke. Kodwa aba matshini bangabizi kakhulu, bebonke malunga ne-30% yeendleko zenkqubo yeSQL. Kule meko, umthwalo ugcinwa kwinqanaba le-30%.
Ngokusungulwa kwe-C * Enye, i-latency nayo yehla: kwi-SQL, umsebenzi wokubhala uthatha malunga ne-4,5 ms. Kwi-C * Enye - malunga ne-1,6 ms. Ubude bentengiselwano buyi-avareji engaphantsi kwe-40 ms, ukuzinikela kugqitywe nge-2 ms, ubude bokufunda nokubhala yi-2 ms ngokomndilili. Ipesenti ye-99 kuphela yi-3-3,1 ms, inani lexesha lokuyeka liye lehla ngamaxesha angama-100 - konke ngenxa yokusetyenziswa ngokubanzi kweengcamango.
Ukuza kuthi ga ngoku, uninzi lweenodi ze-SQL Server ziye zarhoxiswa, iimveliso ezintsha ziphuhliswa kuphela kusetyenziswa i-C * One. Silungelelanise iC*One ukuba isebenze kwilifu lethu
Ngoku sisebenzela ukuhambisa ezinye iindawo zokugcina efini - kodwa libali elahluke ngokupheleleyo elo.
umthombo: www.habr.com