Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Koa satria ClickHouse dia rafitra manokana, rehefa mampiasa azy io dia zava-dehibe ny mandinika ny endriky ny maritrano. Amin'ity tatitra ity, Alexey dia hiresaka momba ny ohatra momba ny fahadisoana mahazatra rehefa mampiasa ClickHouse, izay mety hitarika amin'ny asa tsy mahomby. Ny ohatra azo ampiharina dia hampiseho ny fomba ahafahan'ny fisafidianana tetika fanodinana angon-drakitra iray na hafa hanovana ny zava-bita amin'ny halehiben'ny habeny.

Salama daholo! Alexey no anarako, manao ClickHouse aho.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Voalohany, maika ny hampifaly anao avy hatrany aho, anio dia tsy hilaza aminao hoe inona ny ClickHouse. Raha ny marina, leo aho. Isaky ny milaza aminao aho hoe inona izany. Ary angamba efa fantatry ny rehetra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fa kosa, holazaiko aminao izay mety ho lesoka, izany hoe ny fomba fampiasanao ny ClickHouse diso. Raha ny marina, tsy ilaina ny hatahotra, satria ny ClickHouse dia mampivelatra ho rafitra tsotra, mety ary miasa ivelan'ny boaty. Nametraka azy aho, tsy misy olana.

Saingy mbola mila mandinika ianao fa ity rafitra ity dia manam-pahaizana manokana ary afaka mahita tranga fampiasana tsy mahazatra izay hanaisotra ity rafitra ity amin'ny faritra mampionona anao ianao.

Inona Γ ry no karazana rake? Amin'ny ankapobeny dia hiresaka zavatra miharihary aho. Miharihary amin'ny rehetra ny zava-drehetra, azon'ny rehetra ny zava-drehetra ary mety ho faly izy ireo satria hendry izy ireo, ary hianatra zava-baovao ireo tsy mahazo.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ny ohatra voalohany sy tsotra indrindra, izay, indrisy, matetika mitranga, dia be dia be ny fampidirana miaraka amin'ny batch kely, izany hoe be dia be ny fampidirana kely.

Raha mandinika ny fomba fanaon'ny ClickHouse ny fampidirana, dia afaka mandefa terabyte farafaharatsiny ianao amin'ny fangatahana iray. Tsy olana izany.

Ary andeha hojerentsika izay mety ho fampisehoana mahazatra. Ohatra, manana latabatra avy amin'ny data Yandex.Metrica izahay. Hits. 105 tsanganana sasany. 700 bytes tsy voapotsitra. Ary hampidirinay amin'ny fomba tsara amin'ny andiany iray tapitrisa andalana.

Ampidirinay ao anaty latabatra ny MergeTree, dia lasa andalana antsasaka tapitrisa isan-tsegondra. Mahafinaritra. Amin'ny latabatra averina dia ho kely kokoa izany, manodidina ny 400 andalana isan-tsegondra.

Ary raha avelanao ny fampidirana kΓ΄lejy, dia mahazo 250 segondra isan-tsegondra ianao, nefa mbola mendrika ny fampisehoana. Ny fampidirana kΓ΄lejy dia endri-javatra tsy misy taratasy ao amin'ny ClickHouse*.

* amin'ny 2020, efa voarakitra an-tsoratra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Inona no mitranga raha manao zavatra ratsy ianao? Mampiditra andalana iray ao amin'ny latabatra MergeTree isika ary mahazo laharana 59 isan-tsegondra. Izany dia in-10 miadana kokoa. Ao amin'ny ReplicatedMergeTree - laharana 000 isan-tsegondra. Ary raha mihodina ny kΓ΄lejy, dia mivoaka ny andalana 6 isan-tsegondra. Raha ny hevitro dia karazana hadalana tanteraka izany. Ahoana no ahafahanao miadana toy izany? Efa voasoratra ao amin'ny T-shirt-ko mihitsy aza fa tsy tokony hihena ny ClickHouse. Saingy mitranga izany indraindray.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Raha ny marina dia izao no lesokay. Afaka nanao mora foana ny zava-drehetra izahay, saingy tsy nanao izany izahay. Ary tsy nanao izany izahay satria tsy nitaky izany ny scripty. Efa nanana butches izahay. Vao avy nahazo batch izahay teo am-pidirana, ary tsy nisy olana. Ampidirinay ary mandeha tsara ny zava-drehetra. Saingy, mazava ho azy, ny karazana scenario rehetra dia azo atao. Ohatra, rehefa manana mpizara maromaro ianao izay mamorona angona. Ary tsy mampiditra data matetika izy ireo, fa mbola miafara amin'ny fampidirana matetika. Ary mila misoroka izany isika.

Avy amin'ny fomba fijery ara-teknika, ny teboka dia ny hoe rehefa manao insert ao amin'ny ClickHouse ianao dia tsy miafara amin'ny memtable ny angon-drakitra. Tsy manana rafitra hazo tena izy akory izahay MergeTree, fa MergeTree fotsiny, satria tsy misy log na memTable. Isika dia manoratra avy hatrany ny angon-drakitra amin'ny rafitra fichier, efa voalamina amin'ny tsanganana. Ary raha manana tsanganana 100 ianao, dia mihoatra ny 200 ny rakitra mila soratana amin'ny lahatahiry misaraka. Tena sarotra izany rehetra izany.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary mipoitra ny fanontaniana hoe: "Ahoana no hanaovana izany?" Raha toa ny toe-javatra dia mbola mila manoratra angona ao amin'ny ClickHouse ianao.

Fomba 1. Ity no fomba tsotra indrindra. MampiasΓ  karazana filaharana zaraina. Ohatra, Kafka. Maka angon-drakitra ao amin'ny Kafka fotsiny ianao ary manambatra azy indray mandeha isan-tsegondra. Ary ho tsara ny zava-drehetra, raketinao, mandeha tsara ny zava-drehetra.

Ny fatiantoka dia ny hoe Kafka dia rafitra iray hafa miparitaka be. Azoko ihany koa raha efa manana Kafka ao amin'ny orinasanao ianao. Tsara, mety. Fa raha tsy misy izany, dia tokony hieritreritra in-telo ianao alohan'ny hisintonana rafitra hafa zaraina amin'ny tetikasanao. Ary noho izany dia mendrika ny handinika safidy hafa.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba 2. Ity dia fomba fanao taloha ary tena tsotra. Moa ve ianao manana karazana mpizara izay mamorona ny dianao. Ary manoratra ny dianao amin'ny rakitra iray fotsiny izy io. Ary indray mandeha isan-tsegondra, ohatra, dia manonona anarana ity rakitra ity isika ary manapaka iray vaovao. Ary ny script mitokana, na amin'ny alalan'ny cron na daemon sasany, dia maka ny rakitra tranainy indrindra ary manoratra izany amin'ny ClickHouse. Raha mirakitra rakitsoratra indray mandeha isan-tsegondra ianao dia ho tsara ny zava-drehetra.

Fa ny tsy fahampian'ity fomba ity dia ny hoe raha tsy hita any amin'ny toerana iray ny mpizara anao izay namoronana ny logs, dia hanjavona koa ny data.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba 3. Misy fomba hafa mahaliana, izay tsy mitaky rakitra vonjimaika mihitsy. Ohatra, manana karazana spinner doka ianao na daemon hafa mahaliana izay miteraka angona. Ary afaka manangona angon-drakitra mivantana ao amin'ny RAM ianao, ao amin'ny buffer. Ary rehefa ampy ny fotoana dia apetrakao an-kilabao ity buffer ity, mamorona vaovao, ary amin'ny kofehy misaraka, ampidiro ao amin'ny ClickHouse izay efa voaangona.

