Cassandra. Kedu ka ị gaghị anwụ ma ọ bụrụ na ị maara naanị Oracle

Hey Habr.

Aha m bụ Misha Butrimov, ọ ga-amasị m ịgwa gị ntakịrị banyere Cassandra. Akụkọ m ga-aba uru nye ndị na-ahụtụbeghị ọdụ data NoSQL - ọ nwere ọtụtụ atụmatụ mmejuputa na ọnyà ị kwesịrị ịma. Ma ọ bụrụ na ị hụbeghị ihe ọ bụla ọzọ karịa Oracle ma ọ bụ ihe ọ bụla ọzọ mmekọrịta data, ihe ndị a ga-azọpụta ndụ gị.

Kedu ihe dị mma maka Cassandra? Ọ bụ nchekwa data NoSQL emebere na-enweghị otu ebe ọdịda nke na-adaba nke ọma. Ọ bụrụ na ịchọrọ ịgbakwunye terabytes abụọ maka ụfọdụ nchekwa data, ị na-agbakwunye ọnụ na mgbanaka ahụ. Gbasaa ya na ebe data ọzọ? Tinye ọnụ na ụyọkọ ahụ. Na-abawanye RPS emebere? Tinye ọnụ na ụyọkọ ahụ. Ọ na-arụkwa ọrụ n'akụkụ nke ọzọ.

Cassandra. Kedu ka ị gaghị anwụ ma ọ bụrụ na ị maara naanị Oracle

Kedu ihe ọzọ ọ dị mma? Ọ bụ maka ijikwa ọtụtụ arịrịọ. Mana ole ka ọ bụ nnukwu? 10, 20, 30, 40 puku arịrịọ kwa sekọnd abụghị nke ukwuu. 100 puku arịrịọ kwa sekọnd maka ndekọ - kwa. Enwere ụlọ ọrụ ndị kwuru na ha na-edobe arịrịọ 2 nde kwa nkeji. O yikarịrị ka ha ga-ekwere ya.

Na ụkpụrụ, Cassandra nwere nnukwu ọdịiche dị na data mmekọrịta - ọ dịghị ka ha ma ọlị. Na nke a dị ezigbo mkpa icheta.

Ọ bụghị ihe niile yiri otu na-arụ otu ihe

N'otu oge, otu onye ọrụ ibe m bịakwutere m wee jụọ: "Nke a bụ asụsụ ajụjụ CQL Cassandra, ma o nwere nkwupụta ahọpụtara, o nwere ebe, o nwere na. M na-ede akwụkwọ ozi ma ọ naghị arụ ọrụ. Gịnị mere?". Ịgwọ Cassandra dị ka nchekwa data mmekọrịta bụ ụzọ zuru oke iji gbuo onwe onye ime ihe ike. Anaghị m akwalite ya, amachibidoro ya na Russia. Naanị ị ga-echepụta ihe adịghị mma.

Dị ka ihe atụ, onye ahịa na-abịakwute anyị, sị: “Ka anyị wuo ebe nchekwa data maka usoro ihe nkiri TV, ma ọ bụ ebe nchekwa data maka akwụkwọ ndekọ aha. Anyị ga-enwe efere nri n'ebe ahụ ma ọ bụ ndepụta nke usoro ihe nkiri TV na ndị na-eme ihe nkiri na ya. " Anyị ji ọṅụ sị: “Ka anyị gaa!” Naanị zipu bytes abụọ, akara abụọ ma ị mechara, ihe niile ga-arụ ọrụ ngwa ngwa na ntụkwasị obi. Na ihe niile dị mma ruo mgbe ndị ahịa na-abịa na-ekwu na ndị nwunye na-edozikwa nsogbu na-abụghị nke: ha nwere ndepụta nke ngwaahịa, na ha chọrọ ịmata ihe efere ha chọrọ esi nri. Ị anwụọla.

Nke a bụ n'ihi na Cassandra bụ nchekwa data ngwakọ: ọ na-enye uru dị mkpa n'otu oge ma na-echekwa data na kọlụm sara mbara. Na Java ma ọ bụ Kotlin, enwere ike ịkọwa ya dị ka nke a:

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

