Cassandra. Ungafi njani ukuba uyazi i-Oracle kuphela

Molo, Habr.

Igama lam nguMisha Butrimov, ndingathanda ukukuxelela kancinci malunga noCassandra. Ibali lam liya kuba luncedo kwabo bangazange badibane nedatha ye-NoSQL - ineempawu ezininzi zokuphunyezwa kunye nemigibe okufuneka uyazi ngayo. Kwaye ukuba awuzange ubone nantoni na ngaphandle kwe-Oracle okanye nayiphi na enye i-database yobudlelwane, ezi zinto ziya kusindisa ubomi bakho.

Yintoni entle kangaka ngoCassandra? Yidatha yeNoSQL eyilwe ngaphandle kwenqaku elinye lokusilela elilinganisa kakuhle. Ukuba ufuna ukongeza iiterabytes ezimbalwa zedathabheyisi ethile, wongeza ngokulula iinodi kwiringi. Yandise kwelinye iziko ledatha? Yongeza ii-nodes kwiqela. Yandisa i-RPS esetyenziweyo? Yongeza ii-nodes kwiqela. Isebenza kwelinye icala kwakhona.

Cassandra. Ungafi njani ukuba uyazi i-Oracle kuphela

Yintoni enye asebenza kakuhle kuyo? Imalunga nokusingatha izicelo ezininzi. Kodwa yimalini eninzi? 10, 20, 30, 40 amawaka ezicelo ngesekhondi ayikho kakhulu. Izicelo ezili-100 lamawaka ngesekhondi zokurekhoda - nazo. Kukho iinkampani ezithe zigcina izicelo ezizizigidi ezi-2 ngomzuzwana. Mhlawumbi kuya kufuneka bayikholelwe.

Kwaye ngokomgaqo, iCassandra inomahluko omnye omkhulu kwidatha yobudlelwane - ayifani nabo kwaphela. Kwaye oku kubaluleke kakhulu ukukhumbula.

Ayiyiyo yonke into ebonakala ifana isebenza ngokufanayo

Ngesinye isihlandlo umntu endisebenza naye weza kum wandibuza: “Nali iCQL Cassandra yombuzo wolwimi, kwaye inesiteyitimenti esikhethiweyo, inayo apho, inayo kwaye. Ndibhala iileta kwaye ayisebenzi. Ngoba?". Ukuphatha uCassandra njengesiseko sedatha yobudlelwane yindlela efanelekileyo yokuzibulala ngobundlobongela. Kwaye andiyi kukukhuthaza, akuvumelekanga eRashiya. Uyakuyila nje into engalunganga.

Ngokomzekelo, umthengi uza kuthi aze athi: “Masenze uvimba wenkcazelo yeenkqubo zikamabonwakude, okanye uvimba wenkcazelo yeeresiphi. Siza kuba nezitya zokutya apho okanye uluhlu lweenkqubo zikamabonwakude nabadlali abakulo. ” Ngovuyo sithi: “Masihambe!” Thumela nje ii-byte ezimbini, iimpawu ezimbalwa kwaye ugqibile, yonke into iya kusebenza ngokukhawuleza nangokuthembekileyo. Kwaye yonke into ilungile de kufike abathengi baze bathi abafazi basekhaya nabo basombulula ingxaki echaseneyo: banoluhlu lweemveliso, kwaye bafuna ukwazi ukuba yeyiphi isitya abafuna ukusipheka. Ufile.

Oku kungenxa yokuba i-Cassandra i-database ye-hybrid: inika ngexesha elifanayo ixabiso eliphambili kwaye igcina idatha kwiikholomu ezibanzi. KwiJava okanye kwiKotlin, inokuchazwa ngolu hlobo:

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

Oko kukuthi, imephu equlethe imephu ehleliweyo. Iqhosha lokuqala kule mephu liqhosha leRow okanye iqhosha leSahlulo-iqhosha lokwahlula. Iqhosha lesibini, elisisitshixo semephu esele ilungisiwe, liqhosha lokuhlanganisa.

