Kasandra. E faʻafefea ona e le oti pe afai e te iloa Oracle

Talofa Habr.

O loʻu igoa o Misha Butrimov, ou te fia taʻu atu ia te oe sina mea itiiti e uiga ia Cassandra. O laʻu tala o le a aoga ia i latou e leʻi oʻo i NoSQL faʻamaumauga - e tele naua faʻatinoga faʻatinoga ma faʻalavelave e tatau ona e iloa. Ma afai e te leʻi vaʻai i se isi lava mea nai lo Oracle poʻo soʻo se isi faʻamaumauga fesoʻotaʻiga, o nei mea o le a laveaʻiina lou ola.

O le a se mea lelei e uiga ia Cassandra? O se fa'amaumauga NoSQL ua fuafuaina e aunoa ma se mea e tasi o le toilalo e fua lelei. Afai e te mana'omia le fa'aopoopoina o ni terabytes se lua mo nisi fa'amaumauga, na'o lou fa'aopoopoina o nodes i le mama. Fa'alautele i se isi nofoaga fa'amaumauga? Fa'aopoopo nodes i le fuifui. Faʻateleina le RPS faʻatautaia? Fa'aopoopo nodes i le fuifui. E galue foi i le itu faafeagai.

Kasandra. E faʻafefea ona e le oti pe afai e te iloa Oracle

O le a se isi mea e lelei ai o ia? E uiga i le taulimaina o le tele o talosaga. Ae e fia le tele? 10, 20, 30, 40 afe talosaga i le sekone e le tele. 100 afe talosaga i le sekone mo le pueina - foi. E iai kamupani na fai mai latou te tausia le 2 miliona talosaga i le sekone. Atonu e tatau ona latou talitonu i ai.

Ma i le mataupu faavae, e tasi le eseesega tele o Cassandra mai faʻamatalaga fesoʻotaʻiga - e le tutusa ma i latou. Ma e taua tele lenei mea e manatua.

E le o mea uma e foliga tutusa e galue tutusa

I se tasi taimi na sau ai se uo ia te au ma fesili mai: "O le CQL Cassandra le gagana fesili, ma o loʻo i ai se faʻamatalaga filifilia, o loʻo i ai le mea, o loʻo i ai ma. Ou te tusia ni tusi ma e le aoga. Aisea?". O le togafitia o Cassandra e pei o se fa'amaumauga tu'ufa'atasiga o le auala sili lea e pule ai i le ola. Ma ou te le faʻalauiloaina, e faʻasaina i Rusia. E na'o lou fa'atulagaina o se mea sese.

Mo se faʻataʻitaʻiga, e sau se tagata faʻatau ia i matou ma fai mai: "Seʻi o tatou fausia se database mo faʻasalalauga TV, poʻo se database mo se lisi o fua. O le a iai a matou meaʻai iina poʻo se lisi o faʻasalalauga TV ma tagata fai ata i totonu." Matou te faapea atu ma le olioli: “Ta o!” Na'o le lafo atu o le lua bytes, o ni fa'ailoga se lua ma ua e mae'a, o mea uma o le a vave ma fa'atuatuaina. Ma o loʻo lelei mea uma seʻia oʻo mai tagata faʻatau ma fai mai o loʻo foʻia e fafine fale le faʻafitauli faʻafeagai: e iai a latou lisi o oloa, ma latou te fia iloa poʻo le a le meaʻai latou te manaʻo e kuka. Ua e oti.

E mafua ona o Cassandra o se faʻamaumauga tuʻufaʻatasia: e tuʻuina atu i le taimi e tasi se taua taua ma teuina faʻamaumauga i koluma lautele. I Java poʻo Kotlin, e mafai ona faʻamatalaina faapenei:

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

O lona uiga, o se fa'afanua o lo'o iai fo'i se fa'afanua fa'avasega. O le ki muamua i lenei faafanua o le Row key poʻo le Partition key - o le vaeluaga ki. O le ki lona lua, o le ki i se faafanua ua uma ona faavasega, o le Clustering key.