Ya bụ, maapụ nke nwekwara maapụ ahaziri. Igodo mbụ na maapụ a bụ igodo ahịrị ma ọ bụ igodo nkebi - igodo nkebi. Igodo nke abụọ, nke bụ mkpịsị ugodi maka maapụ a haziri ahazi, bụ igodo ụyọkọ.

Iji gosi nkesa nke nchekwa data, ka anyị see ọnụ ụzọ atọ. Ugbu a, ị kwesịrị ịghọta otú e si decompose data n'ime ọnụ. N'ihi na ọ bụrụ na anyị cram ihe niile n'ime otu (n'agbanyeghị, e nwere ike ịbụ otu puku, abụọ puku, ise - ọtụtụ dị ka-amasị gị), nke a abụghị n'ezie banyere nkesa. Ya mere, anyị chọrọ ọrụ mgbakọ na mwepụ nke ga-eweghachi nọmba. Naanị ọnụọgụgụ, ogologo int nke ga-adaba n'ụdị ụfọdụ. Anyị ga-enwe otu ọnụ ọnụ maka otu oke, nke abụọ maka nke abụọ, nke nth maka nth.

Cassandra. Kedu ka ị gaghị anwụ ma ọ bụrụ na ị maara naanị Oracle

A na-ewere nọmba a site na iji ọrụ hash, nke etinyere na ihe anyị na-akpọ igodo nkebi. Nke a bụ kọlụm nke akọwapụtara na ntuziaka igodo isi, nke a bụ kọlụm ga-abụ igodo mbụ na nke kachasị nke maapụ ahụ. Ọ na-ekpebi nke ọnụ ga-enweta nke data. A na-emepụta tebụl na Cassandra nwere ihe fọrọ nke nta ka ọ bụrụ otu syntax dị na SQL:

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

)

Igodo izizi na nke a nwere otu kọlụm, ọ bụkwa igodo nkebi.

Kedu ka ndị ọrụ anyị ga-esi eme? Ụfọdụ ga-aga n'otu ọnụ ọnụ, ụfọdụ gaa n'ọzọ, na ụfọdụ gaa n'otu ụzọ atọ. Ihe si na ya pụta bụ tebụl hash nkịtị, nke a makwaara dị ka maapụ, nke a makwaara dị ka akwụkwọ ọkọwa okwu na Python, ma ọ bụ usoro uru igodo dị mfe nke anyị nwere ike isi gụọ ụkpụrụ niile, gụọ ma dee site na igodo.

Cassandra. Kedu ka ị gaghị anwụ ma ọ bụrụ na ị maara naanị Oracle

Họrọ: mgbe ikwe ka nzacha atụgharị ghọọ nyocha zuru oke, ma ọ bụ ihe agaghị eme

Ka anyị dee ụfọdụ nkwupụta ahọpụtara: select * from users where, userid = . Ọ na-atụgharị dị ka na Oracle: anyị na-ede họrọ, kọwaa ọnọdụ na ihe niile na-arụ ọrụ, ndị ọrụ na-enweta ya. Mana ọ bụrụ na ịhọrọ, dịka ọmụmaatụ, onye ọrụ nwere afọ ọmụmụ, Cassandra na-eme mkpesa na ọ nweghị ike imezu arịrịọ ahụ. N'ihi na ọ maghị ihe ọ bụla gbasara otu anyị si ekesa data gbasara afọ ọmụmụ - o nwere naanị otu kọlụm gosiri dị ka isi. Mgbe ahụ ọ sịrị, “Ọ dị mma, enwere m ike imezu arịrịọ a. Tinye ohere nzacha." Anyị na-agbakwunye ntụziaka ahụ, ihe niile na-arụ ọrụ. Ma n'oge a, ihe dị egwu na-eme.

Mgbe anyị na-agba ọsọ na data ule, ihe niile dị mma. Na mgbe ị na-emezu ajụjụ na mmepụta, ebe anyị nwere, dịka ọmụmaatụ, ndekọ nde 4, mgbe ahụ ihe niile adịghị mma maka anyị. N'ihi na ikwe ka nzacha bụ ntụziaka nke na-enye Cassandra ohere ịnakọta data niile na tebụl a site na ọnụ ụzọ niile, ebe data niile (ọ bụrụ na e nwere ọtụtụ n'ime ha na ụyọkọ a), ma na-enyocha ya. Nke a bụ ihe analog nke nyocha zuru oke, ọ nweghịkwa onye nwere mmasị na ya.