Amin'ny lafiny iray, manjavona ihany koa ny angon-drakitra miaraka amin'ny famonoana -9. Raha mianjera ny mpizara anao dia ho very ity angona ity. Ary ny olana iray hafa dia ny hoe raha tsy afaka manoratra amin'ny angon-drakitra ianao, dia hiangona ao amin'ny RAM ny angonao. Ary na ho lany ny RAM, na ho very data fotsiny ianao.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba 4. Fomba hafa mahaliana. Manana karazana fizotry ny mpizara ve ianao. Ary afaka mandefa data any amin'ny ClickHouse avy hatrany izy, fa ataovy amin'ny fifandraisana iray. Ohatra, nandefa fangatahana http aho miaraka amin'ny famindrana-encoding: nopotehina miaraka amin'ny insert. Ary tsy dia mahalana loatra izy io, afaka mandefa andalana tsirairay ianao, na dia misy aza ny overhead amin'ny fandrafetana an'io data io.

Na izany aza, amin'ity tranga ity dia halefa any amin'ny ClickHouse avy hatrany ny angon-drakitra. Ary ny ClickHouse dia hanohana azy ireo.

Mipoitra koa anefa ny olana. Ankehitriny dia ho very angon-drakitra ianao, anisan'izany ny fotoana namonoana ny fizotranao ary raha maty ny fizotran'ny ClickHouse, satria ho fampidirana tsy feno izany. Ary ao amin'ny ClickHouse ny fampidirana dia atomika hatramin'ny tokonam-baravarana voafaritra amin'ny haben'ny andalana. Amin'ny ankapobeny, fomba mahaliana izany. Azo ampiasaina koa.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba 5. Ity misy fomba hafa mahaliana. Ity dia karazana mpizara novolavolain'ny vondrom-piarahamonina ho an'ny fanangonana angona. Tsy mbola nijery izany ny tenako, ka tsy azoko antoka na inona na inona. Na izany aza, tsy misy antoka omena ho an'ny ClickHouse mihitsy. Loharanom-baovao misokatra ihany koa ity, saingy amin'ny lafiny iray, mety ho zatra amin'ny fenitra kalitao ezahina omenay ianao. Fa amin'ity zavatra ity - tsy fantatro, mandehana any GitHub, jereo ny code. Angamba izy ireo nanoratra zavatra mahazatra.

* amin'ny 2020, dia tokony hodinihina ihany koa KittenHouse.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba 6. Ny fomba iray hafa dia ny fampiasana tabilao Buffer. Ny tombony amin'ity fomba ity dia tena mora ny manomboka mampiasa. Mamorona latabatra Buffer ary ampidiro ao anatiny.

Ny fatiantoka dia tsy voavaha tanteraka ny olana. Raha, amin'ny tahan'ny toy ny MergeTree, dia tsy maintsy manangona angon-drakitra amin'ny ampahany iray isan-tsegondra ianao, amin'ny tahan'ny iray amin'ny tabilao buffer, mila manangona farafahakeliny hatramin'ny arivo isan-tsegondra ianao. Raha mihoatra ny 10 isan-tsegondra dia mbola ratsy ihany. Ary raha ampidirinao ao anaty batch izany, dia hitanao fa lasa andalana iray hetsy isan-tsegondra izany. Ary izany dia efa amin'ny angon-drakitra somary mavesatra.

Ary koa ny latabatra buffer dia tsy manana log. Ary raha misy zavatra tsy mety amin'ny servero dia ho very ny angona.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary amin'ny maha-bonus azy, vao haingana izahay no nahazo fahafahana tao amin'ny ClickHouse haka angon-drakitra avy amin'ny Kafka. Misy motera latabatra - Kafka. Mamorona fotsiny ianao. Ary azonao atao ny manantona ireo fanehoana mivaingana eo aminy. Amin'ity tranga ity, ny tenany ihany no hanala ny angona avy amin'ny Kafka ary hampiditra azy ao anaty tabilao ilainao.

Ary ny tena mahafinaritra amin'ity fahafahana ity dia tsy izahay no nanao izany. Ity dia endri-piarahamonina. Ary rehefa miteny aho hoe "endri-javatra eo amin'ny fiaraha-monina," tsy misy fanamavoana no tiako ambara. Namaky ny kaody izahay, nanao famerenana, tokony hiasa tsara.

* tamin'ny 2020, nisy fanohanana mitovy amin'izany Ny bitro MQ.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Inona koa no mety hahasosotra na tsy ampoizina rehefa mampiditra angona? Raha manao fangatahan'ny soatoavina ianao ary manorata fanehoana kajy amin'ny soatoavina. Ohatra, izao () dia fomba fiteny kajy ihany koa. Ary amin'ity tranga ity, ny ClickHouse dia voatery manomboka ny mpandika teny amin'ireo fomba fiteny ireo amin'ny andalana tsirairay, ary ny fampisehoana dia hidina amin'ny halehiben'ny habeny. Aleo misoroka izany.

* Amin'izao fotoana izao dia voavaha tanteraka ny olana, tsy misy fihemorana intsony rehefa mampiasa teny ao amin'ny VALUES.

Ohatra iray hafa dia rehefa mety hisy olana rehefa manana angon-drakitra amin'ny andiany iray izay an'ny fizarazarana maromaro ianao. Amin'ny alΓ lan'ny default, ny fizarana ClickHouse dia isam-bolana. Ary raha mampiditra andiana andalana iray tapitrisa ianao, ary misy angon-drakitra mandritra ny taona maromaro, dia hanana fizarazarana am-polony maro ianao. Ary izany dia mitovy amin'ny hoe hisy batches im-polo heny kely kokoa ny habeny, satria ao anatiny izy ireo dia mizara ho partitions foana.

* Vao haingana, tamin'ny fomba andrana, ny ClickHouse dia nanampy ny fanohanana ny endrika mahafatifaty amin'ny sombintsombiny sy ny sombintsombiny ao amin'ny RAM miaraka amin'ny log-manoratra mialoha, izay saika mamaha tanteraka ny olana.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Andeha hojerentsika ny karazana olana faharoa - fanoratana data.

Ny fanoratana data dia mety ho henjana na tady. String dia rehefa naka izany ianao ary nanambara fa ny sahanao rehetra dia karazana tady. Mampalahelo izany. Tsy ilaina ny manao izany.

Andeha hojerentsika ny fomba hanaovana izany araka ny tokony ho izy amin'ireo tranga ireo rehefa te-hilaza ianao fa manana saha isika, tady, ary avelao i ClickHouse hamantatra azy irery, ary tsy hanahirana aho. Mbola mendrika ny hanaovana ezaka ihany anefa izany.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ohatra, manana adiresy IP izahay. Amin'ny tranga iray, dia notahirizinay ho tady izany. Ohatra, 192.168.1.1. Ary amin'ny tranga hafa, dia karazana UInt32* maromaro izany. 32 bit dia ampy ho an'ny adiresy IPv4.

Voalohany, mahagaga, ny angon-drakitra dia ho voatsindry mitovy. Hisy ny fahasamihafana, mazava ho azy, fa tsy dia lehibe loatra. Noho izany dia tsy misy olana manokana amin'ny disk I/O.

Saingy misy fahasamihafana goavana amin'ny fotoanan'ny processeur sy ny fotoana fanatanterahana ny fangatahana.

Andao hanisa ny isan'ny adiresy IP tokana raha voatahiry ho isa. Izany dia mahatratra 137 tapitrisa andalana isan-tsegondra. Raha mitovy amin'ny endriky ny tady, dia 37 tapitrisa andalana isan-tsegondra. Tsy haiko ny antony nahatonga an'io kisendrasendra io. Izaho mihitsy no nanatanteraka ireo fangatahana ireo. Saingy mbola in-4 miadana kokoa.

