Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ka tukatukahia e DBMS ClickHouse te maha o nga rarangi rereke, ka pau nga rauemi. Hei tere ake i te punaha, ka taapirihia nga arotautanga hou. Ko te kaiwhakawhanake ClickHouse Nikolai Kochetov e korero ana mo te momo raraunga aho, tae atu ki te momo hou, LowCardinality, me te whakamarama me pehea e tere ai te mahi me nga aho.

Taata ataata

- Tuatahi, me whakaaro me pehea e taea ai e koe te penapena aho.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

He momo raraunga aho. Ko te aho he taunoa pai, me tata tonu te whakamahi. He iti ki runga - 9 paita mo ia raina. Mena e hiahia ana matou kia whakatikahia te rahi o nga aho me te mohio i mua, he pai ake te whakamahi i te FixedString. Ka taea e koe te tautuhi i te maha o nga paita e hiahiatia ana e matou, he watea mo nga raraunga penei i nga wahitau IP me nga mahi hash.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko te tikanga, i etahi wa ka puhoi nga mea. Me kii kei te uiui koe i tetahi ripanga. Ka panuihia e ClickHouse te nui o nga raraunga, me kii, i te tere o te 100 GB / s, he iti noa nga rarangi ka tukatukahia. E rua a matou tepu e penapena tata ana ki nga raraunga kotahi. Ka panuihia e ClickHouse nga raraunga mai i te ripanga tuarua i runga i te tere tere, engari e toru nga wa iti ake nga rarangi mo te rua.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ki te titiro tatou ki te rahi o te raraunga kōpeke, ka tata rite. Ko te tikanga, kei roto i nga ripanga nga raraunga kotahi - nga piriona tuatahi - kei te rarangi tuatahi anake ka tuhia ki te ahua o UInt64, me te tuarua - ki te String. Na tenei, ka roa ake te tono tuarua ki te panui raraunga mai i te kōpae me te wetewete.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Tenei ano tetahi tauira. Me whakaaro tatou he huinga aho kua mohiotia i mua, he iti noa ki te 1000, 10 ranei, karekau e huri. Mo tenei keehi, he pai te momo raraunga Enum mo tatou, e rua o ratou kei ClickHouse - Enum000 me Enum8. Na te rokiroki i Enum, ka tere taatau ki te tukatuka i nga tono.

Ko te ClickHouse he whakatere mo te GROUP BY, IN, DISTINCT me te arotautanga mo etahi mahi, hei tauira, hei whakataurite ki te aho tonu. Ko te tikanga, ko nga tau kei roto i te aho kaore i te hurihia, engari, engari, ka hurihia te aho tonu ki te uara o Enum. I muri i tera, ka whakatauritea nga mea katoa.

Engari he kino ano. Ahakoa e mohio ana tatou ki te huinga o nga rarangi, i etahi wa me whakakii ano. Kua tae mai he raina hou - me mahi ALTER.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko te ALTER mo te Enum i ClickHouse ka tino whakatinanahia. Kaore matou e tuhi i nga raraunga i runga i te kōpae, engari ka taea e ALTER te whakaroa na te mea kei te rongoa nga hanganga Enum i roto i te kaupapa o te ripanga ake. No reira me tatari tatou mo nga tono kia panui mai i te teepu, hei tauira.

Ko te patai, ka taea te pai ake? Ae pea. Ka taea e koe te tiaki i te hanganga Enum kaua ki te aronuinga ripanga, engari ki ZooKeeper. Heoi, ka puta pea nga take tukutahi. Hei tauira, ko tetahi tauira i whiwhi raraunga, ko tetahi kaore, a mena he Enum tawhito tana, ka pakaru tetahi mea. (I ClickHouse, kua tata ki te mahi i nga tono ALTER kore-aukati. Ka oti ana taatau ki a raatau, kaore he hiahia ki te tatari mo nga tono panui.)

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Kia kore ai e raru ki a ALTER Enum, ka taea e koe te whakamahi i nga papakupu ClickHouse o waho. Me whakamahara ahau ki a koe he hanganga raraunga uara-matua tenei i roto i te ClickHouse, ka taea e koe te tiki raraunga mai i nga puna o waho, penei i nga ripanga MySQL.

