Kuze kube muva nje, i-Odnoklassniki igcine cishe u-50 TB wedatha ecutshungulwe ngesikhathi sangempela ku-SQL Server. Ngomthamo onjalo, cishe akunakwenzeka ukunikeza ukufinyelela okusheshayo nokuthembekile, ngisho nokubekezelela ukwehluleka kwesikhungo sedatha usebenzisa i-SQL DBMS. Ngokuvamile, ezimweni ezinjalo, enye ye-NoSQL storages isetshenziswa, kodwa akuyona yonke into engadluliselwa ku-NoSQL: ezinye izinhlangano zidinga iziqinisekiso zokwenziwa kwe-ACID.
Lokhu kwasiholela ekusetshenzisweni kwesitoreji se-NewSQL, okungukuthi, i-DBMS enikeza ukubekezelelana kwamaphutha, ukulinganisa nokusebenza kwezinhlelo ze-NoSQL, kodwa ngesikhathi esifanayo ukugcina i-ACID iqinisekisa ukuthi ijwayele izinhlelo zakudala. Zimbalwa izinhlelo zezimboni ezisebenzayo zalesi sigaba esisha, ngakho-ke sisebenzise uhlelo olunjalo ngokwethu futhi salufaka emsebenzini wokuhweba.
Isebenza kanjani nokuthi kwenzekeni - funda ngaphansi kokusika.
Namuhla, izethameli zenyanga ze-Odnoklassniki zingaphezu kwezigidi ezingu-70 zezivakashi ezihlukile. Thina
Besilokhu sisebenzisa i-Cassandra kusukela ngo-2010, siqala ngenguqulo 0.6. Namuhla kunamaqoqo amaningana asebenzayo. Iqoqo elishesha kakhulu liqhuba ukusebenza okungaphezu kwezigidi ezi-4 ngomzuzwana, kanti izitolo ezinkulu kakhulu zingu-260 TB.
Kodwa-ke, lawa wonke amaqoqo ajwayelekile e-NoSQL asetshenziselwa ukugcinwa
Ukuze sisabalalise idatha kuwo wonke ama-node e-SQL Server, sisebenzise kokubili okuqondile nokuvundlile
Siyabonga ngokwabelana kanye nokusheshisa i-SQL:
- Asizisebenzisi izithiyo zokhiye bakwamanye amazwe, njengoba lapho sabiwa i-ID yebhizinisi ingase ibekwe kwenye iseva.
- Asizisebenzisi izinqubo ezigciniwe nezibangeli ngenxa yomthwalo owengeziwe ku-DBMS CPU.
- Asikusebenzisi JOIN ngenxa yakho konke okungenhla kanye nokufundwa okungahleliwe okuningi kudiski.
- Ngaphandle komsebenzi, sisebenzisa ileveli yokuzihlukanisa ethi Funda Ukungazibophezeli ukuze sinciphise izikhawu.
- Senza imisebenzi emifushane kuphela (ngokwesilinganiso emifushane kuno-100 ms).
- Asisebenzisi i-UPDATE kanye ne-SUSA yemigqa eminingi ngenxa yenani elikhulu le-deadlocks - sibuyekeza irekhodi elilodwa kuphela ngesikhathi.
- Sihlala senza imibuzo kuma-index kuphela - umbuzo onohlelo oluphelele lokuskena ithebula lethu kusho ukulayisha ngokweqile isizindalwazi nokwenza ukuthi yehluleke.
Lezi zinyathelo zisivumele ukuthi sicindezele cishe ukusebenza okuphezulu kumaseva e-SQL. Nokho, izinkinga zaba ziningi kakhulu. Ake sibheke kubo.
Izinkinga nge-SQL
- Njengoba sisebenzisa i-sharding yokuzibhalela, ukungeza ama-shards amasha kwenziwa abalawuli mathupha. Sonke lesi sikhathi, izifaniso zedatha ezingakala bezingasebenzisi izicelo.
- Njengoba inani lamarekhodi kuthebula likhula, isivinini sokufaka nokuguqulwa siyehla; lapho wengeza izinkomba kuthebula elikhona, isivinini sehla ngento ethile; ukudalwa nokudalwa kabusha kwezinkomba kwenzeka ngesikhathi sokuphumula.
- Ukuba nenani elincane le-Windows ye-SQL Server ekukhiqizeni kwenza ukuphathwa kwengqalasizinda kube nzima
Kodwa inkinga enkulu
ukubekezelelana kwamaphutha
Iseva ye-SQL yakudala inokubekezelelwa okungalungile kwamaphutha. Ake sithi uneseva yedatha eyodwa kuphela, futhi yehluleka kanye njalo eminyakeni emithathu. Ngalesi sikhathi isayithi liphansi imizuzu engu-20, okwamukelekayo. Uma unamaseva angama-64, isiza siphansi kanye njalo emavikini amathathu. Futhi uma unamaseva angama-200, isayithi alisebenzi masonto onke. Lokhu kuyinkinga.
Yini engenziwa ukuze kuthuthukiswe ukubekezelelana kwamaphutha kweseva ye-SQL? I-Wikipedia isimema ukuthi sakhe
Lokhu kudinga inqwaba yemishini ebizayo: ukuphindaphinda okuningi, i-fiber optical, isitoreji esabiwe, kanye nokufakwa kwendawo yokugcina akusebenzi ngokuthembekile: cishe u-10% wokushintsha uphela ngokuhluleka kwe-node yokusekelayo njengesitimela ngemuva kwe-node eyinhloko.
Kodwa okubi okuyinhloko kwaleli qoqo elitholakala kakhulu ukutholakala kwe-zero uma isikhungo sedatha esikuso sihluleka. I-Odnoklassniki inezikhungo ezine zedatha, futhi sidinga ukuqinisekisa ukusebenza uma kwenzeka ukwehluleka okuphelele kwesinye sazo.
Ukuze lokhu singasebenzisa
Zonke lezi zinkinga zazidinga ikhambi eliqinile, futhi saqala ukuzihlaziya ngokuningiliziwe. Lapha sidinga ukujwayelana nalokho okwenziwa yi-SQL Server ikakhulukazi - ukuthengiselana.
Ukuthenga okulula
Ake sicabangele okwenziwayo okulula kakhulu, ukusuka endaweni yokubuka yomhleli we-SQL osetshenzisiwe: ukwengeza isithombe ku-albhamu. Ama-albhamu nezithombe zigcinwa kumapuleti ahlukene. I-albhamu inekhawunta yezithombe zomphakathi. Khona-ke ukuthengiselana okunjalo kuhlukaniswa ngezinyathelo ezilandelayo:
- Sikhiya i-albhamu ngokhiye.
- Dala okufakiwe kuthebula lesithombe.
- Uma isithombe sinesimo esisesidlangalaleni, bese wengeza isibali sesithombe esisesidlangalaleni ku-albhamu, buyekeza irekhodi bese wenza okwenziwayo.
Noma nge-pseudocode:
TX.start("Albums", id);
Album album = albums.lock(id);
Photo photo = photos.create(…);
if (photo.status == PUBLIC ) {
album.incPublicPhotosCount();
}
album.update();
TX.commit();
Siyabona ukuthi isimo esivame kakhulu sokushintshana kwebhizinisi ukufunda idatha kusuka kusizindalwazi kuya kumemori yeseva yohlelo lokusebenza, ushintshe okuthile futhi ugcine amanani amasha kusizindalwazi. Ngokuvamile ekwenzeni okunjalo sibuyekeza izinhlangano ezimbalwa, amathebula amaningana.
Lapho wenza umsebenzi, ukuguqulwa ngesikhathi esisodwa kwedatha efanayo kusuka kwenye isistimu kungenzeka. Isibonelo, i-Antispam ingase inqume ukuthi umsebenzisi ngandlela thize uyasolisa ngakho-ke zonke izithombe zomsebenzisi akufanele zisaba sesidlangalaleni, kudingeka zithunyelwe ukuze zihlolwe, okusho ukushintsha isimo sesithombe sibe elinye inani nokuvala izinto zokubala ezihambisanayo. Ngokusobala, uma lokhu kusebenza kwenzeka ngaphandle kweziqinisekiso ze-atomicity yohlelo lokusebenza kanye nokuhlukaniswa kwezinguquko ezincintisanayo, njengaku.
Ikhodi eminingi efanayo, ekhohlisa amabhizinisi ahlukahlukene ngaphakathi kokuthengiselana okukodwa, ibhalwe kukho konke ukubakhona kwe-Odnoklassniki. Ngokusekelwe kokuhlangenwe nakho kokuthuthela ku-NoSQL kusuka
Okunye, okungabalulekile kangako, izimfuneko kwakuyizi:
- Uma isikhungo sedatha sihluleka, kokubili ukufunda nokubhalela endaweni yokugcina entsha kufanele kutholakale.
- Ukugcina isivinini sokuthuthukiswa samanje. Okusho ukuthi, lapho usebenza nenqolobane entsha, inani lekhodi kufanele licishe lifane; akumele kube nesidingo sokwengeza noma yini endaweni yokugcina, ukuthuthukisa ama-algorithms okuxazulula izingxabano, ukugcina izinkomba zesibili, njll.
- Ijubane lesitoreji esisha bekufanele libe phezulu kakhulu, lapho kufundwa idatha nalapho kucutshungulwa ukuthengiselana, okwakusho ukuthi izixazululo eziqinile ezifundweni, zomhlaba wonke, kodwa ezihamba kancane, njengokuthi, ngokwesibonelo, bezingasebenzi.
izibophezelo zezigaba ezimbili . - Ukukala okuzenzakalelayo lapho undiza.
- Ukusebenzisa amaseva ashibhile avamile, ngaphandle kwesidingo sokuthenga i-hardware engavamile.
- Amathuba okuthuthukiswa kwesitoreji ngabathuthukisi benkampani. Ngamanye amazwi, kwanikezwa kuqala izixazululo zobunikazi noma zomthombo ovulekile, okungcono kakhulu ku-Java.
Izinqumo, izinqumo
Ukuhlaziya izixazululo ezingaba khona, sifike ezinqumweni ezimbili ezingaba zezakhiwo:
Okokuqala ukuthatha noma iyiphi iseva ye-SQL futhi isebenzise ukubekezelelana kwamaphutha okudingekayo, indlela yokukala, iqoqo le-failover, ukuxazululwa kwezingxabano nokusatshalaliswa, okuthembekile nokusheshayo kwe-ACID. Silinganise le nketho njengengeyona into encane futhi ecindezela abasebenzi.
Inketho yesibili ukuthatha isitoreji esenziwe ngomumo se-NoSQL nesikali esifakiwe, iqoqo le-failover, ukuxazulula izingxabano, nokusebenzisa ukuthengiselana kanye ne-SQL ngokwakho. Uma uthi nhlá, ngisho nomsebenzi wokusebenzisa i-SQL, ingasaphathwa eye-ACID, ubukeka njengomsebenzi ozothatha iminyaka. Kodwa-ke sabona ukuthi isici se-SQL esisisebenzisayo siqhelelene ne-ANSI SQL njengoba
I-Cassandra kanye ne-CQL
Ngakho-ke, yini ethokozisayo ngoCassandra, yimaphi amakhono enawo?
Okokuqala, lapha ungakha amathebula asekela izinhlobo ezihlukahlukene zedatha, ungenza KHETHA noma UBUYEKEZE kukhiye oyinhloko.
CREATE TABLE photos (id bigint KEY, owner bigint,…);
SELECT * FROM photos WHERE id=?;
UPDATE photos SET … WHERE id=?;
Ukuqinisekisa ukufana kwedatha, i-Cassandra isebenzisa
Indlela lapho sithinta ama-node amathathu futhi sithola impendulo evela kwamabili ibizwa
Enye inzuzo ye-Cassandra i-Batchlog, indlela eqinisekisa ukuthi iqoqo lezinguquko ozenzayo lisetshenziswa ngokugcwele noma alisetshenziswa nhlobo. Lokhu kusivumela ukuthi sixazulule i-A ku-ACID - i-athomu ngaphandle kwebhokisi.
Okusondele kakhulu ekuthengiseni eCassandra yilokho okubizwa ngokuthi “
Yini esasishoda ngayo eCassandra
Ngakho-ke, bekufanele senze ukuthengiselana kwangempela kwe-ACID eCassandra. Ngokusebenzisa esingasebenzisa kalula ezinye izici ezimbili ezikahle ze-DBMS yakudala: izinkomba ezisheshayo ezingaguquki, ezingasivumela ukuthi senze ukukhetha kwedatha hhayi ngokhiye oyinhloko, kanye nejeneretha evamile yama-ID akhulisa ngokuzenzakalela e-monotonic.
C*Eyodwa
Ngakho kwazalwa i-DBMS entsha C*Eyodwa, ehlanganisa izinhlobo ezintathu zamanodi eseva:
- Isitoreji - (cishe) amaseva ajwayelekile e-Cassandra anesibopho sokugcina idatha kumadiski endawo. Njengoba umthwalo nevolumu yedatha ikhula, ubuningi bayo bungalinganiswa kalula kumashumi namakhulu.
- Abaxhumanisi bokwenziwe - qinisekisa ukwenziwa kwemisebenzi.
- Amaklayenti amaseva ezicelo asebenzisa imisebenzi yebhizinisi futhi aqalise ukuthengiselana. Kungaba nezinkulungwane zamaklayenti anjalo.
Amaseva azo zonke izinhlobo ayingxenye yeqoqo elivamile, sebenzisa umthetho olandelwayo we-Cassandra wangaphakathi ukuze uxhumane
Amakhasimende
Esikhundleni sabashayeli abajwayelekile, kusetshenziswa imodi ye-Fat Client. I-node enjalo ayigcini idatha, kodwa ingasebenza njengomxhumanisi wokwenziwa kwesicelo, okungukuthi, Iklayenti ngokwalo lisebenza njengomxhumanisi wezicelo zalo: libuza izifanekiso zesitoreji futhi lixazulule izingxabano. Lokhu akukona nje kuphela okunokwethenjelwa futhi okusheshayo kunomshayeli ojwayelekile, okudinga ukuxhumana nomxhumanisi oqhelile, kodwa futhi ikuvumela ukuba ulawule ukudluliswa kwezicelo. Ngaphandle komsebenzi ovuliwe eklayenti, izicelo zithunyelwa kumakhosombe. Uma iklayenti livule umsebenzi, zonke izicelo ezingaphakathi kokwenziwe zithunyelwa kumxhumanisi wokwenziwe.
C*One Transaction Coordinator
Umxhumanisi yinto esiyisebenzisele i-C*One kusukela ekuqaleni. Inesibopho sokuphatha okwenziwayo, izikhiya, kanye ne-oda okwenziwa ngalo okwenziwayo.
Ngokwenziwe ngakunye okunesevisi, umxhumanisi ukhiqiza isitembu sesikhathi: okwenziwayo ngakunye okulandelayo kukhulu kunokwenziwe kwangaphambilini. Njengoba uhlelo luka-Cassandra lokuxazulula izingxabano lusekelwe ezitembuni zesikhathi (zamarekhodi amabili angqubuzanayo, leso esinesitembu sesikhathi sakamuva sithathwa njengesamanje), ukungqubuzana kuzohlala kuxazululwa ngokuvuna okwenziwayo okulandelayo. Kanjalo saqalisa
Amalokhi
Ukuqinisekisa ukuhlukaniswa, sinqume ukusebenzisa indlela elula - izingidi ezingenathemba ngokusekelwe kukhiye oyinhloko werekhodi. Ngamanye amazwi, emsebenzini, irekhodi kufanele liqale likhiywe, bese lifundwa, lilungiswe, futhi lilondolozwe. Kuphela ngemva kokuzibophezela okuphumelelayo lapho irekhodi lingavulwa khona ukuze okwenziwayo okuqhudelanayo kukwazi ukulisebenzisa.
Ukusebenzisa ukukhiya okunjalo kulula endaweni engasatshalaliswa. Kusistimu esabalalisiwe, kunezinketho ezimbili eziyinhloko: noma sebenzisa ukukhiya okusabalalisiwe kuqoqo, noma ukusabalalisa okwenziwayo ukuze imisebenzi ehilela irekhodi elifanayo njalo isevisiwe ngumxhumanisi ofanayo.
Njengoba esimweni sethu idatha isivele yasakazwa phakathi kwamaqembu okuthengiselana kwendawo ku-SQL, kwanqunywa ukuthi kwabelwe amaqembu okuthengiselana wendawo kubaxhumanisi: umxhumanisi oyedwa wenza konke ukuthengiselana ngamathokheni kusuka ku-0 kuya ku-9, okwesibili - ngamathokheni kusuka ku-10 kuya ku-19, njalo njalo. Njengomphumela, isenzakalo ngasinye somxhumanisi siba umphathi weqembu lomsebenzi.
Khona-ke izingidi zingasetshenziswa ngendlela ye-banal HashMap enkumbulweni yomxhumanisi.
Ukwehluleka komxhumanisi
Njengoba umxhumanisi oyedwa esebenzela kuphela iqembu lemisebenzi, kubaluleke kakhulu ukunquma ngokushesha iqiniso lokwehluleka kwakho ukuze umzamo wesibili wokwenza umsebenzi uzophela. Ukwenza lokhu kusheshe futhi kuthembeke, sisebenzise umthetho olandelwayo oxhumeke ngokugcwele wekhoramu yesibetho senhliziyo:
Isikhungo sedatha ngasinye sibamba okungenani amanodi womxhumanisi amabili. Ngezikhathi ezithile, umxhumanisi ngamunye uthumela umlayezo wokushaya kwenhliziyo kwabanye abaxhumanisi futhi ebazisa ngokusebenza kwayo, kanye nokuthi yimiphi imilayezo yokushaya kwenhliziyo ayithole ivela kubaxhumanisi beqoqo okokugcina.
Ukuthola ulwazi olufanayo oluvela kwabanye njengengxenye yemilayezo yabo yokushaya kwenhliziyo, umxhumanisi ngamunye uzinqumela ukuthi yimaphi ama-cluster node asebenzayo nokuthi yimaphi angasebenzi, eqondiswa isimiso sekhoramu: uma i-node X ithole ulwazi oluvela kuningi lama-node kuqoqo mayelana nokujwayelekile. ukwamukela imilayezo evela endaweni engu-Y, bese , u-Y esebenza. Futhi okuphambene nalokho, ngokushesha nje lapho iningi libika imilayezo engekho evela endaweni engu-Y, khona-ke u-Y wenqabile. Kuyathakazelisa ukuthi uma ikhoramu yazisa i-node X ukuthi ayisatholi imilayezo evela kuyo, khona-ke i-node X ngokwayo izozibheka njengehlulekile.
Imilayezo yokushaya kwenhliziyo ithunyelwa ngokuvama okuphezulu, izikhathi ezingaba ngu-20 ngomzuzwana, nenkathi engu-50 ms. E-Java, kunzima ukuqinisekisa impendulo yohlelo lokusebenza phakathi kuka-50 ms ngenxa yobude obuqhathanisekayo bekhefu elibangelwa umqoqi kadoti. Sikwazile ukufeza lesi sikhathi sokuphendula sisebenzisa isiqoqi sikadoti se-G1, esisivumela ukuthi sicacise okuqondisiwe ngesikhathi sokumiswa kwe-GC. Kodwa-ke, ngezinye izikhathi, kuyaqabukela, umqoqi ukuma kancane kudlula i-50 ms, okungaholela ekutholweni kwephutha okungamanga. Ukuvimbela lokhu ukuthi kungenzeki, umxhumanisi akabiki ukwehluleka kwe-node eyihlane lapho umlayezo wokuqala wokushaya kwenhliziyo ovela kuwo unyamalala, kuphela uma abaningi benyamalala ngokulandelana.Yile ndlela esikwazi ngayo ukubona ukwehluleka kwe-node yomxhumanisi ngo-200. ms.
Kodwa akwanele ukuqonda ngokushesha ukuthi iyiphi i-node eyekile ukusebenza. Kudingeka senze okuthile ngalokhu.
Ukubhuka
Uhlelo lwakudala lubandakanya, uma kwenzeka ukwehluleka okuyinhloko, ukuqala ukhetho olusha kusetshenziswa okukodwa kwe
Ake sithi sifuna ukwenza ukuthengiselana eqenjini 50. Ake sinqume kusengaphambili uhlelo lokubuyisela, okungukuthi, yiziphi izindawo ezizokwenza ukuthengiselana eqenjini 50 uma kwenzeka ukwehluleka komxhumanisi oyinhloko. Umgomo wethu uwukugcina ukusebenza kwesistimu uma kwenzeka kwehluleka isikhungo sedatha. Ake sinqume ukuthi ukugcinwa kokuqala kuzoba yi-node evela kwesinye isikhungo sedatha, futhi indawo yesibili izoba yi-node esuka kwesithathu. Lolu hlelo lukhethwa kanye futhi alushintshi kuze kube yilapho i-topology yeqoqo ishintsha, okungukuthi, kuze kube yilapho ama-node amasha engena kulo (okwenzeka ngokungajwayelekile). Inqubo yokukhetha inkosi entsha esebenzayo uma endala ihluleka izohlale injengoba ilandelayo: i-reserve yokuqala izoba inkosi esebenzayo, futhi uma iyekile ukusebenza, i-reserve yesibili izoba inkosi esebenzayo.
Lolu hlelo luthembeke kakhulu kune-algorithm yendawo yonke, ngoba ukwenza kusebenze inkosi entsha kwanele ukucacisa ukwehluleka kwendala.
Kodwa amaklayenti azoqonda kanjani ukuthi iyiphi inkosi esebenzayo manje? Akunakwenzeka ukuthumela ulwazi ezinkulungwaneni zamaklayenti ngo-50 ms. Isimo singenzeka lapho iklayenti lithumela isicelo sokuvula umsebenzi, lingazi ukuthi le master ayisasebenzi, futhi isicelo sizophela. Ukuvimbela lokhu ukuthi kungenzeki, amaklayenti athumela ngokuqagela isicelo sokuvula ukuthengiselana kumphathi weqembu kanye nakho kokubili okugciniwe kwakhe ngesikhathi esisodwa, kodwa yilowo oyinkosi esebenzayo okwamanje ozophendula lesi sicelo. Iklayenti lizokwenza konke ukuxhumana okulandelayo ngaphakathi kokuthengiselana kuphela nenkosi esebenzayo.
Ikhophi yasenqolobaneni eyinhloko zibeka izicelo ezitholiwe zemisebenzi okungezona ezabo emgqeni wokwenza okungakazalwa, lapho zigcinwa khona isikhathi esithile. Uma oyinhloko esebenzayo efa, uchwepheshe omusha ucubungula izicelo zokuvula ukuthengiselana emgqeni wayo futhi aphendule iklayenti. Uma iklayenti selivele livule ukuthengiselana nenkosi endala, khona-ke impendulo yesibili ayinakwa (futhi, ngokusobala, ukuthengiselana okunjalo ngeke kuqede futhi kuzophindwa yiklayenti).
Indlela okwenziwa ngayo umsebenzi
Ake sithi iklayenti lithumele isicelo kumxhumanisi sokuvula umsebenzi webhizinisi elinjalo nokhiye oyinhloko. Umxhumanisi ukhiya leli bhizinisi futhi alibeke etafuleni lokukhiya ngenkumbulo. Uma kudingekile, umxhumanisi ufunda leli bhizinisi endaweni yokugcina futhi agcine idatha ewumphumela esimweni somsebenzi kunkumbulo yomxhumanisi.
Uma iklayenti lifuna ukushintsha idatha kumsebenzi, lithumela isicelo kumxhumanisi ukuze alungise ibhizinisi, futhi umxhumanisi ubeka idatha entsha kuthebula lesimo sokwenziwe kumemori. Lokhu kuqeda ukurekhoda - akukho okurekhodiwe okwenziwa endaweni yokubeka.
Uma iklayenti licela idatha yalo eshintshiwe njengengxenye yomsebenzi osebenzayo, umxhumanisi wenza ngale ndlela elandelayo:
- uma i-ID isivele iku-transaction, khona-ke idatha ithathwa kumemori;
- uma ingekho i-ID enkumbulweni, khona-ke idatha elahlekile ifundwa ezindaweni zokugcina, kuhlanganiswe nalezo esezivele zisenkumbulweni, futhi umphumela unikezwa iklayenti.
Ngakho-ke, iklayenti lingakwazi ukufunda izinguquko zalo, kodwa amanye amaklayenti awaboni lezi zinguquko, ngoba zigcinwe kuphela enkumbulweni yomxhumanisi; azikabi ku-Cassandra nodes.
Lapho iklayenti lithumela isithembiso, isimo esasisenkumbulweni yesevisi silondolozwa umxhumanisi eqoqweni elilothiwe, futhi sithunyelwa njengenqwaba engeniwe kusitoreji se-Cassandra. Izitolo zenza konke okudingekayo ukuqinisekisa ukuthi le phakheji isetshenziswa nge-athomu (ngokuphelele), futhi ibuyisela impendulo kumxhumanisi, okhulula izingidi futhi aqinisekise impumelelo yokuthengiselana kuklayenti.
Futhi ukuze ubuyisele emuva, umxhumanisi udinga kuphela ukukhulula inkumbulo ehlala isimo sokwenziwe.
Njengomphumela walokhu kuthuthukiswa okungenhla, sisebenzise imigomo ye-ACID:
- I-Atomicity. Lesi isiqinisekiso sokuthi akukho okwenziwayo okuzorekhodwa ngokwengxenye ohlelweni; kungenzeka konke ukusebenza kwayo okungaphansi kuzoqedwa, noma akukho okuzoqedwa. Sinamathela kulo mgomo ngeqoqo elingene eCassandra.
- Ukuvumelana. Ukwenziwa ngakunye okuyimpumelelo, ngokwencazelo, kuqopha imiphumela evumelekile kuphela. Uma, ngemva kokuvula umsebenzi nokwenza ingxenye yemisebenzi, kutholakala ukuthi umphumela awuvumelekile, ukubuyisela emuva kuyenziwa.
- Ukuzihlukanisa. Uma okwenziwayo kwenziwa, okwenziwa ngasikhathi sinye akufanele kuthinte umphumela wako. Imisebenzi eqhudelanayo ihlukaniswa kusetshenziswa izingidi ezingenathemba kumxhumanisi. Okufundwayo ngaphandle kokwenziwe, umgomo wokuzihlukanisa ubonwa ezingeni Elizibophezele Lokufunda.
- Ukusimama. Kungakhathaliseki ukuthi kunezinkinga emazingeni aphansi—ukuvalwa kwesistimu, ukwehluleka kwehadiwe—izinguquko ezenziwe ukuthengiselana okuqedwe ngempumelelo kufanele zihlale zilondolozwe lapho imisebenzi iqala kabusha.
Ukufunda ngezinkomba
Ake sithathe ithebula elilula:
CREATE TABLE photos (
id bigint primary key,
owner bigint,
modified timestamp,
…)
Ine-ID (ukhiye oyinhloko), umnikazi kanye nedethi yokulungiswa. Udinga ukwenza isicelo esilula kakhulu - khetha idatha kumnikazi enedethi yoshintsho "yosuku lokugcina".
SELECT *
WHERE owner=?
AND modified>?
Ukuze lowo mbuzo ucutshungulwe ngokushesha, ku-SQL DBMS yakudala udinga ukwakha inkomba ngamakholomu (umnikazi, ulungisiwe). Lokhu singakwenza kalula, njengoba manje sineziqinisekiso ze-ACID!
Izinkomba ku-C*One
Kukhona ithebula lomthombo elinezithombe lapho i-ID yerekhodi ingukhiye oyinhloko.
Ukuze uthole inkomba, i-C*One idala ithebula elisha eliyikhophi yoqobo. Ukhiye uyafana nenkulumo yenkomba, futhi uhlanganisa nokhiye oyinhloko werekhodi ovela kuthebula lomthombo:
Manje umbuzo othi “umnikazi wosuku lokugcina” ungabhalwa kabusha njengokukhethiwe kwelinye ithebula:
SELECT * FROM i1_test
WHERE owner=?
AND modified>?
Ukuvumelana kwedatha ezithombeni zethebula lomthombo kanye nethebula lenkomba i1 kugcinwa ngokuzenzakalelayo umxhumanisi. Ngokusekelwe ku-schema yedatha kuphela, lapho ushintsho lwamukelwe, umxhumanisi udala futhi agcine ushintsho hhayi kuphela etafuleni eliyinhloko, kodwa futhi namakhophi. Azikho izenzo ezengeziwe ezenziwa etafuleni lenkomba, izingodo azifundiwe, futhi awekho amalokhi asetshenziswayo. Okusho ukuthi, ukwengeza izinkomba kudla cishe akukho zinsiza futhi akunawo umthelela esivinini sokusebenzisa ukuguqulwa.
Ngokusebenzisa i-ACID, sikwazile ukusebenzisa izinkomba ezifana ne-SQL. Ayashintshashintsha, ayakala, ayashesha, ayahlanganiseka, futhi akhelwe olimini lwemibuzo lwe-CQL. Azikho izinguquko kwikhodi yohlelo lokusebenza ezidingekayo ukuze kusekelwe izinkomba. Konke kulula njengaku-SQL. Futhi okubaluleke kakhulu, izinkomba aziphazamisi isivinini sokwenza sokuguqulwa kuthebula lokwenziwe langempela.
Kwenzenjani
Sakha i-C*One eminyakeni emithathu edlule futhi sayethula ekusebenzeni kwezentengiso.
Sitholeni ekugcineni? Ake sihlole lokhu sisebenzisa isibonelo sokucutshungulwa kwesithombe nokugcinwa kwesistimu engaphansi, enye yezinhlobo ezibaluleke kakhulu zedatha kunethiwekhi yokuxhumana nomphakathi. Asikhulumi ngemizimba yezithombe ngokwazo, kodwa ngazo zonke izinhlobo zolwazi lwe-meta. Manje i-Odnoklassniki inamarekhodi anjalo angaba yizigidi eziyizinkulungwane ezingu-20, uhlelo lucubungula izicelo ezifundwayo eziyizinkulungwane ezingu-80 ngomzuzwana, kuze kufike ku-8 XNUMX ukuthengiswa kwe-ACID ngomzuzwana okuhlotshaniswa nokuguqulwa kwedatha.
Lapho sisebenzisa i-SQL ene-replication factor = 1 (kodwa ku-RAID 10), imininingwane yesithombe yayigcinwe kuqoqo elitholakala kakhulu lemishini engu-32 esebenzisa i-Microsoft SQL Server (kanye nezipele eziyi-11). Amaseva ayi-10 nawo abelwe ukugcina izipele. Izimoto ezibizayo ezingu-50 sezizonke. Ngesikhathi esifanayo, isistimu yayisebenza ngomthwalo olinganiselwe, ngaphandle kokugodla.
Ngemva kokuthuthela ohlelweni olusha, sithole i-replication factor = 3 - ikhophi kusikhungo ngasinye sedatha. Uhlelo luqukethe izindawo zokugcina ze-Cassandra ezingu-63 kanye nemishini yokuxhumanisa engu-6, isamba samaseva angu-69. Kodwa le mishini ishibhile kakhulu, izindleko zayo sezizonke zingama-30% wezindleko zohlelo lwe-SQL. Ngesikhathi esifanayo, umthwalo ugcinwa ku-30%.
Ngokwethulwa kwe-C*One, ukubambezeleka kubuye kwehlile: ku-SQL, umsebenzi wokubhala uthathe cishe u-4,5 ms. Ku-C*One - cishe ngo-1,6 ms. Ubude bomsebenzi ngokwesilinganiso bungaphansi kwama-40 ms, ukuzibophezela kuqedwa ngo-2 ms, ubude besikhathi sokufunda nokubhala buyisilinganiso esingu-2 ms. 99th percentile - 3-3,1 ms kuphela, inani lezikhathi zokuvala lehle izikhathi eziyi-100 - konke lokhu kungenxa yokusetshenziswa okubanzi kokuqagela.
Njengamanje, iningi lama-node e-SQL Server acishiwe; imikhiqizo emisha yenziwa kusetshenziswa i-C*One kuphela. Siguqule i-C*One ukuze isebenze emafini ethu
Manje sisebenzela ukudlulisela ezinye izindawo zethu zokugcina emafini - kodwa leyo indaba ehluke ngokuphelele.
Source: www.habr.com