Ary raha manao kajy ny fahasamihafana eo amin'ny habaka kapila, dia misy ihany koa ny fahasamihafana. Ary ny fahasamihafΓ na dia eo amin'ny ampahefany, satria be dia be ny adiresy IP tokana. Ary raha misy andalana misy dikany kely maromaro, dia mora voatsindry araka ny diksionera amin'ny boky mitovy.

Ary ny fahasamihafan'ny fotoana efatra heny dia tsy mipetraka eny an-dalana. Sao dia tsy miraharaha ianao, mazava ho azy, fa rehefa mahita fiovana toy izany aho dia mampalahelo ahy.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Andeha hojerentsika ny tranga samihafa.

1. Tranga iray rehefa manana soatoavina miavaka vitsivitsy ianao. Amin'ity tranga ity, mampiasa fomba tsotra izay mety ho fantatrao sy azonao ampiasaina amin'ny DBMS rehetra izahay. Izany rehetra izany dia mitombina fa tsy ho an'ny ClickHouse ihany. Soraty fotsiny ireo famantarana nomerika ao anaty angon-drakitra. Ary azonao atao ny mivadika ho tady sy miverina eo amin'ny sisin'ny fampiharana anao.

Ohatra, manana faritra ianao. Ary miezaka mitahiry azy ho tady ianao. Ary hosoratana ao: Moskoa sy Moskoa Faritra. Ary rehefa hitako fa miteny hoe "Moscow", dia tsinontsinona izany, fa rehefa Moskoa, dia lasa mampalahelo tanteraka. Izany no isan'ny bytes.

Fa kosa, soratanay fotsiny ny isa Ulnt32 sy 250. Manana 250 izahay ao amin'ny Yandex, saingy mety ho hafa ny anao. Raha sanatria, dia holazaiko fa ny ClickHouse dia manana fahaiza-manao namboarina hiasa amin'ny geobase. Soraty fotsiny ny lahatahiry misy faritra, ao anatin'izany ny ambaratonga iray, izany hoe hisy Moskoa, Faritra Moskoa, ary izay rehetra ilainao. Ary azonao atao ny miova amin'ny ambaratonga fangatahana.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ny safidy faharoa dia mitovy ihany, fa miaraka amin'ny fanohanana ao anatin'ny ClickHouse. Ity no karazana data Enum. Soraty fotsiny ny soatoavina rehetra ilainao ao anaty Enum. Ohatra, karazana fitaovana ary soraty eo: desktop, finday, tablette, TV. Misy safidy 4 amin'ny fitambarany.

Ny fatiantoka dia ny hoe mila manova izany tsindraindray. Safidy iray ihany no nampiana. Andao hanao alter table. Raha ny marina, maimaim-poana ny latabatra fanovana ao amin'ny ClickHouse. Maimaimpoana indrindra ho an'ny Enum satria tsy miova ny angon-drakitra ao amin'ny disk. Na izany aza, i alter dia mahazo hidy* eo ambony latabatra ary tsy maintsy miandry mandra-pahavitan'ny safidy rehetra. Ary aorian'io fanovana io ihany no hotanterahina, izany hoe mbola misy ny tsy fahatomombanana.

* amin'ny dikan-teny farany an'ny ClickHouse, ny ALTER dia natao tsy voasakana tanteraka.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Safidy iray hafa izay tena miavaka ho an'ny ClickHouse dia ny fampifandraisana rakibolana ivelany. Afaka manoratra isa ao amin'ny ClickHouse ianao, ary mitazona ny lahatahinao amin'ny rafitra mety aminao. Ohatra, azonao ampiasaina: MySQL, Mongo, Postgres. Azonao atao mihitsy aza ny mamorona microservice anao izay handefa ity data ity amin'ny alΓ lan'ny http. Ary amin'ny haavon'ny ClickHouse, manoratra asa iray izay hanova ity angona ity amin'ny isa ho tady ianao.

Ity dia fomba manokana nefa tena mahomby amin'ny fanatanterahana ny fidirana amin'ny latabatra ivelany. Ary misy safidy roa. Amin'ny endrika iray, ity angon-drakitra ity dia ho voatahiry tanteraka, feno ao amin'ny RAM ary havaozina matetika. Ary amin'ny safidy hafa, raha tsy mifanaraka amin'ny RAM io angon-drakitra io, dia azonao atao ny mametraka azy amin'ny ampahany.

Ity misy ohatra iray. Misy Yandex.Direct. Ary misy orinasa mpanao dokam-barotra sy sora-baventy. Am-polony tapitrisa eo ho eo angamba ny orinasa mpanao dokam-barotra. Ary mifanaraka amin'ny RAM izy ireo. Ary misy sora-baventy an'arivony tapitrisa, tsy mety. Ary mampiasa rakibolana cache avy amin'ny MySQL izahay.

Ny hany olana dia ny rakibolana cache dia hiasa tsara raha toa ka manakaiky ny 100% ny taham-pahavoazana. Raha kely kokoa izany, dia rehefa mamaly fanontaniana ho an'ny angon-drakitra tsirairay ianao dia tsy maintsy maka ny fanalahidy tsy hita ary maka ny angona avy amin'ny MySQL. Momba ny ClickHouse, mbola azoko antoka fa - eny, tsy miadana izany, tsy hiresaka momba ny rafitra hafa aho.

Ary amin'ny maha-bonus azy, ny diksionera dia fomba tena mora hanavaozana ny angona ao amin'ny ClickHouse. Izany hoe, nanana tatitra momba ny orinasa dokam-barotra ianao, nanova tsotra izao ny orinasa dokam-barotra ny mpampiasa ary tamin'ny angon-drakitra taloha rehetra, tamin'ny tatitra rehetra dia niova ihany koa io data io. Raha manoratra andalana mivantana amin'ny latabatra ianao dia tsy ho azo atao ny manavao azy ireo.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fomba iray hafa rehefa tsy fantatrao hoe aiza no ahazoanao ny famantarana ny tadinao. azonao atao ny manitsy azy fotsiny. Ankoatra izany, ny safidy tsotra indrindra dia ny maka 64-bit hash.

Ny hany olana dia raha 64-bit ny hash dia azo antoka fa hisy fifandonana. Satria raha misy andalana iray miliara any, dia efa mibaribary ny mety hitranga.

Ary tsy dia tsara loatra ny manitsy ny anaran'ny orinasa mpanao dokam-barotra amin'izany fomba izany. Raha mifangaro ny fampielezan-kevitry ny orinasa samihafa, dia hisy zavatra tsy takatry ny saina.

Ary misy tetika tsotra. Marina fa tsy mety amin'ny angon-drakitra matotra ihany koa, fa raha misy zavatra tsy dia matotra, dia ampio fotsiny ny famantarana mpanjifa amin'ny fanalahidin'ny rakibolana. Ary avy eo dia hisy fifandonana, fa ao anatin'ny mpanjifa iray ihany. Ary mampiasa ity fomba ity izahay amin'ny sarintany rohy ao amin'ny Yandex.Metrica. Manana URL any izahay, mitahiry hash. Ary fantatsika fa, mazava ho azy, misy fifandonana. Saingy rehefa aseho ny pejy dia azo atao tsinontsinona ny mety hisian'ny URL sasany ao amin'ny pejy iray amin'ny mpampiasa iray ary ho tsikaritra izany.