I roto i te papakupu ClickHouse, he maha nga aho rereke ka penapenahia e matou, a, ki te ripanga, ko o raatau tohu ki te ahua o nga tau. Mena ka hiahia tatou ki te tiki aho, ka karangahia te mahi dictGet ka mahi tahi. Whai muri i tera kaore matou e mahi i te ALTER. Hei taapiri i tetahi mea ki te Enum, ka whakauruhia e matou ki te ripanga MySQL kotahi.

Engari i konei ka ara ake etahi atu raruraru. Tuatahi, ko te wetereo awkward. Mena kei te pirangi tatou ki te tiki aho, me waea tatou ki te dictGet. Tuarua, ko te kore o etahi arotautanga. Ko te whakataurite ki te aho tonu mo nga papakupu e kore e taea te mahi tere.

He raru ano pea kei te whakahou. Mehemea i tono matou i tetahi aho i roto i te papakupu keteroki, engari kaore i uru ki te keteroki. Na me tatari kia utaina nga raraunga mai i tetahi puna o waho.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko te kino noa o nga tikanga e rua ko te penapena i nga taviri katoa ki te waahi kotahi ka tukutahi. Na he aha e kore ai e penapena papakupu i te rohe? Kaore he tukutahi, kaore he raru. Ka taea e koe te penapena i te papakupu i te rohe ki roto i te tiihi ki runga kōpae. Arā, i mahia e mātou he Kōkuhu, he tuhi papakupu. Mena ka mahi tatou me nga raraunga i roto i te mahara, ka taea e tatou te tuhi papakupu ki tetahi poraka raraunga, ki tetahi waahanga o te pou, ki etahi momo keteroki ranei kia tere ake ai nga tatauranga.

Whakawaehere aho papakupu

Na ka tae mai matou ki te hanga i tetahi momo raraunga hou i ClickHouse - LowCardinality. He whakatakotoranga rokiroki raraunga tenei: me pehea te tuhi ki te kopae me te panui, me pehea te whakaatu i roto i te mahara, me pehea te tukatuka.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

E rua nga pou o te kiriata. I te taha matau, ka penapena nga aho hei paerewa, i te momo String. Ka kitea he tauira enei o nga waea pukoro. Kei te taha maui he rite tonu te pou, kei te momo LowCardinality anake. Kei roto he papakupu he maha nga aho rereke (nga aho mai i te pou kei te taha matau) me te rarangi tuunga (tau rarangi).

Ma te whakamahi i enei hanganga e rua, ka taea e koe te whakaora i te pou taketake. He taupū whakamuri whakamuri ano - he ripanga hash hei awhina ki te kimi turanga i roto i te papakupu ma te aho. Me tere ake etahi patai. Hei tauira, ki te hiahia tatou ki te whakataurite, rapua he aho i roto i ta tatou pou, hanumi ranei.

Ko LowCardinality he momo raraunga parametric. Ka taea pea he tau, he mea rongoa hei tau, he aho ranei, he Nullable ranei o aua mea.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko te ahuatanga o LowCardinality ka taea te penapena mo etahi mahi. Ka whakaatu te kiriata i tetahi tauira tono. I te rarangi tuatahi, i hanga e ahau he pou o te momo LowCardinality mai i te String, i tapaina ko S. I muri mai, ka patai ahau mo tona ingoa - ka kii a ClickHouse ko LowCardinality mai i te String. Kaati.

Ko te rarangi tuatoru he rite tonu, ko ta matou i karanga ko te mahi roa. I roto i te ClickHouse, ka whakahokia e te mahi roa he momo raraunga UInt64. Engari kei a matou te LowCardinality mai i UInt64. He aha te take?

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

I rongoahia e te papakupu nga ingoa o nga waea pukoro, i whakamahia e matou te mahi roa. Inaianei kei a matou he papakupu rite he tau anake - koinei nga roa o nga aho. Ko te tīwae tūnga kāore anō kia huri. Ko te mutunga, he iti ake nga raraunga i tukatukahia e matou, ka tiakina i te waa patai.