Ina ia faʻaalia le tufatufaina o faʻamaumauga, seʻi o tatou tusi ni nodes se tolu. O lea la e tatau ona e malamalama pe faʻafefea ona faʻavasega faʻamaumauga i nodes. Aua afai tatou te faʻapipiʻi mea uma i le tasi (i le ala, e mafai ona i ai le afe, lua afe, lima - e pei ona e manaʻo ai), e le o le mea moni e uiga i le tufatufaina atu. O le mea lea, matou te manaʻomia se galuega faʻa-matematika e toe faʻafoʻi ai se numera. Na'o se numera, o se int umi o le a pa'u i se vaega. Ma o le a tatou maua le tasi node e nafa ma le tasi laina, o le lona lua mo le lona lua, o le lona lua mo le nth.

Kasandra. E faʻafefea ona e le oti pe afai e te iloa Oracle

O lenei numera e faʻaaogaina e faʻaaoga ai le hash function, lea e faʻaoga i le mea tatou te taʻua o le Partition key. O le koluma lea o loʻo faʻamaonia i le Primary ki faʻatonuga, ma o le koluma lea o le a avea ma ki muamua ma sili ona taua o le faʻafanua. E fuafua po'o fea node o le a maua ai fa'amaumauga. Ua faia se laulau i Cassandra ma toetoe lava tutusa le syntax pei o SQL:

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

)

O le ki Primary i lenei tulaga e aofia ai le tasi koluma, ma o le ki vaeluaga foi.

E fa'apefea ona fa'atino a tatou tagata fa'aoga? O nisi o le a alu i le tasi node, o isi i le isi, ma isi i le lona tolu. O le taunuuga o se laulau hash masani, e taʻua foi o se faafanua, e lauiloa foi o se lolomifefiloi i le Python, poʻo se faʻatulagaga faigofie Key e mafai ai ona tatou faitau uma tulaga taua, faitau ma tusitusi i le ki.

Kasandra. E faʻafefea ona e le oti pe afai e te iloa Oracle

Filifili: pe a faʻatagaina le faʻamalo e liliu i le faʻataʻitaʻiga atoa, poʻo le mea e le faia

Sei o tatou tusia se faamatalaga filifilia: select * from users where, userid = . E foliga mai e pei o Oracle: matou te tusia filifili, faʻamaonia tulaga ma mea uma e aoga, e maua e tagata faʻaoga. Ae afai e te filifilia, mo se faʻataʻitaʻiga, o se tagata faʻaoga ma se tausaga patino o le fanau mai, ua faitio Cassandra e le mafai ona faʻataunuʻuina le talosaga. Talu ai na te le iloa se mea e uiga i le auala tatou te tufatufa atu ai faʻamatalaga e uiga i le tausaga o le fanau mai - e naʻo le tasi le koluma na faʻaalia o se ki. Ona ia fai mai lea, “Ua lelei, e mafai lava ona ou faataunuuina lenei talosaga. Fa'aopoopo le fa'atagaina o le filiga." Matou te faʻaopoopoina le faʻatonuga, e aoga mea uma. Ma i le taimi nei e tupu se mea mataʻutia.

A matou tamoʻe i faʻamatalaga suʻega, e lelei mea uma. Ma a e faia se fesili i le gaosiga, lea matou te maua, mo se faʻataʻitaʻiga, 4 miliona faamaumauga, ona le lelei tele lea o mea uma mo i matou. Ona o le faʻatagaina o le faʻatagaina o se faʻatonuga lea e mafai ai e Cassandra ona aoina uma faʻamatalaga mai lenei laulau mai nodes uma, nofoaga autu uma o faʻamaumauga (pe afai e tele i latou i totonu o lenei fuifui), ona faʻapipiʻi ai lea. Ole fa'atusa lea ole Full Scan, ma e tau leai se tasi e fiafia iai.