Amin'ny maha-bonus azy, ho an'ny asa maro dia ampy ny hashes irery ary ny tady dia tsy mila tehirizina na aiza na aiza.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ohatra iray hafa dia raha fohy ny tady, ohatra, ny sahan-tranonkala. Azo tehirizina toy ny misy izy ireo. Na, ohatra, ny fiteny navigateur ru dia 2 bytes. Mazava ho azy, tena malahelo ny bytes aho, fa aza manahy, 2 bytes dia tsy mampalahelo. Azafady, tazomy amin'ny maha izy azy, aza manahy.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ny tranga iray hafa dia rehefa, mifanohitra amin'izany, misy tsipika be dia be ary misy tsy manam-paharoa maro ao aminy, ary na dia ny set aza dia mety tsy voafetra. Ny ohatra mahazatra dia andian-teny fikarohana na URL. Fikarohana andian-teny, anisan'izany ny typos. Andeha hojerentsika hoe firy ny andian-teny fikarohana miavaka isan'andro. Ary hita fa saika ny antsasaky ny hetsika rehetra izy ireo. Ary amin'ity tranga ity, mety hieritreritra ianao fa mila manara-dalΓ na ny angon-drakitra, manisa ny famantarana, ary mametraka azy amin'ny latabatra misaraka. Saingy tsy mila manao izany ianao. Tazony ho toy ny maha-izy azy ireo andalana ireo.

Tsara kokoa ny tsy mamorona na inona na inona, satria raha mitahiry azy misaraka ianao dia mila manao fiarahana. Ary ity fiarahana ity dia, amin'ny tsara indrindra, fidirana kisendrasendra amin'ny fitadidiana, raha mbola mifanaraka amin'ny fitadidiana. Raha tsy mety dia hisy olana.

Ary raha voatahiry ao amin'ny toerany ny angon-drakitra, dia vakiana fotsiny amin'ny filaharana marina avy amin'ny rafi-drakitra ary tsara ny zava-drehetra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Raha manana URL ianao na tady lava be pitsiny hafa, dia ilaina ny mandinika fa azonao atao ny manisa karazana fitrandrahana mialoha ary manoratra izany amin'ny tsanganana mitokana.

Ho an'ny URL, ohatra, azonao atao mitokana ny sehatra. Ary raha tena mila sehatra ianao, dia ampiasao fotsiny ity tsanganana ity, ary hipetraka eo ny URL, ary tsy hikasika azy ireo akory ianao.

Andeha hojerentsika hoe inona ny fahasamihafana. ClickHouse dia manana fiasa manokana izay manisa ny sehatra. Haingana be izany, nohatsarainay. Ary, raha ny marina, tsy mifanaraka amin'ny RFC akory izany, fa na izany aza dia mandinika izay rehetra ilaintsika.

Ary amin'ny tranga iray dia ho azontsika fotsiny ny URL ary kajy ny sehatra. Mihoatra ny 166 milliseconds izany. Ary raha maka sehatra efa vonona ianao, dia hita fa 67 milliseconds ihany, izany hoe efa ho avo telo heny haingana kokoa. Ary haingana kokoa izany fa tsy hoe mila manao kajikajy sasany, fa noho ny famakiana data kely kokoa.

Izany no mahatonga ny fangatahana iray, izay miadana kokoa, manana hafainganam-pandeha ambony kokoa amin'ny gigabytes isan-tsegondra. Satria mamaky gigabytes bebe kokoa. Data tsy ilaina mihitsy izany. Toa mihazakazaka haingana kokoa ny fangatahana, saingy elaela vao vita.

Ary raha jerena ny habetsaky ny data ao amin'ny kapila dia hita fa 126 megabytes ny URL, ary 5 megabytes ihany ny domaine. Mihena in-25 izany. Saingy na izany aza, ny fangatahana dia tanterahina in-4 haingana kokoa. Fa izany dia satria mafana ny data. Ary raha mangatsiaka dia mety ho avo 25 heny noho ny kapila I/O.

Raha ny tokony ho izy, raha tombananao hoe ohatrinona ny domaine kely kokoa noho ny URL, dia hita fa kely kokoa ny in-4. Saingy noho ny antony, ny angon-drakitra dia maka 25 heny amin'ny kapila. Nahoana? Noho ny fanerena. Ary ny URL dia voatsindry, ary ny sehatra dia voatsindry. Saingy matetika ny URL dia misy fako maro.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary, mazava ho azy, mandoa ny fampiasana ny karazana data mety izay natao manokana ho an'ny sanda irina na mety. Raha ao amin'ny IPv4 ianao dia tehirizo ny UInt32*. Raha IPv6, dia FixedString (16), satria ny adiresy IPv6 dia 128 bit, izany hoe voatahiry mivantana amin'ny endrika binary.

Ahoana anefa raha manana adiresy IPv4 ianao indraindray ary IPv6 indraindray? Eny, afaka mitahiry azy roa ianao. Andry iray ho an'ny IPv4, iray hafa ho an'ny IPv6. Mazava ho azy fa misy safidy hanehoana IPv4 amin'ny IPv6. Hahomby ihany koa izany, fa raha mila adiresy IPv4 matetika ianao amin'ny fangatahana, dia tsara ny mametraka azy ao anaty tsanganana mitokana.

* ClickHouse izao dia manana karazana data IPv4, IPv6 mitokana izay mitahiry angon-drakitra amin'ny fomba mahomby toy ny isa, saingy maneho azy ireo amin'ny fomba mety toy ny tady.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Zava-dehibe ihany koa ny manamarika fa mendrika ny fanodinana mialoha ny angon-drakitra. Ohatra, mahazo logs manta vitsivitsy ianao. Ary angamba tsy tokony hametraka azy ireo ao amin'ny ClickHouse avy hatrany ianao, na dia tena maka fanahy aza ny tsy manao na inona na inona ary ny zava-drehetra dia hahomby. Saingy mbola mendrika ny hanatanterahana ny kajikajy azo atao.

Ohatra, version navigateur. Any amin'ny departemanta sasany eo akaiky eo, izay tsy tiako hanondroana rantsantanana, dia voatahiry toy izao ny versione navigateur, izany hoe, toy ny tady: 12.3. Ary avy eo, mba hanaovana tatitra, dia alainy io tady io ary zarao ho laharan-tariby, ary avy eo amin'ny singa voalohany amin'ny laharan-tariby. Mazava ho azy fa miadana ny zava-drehetra. Nanontany aho hoe nahoana izy ireo no manao izany. Nilaza tamiko izy ireo fa tsy tia ny fanatsarana aloha loatra. Ary tsy tiako ny pessimization aloha loatra.

Ka amin'ity tranga ity dia mety kokoa ny mizara ho tsanganana 4. Aza matahotra eto fa ClickHouse ity. ClickHouse dia angon-drakitra tsanganana. Ary ny andry kely milamina kokoa, ny tsara kokoa. Hisy 5 BrowserVersions, manao tsanganana 5. Tsara izany.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Andeha hojerentsika izao ny tokony hatao raha manana tady lava be dia be ianao. Tsy mila tehirizina ao amin'ny ClickHouse mihitsy izy ireo. Fa kosa, azonao atao ny mitahiry identifier ao amin'ny ClickHouse. Ary apetraho ao anaty rafitra hafa ireo andalana lava ireo.

Ohatra, manana mari-pamantarana hetsika sasany ny iray amin'ireo serivisy analytical. Ary raha maro ny masontsivana ho an'ny zava-mitranga dia tehirizinay fotsiny ny 512 voalohany hita. Satria tsy mampalahelo ny 512.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary raha tsy afaka manapa-kevitra momba ny karazana data ianao, dia azonao atao koa ny manoratra angona ao amin'ny ClickHouse, fa ao anaty tabilao vonjimaika amin'ny karazana Log, manokana ho an'ny angona vonjimaika. Aorian'izany dia azonao atao ny mamakafaka ny fizarana ny soatoavina anananao, inona no misy amin'ny ankapobeny, ary mamorona karazana marina.