Tera pea etahi atu arotautanga, penei i te taapiri i te keteroki ngawari. I te tatau i te uara o tetahi mahi, ka maumahara koe ka tito i te mea kotahi, me te kore e tatau ano.

Ka taea hoki te mahi arotautanga, na te mea kua whakahiatohia ta matou pou papakupu - ka taea e koe te tatau tere i te uara o nga mahi hash me te kimi i te peere hei tuu i te rarangi e whai ake nei. Ka taea hoki e koe te whakanui i etahi mahi whakahiato, penei i te uniq, na te mea ka taea e koe te tuku papakupu anake ki a ia, ka waiho tonu nga tuunga - ma tenei ka tere ake te mahi o nga mea katoa. Kua tapiritia e matou nga arotautanga tuatahi e rua ki ClickHouse.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Engari me pehea ka hangahia he pou me o taatau momo raraunga me te whakauru i te maha o nga rarangi rereke kino ki roto? Ka puhake to tatou mahara? Kao, e rua nga tautuhinga motuhake a ClickHouse mo tenei. Ko te tuatahi ko te iti_cardinality_max_dictionary_size. Koinei te rahi o te papakupu ka taea te tuhi ki te kōpae. Ko te whakaurunga ka puta penei: ina whakauru tatou i nga raraunga, ka tae mai he awa raina ki a tatou, ka puta mai he papakupu nui noa. Mena ka nui ake te papakupu i te uara tautuhinga, ka tuhia e matou te papakupu o naianei ki te kopae, me era atu rarangi ki tetahi waahi "ki te taha", ki te taha o nga tohu. Ko te mutunga mai, kare rawa matou e tatau ano i te papakupu nui ka kore e raru te mahara.

Ko te tautuhinga tuarua ka kiia ko te iti_cardinality_use_single_dictionary_for_part. Whakaarohia i roto i te aronuinga o mua, i te wa i whakauruhia ai e matou nga raraunga, ka puhake atu ta matou papakupu ka tuhia e matou ki te kōpae. Ka puta ake te patai, he aha i kore ai e hanga i naianei tetahi atu papakupu rite tonu?

Ka puhake, ka tuhia ano ki te kōpae ka timata te hanga i te tuatoru. Ko tenei tautuhinga ka mono noa i tenei waahanga ma te taunoa.

Inaa, he maha nga papakupu ka whai hua mena ka pirangi tatou ki te whakauru i etahi rarangi rarangi, engari he "parapara" kua kuhuna. Me kii i whakauruhia e matou nga rarangi kino i te tuatahi, katahi ka whakauruhia nga mea pai. Katahi ka wehewehea te papakupu ki nga papakupu iti maha. Ko etahi o ratou ka "parapara", engari ko nga mea whakamutunga ka whai raina pai. A, ki te panui tatou, me kii, ko te granule whakamutunga anake, ka tere hoki nga mahi katoa.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

I mua i te korero mo nga painga o te LowCardinality, ka kii tonu ahau kaore pea e tutuki i te whakahekenga raraunga i runga i te kōpae (ahakoa ka puta tenei), na te mea ka kopiri a ClickHouse i nga raraunga. He kōwhiringa taunoa - LZ4. Ka taea hoki te kōpeke ki te ZSTD. Engari ko nga algorithm e rua kei te whakatinana i te taapiri papakupu, na to maatau papakupu ClickHouse o waho e kore e awhina nui.

Kia kore ai e pohehe, i tangohia e au etahi raraunga mai i te metric - String, LowCardinality(String) me te Enum - ka penapena ki nga momo raraunga rereke. E toru nga pou ka puta, kotahi piriona nga rarangi ka tuhia. Ko te pou tuatahi, CodePage, he 62 nga uara katoa. A e marama ana i roto i te LowCardinality(String) i pai ake ta maatau kikii i a raatau. He iti ake te kino o te aho, engari na te mea he poto nga aho, ka penapenahia e matou o raatau roa, a he nui te waahi ka nui te waahi, he kino te kopiri.