Ọ bụrụ na anyị chọrọ naanị ndị ọrụ site na ID, anyị ga-adị mma na nke a. Ma mgbe ụfọdụ, anyị kwesịrị ide ajụjụ ndị ọzọ ma tinye ihe mgbochi ndị ọzọ na nhọrọ ahụ. Ya mere, anyị na-echeta: nke a bụ map niile nwere igodo nkebi, ma n'ime ya bụ map ahaziri.

O nwekwara mkpịsị ugodi, nke anyị na-akpọ igodo Clustering. Igodo a, nke, n'aka nke ya, mejupụtara ogidi ndị anyị na-ahọrọ, site n'enyemaka nke Cassandra na-aghọta otú e si edozi data ya n'ụzọ anụ ahụ, ọ ga-adịkwa na ọnụ nke ọ bụla. Ya bụ, maka ụfọdụ igodo nkebi, igodo Clustering ga-agwa gị kpọmkwem otu esi etinye data n'ime osisi a, ebe ọ ga-ewe ebe ahụ.

Nke a bụ osisi n'ezie, a na-akpọ onye comparator n'ebe ahụ, nke anyị na-agafe otu ogidi dị n'ụdị ihe, a na-akọwakwa ya dị ka ndepụta nke ogidi.

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

Lezienụ anya na ntuziaka isi isi; arụmụka mbụ ya (n'ọnọdụ anyị, afọ) bụ igodo nkebi mgbe niile. Ọ nwere ike ịgụnye otu ogidi ma ọ bụ karịa, ọ dịghị mkpa. Ọ bụrụ na enwere ọtụtụ ogidi, ọ dị mkpa ka ewepụ ya na brackets ọzọ ka onye na-ahazi asụsụ wee ghọta na nke a bụ igodo isi, na n'azụ ya, kọlụm ndị ọzọ niile bụ igodo ụyọkọ. N'okwu a, a ga-ebufe ha na comparator n'usoro nke ha pụtara. Ya bụ, kọlụm nke mbụ dị ịrịba ama, nke abụọ adịchaghị mkpa, na ihe ndị ọzọ. Otu anyị si ede, dịka ọmụmaatụ, hà nhata maka klaasị data: anyị na-edepụta mpaghara, ma maka ha, anyị na-edepụta nke ka ukwuu na nke dị ntakịrị. Na Cassandra, ndị a bụ, n'ikwu okwu n'ụzọ dịtụ, ngalaba nke klaasị data, nke a ga-etinye ihe nhata edere maka ya.

Anyị na-esetịpụ nhazi na wetara mgbochi

Ikwesiri icheta na usoro nhazi (na-agbada, rịgoro, ihe ọ bụla) ka edobere n'otu oge ahụ mgbe emepụtara igodo ahụ, enweghị ike ịgbanwe ya ma emechaa. Ọ na-ekpebi n'ụzọ anụ ahụ ka a ga-esi hazie data na otu a ga-esi chekwaa ya. Ọ bụrụ na ịchọrọ ịgbanwe igodo Clustering ma ọ bụ hazie usoro, ị ga-emepụta tebụl ọhụrụ wee bufee data n'ime ya. Nke a agaghị arụ ọrụ na nke dị adị.

Cassandra. Kedu ka ị gaghị anwụ ma ọ bụrụ na ị maara naanị Oracle

Anyị jupụtara na tebụl anyị na ndị ọrụ wee hụ na ha dabara na mgbanaka, nke mbụ site n'afọ ọmụmụ, wee banye n'ime ọnụ nke ọ bụla site na ụgwọ ọnwa na ID onye ọrụ. Ugbu a, anyị nwere ike họrọ site na itinye mmachi.

Nke anyị na-arụ ọrụ pụtara ọzọ where, and, na anyị na-enweta ndị ọrụ, na ihe niile dị mma ọzọ. Ma ọ bụrụ na anyị na-agbalị iji nanị akụkụ nke Clustering igodo, na nke na-adịchaghị mkpa, Cassandra ga-eme mkpesa ozugbo na ọ pụghị ịhụ ebe dị na map anyị ebe ihe a, nke nwere ndị a ubi maka efu comparator, na nke a. nke ahụ ka edobere, - ebe ọ dina. M ga-ebulikwa data niile site na ọnụ ọnụ a ọzọ wee nyochaa ya. Ma nke a bụ analọgụ nke nyocha zuru oke n'ime ọnụ, nke a dị njọ.

N'ọnọdụ ọ bụla edoghị anya, mepụta tebụl ọhụrụ

Ọ bụrụ na anyị chọrọ inwe ike lekwasịrị ndị ọrụ anya site na ID, ma ọ bụ site na afọ, ma ọ bụ site na ụgwọ ọnwa, gịnị ka anyị ga-eme? Ọ dịghị ihe. Naanị jiri tebụl abụọ. Ọ bụrụ na ịchọrọ iru ndị ọrụ n'ụzọ atọ dị iche iche, a ga-enwe tebụl atọ. Oge agaala mgbe anyị chekwaa oghere na ịghasa. Nke a bụ akụrụngwa kacha ọnụ ala. Ọ na-efu ihe na-erughị oge nzaghachi, nke nwere ike imebi onye ọrụ. Ọ na-atọ ụtọ karịa onye ọrụ ịnata ihe n'ime sekọnd karịa n'ime nkeji iri.

Anyị na-azụ ahịa oghere na-enweghị isi yana data deormalized maka ike ịba ụba nke ọma ma rụọ ọrụ nke ọma. A sị ka e kwuwe, n'eziokwu, ụyọkọ nke nwere ebe data atọ, nke ọ bụla nwere oghere ise, nke nwere ọkwa nchekwa data dị mma (mgbe ọ dịghị ihe na-efunahụ), na-enwe ike ịlanarị ọnwụ nke otu data center kpamkpam. Na ọnụ ụzọ abụọ ọzọ na nke ọ bụla n'ime abụọ fọdụrụnụ. Naanị mgbe nke a gasịrị, nsogbu na-amalite. Nke a bụ ezigbo redundancy, ọ bara uru maka draịva SSD na processors ole na ole. Ya mere, iji jiri Cassandra, nke na-abụghị SQL, nke na-enweghị mmekọrịta, igodo mba ọzọ, ịkwesịrị ịma iwu dị mfe.

Anyị na-emepụta ihe niile dịka arịrịọ gị si dị. Isi ihe abụghị data, mana ka ngwa ahụ ga-esi rụọ ọrụ na ya. Ọ bụrụ na ọ dị mkpa ịnata data dị iche iche n'ụzọ dị iche iche ma ọ bụ otu data n'ụzọ dị iche iche, anyị ga-etinye ya n'ụzọ dị mma maka ngwa ahụ. Ma ọ bụghị ya, anyị ga-ada na Full Scan na Cassandra agaghị enye anyị uru ọ bụla.

Denormalizing data bụ ụkpụrụ. Anyị na-echefu maka ụdị nkịtị, anyị enweghịzi ọdụ data mmekọrịta. Ọ bụrụ na anyị etinye ihe otu narị ugboro, ọ ga-edina otu narị ugboro. Ọ ka dị ọnụ ala karịa ịkwụsị.

Anyị na-ahọrọ igodo maka nkewa ka ha wee kesaa ya nke ọma. Anyị achọghị ka hash igodo anyị daa n'otu ebe dị warara. Ya bụ, afọ ọmụmụ na ihe atụ n'elu bụ ihe atụ ọjọọ. More kpomkwem, ọ dị mma ma ọ bụrụ na anyị ọrụ na-ejikarị na-ekesa site afọ ọmụmụ, na ọjọọ ma ọ bụrụ na anyị na-ekwu banyere 5th klas ụmụ akwụkwọ - nkebi n'ebe ahụ agaghị adị ezigbo mma.

A na-ahọrọ nhazi otu ugboro n'oge imepụta igodo Clustering. Ọ bụrụ na ọ dị mkpa ka a gbanwee ya, anyị ga-eji igodo dị iche emelite tebụl anyị.

Na ihe kacha mkpa: ọ bụrụ na anyị kwesịrị iweghachite otu data na 100 ụzọ dị iche iche, mgbe ahụ, anyị ga-enwe 100 dị iche iche tebụl.

isi: www.habr.com

Tinye a comment