Ukubonisa ukuhanjiswa kwesiseko sedatha, masizobe iindawo ezintathu. Ngoku kufuneka uqonde indlela yokubola idatha kwiinodi. Kuba ukuba sifaka yonke into kwindawo enye (ngendlela, kunokubakho iwaka, amawaka amabini, amahlanu - amaninzi njengoko uthanda), oku akukona malunga nokusabalalisa. Ngoko ke, sifuna umsebenzi wezibalo oya kubuyisela inani. Inani nje, int ende eya kuwela kuluhlu oluthile. Kwaye siya kuba ne-node enye enoxanduva kuluhlu olunye, okwesibini kolwesibini, okwe-nth kwi-nth.

Cassandra. Ungafi njani ukuba uyazi i-Oracle kuphela

Le nombolo ithathwa kusetyenziswa umsebenzi we-hash, osetyenziswa kwinto esiyibiza ngokuba sisitshixo seSahlulo. Le yikholomu echazwe kumyalelo wesitshixo esisePrayimari, kwaye le yikholomu eya kuba yeyokuqala kunye nesona sitshixo sisisiseko semephu. Imisela ukuba yeyiphi indawo eya kufumana idatha. Itheyibhile yenziwe eCassandra malunga ne-syntax efanayo ne-SQL:

CREATE TABLE users (
	user_id uu id,
	name text,
	year int,
	salary float,
	PRIMARY KEY(user_id)

)

Isitshixo esiyiPrayimari kule meko siquka ikholomu enye, kwaye ikwasisitshixo sokwahlulahlula.

Abasebenzisi bethu baya kusebenza njani? Abanye baya kuya kwenye indawo, abanye baye kwenye, kwaye abanye baye kwesithathu. Isiphumo sitheyibhile esiqhelekileyo se-hash, eyaziwa ngokuba yimephu, eyaziwa ngokuba sisichazi-magama kwiPython, okanye isakhiwo sexabiso eliPhambili esilula apho sinokufunda khona onke amaxabiso, ukufunda nokubhala ngesitshixo.

Cassandra. Ungafi njani ukuba uyazi i-Oracle kuphela

Khetha: xa ukuvumela ukuhluza kujika kube siskena esipheleleyo, okanye ungakwenziwa ntoni

Masibhale ingxelo ekhethiweyo: select * from users where, userid = . Kubonakala ngathi kwi-Oracle: sibhala khetha, sicacise iimeko kunye nayo yonke into isebenza, abasebenzisi bayayifumana. Kodwa ukuba ukhetha, umzekelo, umsebenzisi ononyaka othile wokuzalwa, uCassandra uyakhalaza ukuba ayikwazi ukuzalisekisa isicelo. Ngenxa yokuba akazi nto konke konke malunga nendlela esisasaza ngayo idatha malunga nonyaka wokuzalwa - unekholamu enye kuphela eboniswe njengesitshixo. Emva koko uthi, “Kulungile, ndisenako ukusifezekisa esi sicelo. Yongeza vumela ukuhluza." Songeza isikhokelo, yonke into iyasebenza. Yaye ngalo mzuzu kwenzeka into embi kakhulu.

Xa siqhuba kwidatha yovavanyo, yonke into ilungile. Kwaye xa uqhuba umbuzo kwimveliso, apho sinakho, umzekelo, iirekhodi ezizigidi ezi-4, ngoko yonke into ayilungile kuthi. Ngenxa yokuba ukuvumela ukuhluzwa ngumyalelo ovumela uCassandra ukuba aqokelele yonke idatha kule tafile kuzo zonke iindawo, onke amaziko edatha (ukuba maninzi kuwo kweli qela), kwaye emva koko ucofe. Le yi-analogue yeSkena esiPheleleyo, kwaye akukho namnye umntu oyoliswayo yiyo.