*ClickHouse izao dia manana karazana data Kardinaly ambany izay ahafahanao mitahiry tady mahomby amin'ny ezaka kely kokoa.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Andeha isika hijery tranga hafa mahaliana. Indraindray ny zavatra dia miasa hafahafa amin'ny olona. Tonga aho dia nahita an'ity. Ary avy hatrany dia toa izany no nataon'ny sasany efa za-draharaha, manan-tsaina admin izay manana traikefa be dia be amin'ny fametrahana MySQL version 3.23.

Eto isika dia mahita tabilao arivo, izay samy mirakitra ny ambiny amin'ny fizarana izay mahalala hoe inona amin'ny arivo.

Amin'ny ankapobeny, manaja ny traikefan'ny olon-kafa aho, ao anatin'izany ny fahatakarana ny fijaliana azo avy amin'io traikefa io.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary mazava ho azy ny antony. Ireo dia stereotype taloha izay mety niangona teo am-piasana tamin'ny rafitra hafa. Ohatra, ny latabatra MyISAM dia tsy manana fanalahidy fototra mivondrona. Ary ity fomba fizarana angon-drakitra ity dia mety ho fiezahana mafy hahazo ny fiasa mitovy.

Ny antony iray hafa dia satria sarotra ny manao asa fanovana eo amin'ny latabatra lehibe. Ho voasakana ny zava-drehetra. Na dia amin'ny dikan-teny maoderina amin'ny MySQL aza dia tsy dia lehibe loatra ity olana ity.

Na, ohatra, ny microsharding, fa bebe kokoa momba izany any aoriana.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Tsy ilaina ny manao izany ao amin'ny ClickHouse, satria, voalohany, ny fanalahidy fototra dia mivondrona, ny angon-drakitra dia baikoin'ny fanalahidy fototra.

Ary indraindray dia manontany ahy ny olona hoe: "Ahoana no miovaova arakaraka ny haben'ny latabatra ny fahombiazan'ny fanontaniana amin'ny ClickHouse?" Tsy miova mihitsy hoy aho. Ohatra, manana latabatra misy andalana arivo tapitrisa ianao ary mamaky andalana iray tapitrisa. Tsara ny zava-drehetra. Raha misy andalana iray tapitrisa tapitrisa eo amin'ny latabatra iray ary mamaky andalana iray tapitrisa ianao, dia saika mitovy izany.

Ary faharoa, tsy ilaina ny karazan-javatra rehetra toy ny partition manual. Raha miditra ianao ary mijery izay ao amin'ny rafitra fichier dia ho hitanao fa tena zava-dehibe ny latabatra. Ary misy zavatra toy ny partitions ao anatiny. Izany hoe, ny ClickHouse dia manao ny zava-drehetra ho anao ary tsy mila mijaly ianao.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Maimaim-poana ny fanovana ao amin'ny ClickHouse raha manova tsanganana fanampiny/midina.

Ary tsy tokony hanao latabatra kely ianao, satria raha manana andalana 10 na 10 ao anaty latabatra ianao, dia tsy maninona izany. ClickHouse dia rafitra iray izay manatsara ny fidirana, fa tsy ny latency, noho izany dia tsy misy dikany ny fanodinana andalana 000.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Mety ny mampiasa latabatra lehibe iray. Esory ny stereotype taloha, hilamina ny zava-drehetra.

Ary amin'ny maha-bonus azy, amin'ny dikan-teny farany dia manana fahafahana mamorona fanalahidin'ny fizarazarana tsy misy dikany isika mba hanatanterahana ny karazana fikojakojana rehetra amin'ny fizarazarana tsirairay.

Ohatra, mila latabatra kely maro ianao, ohatra, rehefa ilaina ny fanodinana angon-drakitra mpanelanelana sasany, dia mahazo sombiny ianao ary mila manova azy ireo alohan'ny hanoratana ny latabatra farany. Amin'ity tranga ity dia misy motera latabatra mahafinaritra - StripeLog. Sahala amin'ny TinyLog, tsara kokoa.

* ankehitriny dia manana ihany koa ny ClickHouse fampiasa latabatra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ny antipattern iray hafa dia ny microsharding. Ohatra, mila manaparitaka data ianao ary manana mpizara 5, ary rahampitso dia misy mpizara 6. Ary mieritreritra ny fomba hamerenana indray an'io data io ianao. Ary raha tokony ho vaky tsy ho 5 shards ianao, fa ho 1 shards. Ary avy eo ianao sari-tany ny tsirairay amin'ireo microshards ireo amin'ny mpizara mitokana. Ary hahazo, ohatra, 000 ClickHouses amin'ny mpizara iray, ohatra. Misaraka amin'ny seranana misaraka na angon-drakitra misaraka.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Saingy tsy dia tsara loatra izany ao amin'ny ClickHouse. Satria na dia ohatra iray amin'ny ClickHouse aza dia manandrana mampiasa ny loharanon'ny seriver rehetra misy mba hikarakarana ny fangatahana iray. Izany hoe, manana karazana mpizara ianao ary manana, ohatra, 56 cores processeur. Mandeha fanontaniana iray segondra ianao ary hampiasa cores 56. Ary raha mametraka ClickHouses 200 ao amin'ny mpizara iray ianao, dia hita fa kofehy 10 no hanomboka. Amin'ny ankapobeny dia ho ratsy be ny zava-drehetra.

Ny antony iray hafa dia ny tsy fitovian'ny fizarana asa amin'ireo tranga ireo. Misy ny mamita aloha, misy ny mamita any aoriana. Raha mitranga amin'ny tranga iray izany rehetra izany, dia ny ClickHouse mihitsy no hamantatra ny fomba hizarana ny angon-drakitra amin'ny kofehy.

Ary ny antony iray hafa dia ny hanana fifandraisana interprocessor amin'ny TCP. Ny angon-drakitra dia tsy maintsy atao serialized, deserialized, ary microshards be dia be izany. Tsy hahomby fotsiny izany.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Antipattern iray hafa, na dia tsy azo antsoina hoe antipattern aza. Be dia be mialoha ny fanangonana izany.

Amin'ny ankapobeny, tsara ny fanangonana mialoha. Nanana andalana iray lavitrisa ianao, natambatrao ary lasa andalana 1 izany, ary ankehitriny dia vita avy hatrany ny fangatahana. Tsara ny zava-drehetra. Azonao atao izany. Ary noho izany, na ny ClickHouse aza dia manana karazana latabatra manokana, AggregatingMergeTree, izay manao fanangonam-bokatra rehefa ampidirina ny angona.

Saingy misy fotoana izay hiheveranao fa hanambatra angona tahaka izao izahay ary hanambatra angona tahaka izao. Ary any amin'ny sampana mpifanolo-bodirindrina sasany, tsy te-hilaza hoe iza koa aho, mampiasa tabilao SummingMergeTree izy ireo mba hamintinana amin'ny alΓ lan'ny fanalahidy fototra, ary tsanganana 20 eo ho eo no ampiasaina ho fanalahidy fototra. Raha sanatria dia novana ny anaran'ny tsanganana sasany aho mba ho tsiambaratelo, fa izay no tena izy.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary mipoitra ny olana toy izany. Voalohany, tsy mihena loatra ny habetsaky ny angonao. Mihena in-telo, ohatra, izany. In-telo no mety ho vidiny tsara mba hahazoana ny fahaiza-manadihady tsy misy fetra izay mipoitra raha tsy mitambatra ny angonao. Raha atambatra ny angon-drakitra, dia antontan'isa mampalahelo ihany no azonao raha tokony ho analytics.