Afai matou te manaʻomia tagata faʻaoga i ID, matou te lelei i lenei mea. Ae o nisi taimi tatou te manaʻomia le tusia o isi fesili ma tuʻuina atu isi tapulaʻa i le filifiliga. O le mea lea, matou te manatua: o se faʻafanua uma lea o loʻo i ai se ki vaeluaga, ae o totonu o loʻo i ai se faʻafanua faʻavasega.

Ma e iai fo'i lana ki, lea e ta'ua o le Clustering Key. O lenei ki, lea, i le isi itu, e aofia ai koluma tatou te filifilia, faatasi ai ma le fesoasoani lea e malamalama ai Cassandra pe faʻapefea ona faʻavasegaina faʻamaumauga ma o le a tuʻu i luga o node taʻitasi. O lona uiga, mo nisi ki Partition, o le Clustering key o le a taʻuina atu ia te oe le auala tonu e tuleia ai faʻamatalaga i totonu o lenei laʻau, o le a le nofoaga o le a alu ai iina.

O le mea moni lava o se laau, o se faʻatusatusaga e taʻua iina, lea tatou te pasia ai se seti o koluma i foliga o se mea, ma o loʻo faʻamaonia foi o se lisi o koluma.

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

Fa'alogo i le fa'atonuga autu a le Primary; o lona finauga muamua (i la matou mataupu, o le tausaga) e masani lava o le Vaega o le ki. E mafai ona aofia ai se tasi pe sili atu koluma, e le afaina. Afai e tele koluma, e tatau ona toe aveese i totonu o puipui ina ia malamalama ai le gagana muamua o le ki Primary, ae tua atu o isi koluma uma o le Clustering key. I lenei tulaga, o le a tuʻuina atu i le comparator i le faʻasologa o loʻo faʻaalia ai. O lona uiga, o le koluma muamua e sili atu le taua, o le lona lua e le taua, ma isi. O le auala tatou te tusitusi ai, mo se faʻataʻitaʻiga, e tutusa ma fanua mo vasega faʻamaumauga: matou te lisiina fanua, ma mo i latou matou te tusia po o fea e sili atu ma o fea e laʻititi. I Cassandra, o nei mea, e masani ona tautala, o fanua o le vasega faʻamaumauga, lea o le a faʻaaogaina ai tutusa tutusa.

Matou te setiina le fa'avasegaina ma fa'agata

E tatau ona e manatua o le faasologa o le faasologa (alu ifo, alu i luga, po o le a lava) e seti i le taimi lava e tasi pe a fai le ki, ma e le mafai ona suia mulimuli ane. E fuafua fa'aletino pe fa'apefea ona fa'avasega fa'amaumauga ma pe fa'apefea ona teuina. Afai e te manaʻomia le suia o le Clustering key poʻo le faʻasologa o le faasologa, e tatau ona e fatuina se laulau fou ma tuʻuina atu faʻamatalaga i totonu. O le a le aoga lea i se mea o iai.

Kasandra. E faʻafefea ona e le oti pe afai e te iloa Oracle

Na matou faʻatumu la matou laulau i tagata faʻaoga ma vaʻaia na latou paʻu i totonu o se mama, muamua i le tausaga o le fanau mai, ona i totonu o node taʻitasi e ala i totogi ma ID tagata faʻaoga. Ole taimi nei e mafai ona tatou filifili e ala i le fa'atupuina o tapula'a.

Ua toe aliali mai le matou galuega where, and, ma matou maua tagata faʻaoga, ma ua toe lelei mea uma. Ae afai tatou te taumafai e faʻaaoga naʻo se vaega o le Clustering key, ma se mea e le taua tele, o le a vave ona faitio Cassandra e le mafai ona maua le nofoaga i la tatou faʻafanua o loʻo i ai lenei mea, o loʻo i ai nei fanua mo le faʻatusatusaga null, ma le tasi lea. na fa'ato'a fa'atūina, - i le mea e ta'oto ai. E tatau ona ou toe tosoina uma faʻamatalaga mai lenei node ma faʻamama. Ma o se mea tutusa lea o le Full Scan i totonu o se node, e leaga.

