Ko Cassandra. Me pehea e kore ai e mate mena ka mohio koe ki a Oracle

Kia ora, Habr.

Ko Misha Butrimov toku ingoa, e hiahia ana ahau ki te korero ki a koe mo Cassandra. Ka whai hua taku korero ki te hunga kaore ano kia tutaki ki nga papaunga raraunga NoSQL - he maha nga waahanga whakatinanatanga me nga raru e tika ana kia mohio koe. A, ki te kore koe e kite i tetahi atu mea ke atu i a Oracle, i etahi atu putunga korero hononga, ma enei mea e ora to oranga.

He aha te pai mo Cassandra? He pātengi raraunga NoSQL i hoahoahia me te kore he waahi o te kore e pai te pauna. Mena ka hiahia koe ki te taapiri i nga terabytes e rua mo etahi putunga korero, ka taapiri noa koe i nga pona ki te mowhiti. Roha atu ki tetahi atu pokapū raraunga? Tāpirihia ngā kōpuku ki te kāhui. Whakanuia te RPS tukatuka? Tāpirihia ngā kōpuku ki te kāhui. Mahi te reira i roto i te huarahi i te ritenga atu.

Ko Cassandra. Me pehea e kore ai e mate mena ka mohio koe ki a Oracle

He aha atu tana pai? Mo te whakahaere i nga tono maha. Engari e hia te nui? Ko te 10, 20, 30, 40 mano tono mo ia hekona kaore i te nui. 100 mano tono mo ia hekona mo te tuhi - rawa. He kamupene i kii kei te pupuri ratou i te 2 miriona tono mo ia hekona. Me whakapono pea ratou.

A, ko te tikanga, he rereketanga nui a Cassandra mai i nga raraunga whanaungatanga - kaore he rite ki a raatau. A he mea tino nui tenei ki te mahara.

Kaore nga mea katoa e rite ana te mahi

I tetahi wa ka tae mai tetahi hoa mahi ki ahau ka patai: "Tenei te reo patai CQL Cassandra, he korero kua tohua, kei hea, kei a ia. Ka tuhi reta au karekau e mahi. He aha?" Ko te mahi ki a Cassandra ano he patengi raraunga hononga ko te huarahi tino pai ki te whakamomori tutu. A kaore au i te whakatairanga, kua rahuitia i Russia. Ka pohehe noa koe i te hoahoa.

Hei tauira, ka tae mai tetahi kaihoko ki a matou ka mea: “Me hanga he papa korero mo nga raupapa pouaka whakaata, he papa korero ranei mo te raarangi tohutaka. Ka whai rīhi kai ki reira, he rarangi ranei o nga raupapa pouaka whakaata me nga kaiwhakaari kei roto." Ka ki atu matou me te koa: “Taua kia haere!” Tukuna noa kia rua nga paita, kia rua nga tohu ka oti koe, ka tere te mahi me te pono. A he pai nga mea katoa kia tae mai ra ano nga kaihoko me te kii kei te whakaoti ano hoki nga wahine o te whare i te raruraru rereke: kei a ratou he rarangi o nga hua, me te hiahia ki te mohio he aha te rihi e hiahia ana ratou ki te tunu. Kua mate koe.

Ko tenei na te mea ko Cassandra he putunga raraunga ranu: ka whakarato i te uara matua me te penapena raraunga ki nga pou whanui. I Java, Kotlin ranei, ka penei te korero:

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

Arā, he mapi kei roto hoki he mapi kua tohua. Ko te matua tuatahi ki tenei mapi ko te Row key, Wehewehenga ranei - te matua wehewehe. Ko te kī tuarua, ko te kī ki te mahere kua oti kē te kōmaka, ko te kī Clustering.

Hei whakaatu i te tohatoha o te putunga korero, me tuhi kia toru nga pona. Inaianei me maarama koe me pehea te whakakore i nga raraunga ki nga kohanga. Na te mea ki te kapohia e tatou nga mea katoa ki te kotahi (ma te ara, ka taea te kotahi mano, rua mano, rima - te tini e pai ana koe), ehara tenei i te mea mo te tohatoha. Na reira, me whai mahi pangarau hei whakahoki i tetahi tau. He tau noa, he int roa ka taka ki etahi awhe. A ka kotahi to tatou node mo te awhe, ko te tuarua mo te tuarua, ko te tuaa mo te awhe.

Ko Cassandra. Me pehea e kore ai e mate mena ka mohio koe ki a Oracle

Ka tangohia tenei tau ma te whakamahi i te mahi hash, ka whakamahia ki te mea e kiia nei ko te matua Wehewehenga. Koinei te tīwae kua whakapūtātia i roto i te tohutohu matua matua, ā, koinei te tīwae te kī tuatahi me te matua taketake o te mapi. Ka whakatauhia ko tehea node ka whiwhi i nga raraunga. Ka hangaia he ripanga ki Cassandra he rite tonu te wetereo ki te SQL:

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

)