Ary inona no mampiavaka azy? Ny zava-misy dia indraindray ireo olona avy amin'ny sampan-draharaha mpifanolo-bodirindrina ireo dia mandeha mangataka tsanganana hafa amin'ny fanalahidy fototra. Izany hoe, nanangona ny angon-drakitra toy izao izahay, fa ankehitriny dia mila bebe kokoa. Saingy ny ClickHouse dia tsy manana lakile voalohany manova. Noho izany, tsy maintsy manoratra script sasany ao amin'ny C ++ isika. Ary tsy tiako ny script, na dia ao amin'ny C++ aza.

Ary raha mijery ny namoronana ny ClickHouse ianao, dia ny angon-drakitra tsy mitambatra no tena scenario nahaterahany. Raha mampiasa ClickHouse ianao ho an'ny angona tsy mitambatra, dia manao izany tsara ianao. Raha atambatra ianao dia azo avela izany indraindray.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Tranga mahaliana iray hafa ny fanontaniana ao anaty loop tsy manam-petra. Indraindray aho mandeha any amin'ny mpizara famokarana sasany ary mijery ny lisitry ny processeur ao. Ary isaky ny mahita aho fa misy zavatra mahatsiravina mitranga.

Ohatra, toy izao. Mazava avy hatrany fa azo atao amin'ny fangatahana iray ny zava-drehetra. Soraty fotsiny ny url sy ny lisitra eo.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Nahoana no ratsy ny fanontaniana maro toy izany ao anatin'ny loop tsy misy farany? Raha toa ka tsy ampiasaina ny fanondroana, dia hanana fandalovana maro amin'ny angona mitovy ianao. Fa raha ny fanondroana no ampiasaina, ohatra, dia manana fanalahidy fototra ho an'ny ru ianao ary manoratra url = zavatra ao. Ary mieritreritra ianao fa raha URL iray ihany no vakiana avy amin'ny latabatra dia ho tsara ny zava-drehetra. Saingy raha ny marina dia tsia. Satria ny ClickHouse dia manao ny zava-drehetra amin'ny andiany.

Rehefa mila mamaky angon-drakitra sasantsasany izy dia mamaky bebe kokoa, satria vitsy ny index ao amin'ny ClickHouse. Ity fanondroana ity dia tsy mamela anao hahita andalana tsirairay ao amin'ny latabatra, fa karazana karazana. Ary ny angona dia voatsindry amin'ny sakana. Mba hamakiana andalana iray dia mila maka ny sakana iray manontolo ianao ary manala azy. Ary raha manao andiam-panontaniana ianao, dia ho be dia be ny mifanipaka, ary ho be ny asa tsy maintsy atao miverimberina.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary amin'ny maha-bonus, azonao atao ny manamarika fa ao amin'ny ClickHouse dia tsy tokony hatahotra ny hamindra na dia megabytes sy megabytes an-jatony aza any amin'ny fizarana IN. Tsaroako tamin'ny fanaontsika fa raha ao amin'ny MySQL dia mamindra soatoavina maromaro mankany amin'ny fizarana IN isika, ohatra, mamindra 100 megabytes amin'ny isa sasany any, avy eo ny MySQL dia mihinana fahatsiarovana 10 gigabytes ary tsy misy zavatra hafa mitranga aminy, ny zava-drehetra. miasa ratsy.

Ary ny faharoa dia ao amin'ny ClickHouse, raha mampiasa index ny fanontanianao, dia tsy miadana kokoa noho ny scan feno izany, izany hoe raha mila mamaky saika ny latabatra manontolo ianao, dia handeha tsikelikely ary hamaky ny latabatra manontolo. Amin'ny ankapobeny dia ho fantany samirery izany.

Saingy misy ihany anefa ny fahasarotana sasany. Ohatra, ny hoe IN miaraka amin'ny subquery dia tsy mampiasa ny index. Fa io no olanay ka mila amboarina. Tsy misy fototra eto. Hamboarinay*.

Ary ny iray hafa mahaliana dia ny hoe raha manana fangatahana lava be ianao ary mandeha ny fanodinana fangatahana fizarana, dia halefa any amin'ny mpizara tsirairay tsy misy famoretana io fangatahana lava be io. Ohatra, 100 megabytes sy mpizara 500. Ary, araka izany, dia hanana 50 gigabytes nafindra amin'ny tambajotra. Hampitaina izany ary ho vita soa aman-tsara ny zava-drehetra.

* efa mampiasa; Voalamina araka ny nampanantenaina ny zava-drehetra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ary ny tranga mahazatra dia rehefa avy amin'ny API ny fangatahana. Ohatra, namorona karazana serivisy manokana ianao. Ary raha misy olona mila ny serivisinao dia sokafy ny API ary roa andro aty aoriana dia hitanao fa misy zavatra tsy takatry ny saina mitranga. Be loatra ny zavatra rehetra ary misy fangatahana mahatsiravina izay tsy tokony ho nitranga mihitsy.

Ary tokana ihany ny vahaolana. Raha nanokatra ny API ianao dia tsy maintsy manapaka izany. Ohatra, ampidiro karazana quota. Tsy misy safidy mahazatra hafa. Raha tsy izany dia hanoratra script avy hatrany izy ireo ary hisy olana.

Ary ny ClickHouse dia manana endri-javatra manokana - kajy ny quota. Ankoatra izany, azonao atao ny mamindra ny fanalahidin'ny quota anao. Ity, ohatra, ny ID mpampiasa anatiny. Ary ny quota dia hokajiana tsy miankina ho an'ny tsirairay amin'izy ireo.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ankehitriny zavatra mahaliana hafa. Replication amin'ny tanana ity.

Mahafantatra tranga maro aho izay, na dia eo aza ny fanohanan'ny ClickHouse, ny olona dia mamerina ny ClickHouse amin'ny tanana.

Inona no fitsipika? Manana fantsona fanodinana data ianao. Ary miasa tsy miankina, ohatra, any amin'ny foibe data samihafa. Manoratra angon-drakitra mitovy amin'ny fomba mitovy amin'ny ClickHouse ianao. Marina fa ny fanazaran-tena dia mampiseho fa mbola hiova ny angon-drakitra noho ny endri-javatra sasany ao amin'ny codeo. Manantena aho fa ao amin'ny anao izany.

Ary tsindraindray dia mbola mila manao sync amin'ny tanana ianao. Ohatra, indray mandeha isam-bolana ny admin dia manao rsync.

Raha ny marina, mora kokoa ny mampiasa ny replication natsangana tao amin'ny ClickHouse. Saingy mety misy contraindications sasany, satria mila mampiasa ZooKeeper ianao. Tsy hiteny ratsy momba ny ZooKeeper aho, amin'ny ankapobeny, miasa ny rafitra, saingy mitranga fa tsy mampiasa azy io ny olona noho ny java-phobia, satria ClickHouse dia rafitra tsara, voasoratra amin'ny C ++, izay azonao ampiasaina ary handeha tsara ny zavatra rehetra . Ary ZooKeeper dia ao java. Ary na dia tsy te-hijery akory aza ianao, fa avy eo dia afaka mampiasa replication manual ianao.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