I so'o se tulaga le manino, fai se laulau fou

Afai tatou te mananaʻo e mafai ona taulaʻi tagata faʻaoga ile ID, poʻo le matua, poʻo le totogi, o le a le mea e tatau ona tatou faia? E leai se mea. Fa'aaoga laulau e lua. Afai e te manaʻomia le aapa atu i tagata faʻaoga i ni auala eseese se tolu, e tolu laulau. Ua mou atu aso na matou sefe ai le avanoa i le sikulima. O le punaoa aupito taugofie lea. E sili atu le tau nai lo le taimi tali, lea e mafai ona afaina ai le tagata faʻaoga. E sili atu le manaia mo le tagata faʻaoga e maua se mea i le sekone nai lo le 10 minute.

Matou te fefaʻatauaʻi avanoa le manaʻomia ma faʻamatalaga faʻaletonu mo le mafai ona fua lelei ma faʻagaioi faʻalagolago. A uma mea uma, o le mea moni, o se fuifui e aofia ai nofoaga autu e tolu, o ia mea taitasi e lima nodes, faatasi ai ma se tulaga taliaina o le faasaoina o faamatalaga (pe a leai se mea e leiloa), e mafai ona ola i le oti o se tasi nofoaga autu o faamatalaga atoatoa. Ma isi nodes e lua i totonu o le lua o totoe. Ma e naʻo le maeʻa ai o lenei mea e amata ai faʻafitauli. O se mea sili ona lelei le toe faʻaleleia, e aoga i nisi SSD faʻaopoopo ma faʻagaioiga. O le mea lea, ina ia faʻaaogaina Cassandra, e le o se SQL, lea e leai ni mafutaga, ki mai fafo, e tatau ona e iloa tulafono faigofie.

Matou te mamanuina mea uma e tusa ai ma lau talosaga. O le mea autu e le o faʻamatalaga, ae faʻafefea ona galue le talosaga. Afai e manaʻomia le mauaina o faʻamatalaga eseese i auala eseese poʻo faʻamatalaga tutusa i auala eseese, e tatau ona tatou tuʻuina i se auala e faigofie mo le talosaga. A leai, o le a tatou toilalo i le Full Scan ma Cassandra o le a le tuuina mai ia i tatou se avanoa.

Denormalizing faʻamaumauga o le masani. Ua galo ia i matou faiga masani, ua le toe i ai ni fa'amaumauga o feso'ota'iga. Afai tatou te tuu i lalo se mea 100 taimi, o le a taoto i lalo 100 taimi. E sili atu le taugofie nai lo le taofi.

Matou te filifilia ki mo le vaeluaga ina ia tufatufaina masani. Matou te le mana'o e pa'u'ū le hash oa matou ki i se va'ai vaapiapi se tasi. O lona uiga, o le tausaga o le fanau mai i le faʻataʻitaʻiga o loʻo i luga o se faʻataʻitaʻiga leaga. E sili atu le saʻo, e lelei pe afai e masani ona tufatufaina a tatou tagata faʻaoga i le tausaga o le fanau mai, ma leaga pe a tatou talanoa e uiga i tamaiti aʻoga 5 - o le vaeluaga iina o le a le lelei tele.

E tasi lava le filifiliga o le fa'avasegaina ile vaega ole fa'atupuina ole Clustering Key. Afai e manaʻomia le suia, e tatau ona faʻafouina la matou laulau i se isi ki.

Ma o le mea pito sili ona taua: afai tatou te manaʻomia le toe maua mai o faʻamatalaga tutusa i 100 auala eseese, ona maua lea o le 100 laulau eseese.

puna: www.habr.com

Faaopoopo i ai se faamatalaga