Ko te kī Paraimere i roto i tenei take he kotahi tīwae, a ko te kī wehewehe hoki.

Ka pehea te mahi a a maatau kaiwhakamahi? Ka haere etahi ki tetahi pona, etahi ki tetahi atu, etahi ki te tuatoru. Ko te hua ko te ripanga hash noa, e mohiotia ana he mapi, e mohiotia ana ano he papakupu i roto i te Python, he hanganga uara matua ngawari ranei e taea ai e tatou te panui nga uara katoa, te panui me te tuhi ma te matua.

Ko Cassandra. Me pehea e kore ai e mate mena ka mohio koe ki a Oracle

Tīpakohia: ina whakaaetia te tātari ka huri ki te karapa katoa, he aha ranei kaore e mahia

Me tuhi etahi korero kua tohua: select * from users where, userid = . Ka rite ki a Oracle: ka tuhia e matou te kowhiri, ka tohua nga tikanga ka mahi nga mea katoa, ka whiwhi nga kaiwhakamahi. Engari ki te kowhiria e koe, hei tauira, he kaiwhakamahi me tetahi tau whanau, ka amuamu a Cassandra kaore e taea e ia te whakatutuki i te tono. Na te mea karekau ia e mohio mo te tohatoha raraunga mo te tau whanau - kotahi noa tana pou kua tohua hei matua. Ka mea ia, “Ae, ka taea tonu e au te whakatutuki i tenei tono. Whakaaetia te tātari." Ka taapirihia e matou te tohutohu, ka mahi nga mea katoa. A i tenei wa ka tupu tetahi mea kino.

Ka rere ana matou i runga i nga raraunga whakamatautau, he pai nga mea katoa. A, ka mahia e koe he patai i roto i te whakaputanga, kei a matou, hei tauira, 4 miriona rekoata, karekau nga mea katoa e tino pai mo matou. Na te mea ko te tuku tātari he tohutohu ka taea e Cassandra te kohi i nga raraunga katoa mai i tenei ripanga mai i nga pokapu katoa, nga pokapu raraunga katoa (mehemea he maha kei roto i tenei roopu), katahi ka tātarihia. He tairitenga tenei o te Full Scan, a kaore he tangata e harikoa ana.

Mena ka hiahia matou ki nga kaiwhakamahi ma te ID, ka pai taatau ki tenei. Engari i etahi wa ka hiahia matou ki te tuhi i etahi atu patai me te whakatau i etahi atu here mo te kowhiringa. No reira, ka maumahara matou: he mapi katoa tenei he taviri wehewehe, engari kei roto he mapi kua tohua.

A kei a ia ano tetahi ki, e kiia nei ko te Kī Rōpū. Ko tenei taviri, ko nga pou ka tohua e matou, me te awhina a Cassandra e mohio ana ki te ahua o ona raraunga ka tohatoha tinana, ka noho ki ia pona. Arā, mō ētahi kī Wehewehenga, mā te kī Clustering e whakaatu ki a koe me pēhea te pana i ngā raraunga ki roto i tēnei rākau, he aha te wāhi ka kawea ki reira.

He rakau tenei, ka kiia noa he kaiwhakariterite, ka tukuna e matou etahi huinga pou i te ahua o tetahi mea, ka tohua ano he rarangi o nga pou.

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

Kia whai whakaaro ki te tohutohu matua matua; ko tana tohenga tuatahi (i a maatau, ko te tau) ko te matua Wehewehenga tonu. Kia kotahi, neke atu ranei nga pou, kaore he aha. Mena he maha nga pou, me tango ano i roto i nga taiapa kia mohio ai te kaitukatuka reo ko te matua matua tenei, a kei muri ko era atu pou katoa ko te Kī Rōpū. I roto i tenei take, ka tukuna ki roto i te kaiwhakariterite i roto i te raupapa e puta ai. Arā, he mea nui ake te tīwae tuatahi, he iti ake te hiranga o te tuarua, aha atu. Me pehea te tuhi, hei tauira, he rite nga mara mo nga karaehe raraunga: ka whakarārangihia e matou nga mara, ka tuhia e matou ko wai te mea nui ake, ko tehea te mea iti. I Cassandra, ko enei, he korero, ko nga mara o te akomanga raraunga, ka tuhia nga mea rite mo taua mea.

Ka whakatauhia e matou te tohatoha me te whakatau here