ClickHouse dia rafitra azo ampiharina. Mihevitra ny zavatra ilainao izy. Raha manana replication amin'ny tanana ianao dia azonao atao ny mamorona latabatra Distributed izay mijery ny dika mitovy amin'ny tananao ary manao failover eo anelanelan'izy ireo. Ary misy safidy manokana izay ahafahanao misoroka ny flops, na dia tsy mitovy aza ny andalanao.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Mety hisy olana hafa raha mampiasa motera latabatra primitive ianao. ClickHouse dia mpanorina izay manana milina latabatra isan-karazany. Ho an'ny tranga lehibe rehetra, araka ny voasoratra ao amin'ny antontan-taratasy, ampiasao ny tabilao avy amin'ny fianakaviana MergeTree. Ary ny sisa rehetra - izany no izy, ho an'ny tranga tsirairay na ho an'ny fitsapana.

Ao amin'ny latabatra MergeTree, tsy mila manana daty sy ora ianao. Mbola azonao ampiasaina izany. Raha tsy misy daty sy ora dia soraty fa 2000 ny default. Hahomby izany ary tsy mitaky loharanon-karena.

Ary amin'ny dikan-teny vaovaon'ny mpizara dia azonao atao mihitsy aza ny mamaritra fa manana fizarazarana manokana ianao raha tsy misy fanalahidin'ny fisarahana. Ho toy izany koa.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Amin'ny lafiny iray, azonao atao ny mampiasa motera latabatra primitive. Ohatra, fenoy indray mandeha ny angona ary jereo, manodina ary mamafa. Azonao atao ny mampiasa Log.

Na ny fitehirizana boky kely ho an'ny fanodinana manelanelana dia StripeLog na TinyLog.

Azo ampiasaina ny fitadidiana raha kely ny angon-drakitra ary azonao atao ny manodina zavatra ao amin'ny RAM.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ny ClickHouse dia tsy tena tia ny angon-drakitra nohavaozina.

Ity misy ohatra mahazatra. URL maro be io. Ataovy eo amin'ny latabatra manaraka izy ireo. Ary avy eo dia nanapa-kevitra ny hanao JOIN miaraka amin'izy ireo izy ireo, saingy tsy mety izany, raha ny fitsipika, satria ny ClickHouse ihany no manohana ny Hash JOIN. Raha tsy ampy ny RAM ho an'ny angona maro mila mifandray dia tsy mandeha ny JOIN*.

Raha manana kardinaly avo lenta ny angon-drakitra, dia aza manahy, tehirizo amin'ny endrika denormalized izany, ny URL dia mivantana eo amin'ny latabatra lehibe.

* ary ankehitriny ny ClickHouse dia manana merge join, ary miasa amin'ny toe-javatra izay tsy mifanaraka amin'ny RAM ny angona mpanelanelana. Tsy mandaitra anefa izany ary mbola manankery ny tolo-kevitra.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Ohatra vitsivitsy, fa efa misalasala aho na anti-pattern na tsia.

ClickHouse dia manana lesoka iray fantatra. Tsy mahay manavao*. Amin'ny lafiny sasany dia tsara mihitsy aza izany. Raha manana data manan-danja ianao, ohatra, ny kaonty, dia tsy misy afaka mandefa izany, satria tsy misy fanavaozana.

* Ny fanohanana ny fanavaozana sy famafana amin'ny fomba batch dia efa nampiana hatry ny ela.

Saingy misy fomba manokana ahafahan'ny fanavaozana toy ny any ambadika. Ohatra, tabilao toy ny ReplaceMergeTree. Manao fanavaozam-baovao izy ireo mandritra ny fampifangaroana ambadika. Azonao atao ny manery izany amin'ny fampiasana tabilao optimize. Fa aza manao izany matetika, fa ho overwrite tanteraka ny fisarahana.

Ny JOIN zaraina ao amin'ny ClickHouse dia tsy voakarakara tsara amin'ny drafitry ny fangatahana.

Ratsy, fa indraindray Ok.

Mampiasa ClickHouse fotsiny mba hamerenana ny angona amin'ny fampiasana Select*.

Tsy manoro hevitra ny fampiasana ClickHouse aho amin'ny kajy sarotra. Saingy tsy marina tanteraka izany, satria efa miala amin'ity fanolorana ity isika. Ary vao haingana izahay no nanampy ny fahafahana mampihatra ny maodely fianarana milina ao amin'ny ClickHouse - Catboost. Ary manahirana ahy izany satria mieritreritra aho hoe: β€œTena mahatsiravina. Toy izao ny isan'ny tsingerina isaky ny byte! Tena halako ny mandany famantaranandro amin'ny bytes.

Fampiasana mahomby amin'ny ClickHouse. Alexey Milovidov (Yandex)

Fa aza matahotra, apetraho ClickHouse, dia ho tsara ny zava-drehetra. Raha misy, manana fiaraha-monina isika. Raha ny marina, ny fiarahamonina dia ianao. Ary raha manana olana ianao dia afaka mandeha any amin'ny chat anay farafaharatsiny, ary antenaina fa hanampy anao izy ireo.

Ny fanontanianao

Misaotra tamin'ny tatitra! Aiza no azoko itarainana momba ny fianjerana ClickHouse?

Afaka mitaraina amiko manokana ianao izao.

Vao haingana aho no nanomboka nampiasa ClickHouse. Nandao avy hatrany ny interface cli aho.

Inona no isa.

Fotoana fohy taty aoriana dia nopotehiko ny mpizara tamin'ny safidy kely.

Manana talenta ianao.

Nanokatra bug GitHub aho, saingy tsy noraharahiana izany.

Ho hitantsika eo.

Nofitahin'i Alexey hanatrika ny tatitra aho, nampanantena fa hilaza amiko ny fomba idiranao ny angona ao anatiny.

Tena tsotra izany.

Tsapako izany omaly. voafaritra kokoa.

Tsy misy tetika mahatsiravina any. Misy ihany ny famatrarana sakana isaky ny sakana. Ny default dia LZ4, azonao atao ny mamela ny ZSTD*. Sakana manomboka amin'ny 64 kilobytes ka hatramin'ny 1 megabyte.

* Misy ihany koa ny fanohanana ireo codec fanerena manokana izay azo ampiasaina amin'ny rojo miaraka amin'ny algorithm hafa.

Angon-drakitra manta fotsiny ve ireo sakana?

Tsy manta tanteraka. Misy arrays. Raha manana tsanganana isa ianao, dia apetraka ao anaty laharan-kira ny isa misesy.

Mazava.

Alexey, ohatra iray miaraka amin'ny uniqExact amin'ny IPs, izany hoe ny uniqExact dia maharitra ela ny kajy amin'ny tsipika noho ny isa, sy ny sisa. Ahoana raha mampiasa sofina amin'ny sofintsika isika ary mandrotsaka amin'ny fotoana anaovana fanitsiana? Izany hoe, toa nilaza ianao fa amin'ny kapila misy antsika dia tsy dia hafa loatra. Raha mamaky andalana avy amin'ny kapila sy cast isika, ho haingana kokoa ve ny fitambarantsika sa tsia? Sa mbola hahazo tombony kely eto ? Toa nanandrana an'io ianao, saingy noho ny antony tsy nanondro izany tao amin'ny benchmark.

Heveriko fa ho miadana kokoa noho ny tsy misy fanariana. Amin'ity tranga ity, ny adiresy IP dia tsy maintsy alaina avy amin'ny tady. Mazava ho azy, ao amin'ny ClickHouse, ny fanaparitahana ny adiresy IP dia natao tsara ihany koa. Niezaka mafy izahay, fa eo ianao manana ny isa voasoratra amin'ny endrika folo arivo. Tena tsy mahazo aina. Amin'ny lafiny iray, ny fiasan'ny uniqExact dia hiasa miadana kokoa amin'ny tady, tsy noho ny tady ihany, fa koa noho ny fisafidianana manokana ny algorithm. Ny tady dia voakarakara amin'ny fomba hafa.