Ukuba besifuna kuphela abasebenzisi nge-ID, besiya kulunga ngale nto. Kodwa ngamanye amaxesha kufuneka sibhale eminye imibuzo kwaye sibeke ezinye izithintelo ekukhetheni. Ke ngoko, siyakhumbula: yonke le yimephu eneqhosha lokwahlulahlula, kodwa ngaphakathi kukho imephu ehleliweyo.

Kwaye unaso isitshixo, esisibiza ngokuba siSitshixo sokuQeqesha. Esi sitshixo, esiquka iikholamu esizikhethayo, ngoncedo apho uCassandra uyayiqonda indlela idatha yayo ehlelwe ngayo ngokwasemzimbeni kwaye iya kufumaneka kwindawo nganye. Oko kukuthi, kwesinye isitshixo seSahlulo, isitshixo sokuHlanganisa siya kukuxelela kanye ukuba uyityhalela njani idatha kulo mthi, yeyiphi indawo eya kuthatha apho.

Lo ngumthi ngenene, umthelekisi ubizwa ngokulula apho, apho sigqithisa uluhlu oluthile lwezintlu ngendlela yento, kwaye ikwacaciswa njengoluhlu lwezintlu.

CREATE TABLE users_by_year_salary_id (
	user_id uuid,
	name text,
	year int,
	salary float,
	PRIMARY KEY((year), salary, user_id)

Nikela ingqalelo kumyalelo ophambili ophambili; Ingxoxo yayo yokuqala (kwimeko yethu, unyaka) ihlala ingundoqo wokwahlula. Inokubandakanya ikholamu enye okanye ngaphezulu, ayinamsebenzi. Ukuba kukho iikholamu ezininzi, kufuneka isuswe kwizibiyeli kwakhona ukuze iprosesa yolwimi iqonde ukuba esi sisitshixo esisePrayimari, kwaye emva kwayo zonke ezinye iikholamu sisitshixo sokuQeqesha. Kule meko, ziya kuhanjiswa ngokuthelekisayo ngokulandelelana kwazo. Oko kukuthi, ikholamu yokuqala ibaluleke ngakumbi, eyesibini ayibalulekanga kangako, njalo njalo. Indlela esibhala ngayo, umzekelo, ilingana nemimandla yeeklasi zedatha: sidwelisa imihlaba, kwaye kubo sibhala ukuba yeyiphi emikhulu kwaye yeyiphi encinci. Kwi-Cassandra, ezi, ngokuthelekiswa, imimandla yeklasi yedatha, apho ukulingana okubhaliweyo kuya kusetyenziswa.

Siseta ukuhlela kwaye sibeke izithintelo

Kufuneka ukhumbule ukuba ukuhleleka kohlobo (ukuhla, ukunyuka, nantoni na) kubekwe ngexesha elifanayo xa isitshixo senziwe, kwaye asinakuguqulwa kamva. Imisela ngokwasemzimbeni ukuba idatha iya kuhlelwa njani kwaye iya kugcinwa njani. Ukuba ufuna ukutshintsha iqhosha le-Clustering okanye uhlele ulandelelwano, kuya kufuneka udale itafile entsha kwaye udlulisele idatha kuyo. Oku akuzukusebenza nesele ikhona.

Cassandra. Ungafi njani ukuba uyazi i-Oracle kuphela

Sazalisa itafile yethu ngabasebenzisi kwaye sabona ukuba bawela kwindandatho, okokuqala ngonyaka wokuzalwa, kwaye ngaphakathi kwindawo nganye ngomvuzo kunye nesazisi somsebenzisi. Ngoku sinokukhetha ngokubeka izithintelo.

Owethu osebenzayo uyavela kwakhona where, and, kwaye sifumana abasebenzisi, kwaye yonke into ilungile kwakhona. Kodwa ukuba sizama ukusebenzisa kuphela inxalenye yesitshixo sokuQeqesha, kunye nesona sibalulekileyo, ngoko uCassandra uyakukhalaza ngoko nangoko ukuba ayinakuyifumana indawo kwimephu yethu apho le nto, enale mihlaba yesithelekisi esingenanto, kunye nale. oko kwakubekwe nje , - apho alele khona. Kuya kufuneka ndikhuphe yonke idatha kule node kwakhona kwaye ndiyihluze. Kwaye le yianalogue yeFull Scan ngaphakathi kwendawo, oku kubi.

Nakweyiphi na imeko engacacanga, yenza itafile entsha

Ukuba sifuna ukukwazi ukujolisa abasebenzisi nge-ID, okanye ngobudala, okanye ngomvuzo, kufuneka senze ntoni? Akukho nto. Sebenzisa nje iitafile ezimbini. Ukuba ufuna ukufikelela kubasebenzisi ngeendlela ezintathu ezahlukeneyo, kuya kubakho iitafile ezintathu. Zimnkile iintsuku sagcina isithuba kwi screw. Lo ngowona mthombo uphantsi. Ixabisa kakhulu ngaphantsi kwexesha lokuphendula, elinokuthi libe yingozi kumsebenzisi. Kumnandi kakhulu ukuba umsebenzisi afumane into ngomzuzwana kunemizuzu eli-10.

Sirhweba ngendawo engeyomfuneko kunye nedatha ye-denormalized ukuze sikwazi ukukala kakuhle kwaye sisebenze ngokuthembekileyo. Emva koko, i-cluster equkethe amaziko amathathu edatha, nganye ineendawo ezintlanu, kunye nenqanaba elamkelekileyo lokugcinwa kwedatha (xa kungekho nto ilahlekileyo), iyakwazi ukusinda ekufeni kweziko ledatha enye ngokupheleleyo. Kwaye amanye amaqhuqhuva amabini kwindawo nganye kwezi ziseleyo. Kwaye kuphela emva koku iingxaki ziqala. Oku kukungafuneki okuhle kakhulu, kufanelekile isibini se-SSD eyongezelelweyo kunye neeprosesa. Ngoko ke, ukuze usebenzise iCassandra, engazange i-SQL, apho kungekho budlelwane, izitshixo zangaphandle, kufuneka ukwazi imithetho elula.

Siyila yonke into ngokwesicelo sakho. Into ephambili ayiyiyo idatha, kodwa indlela isicelo esiza kusebenza ngayo nayo. Ukuba idinga ukufumana idatha eyahlukeneyo ngeendlela ezahlukeneyo okanye idatha efanayo ngeendlela ezahlukeneyo, kufuneka siyibeke ngendlela efanelekileyo kwisicelo. Ngaphandle koko, siya kusilela kwiSkena esipheleleyo kwaye uCassandra akasayi kusinika nayiphi na inzuzo.

I-denormalizing data yinto eqhelekileyo. Siyalibala malunga neefom eziqhelekileyo, asisenazo iinkcukacha zonxibelelwano. Ukuba sibeka into phantsi izihlandlo ezili-100, iya kulala phantsi izihlandlo ezili-100. Isexabiso eliphantsi kunokumisa.

Sikhetha izitshixo zokwahlula ukuze zisasazwe ngokuqhelekileyo. Asifuni ukuba i-hash yezitshixo zethu iwele kuluhlu olumxinwa olunye. Oko kukuthi, unyaka wokuzalwa kumzekelo ongasentla ngumzekelo ombi. Ngokuchanekileyo, kulungile ukuba abasebenzisi bethu bahlala besasazwa ngonyaka wokuzalwa, kwaye kubi ukuba sithetha ngabafundi bebanga lesi-5 - ukwahlula apho akuyi kuba kuhle kakhulu.

Ukuhlela kukhethwe kube kanye kwinqanaba lokudala i-Clustering Key. Ukuba kufuneka itshintshwe, kuya kufuneka sihlaziye itafile yethu ngesitshixo esahlukileyo.

Kwaye eyona nto ibalulekileyo: ukuba sifuna ukubuyisela idatha efanayo ngeendlela ezahlukeneyo ezili-100, ngoko siya kuba neetafile ezili-100 ezahlukeneyo.

umthombo: www.habr.com

Yongeza izimvo