Me mahara koe ko te raupapa raupapa (whakaheke, piki, aha) ka whakatauhia i te wa ano i te wa i hangaia ai te ki, kaore e taea te whakarereke i muri mai. Ma te tinana e whakatau me pehea te whakariterite i nga raraunga me te pehea e penapena ai. Mena ka hiahia koe ki te huri i te Kī Whakahuihui me te raupapa raupapa ranei, me hanga e koe he ripanga hou me te whakawhiti raraunga ki roto. E kore tenei e mahi me tetahi o naianei.

Ko Cassandra. Me pehea e kore ai e mate mena ka mohio koe ki a Oracle

I whakakiia e matou ta matou teepu ki nga kaiwhakamahi ka kite kua taka ratou ki roto i te mowhiti, i te tuatahi i te tau o te whanautanga, katahi ki roto i ia node ma te utu me te ID kaiwhakamahi. Inaianei ka taea e taatau te kowhiri ma te whakatau here.

Ka puta ano ta maatau mahi where, and, ka whiwhi tatou i nga kaiwhakamahi, ka pai ano nga mea katoa. Engari ki te ngana tatou ki te whakamahi i tetahi wahi anake o te taviri Clustering, me tetahi mea iti ake, ka amuamu tonu a Cassandra mo te kore e kitea e ia te waahi kei roto i to maatau mapi kei hea tenei mea, kei a ia enei mara mo te whakatairite kore, me tenei. katahi ano ka whakatakotoria, - kei hea ia e takoto ana. Me tango ano e au nga raraunga katoa mai i tenei pona ka tātari. A he tairitenga tenei o te Full Scan i roto i te node, he kino tenei.

I nga ahuatanga kore marama, hanga he ripanga hou

Mena kei te pirangi matou ki te aro ki nga kaiwhakamahi ma te ID, ma te pakeke ranei, ma te utu ranei, me aha tatou? Kaore he mea. Me whakamahi noa nga tepu e rua. Mena ka hiahia koe ki te toro atu ki nga kaiwhakamahi i roto i nga huarahi rereke e toru, ka toru nga ripanga. Kua pahemo nga ra i tiakina ai e matou he waahi mo te wiri. Koinei te rauemi iti rawa atu. He iti ake te utu i te wa whakautu, ka taea te kino ki te kaiwhakamahi. He pai ake mo te kaiwhakamahi ki te whiwhi i tetahi mea i roto i te tuarua i te 10 meneti.

Ka hokohoko matou i nga waahi koretake me nga raraunga kua whakakorehia mo te kaha ki te tauine pai me te mahi pono. I muri i nga mea katoa, ko te kohinga e toru nga pokapū raraunga, e rima nga waahanga o ia waahanga, me te taumata e whakaaetia ana mo te tiaki raraunga (ka ngaro tetahi mea), ka ora tonu i te mate o tetahi pokapū raraunga. A e rua ano nga pona kei ia o nga toenga e rua. A i muri i tenei ka timata nga raruraru. He pai rawa atu tenei, he utu mo etahi atu puku SSD me nga tukatuka. Na reira, mo te whakamahi i a Cassandra, kaore rawa he SQL, kaore he hononga, he taviri ke, me mohio koe ki nga ture ngawari.

Ka hoahoa matou i nga mea katoa kia rite ki to tono. Ko te mea nui ehara i te raraunga, engari me pehea te mahi a te tono. Mena me whiwhi raraunga rereke i roto i nga huarahi rereke, i nga raraunga kotahi ranei i roto i nga huarahi rereke, me whakatakoto e tatou ki te huarahi e pai ana mo te tono. Ki te kore, ka taka tatou i roto i te Matawai Katoa ka kore a Cassandra e whai painga ki a tatou.

Ko te whakakore i nga raraunga ko te tikanga. Ka wareware matou ki nga ahua noa, kua kore a matou paaunga paaunga. Ki te 100 nga wa ka maka ki raro, ka 100 nga wa e takoto ana. He iti ake te utu i te whakamutu.

Ka tohua e matou nga taviri mo te wehewehe kia tohatoha noa. Kare matou e pirangi kia taka te hash o a matou ki ki tetahi awhe whaiti. Arā, ko te tau whanau i te tauira i runga ake nei he tauira kino. Ko te mea tika, he pai mena ka tohatohahia o taatau kaiwhakamahi i te tau o te whanautanga, he kino mena kei te korero tatou mo nga akonga o te reanga 5 - kaore e tino pai te wehewehenga ki reira.

Ka tohua te raupapatanga kotahi i te wahanga o te hanga Kī Rōpū. Mēnā me huri, me whakahōu tā mātou tēpu ki tētahi kī kē.

Ko te mea nui: ki te hiahia tatou ki te tiki i nga raraunga kotahi i roto i nga huarahi rereke 100, katahi ka 100 nga ripanga rereke.

Source: will.com

Tāpiri i te kōrero