Ahoana raha maka karazana data primitive kokoa isika? Ohatra, nosoratanay ny id mpampiasa, izay anananay, nosoratanay ho andalana, ary avy eo dia nikoropaka, hahafinaritra kokoa ve izany sa tsia?

Tsy azoko antoka. Heveriko fa ho vao mainka mampalahelo izany, satria raha ny marina, olana lehibe ny fanaparitahana isa. Raha ny fahitako azy dia nanome tatitra mihitsy aza ity mpiara-miasa ity momba ny fahasarotan'ny famahana ny isa amin'ny endrika folo arivo, saingy mety tsy izany.

Alexey, misaotra indrindra tamin'ny tatitra! Ary misaotra indrindra amin'ny ClickHouse! Manana fanontaniana momba ny drafitra aho. Misy drafitra hanavaozana ny rakibolana tsy feno ve?

Izany hoe, reboot ampahany?

Eny eny. Tahaka ny fahafahana mametraka saha MySQL ao, izany hoe fanavaozana aorian'izay ka ity data ity ihany no entina raha lehibe be ny rakibolana.

Toetra tena mahaliana. Ary heveriko fa nisy olona nanoro izany tao amin'ny chat-nay. Angamba ianao koa izany.

Heveriko fa tsy izany.

Tsara, izao hita fa misy fangatahana roa. Ary afaka manomboka manao izany tsikelikely ianao. Saingy tiako ny hampitandrina anao avy hatrany fa ity endri-javatra ity dia tena tsotra ny fampiharana. Izany hoe, amin'ny teoria, mila manoratra ny laharan'ny dikan-teny eo amin'ny latabatra ianao ary avy eo manoratra hoe: version latsaky ny an'izao sy izao. Midika izany fa, azo inoana fa hanolotra izany ho an'ny mpankafy izahay. Mafana fo ve ianao?

Eny, saingy, indrisy, tsy ao amin'ny C ++.

Mahay manoratra amin'ny C++ ve ny mpiara-miasa aminao?

Hahita olona aho.

Lehibe*.

* nampiana ilay endri-javatra roa volana taorian'ny tatitra - namolavola azy io ny mpanoratra ny fanontaniana ary nandefa ny azy mangataka fangatahana.

Misaotra anao!

Salama! Misaotra tamin'ny tatitra! Nolazainao fa ny ClickHouse dia tena mahay mampiasa ny loharano rehetra misy azy. Ary niresaka momba ny vahaolana ho an'ny Russian Post ny mpandahateny teo akaikin'i Luxoft. Nolazainy fa tena tia ny ClickHouse izy ireo, saingy tsy nampiasa izany izy ireo fa tsy ny mpifaninana lehibe indrindra amin'izy ireo satria mandany ny CPU rehetra. Ary tsy afaka nampiditra izany tao amin'ny maritranony izy ireo, tao amin'ny ZooKeeper miaraka amin'ny dockers. Azo atao ve ny mametra ny ClickHouse mba tsy handany izay rehetra azony?

Eny, azo atao izany ary tena mora. Raha te handany cores vitsy kokoa ianao dia manorata fotsiny set max_threads = 1. Ary izany no izy, hanatanteraka ny fangatahana amin'ny fototra iray. Ankoatra izany, azonao atao ny mamaritra ny toe-javatra samihafa ho an'ny mpampiasa samihafa. Ka tsy misy olana. Ary lazao amin'ireo mpiara-miasa aminao ao amin'ny Luxoft fa tsy tsara raha tsy nahita an'io toerana io tao amin'ny antontan-taratasy izy ireo.

Alexey, salama! Te-hanontany momba ity fanontaniana ity aho. Tsy vao voalohany aho no naheno fa maro ny olona manomboka mampiasa ClickHouse ho fitahirizana logs. Tamin'ny tatitra dia nilaza ianao fa tsy hanao izany, izany hoe tsy mila mitahiry tady lava ianao. Ahoana ny hevitrao momba izany?

Voalohany, ny logs dia matetika tsy tady lava. Mazava ho azy fa misy maningana. Ohatra, ny serivisy sasany voasoratra amin'ny java dia manipy fanavahana, voarakitra. Ary toy izany amin'ny loop tsy misy farany, ary ny habaka eo amin'ny kapila mafy lany. Ny vahaolana dia tena tsotra. Raha lava be ny andalana dia tapaho izy ireo. Inona no dikan'ny hoe lava? Kilobyte folo no ratsy*.

* Ao amin'ny dikan-teny farany an'ny ClickHouse, "adaptive index granularity" dia alefa, izay manafoana ny olana amin'ny fitehirizana andalana lava amin'ny ankamaroany.

Normal ve ny kilobyte?

Ara-dalΓ na izany.

Salama! Misaotra tamin'ny tatitra! Efa nanontany momba izany aho tao amin'ny chat, saingy tsy tadidiko raha nahazo valiny aho. Misy drafitra hanitarana ny fizarana WITH amin'ny fomba CTE ve?

Tsy mbola. Ny fizarana WITH dia somary tsy misy dikany. Toy ny endri-javatra kely ho antsika izany.

Azoko. Misaotra anao!

Misaotra tamin'ny tatitra! Tena mahaliana! Fanontaniana manerantany. Misy drafitra hanovana ny famafana angon-drakitra, angamba amin'ny endrika stub sasany?

Tsy maintsy. Ity no asanay voalohany amin'ny filaharanay. Mazoto mieritreritra ny fomba hanaovana ny zava-drehetra araka ny tokony ho izy isika izao. Ary tokony hanomboka hanindry ny klavier* ianao.

* nanindry ny bokotra teo amin'ny klavier ary nanao ny zava-drehetra.

Misy fiantraikany amin'ny fahombiazan'ny rafitra ve izany sa tsia? Haingana tahaka ny ankehitriny ve ny fampidirana?

Angamba ny famafana ny tenany sy ny fanavaozana ny tenany dia ho mavesatra be, saingy tsy hisy fiantraikany amin'ny fahombiazan'ny fifantenana na ny fampandehanana ny fampidirana izany.

Ary fanontaniana kely iray hafa. Tamin'ny famelabelarana dia niresaka momba ny fanalahidy fototra ianao. Noho izany, manana fisarahana isika, izay isam-bolana amin'ny alΓ lan'ny default, marina? Ary rehefa mametraka daty mifanaraka amin'ny iray volana isika dia io fizarazarana io ihany no vakiana, sa tsy izany?

Eny.

Fanontaniana iray. Raha tsy afaka mifidy ny fanalahidy fototra isika, dia mety ve ny manao azy manokana araka ny saha "Daty" ka any ambadika any dia kely kokoa ny fanovana an'io data io mba hifanaraka amin'ny fomba milamina kokoa? Raha tsy manana fanontaniana amin'ny faritra ianao ary tsy afaka misafidy ny lakile fototra akory, mendrika ny asiana daty ao amin'ny lakile fototra?

Eny.

Mety misy dikany ny mametraka saha ao amin'ny lakile voalohany izay hanery tsara kokoa ny angona raha alahatra amin'ity saha ity. Ohatra, ID mpampiasa. Ny mpampiasa, ohatra, dia mandeha amin'ny tranokala iray ihany. Amin'ity tranga ity, mametraka ny mpampiasa ID sy ny fotoana. Ary avy eo dia ho voatsindry tsara kokoa ny angonao. Raha ny daty, raha tena tsy manana ianao ary tsy manana fanontaniana momba ny daty, dia tsy mila mametraka ny daty ao amin'ny lakile voalohany ianao.

OK misaotra indrindra!

Source: www.habr.com

Add a comment