Mena ka tangohia e koe te WaeaModel, he 48 mano o raatau - kua nui ake, a kaore he rereketanga i waenga i te String me te LowCardinality (String). Mo te URL, i tiakina ano e matou te 2 GB anake - Ki taku whakaaro kaua koe e whakawhirinaki ki tenei.

Te arotake i te tere o te mahi

Rarangi arotautanga i ClickHouse. Pūrongo Yandex
Hononga mai i te kiriata

Inaianei ka arotakehia te tere o te mahi. Hei arotake, i whakamahia e ahau he huingararaunga e whakaahua ana i nga ekenga taxi i New York. Ko ia waatea i runga i GitHub. Neke atu i te kotahi piriona nga haerenga. Ka whakaatahia te waahi, te wa tiimata me te mutunga o te haerenga, te tikanga utu, te maha o nga kaihihi tae atu ki te momo taxi - kaakaariki, kowhai me te Uber.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko te tono tuatahi i mahia e au he tino ngawari - ka patai ahau kei hea te nuinga o nga wa ka ota waka. Ki te mahi i tenei, me tango e koe te waahi mai i te wahi i ota ai koe, hanga he GROUP BY ki runga ka tatau i te mahi tatau. I konei ka tukuna e ClickHouse tetahi mea.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Hei ine i te tere tukatuka uiui, i hanga e ahau nga ripanga e toru me nga raraunga rite, engari i whakamahia e toru nga momo raraunga rereke mo to maatau waahi timata - String, LowCardinality me Enum. Ko te LowCardinality me te Enum e rima nga wa tere atu i te String. He tere ake te Enum na te mea e mahi ana me nga tau. LowCardinality - na te mea kua whakatinanahia te GROUP BY arotautanga.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Kia whakamaarama ake te patai - patai kei hea te papa rongonui o Niu Ioka. Ano, ka inehia e matou tenei ma te nuinga o nga wa e tonohia ai nga taxis, engari i te wa ano ka tātarihia e matou nga waahi kei reira te kupu "papa". Ka taapirihia e matou he mahi rite.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ka titiro tatou ki te wa - ka kite tatou i te ohorere a Enum i te puhoi haere. A he puhoi ake te mahi i te momo raraunga String paerewa. Ko tenei na te mea kaore i te arotauhia te mahi penei mo Enum. Me huri a tatou aho Enum ki nga aho noa - kei te mahi ano tatou. Ko te LowCardinality(String) kaore ano kia arotauhia ma te taunoa, engari he rite nga mahi ki te papakupu, no reira he tere ake te patai ki te String.

I te wa e mahi tahi ana me Enum, ka nui ake te raruraru o te ao. Mena kei te pirangi tatou ki te arotau, me mahi i nga waahi katoa o te waehere. Ki te mea kua tuhia e matou he mahi hou - me puta ake he arotautanga mo Enum. A i roto i te LowCardinality ka whakatikahia nga mea katoa ma te taunoa.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Me titiro ki te patai whakamutunga, he mea hanga noa ake. Ka tatau noa matou i te mahi hash mai i to maatau waahi. He puhoi te patai te mahi hash, he roa te waa, no reira ka puhoi nga mea katoa ma te toru.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

He tere tonu te LowCardinality ahakoa karekau he tātari. Ko tenei na te mea ka mahi noa a maatau mahi ki te papakupu. Kotahi te tautohenga o te mahi tatauranga hash - ka taea e ia te tukatuka i nga raraunga iti ka taea hoki te whakahoki i te LowCardinality.

Rarangi arotautanga i ClickHouse. Pūrongo Yandex

Ko ta maatau mahere o te ao ko te whakatutuki i nga mahi kaore e iti ake i tera o String ahakoa he aha, me te pupuri i nga tere tere. A tera pea tetahi ra ka whakakapihia e matou te String me te LowCardinality, ka whakahou koe i te ClickHouse, a ka tere ake nga mahi katoa mo koe.

Source: will.com

Hokona te manaaki pono mo nga waahi me te tiaki DDoS, nga kaiwhakarato VPS VDS 🔥 Hokona he manaaki paetukutuku pono me te tiakitanga DDoS, ngā tūmau VPS VDS | ProHoster