ClickHouse ho an'ireo mpampiasa efa mandroso amin'ny fanontaniana sy valiny

Tamin'ny volana Aprily, nivory tamin'ny fivoriana an-tserasera ny injeniera Avito niaraka tamin'ny mpamorona ClickHouse Alexey Milovidov sy Kirill Shvakov, mpamorona Golang avy ao Integros. Nifanakalo hevitra momba ny fomba ampiasana rafitra fitantanana angon-drakitra izahay sy ny olana sedrainay.

Miorina amin'ny fihaonana, nanangona lahatsoratra misy valin'ny manam-pahaizana momba ny fanontanianay sy ny mpihaino momba ny backups, ny fanavaozana ny angona, ny rakibolana ivelany, ny mpamily Golang ary ny fanavaozana ny dikan-teny ClickHouse. Mety ilaina ho an'ny mpamorona izay efa miasa mavitrika amin'ny Yandex DBMS ary liana amin'ny ankehitriny sy ny ho avy. Amin'ny alàlan'ny default, ny valiny dia avy amin'i Alexey Milovidov, raha tsy hoe nosoratana hafa.

Mitandrema fa misy lahatsoratra be dia be eo ambanin'ny fanapahana. Manantena izahay fa hanampy anao hivezivezy ny atiny misy fanontaniana.

ClickHouse ho an'ireo mpampiasa efa mandroso amin'ny fanontaniana sy valiny

afa-po

Raha tsy te hamaky ny lahatsoratra ianao, dia azonao atao ny mijery ny firaketana ireo fivoriana ao amin'ny fantsonay YouTube. Timecodes dia ao amin'ny fanehoan-kevitra voalohany eo ambanin'ny lahatsary.

Ny ClickHouse dia havaozina tsy tapaka, fa ny angonay dia tsy. Inona no hatao amin'izany?

Ny ClickHouse dia havaozina tsy tapaka, ary ny angonay, izay namboarina tamin'ny farany, dia tsy nohavaozina ary ao anaty kopia backup.

Andeha hatao hoe nanana olana izahay ary very ny angona. Nanapa-kevitra ny hamerina indray izahay, ary hita fa ny fizarazarana taloha, izay voatahiry ao amin'ny server backup, dia tsy mitovy amin'ny dikan-teny ClickHouse ampiasaina amin'izao fotoana izao. Inona no tokony hatao amin'ny toe-javatra toy izany, ary azo atao ve izany?

Toe-javatra iray izay namerinao ny angona avy amin'ny backup amin'ny endrika taloha, saingy tsy mifandray amin'ny dikan-teny vaovao, dia tsy azo atao. Ataovy azo antoka fa ny endrika angon-drakitra ao amin'ny ClickHouse dia mijanona mihemotra hatrany. Zava-dehibe kokoa izany noho ny fampifanarahana mihemotra amin'ny fampiasa raha toa ka niova ny fihetsiky ny fiasa sasany tsy dia fahita firy. Ny dikan-teny vaovao ClickHouse dia tokony ho afaka mamaky ny angon-drakitra voatahiry ao anaty kapila. Izany no lalàna.

Inona avy ireo fomba fanao tsara indrindra amin'izao fotoana izao amin'ny fanohanana ny angona avy amin'ny ClickHouse?

Ahoana ny fomba fanaovana backup, amin'ny fiheverana fa manana fanatsarana ny asa farany isika, angon-drakitra be dia be amin'ny terabytes, ary ny angon-drakitra nohavaozina, ohatra, nandritra ny telo andro farany, ary avy eo tsy misy fomba fiasa?

Afaka manao vahaolana manokana isika ary manoratra amin'ny bash: angony ireo kopia backup ireo amin'ny fomba toy izao sy izao. Angamba tsy ilaina ny mitehina na inona na inona, ary ny bisikileta dia noforonina hatry ny ela?

Andeha isika hanomboka amin'ny fanao tsara indrindra. Manoro hevitra foana ny mpiara-miasa amiko, ho valin'ny fanontaniana momba ny backup, hampahatsiahy azy ireo momba ny serivisy Yandex.Cloud, izay efa voavaha io olana io. Koa ampiasao izany raha azo atao.

Tsy misy vahaolana feno ho an'ny backups, zato isan-jato naorina ao amin'ny ClickHouse. Misy banga azo ampiasaina. Mba hahazoana vahaolana feno, dia tsy maintsy manao tinker kely amin'ny tanana ianao, na mamorona fonosana amin'ny endrika script.

Hanomboka amin'ny vahaolana tsotra indrindra aho ary mifarana amin'ny vahaolana be pitsiny indrindra, arakaraka ny habetsaky ny angona sy ny haben'ny cluster. Arakaraka ny lehibe kokoa ny cluster, dia vao mainka sarotra ny vahaolana.

Raha tsy misy afa-tsy gigabytes vitsivitsy ny latabatra misy angona, dia azo atao toy izao ny backup:

  1. Tehirizo famaritana tabilao izany hoe metadata − asehoy mamorona latabatra.
  2. Manaova fanariam-pako mampiasa mpanjifa ClickHouse - mifidy * avy amin'ny latabatra mametraka. Amin'ny alàlan'ny default dia hahazo rakitra amin'ny endrika TabSeparated ianao. Raha te hahomby kokoa ianao dia azonao atao amin'ny endrika Native.

Raha lehibe kokoa ny habetsaky ny angona, dia haka fotoana bebe kokoa sy toerana malalaka ny backup. Ity dia antsoina hoe backup lojika; tsy mifamatotra amin'ny format data ClickHouse. Raha izany no izy, dia ho fomba farany azonao atao ny maka backup ary mampakatra izany amin'ny MySQL ho fanarenana.

Ho an'ny tranga mandroso kokoa, ClickHouse dia manana fahaiza-manao natsangana hamorona sarin'ny fizarazarana ao amin'ny rafi-drakitra eo an-toerana. Ity endri-javatra ity dia azo alaina ho fangatahana manova ny fisarahana amin'ny latabatra. Na tsotra fotsiny manova ny fangatsiana latabatra - sarin'ny latabatra iray manontolo ity.

Ny sary dia noforonina tsy tapaka ho an'ny latabatra iray amin'ny shard iray, izany hoe, tsy azo atao ny mamorona sary mifanaraka amin'ny cluster manontolo amin'ny fomba toy izany. Saingy ho an'ny ankamaroan'ny asa dia tsy ilaina izany, ary ampy ny manatanteraka fangatahana amin'ny shard tsirairay ary mahazo snapshot tsy tapaka. Izy io dia noforonina amin'ny endrika hardlinks ary noho izany dia tsy maka toerana fanampiny. Avy eo, adikao amin'ny mpizara backup na any amin'ny fitahirizana ampiasainao amin'ny backups ity sary ity.

Ny famerenana ny backup toy izany dia mora. Voalohany, mamorona tabilao mampiasa famaritana latabatra efa misy. Manaraka, adikao amin'ny Directory-Detached ireo sary voatahiry amin'ny fizarazarana ho an'ireo latabatra ireo ary ataovy ny fangatahana. attach partition. Ity vahaolana ity dia mety amin'ny angon-drakitra lehibe indrindra.

Indraindray mila zavatra mangatsiaka kokoa ianao - amin'ny toe-javatra misy anao manana terabytes am-polony na an-jatony amin'ny mpizara tsirairay sy mpizara an-jatony. Misy vahaolana eto izay noraisiko avy amin'ireo mpiara-miasa amiko ao amin'ny Yandex.Metrica. Tsy hanoro azy amin'ny olon-drehetra aho - vakio ary manapaha hevitra ho anao na mety na tsia.

Voalohany dia mila mamorona lohamilina maromaro misy talantalana kapila lehibe ianao. Manaraka, amin'ireo mpizara ireo dia manangana mpizara ClickHouse maromaro ary amboary izy ireo mba hiasa ho toy ny kopia hafa ho an'ny shards mitovy. Ary avy eo dia ampiasao rafitra fichier na fitaovana sasany amin'ireo lohamilina ireo izay ahafahanao mamorona sary. Misy safidy roa eto. Ny safidy voalohany dia snapshots LVM, ny safidy faharoa dia ZFS amin'ny Linux.

Aorian'izany, isan'andro dia mila mamorona sary ianao, handainga ary haka toerana. Mazava ho azy, raha miova ny angon-drakitra dia hitombo ny habaka rehefa mandeha ny fotoana. Ity sary ity dia azo alaina amin'ny fotoana rehetra ary averina amin'ny laoniny ny angon-drakitra, vahaolana hafahafa. Fanampin'izay, mila ferana ihany koa ireo kopia ireo ao amin'ny config mba tsy hiezaka ho lasa mpitarika.

Ho azo atao ve ny mandamina fahatarana voafehy amin'ny replika ao amin'ny shafts?

Amin'ity taona ity dia mikasa ny hanao shafts ao amin'ny ClickHouse ianao. Ho azo atao ve ny mandamina fahatarana voafehy amin'ny kopia ao aminy? Tianay ny hampiasa azy io mba hiarovana ny tenanay amin'ny toe-javatra ratsy misy fiovana sy fiovana hafa.

Azo atao ve ny manao karazana rollback ho an'ny fanovana? Ohatra, ao amin'ny shaft efa misy, raiso ary lazao fa hatramin'izao fotoana izao dia mampihatra ny fanovana ianao, ary manomboka amin'izao fotoana izao dia mijanona tsy mampihatra ny fanovana ianao?

Raha misy baiko tonga ao amin'ny cluster misy antsika ka nanapaka azy, dia manana kopia misy fepetra misy tara adiny iray isika, izay ahafahantsika milaza fa andao hampiasa azy io amin'izao fotoana izao, fa tsy hampihatra fanovana amin'izany mandritra ny folo minitra farany?

Voalohany, momba ny fahatarana voafehy ny dika mitovy. Nisy ny fangatahana toy izany avy amin'ny mpampiasa, ary namorona olana tao amin'ny Github izahay miaraka amin'ny fangatahana: "Raha misy olona mila an'ity, toy izany, asio fo." Tsy nisy nanatitra, ary nifarana ny olana. Na izany aza, afaka mahazo izany fahafahana izany ianao amin'ny fananganana ClickHouse. Marina fa manomboka amin'ny version 20.3 ihany.

ClickHouse dia manao tsy tapaka ny fampivondronana angon-drakitra ao ambadika. Rehefa vita ny fampifangaroana dia soloina ampahany lehibe kokoa ny fitambaran'ny angona sasany. Mandritra izany fotoana izany, mbola mijanona ao amin'ny kapila mandritra ny fotoana kelikely ny sombin-drakitra teo aloha.

Voalohany, mbola tehirizina izy ireo raha mbola misy fanontaniana voafantina mampiasa azy ireo, mba hanomezana asa tsy manakana. Ny fanontaniana voafantina dia mora vakiana avy amin'ny ampahany taloha.

Faharoa, misy ihany koa ny fe-potoana - ny angon-drakitra taloha dia mipetraka ao amin'ny kapila mandritra ny valo minitra. Ireo valo minitra ireo dia azo amboarina ary avadika ho andro iray mihitsy aza. Izany dia handany ny habaka kapila: miankina amin'ny fikorianan'ny angon-drakitra, hita fa amin'ny andro farany dia tsy ho avo roa heny ny angon-drakitra, mety ho avo dimy heny izany. Fa raha misy olana lehibe, azonao atao ny manakana ny mpizara ClickHouse ary mandamina ny zava-drehetra.

Mipetraka izao ny fanontaniana mikasika ny fomba hiarovana amin'ny fanovana. Tena ilaina ny mijery lalindalina kokoa eto, satria amin'ny dikan-teny taloha an'ny ClickHouse, ny fanovana dia niasa tamin'ny fomba izay nanova azy mivantana mivantana. Misy angon-drakitra misy rakitra sasany, ary ataontsika, ohatra, manova tsanganana mitete. Avy eo ity tsanganana ity dia esorina amin'ny ampahany rehetra.

Saingy manomboka amin'ny dikan-teny 20.3, niova tanteraka ny mekanika fanovana, ary ankehitriny ny sombin-drakitra dia tsy miova foana. Tsy miova mihitsy izy ireo - ny alters dia miasa mitovy amin'ny fampitambatra. Raha tokony hanolo sombin-javatra eo an-toerana izahay, dia mamorona vaovao. Ao amin'ny ampahany vaovao, ny rakitra tsy niova dia lasa rohy mafy, ary raha mamafa tsanganana iray isika, dia tsy hita ao amin'ny ampahany vaovao. Ny tapany taloha dia ho voafafa amin'ny alàlan'ny default rehefa afaka valo minitra, ary eto ianao dia afaka manitsy ny toe-javatra voalaza etsy ambony.

Toy izany koa ny fiovana toy ny mutation. Rehefa manao izany ianao manova hamafa na manova fanavaozana, tsy manova ny sombiny, fa mamorona vaovao. Ary avy eo dia mamafa ilay taloha.

Ahoana raha niova ny rafitra latabatra?

Ahoana no hamerenana ny backup izay natao tamin'ny tetika taloha? Ary ny fanontaniana faharoa dia momba ny tranga miaraka amin'ny snapshots sy ny fitaovana rafitra rakitra. Tsara ve ny Btrfs eto fa tsy ZFS amin'ny Linux LVM?

Raha manao izany ianao attach partition fizarazarana misy rafitra hafa, dia hilaza aminao ny ClickHouse fa tsy azo atao izany. Io no vahaolana. Ny voalohany dia ny mamorona latabatra vonjimaika amin'ny karazana MergeTree miaraka amin'ny rafitra taloha, ampidiro ny angona ao amin'ny fampiasana attache, ary manaova fangatahana fanovana. Avy eo ianao dia afaka mandika na mamindra ity data ity ary apetaho indray, na mampiasa fangatahana manova ny fizarazaran'ny latabatra.

Ny fanontaniana faharoa dia ny hoe azo ampiasaina ve ny Btrfs. Hanombohana, raha manana LVM ianao, dia ampy ny snapshots LVM, ary ny rafitra rakitra dia mety ho ext4, tsy maninona izany. Miaraka amin'ny Btrts, miankina amin'ny traikefanao amin'ny fampiasana azy ny zava-drehetra. Rafitra fichier matotra ity, saingy mbola misy ihany ny ahiahy momba ny fomba handehanan'ny zava-drehetra amin'ny fampiharana amin'ny toe-javatra iray manokana. Tsy manoro hevitra ny hampiasa an'io aho raha tsy manana Btrfs amin'ny famokarana.

Inona avy ireo fomba fanao tsara indrindra amin'izao fotoana izao amin'ny fanavaozana data?

Ny olana momba ny famerenana indray dia sarotra sy maro karazana. Misy valiny maromaro azo atao eto. Azonao atao ny mandeha amin'ny lafiny iray ary milaza izao - ClickHouse dia tsy manana endri-javatra resharding naorina. Saingy matahotra aho fa tsy mety amin'iza na iza io valiny io. Noho izany, afaka mandeha avy any amin'ny ilany iray ianao ary milaza fa ny ClickHouse dia manana fomba maro hamerenana ny angona.

Raha lany toerana ny cluster na tsy mahazaka ny entana, dia manampy mpizara vaovao ianao. Saingy tsy misy na inona na inona ireo mpizara ireo amin'ny alàlan'ny default, tsy misy data ao aminy, tsy misy entana. Mila mandamina indray ny angon-drakitra ianao mba hiparitaka amin'ny cluster vaovao lehibe kokoa.

Ny fomba voalohany azo atao dia ny mandika ny ampahany amin'ny fizarazarana amin'ny mpizara vaovao amin'ny fampiasana fangatahana hanova ny fisarahana amin'ny latabatra. Ohatra, manana fizarazarana isam-bolana ianao, ary maka ny volana voalohany amin'ny 2017 ianao ary mandika izany amin'ny mpizara vaovao, avy eo mandika ny volana fahatelo amin'ny mpizara vaovao hafa. Ary manao izany ianao mandra-pahatongan'izany ho mitovitovy na latsaka.

Ny famindrana dia tsy azo atao afa-tsy amin'ireo partitions izay tsy miova mandritra ny fandraisam-peo. Ho an'ny fizarazarana vaovao dia tsy maintsy esorina ny firaketana, satria tsy atomika ny famindrana azy ireo. Raha tsy izany, dia hiafara amin'ny dika mitovy na banga amin'ny angona ianao. Na izany aza, ity fomba ity dia azo ampiharina ary miasa tsara. Ampitaina amin'ny tambazotra ny fizarazarana efa vonona, izany hoe ny angon-drakitra dia tsy voatsindry na averina averina.

Ity fomba ity dia manana lesoka iray, ary miankina amin'ny rafitra sharding izany, na niantoka an'ity rafitra sharding ity ianao, inona no lakile sharding nanananao. Amin'ny ohatra asehonao amin'ny tranga misy metrika, ny fanalahidin'ny sharding dia ny hash amin'ny lalana. Rehefa misafidy latabatra voazara ianao, dia mandeha any amin'ny shards rehetra ao amin'ny cluster miaraka izy ary maka angona avy ao.

Midika izany fa tsy maninona aminao izay angon-drakitra niafara tamin'ny shard. Ny tena zava-dehibe dia ny angon-drakitra amin'ny lalana iray dia miafara amin'ny shard iray, fa iza no tsy manan-danja. Amin'ity tranga ity, ny famindrana partitions efa vita dia tonga lafatra, satria amin'ny fanontaniana voafantina dia hahazo angon-drakitra feno ihany koa ianao - na alohan'ny hamerenana indray na aorian'izany, dia tsy misy dikany ny tetika.

Saingy misy tranga izay sarotra kokoa. Raha eo amin'ny sehatry ny lojika fampiharana ianao dia miantehitra amin'ny rafitra sharding manokana, fa ity mpanjifa ity dia mipetraka amin'ny shard toy izany, ary ny fangatahana dia azo alefa mivantana any, fa tsy amin'ny latabatra Distributed. Na mampiasa dikan-teny vao haingana an'ny ClickHouse ianao ary namela ny toerana optimize skip shards tsy ampiasaina. Amin'ity tranga ity, mandritra ny fanontaniana voafantina, ny fitenenana ao amin'ny fizarana aiza no hodinihina ary hokajiana hoe iza amin'ireo shards no tokony hampiasaina araka ny rafitra sharding. Izany dia miasa raha toa ka ny angon-drakitra dia mizara mifanaraka amin'ity rafitra sharding ity. Raha amboarinao amin'ny tanana izy ireo dia mety hiova ny taratasy.

Ka ity no fomba laharana voalohany. Ary miandry ny valinteninao aho, na mety ny fomba, na andao hiroso.

Vladimir Kolobaev, mpitantana ny rafitra ao Avito: Alexey, tsy mandeha tsara ny fomba voalazanao rehefa mila manaparitaka ny entana ianao, anisan'izany ny famakiana. Afaka maka fizarazarana isam-bolana isika ary afaka mitondra ny volana teo aloha mankany amin'ny node hafa, fa rehefa misy fangatahana ho an'ity data ity dia hampiditra azy fotsiny izahay. Saingy tianay ny hampiditra ny cluster iray manontolo, satria raha tsy izany, mandritra ny fotoana fohy dia hokarakarain'ny shards roa ny entana famakiana manontolo.

Alexey Milovidov: Hafahafa ny valiny eto - eny, ratsy izany, saingy mety hahomby izany. Hazavaiko tsara hoe ahoana. Mendrika ny mijery ny scenario entana izay ao ambadiky ny angonao. Raha angon-drakitra fanaraha-maso izany, dia azo antoka fa azo antoka fa ny ankamaroan'ny fangatahana dia ny angona vaovao.

Nametraka lohamilina vaovao ianao, nafindra toerana fizarazarana taloha, fa nanova koa ny fomba firaketana ny angona vaovao. Ary ny angona vaovao dia hiparitaka manerana ny cluster. Noho izany, aorian'ny dimy minitra monja, ny fangatahana mandritra ny dimy minitra farany dia hampiakatra mitovy ny cluster rehefa afaka iray andro, ny fangatahana mandritra ny 24 ora dia hampiakatra ny cluster. Ary ny fangatahana tamin'ny volana teo aloha, indrisy, ho any amin'ny ampahany amin'ny mpizara cluster ihany.

Saingy matetika ianao dia tsy hanana fangatahana manokana ho an'ny Febroary 2019. Azo inoana fa raha miditra amin'ny 2019 ny fangatahana, dia ho an'ny 2019 manontolo izy ireo - mandritra ny fotoana maharitra, fa tsy amin'ny faritra kely. Ary ny fangatahana toy izany koa dia afaka mameno ny cluster mitovy. Saingy amin'ny ankapobeny, marina tanteraka ny fanamarihanao fa vahaolana ad hoc ity izay tsy manaparitaka ny angon-drakitra tanteraka.

Manana teboka vitsivitsy aho hamaliana ny fanontaniana. Ny iray amin'izy ireo dia momba ny fomba famolavolana drafitra sharding amin'ny voalohany mba hampihenana ny fanaintainana ny famerenana indray. Tsy azo atao foana izany.

Ohatra, manana angona fanaraha-maso ianao. Ny angona fanaraha-maso dia mitombo noho ny antony telo. Ny voalohany dia ny fanangonana ny angona ara-tantara. Ny faharoa dia ny fitomboan'ny fifamoivoizana. Ary ny fahatelo dia ny fampitomboana ny isan’ny zavatra iharan’ny fanaraha-maso. Misy microservices sy metrika vaovao mila tehirizina.

Azo inoana fa amin'ireo, ny fitomboana lehibe indrindra dia mifandray amin'ny antony fahatelo - ny fitomboan'ny fampiasana ny fanaraha-maso. Ary amin'ity tranga ity dia ilaina ny mijery ny toetry ny enta-mavesatra, inona no tena fanontaniana voafidy. Ny fanontaniana voafantina fototra dia azo inoana fa mifototra amin'ny ampahany amin'ny metrika sasany.

Ohatra, ny fampiasana CPU amin'ny mpizara sasany amin'ny serivisy sasany. Hita fa misy ampahany kely amin'ny fanalahidy ahazoanao an'io data io. Ary ny fangatahana an'io data io dia azo inoana fa tena tsotra ary vita ao anatin'ny am-polony milliseconds. Ampiasaina amin'ny serivisy fanaraha-maso sy dashboard. Manantena aho fa azoko tsara izany.

Vladimir Kolobaev: Ny zava-misy dia matetika izahay no misarika ny angona ara-tantara, satria mampitaha ny zava-misy ankehitriny amin'ny zava-misy ara-tantara amin'ny fotoana tena izy. Ary zava-dehibe ho antsika ny fidirana haingana amin'ny angon-drakitra be dia be, ary ny ClickHouse dia manao asa tsara amin'izany.

Tena marina ny anao, miaina ny ankamaroan'ny fangatahana famakiana izahay amin'ny andro farany, toy ny rafitra fanaraha-maso rehetra. Saingy amin'izany fotoana izany, ny enta-mavesatra amin'ny angona ara-tantara dia lehibe ihany koa. Amin'ny ankapobeny dia avy amin'ny rafitra fanairana izay mandeha isaky ny telopolo segondra ary miteny amin'ny ClickHouse hoe: “Omeo ahy ny angona nandritra ny enina herinandro farany. Ankehitriny dia manangana karazana salan'isa mihetsika avy amin'izy ireo aho, ary andao hampitaha ny sanda ankehitriny amin'ny sanda ara-tantara. "

Te-hilaza aho fa ho an'ny fangatahana vao haingana toy izany dia manana latabatra kely iray hafa izahay izay mitahiry angona roa andro fotsiny, ary ny fangatahana lehibe dia manidina ao anatiny. Mandefa fanontaniana manan-tantara lehibe amin'ny latabatra lehibe misy sharded izahay.

Alexey Milovidov: Indrisy anefa fa toa tsy azo ampiharina amin'ny toe-javatra iainanao izany, fa hilaza aminao ny famaritana ny tetika sharding roa ratsy sy sarotra izay tsy mila ampiasaina, fa ampiasaina amin'ny serivisy namako.

Misy cluster lehibe misy hetsika Yandex.Metrica. Ny hetsika dia fijerena pejy, kitika ary fiovam-po. Ny ankamaroan'ny fangatahana dia mankany amin'ny tranokala manokana. Manokatra ny serivisy Yandex.Metrica ianao, manana tranokala - avito.ru, mandehana any amin'ny tatitra, ary misy fangatahana natao ho an'ny tranokalanao.

Saingy misy fangatahana hafa - analytical sy global - izay ataon'ny mpandinika anatiny. Raha sanatria, marihiko fa ny mpandinika anatiny dia manao fangatahana ho an'ny serivisy Yandex ihany. Na izany aza, na dia ny serivisy Yandex aza dia manana ampahany betsaka amin'ny angon-drakitra rehetra. Ireo dia fangatahana tsy ho an'ny kaontera manokana, fa ho an'ny sivana midadasika kokoa.

Ahoana ny fandaminana ny angon-drakitra amin'ny fomba mahomby ny zava-drehetra ho an'ny kaontera iray, ary koa ny fangatahana manerantany? Ny fahasarotana iray hafa dia ny isan'ny fangatahana ao amin'ny ClickHouse ho an'ny cluster Metrics dia an'arivony isan-tsegondra. Mandritra izany fotoana izany, ny mpizara ClickHouse iray dia tsy afaka mitantana fangatahana tsy misy dikany, ohatra, an'arivony isan-tsegondra.

Ny haben'ny cluster dia mpizara zavatra eninjato. Raha misintona fotsiny tabilao Distributed amin'ity cluster ity ianao ary mandefa fangatahana an'arivony any, dia ho ratsy kokoa noho ny fandefasana azy ireo amin'ny mpizara iray izany. Amin'ny lafiny iray, ny safidy hoe ny angon-drakitra dia miparitaka mitovy, ary mandeha izahay ary mangataka amin'ny mpizara rehetra, dia nesorina avy hatrany.

Misy safidy izay diametrically mifanohitra. Alaivo sary an-tsaina raha mizara ny angona amin'ny tranokala isika, ary ny fangatahana tranonkala iray dia mankany amin'ny ampahany iray. Amin'izao fotoana izao, ny cluster dia afaka mitantana fangatahana iray alina isan-tsegondra, fa amin'ny ampahany iray dia hiasa miadana loatra ny fangatahana iray. Tsy hanitatra intsony amin'ny resaka throughput izany. Indrindra raha ity no tranokala avito.ru. Tsy hanambara ny tsiambaratelo aho raha milaza fa Avito dia iray amin'ireo tranonkala be mpitsidika indrindra ao amin'ny RuNet. Ary ny fanodinana azy amin'ny ampahany iray dia hadalana.

Noho izany, ny tetika sharding dia natao amin'ny fomba fetsy kokoa. Ny cluster manontolo dia mizara ho vondrona maromaro, izay antsoinay hoe layers. Ny cluster tsirairay dia misy shards ampolony ka hatramin'ny ampolony. Miisa sivy amby telopolo toy izany ny fitambarany.

Manao ahoana izany rehetra izany? Tsy miova ny isan'ny cluster - satria sivy amby telopolo taona lasa izay, dia mbola toy izany ihany. Saingy ao anatin'ny tsirairay amin'izy ireo dia mampitombo tsikelikely ny isan'ny shards isika rehefa manangona angona. Ary ny rafitra sharding amin'ny ankapobeny dia toy izao: mizara ho vohikala ireo cluster ireo, ary mba hahatakarana hoe iza no vohikala misy cluster, dia metabase misaraka amin'ny MySQL no ampiasaina. Toerana iray - amin'ny cluster iray. Ary ao anatiny, ny sharding dia mitranga araka ny ID mpitsidika.

Rehefa mirakitra an-tsoratra dia zarainay amin'ny ambiny amin'ny fizarana ny kaontin'ny mpitsidika izy ireo. Fa rehefa manampy shard vaovao, dia miova ny rafitra sharding; Midika izany fa ny mpitsidika iray dia efa mipetraka amin'ny mpizara maromaro, ary tsy afaka miantehitra amin'izany ianao. Izany dia natao fotsiny mba hahazoana antoka fa ny angon-drakitra dia voatsindry tsara kokoa. Ary rehefa manao fangatahana dia mandeha any amin'ny latabatra Distributed, izay mijery ny cluster ary miditra amin'ny mpizara am-polony. Tetika adaladala tokoa izany.

Tsy ho feno anefa ny tantarako raha tsy miteny aho hoe nandao io tetika io isika. Ao amin'ny rafitra vaovao, nanova ny zava-drehetra izahay ary nandika ny angon-drakitra rehetra tamin'ny fampiasana clickhouse-copier.

Ao amin'ny drafitra vaovao, ny tranokala rehetra dia mizara ho sokajy roa - lehibe sy kely. Tsy fantatro ny fomba nisafidianana ny tokonam-baravarana, fa ny vokatra dia ny tranokala lehibe dia voarakitra ao amin'ny cluster iray, izay misy shards 120 miaraka amin'ny kopia telo tsirairay avy - izany hoe, mpizara 360. Ary ny tetika sharding dia toy izany fa ny fangatahana rehetra dia mandeha amin'ny shards rehetra indray mandeha. Raha manokatra pejin'ny tatitra momba ny avito.ru ao amin'ny Yandex.Metrica ianao, dia mankany amin'ny lohamilina 120 ny fangatahana. Vitsy ny tranokala lehibe ao amin'ny RuNet. Ary ny fangatahana dia tsy arivo isan-tsegondra, fa na dia latsaky ny zato. Izany rehetra izany dia tsakoin'ny latabatra Distributed, izay ataon'izy ireo tsirairay miaraka amin'ny mpizara 120.

Ary ny cluster faharoa dia ho an'ny tranokala kely. Ity misy drafitra sharding mifototra amin'ny ID tranonkala, ary ny fangatahana tsirairay dia mandeha amin'ny shard iray.

ClickHouse dia manana fitaovana clickhouse-copier. Afaka milaza amiko momba azy ve ianao?

Lazaiko avy hatrany fa ity vahaolana ity dia sarotra kokoa ary somary tsy dia mamokatra. Ny tombony dia ny manosotra tanteraka ny angon-drakitra araka ny lamina voafaritrao. Fa ny tsy fahampian'ny utility dia tsy reshard mihitsy. Mandika ny angona avy amin'ny schema cluster iray mankany amin'ny schema cluster hafa izy io.

Midika izany fa mba hiasa dia tsy maintsy manana cluster roa ianao. Mety ho hita ao amin'ny lohamilina iray ihany izy ireo, saingy, na izany aza, ny angon-drakitra dia tsy hifindra tsikelikely, fa ho adika.

Ohatra, nisy mpizara efatra, valo izao. Mamorona latabatra voazara vaovao amin'ny mpizara rehetra ianao, latabatra vaovao eo an-toerana ary manomboka ny clickhouse-copier, manondro ao ny drafitra asa tokony hovakiany avy eo, manaiky ny rafitra sharding vaovao ary mamindra ny angon-drakitra ao. Ary amin'ny lohamilina taloha dia mila habaka avo roa heny sy sasany noho ny amin'izao fotoana izao ianao, satria tsy maintsy mijanona eo amin'izy ireo ny angon-drakitra taloha, ary ny antsasaky ny angon-drakitra taloha dia ho tonga eo ambonin'izy ireo. Raha nieritreritra mialoha ianao fa mila averina averina ny angon-drakitra ary misy toerana, dia mety io fomba io.

Ahoana ny fiasan'ny clickhouse-copier ao anatiny? Izy io dia manapaka ny asa rehetra ho andiana asa amin'ny fanodinana fizarana iray amin'ny latabatra iray amin'ny shard iray. Ireo asa rehetra ireo dia azo tanterahina mifanandrify, ary ny clickhouse-copier dia azo atao amin'ny milina samihafa amin'ny toe-javatra maro, fa ny zavatra ataony amin'ny fizarazarana iray dia tsy misy afa-tsy ny insert select. Ny angon-drakitra dia vakiana, esorina, averina zaraina, avy eo averina indray, soratana any amin'ny toerana iray, ary averina alaina. Fanapahan-kevitra henjana kokoa izany.

Nanana zavatra mpanamory antsoina hoe resharding ianao. Ahoana ny aminy?

Niverina tamin'ny taona 2017, nanana zavatra mpanamory antsoina hoe resharding ianao. Misy safidy mihitsy aza ao amin'ny ClickHouse. Raha ny fahazoako azy dia tsy nipoitra izany. Afaka milaza amiko ve ianao hoe nahoana izany no nitranga? Toa misy ifandraisany tokoa izany.

Ny olana rehetra dia ny hoe raha ilaina ny mamerina ny angon-drakitra amin'ny toerana, dia ilaina ny fampifanarahana be pitsiny mba hanaovana izany atomika izany. Rehefa nanomboka nijery ny fomba fiasan'ity fampifanarahana ity izahay dia hita fa nisy olana fototra. Ary ireo olana fototra ireo dia tsy teorika fotsiny, fa avy hatrany dia nanomboka naneho ny tenany tamin'ny fampiharana amin'ny endrika zavatra azo hazavaina tsotra izao - tsy misy na inona na inona.

Azo atao ve ny manambatra ny angona rehetra alohan'ny hamindra azy amin'ny kapila miadana?

Fanontaniana momba ny TTL miaraka amin'ny safidy manara-penitra amin'ny tontolon'ny fampifangaroana. Misy fomba, ankoatra ny amin'ny alalan'ny cron, hanambatra ny ampahany rehetra ho iray alohan'ny hamindrana azy ireo amin'ny kapila miadana?

Ny valin'ny fanontaniana dia azo atao ny mametaka ho azy ny ampahany rehetra ho iray alohan'ny hamindrana azy ireo - tsia. Heveriko fa tsy ilaina izany. Tsy mila manambatra ny ampahany rehetra ho iray ianao, fa miantehitra fotsiny amin'ny hoe hafindra ho azy ireo amin'ny kapila miadana.

Manana fepetra roa momba ny fitsipika momba ny famindrana izahay. Ny voalohany dia rehefa feno. Raha toa ka latsaky ny isan-jaton'ny habaka malalaka ny ampahan'ny fitahirizana ankehitriny, dia misafidy ampahany iray izahay ary afindranay any amin'ny fitahirizana miadana kokoa. Na ny marimarina kokoa, tsy miadana kokoa, fa ny manaraka - rehefa manamboatra ianao.

Ny fepetra faharoa dia ny habeny. Mikasika ny fihetsehana ampahany lehibe izany. Azonao atao ny manitsy ny tokonam-baravarana araka ny toerana malalaka amin'ny kapila haingana, ary ny angona dia hafindra ho azy.

Ahoana ny fomba hifindra monina amin'ny dikan-teny vaovao an'ny ClickHouse raha tsy misy fomba hijerena ny fifanarahana mialoha?

Resadresaka tsy tapaka io lohahevitra io amin'ny resaka telegrama ClickHouse raha jerena ny dikan-teny samihafa, ary mbola. Ahoana ny fiarovana ny fanavaozana avy amin'ny version 19.11 mankany 19.16 ary, ohatra, amin'ny 19.16 mankany 20.3. Inona no fomba tsara indrindra hifindra monina amin'ny dikan-teny vaovao nefa tsy afaka manamarina mialoha ny fifanarahana ao amin'ny boaty fasika?

Misy fitsipika "volamena" maromaro eto. Voalohany - vakio ny changelog. Lehibe izy io, saingy misy andalana misaraka momba ny fiovana tsy mifanaraka amin'ny aoriana. Aza raisina ho toy ny saina mena ireo teboka ireo. Ireo dia matetika tsy mifanaraka kely izay misy fampiasa sisiny izay mety tsy ampiasainao.

Faharoa, raha tsy misy fomba hanamarinana ny fifanarahana ao amin'ny sandbox, ary te hanavao avy hatrany amin'ny famokarana ianao, ny tolo-kevitra dia tsy mila manao izany ianao. Voalohany dia mamorona sandbox ary andrana. Raha tsy misy ny tontolo iainana fitsapana, dia azo inoana fa tsy manana orinasa lehibe ianao, izay midika fa afaka mandika ny sasany amin'ireo angon-drakitra amin'ny solosainao ianao ary azo antoka fa miasa tsara ny zava-drehetra. Azonao atao mihitsy aza ny manangana kopia maromaro eo an-toerana amin'ny masininao. Na azonao atao ny maka dikan-teny vaovao any amin'ny toerana akaiky anao ary mampakatra ny sasany amin'ireo angona ao - izany hoe mamorona tontolo fitsapana namboarina.

Ny fitsipika iray hafa dia ny tsy fanavaozana mandritra ny herinandro aorian'ny famoahana ny dikan-teny noho ny fisamborana bibikely amin'ny famokarana sy ny fanamboarana haingana. Andeha hojerentsika ny laharan'ny dikan-teny ClickHouse mba tsy ho very hevitra.

Misy version 20.3.4. Ny isa 20 dia manondro ny taom-pamokarana - 2020. Raha jerena ny ao anatiny dia tsy maninona izany, ka tsy hiraharaha izany isika. Manaraka - 20.3. Ampitomboinay ny isa faharoa - amin'ity tranga ity 3 - isaky ny mamoaka famoahana misy fiasa vaovao izahay. Raha te-hanampy endri-javatra sasany amin'ny ClickHouse isika dia tsy maintsy mampitombo io isa io. Izany hoe, amin'ny version 20.4 ClickHouse dia hiasa tsara kokoa. Ny isa fahatelo dia 20.3.4. Ity ny 4 ny isan'ny famoahana patch izay tsy nampianay endri-javatra vaovao, fa nanamboatra ny bug sasany. Ary ny 4 dia midika hoe nanao izany inefatra izahay.

Aza mieritreritra fa zavatra mahatsiravina izany. Matetika ny mpampiasa dia afaka mametraka ny kinova farany ary hiasa tsy misy olana amin'ny ora fiasana isan-taona. Fa alaivo sary an-tsaina fa amin'ny fiasa sasany amin'ny fanodinana bitmaps, izay nampian'ireo mpiara-miasa Shinoa, dia midona amin'ny lohamilina ny mpizara rehefa mandalo hevitra diso. Andraikitsika ny manamboatra izany. Havoakanay ny kinova patch vaovao ary ny ClickHouse dia hiorina mafy kokoa.

Raha manana ClickHouse mihazakazaka amin'ny famokarana ianao, ary misy dikan-teny vaovao an'ny ClickHouse mivoaka miaraka amin'ny endri-javatra fanampiny - ohatra, 20.4.1 no voalohany indrindra, aza maika ny hametraka izany amin'ny famokarana amin'ny andro voalohany. Nahoana no ilaina izany? Raha mbola tsy mampiasa ClickHouse ianao, dia azonao atao ny mametraka azy io, ary azo inoana fa hilamina ny zava-drehetra. Fa raha efa miasa tsara ny ClickHouse, dia tandremo tsara ny patch sy ny fanavaozam-baovao mba hahitana izay olana atrehintsika.

Kirill Shvakov: Te-hanampy kely momba ny tontolo fitsapana aho. Ny olona rehetra dia tena matahotra ny fitsapana tontolo iainana ary noho ny antony sasany dia mino izy ireo fa raha manana ClickHouse cluster tena lehibe ianao, dia tokony ho kely na kely kokoa ny tontolo iainana fitsapana. Tsy mba toy izany mihitsy.

Afaka milaza aminareo aho avy amin'ny ohatra nasehoko manokana. Manana tetikasa aho, ary misy ClickHouse. Ho azy irery ihany ny tontolon'ny andrana ataontsika - milina virtoaly kely ao Hetzner ity izay mitentina roapolo euros, izay ametrahana tanteraka ny zava-drehetra. Mba hanaovana izany dia manana automatique feno ao amin'ny Ansible izahay, ary noho izany, amin'ny foto-kevitra dia tsy misy mahasamihafa ny toerana haleha - amin'ny mpizara hardware na mametraka fotsiny amin'ny milina virtoaly.

Inona no azo atao? Tsara ny manome ohatra ao amin'ny antontan-taratasin'ny ClickHouse momba ny fomba fametrahana cluster kely ao an-tranonao - ao amin'ny Docker, ao amin'ny LXC, angamba mamorona playbook Ansible, satria samy hafa ny fametrahana azy. Izany dia hanatsotra be dia be. Rehefa maka sy mametraka cluster ao anatin'ny dimy minitra ianao dia mora kokoa ny manandrana mamantatra zavatra. Mora kokoa izany, satria ny fandehanana mankany amin'ny dikan-teny famokarana izay tsy nosedrainao dia lalana mankany amin'ny toerana tsy misy. Indraindray miasa ary indraindray tsy mandeha. Ary noho izany, ny manantena fahombiazana dia ratsy.

Maxim Kotyakov, injeniera zokiolona any aoriana Avito: Hanampy kely momba ny tontolon'ny fitsapana aho avy amin'ny andiana olana atrehin'ny orinasa lehibe. Manana cluster fanekena ClickHouse feno izahay amin'ny resaka drafitry ny angon-drakitra sy ny toe-javatra, dia dika mitovy amin'ny famokarana. Ity cluster ity dia apetraka ao anaty kaontenera tsy misy dikany miaraka amin'ny loharano faran'izay kely indrindra. Manoratra isan-jaton'ny angon-drakitra famokarana any izahay, soa ihany fa azo atao ny mamerina ny renirano ao Kafka. Ny zava-drehetra ao dia mirindra sy mivelatra - na eo amin'ny lafin'ny fahaiza-manao sy ny fikorianan'ny rivotra, ary, amin'ny teoria, ny zavatra hafa rehetra dia mitovy, dia tokony ho toy ny famokarana amin'ny lafiny metrika. Ny zavatra rehetra mety hipoaka dia ahodina voalohany eo amin'ity fitoerana ity ary avela ao mandritra ny andro maromaro mandra-pahavitany. Saingy mazava ho azy, lafo, sarotra ary tsy misy vidiny fanohanana ity vahaolana ity.

Alexey Milovidov: Holazaiko aminao hoe manao ahoana ny tontolon'ny fitsapana ny namantsika avy amin'ny Yandex.Metrica. Ny cluster iray dia nanana mpizara hafahafa 600, ny iray hafa nanana 360, ary misy cluster fahatelo sy maromaro. Ny tontolon'ny fitsapana ho an'ny iray amin'izy ireo dia shards roa misy kopia roa isaky ny tsirairay. Nahoana no tapaka roa? Mba tsy ho irery ianao. Ary tokony hisy kopia koa. Vola kely indrindra azonao alaina.

Ity tontolo fitsapana ity dia ahafahanao manamarina raha mandeha ny fanontanianao ary raha misy zavatra lehibe tapaka. Saingy matetika ny olana dia miseho amin'ny toetra hafa tanteraka, rehefa mandeha ny zava-drehetra, saingy misy fiovana kely eo amin'ny entana.

Mamelà ahy hanome ohatra anao. Nanapa-kevitra ny hametraka dikan-teny vaovao amin'ny ClickHouse izahay. Navoaka tamin'ny tontolon'ny fitsapana izy io, ny fitsapana mandeha ho azy dia vita ao amin'ny Yandex.Metrica mihitsy, izay mampitaha ny angona momba ny dikan-teny taloha sy ny vaovao, mihazakazaka ny fantsona manontolo. Ary mazava ho azy, ny fitsapana maitso amin'ny CI. Raha tsy izany dia tsy nanolotra ity dikan-teny ity akory izahay.

Tsara ny zava-drehetra. Manomboka miditra amin'ny famokarana isika. Mahazo hafatra aho fa nitombo im-betsaka ny entana eo amin'ny grafika. Mamerina ny dikan-teny izahay. Nijery ny grafika aho ary nahita: nitombo imbetsaka ny entana nandritra ny fandefasana, ary nihena indray rehefa navoaka. Avy eo dia nanomboka namerina ny dikan-teny izahay. Ary nitombo toy izany koa ny entana, ary nihemotra toy izany koa. Ka ny fehin-kevitra dia izao: nitombo ny entana noho ny layout, tsy misy mahagaga.

Avy eo dia sarotra ny mandresy lahatra ny mpiara-miasa hametraka ny dikan-teny vaovao. Hoy aho: “Tsy maninona, mivoaha. Tazony hatrany ny rantsantananao, hahomby ny zava-drehetra. Ankehitriny dia nitombo ny enta-mavesatra amin'ny grafika, saingy tsara ny zava-drehetra. Mijanòna eo." Amin'ny ankapobeny, nanao izany izahay, ary izay ihany - navoaka ho an'ny famokarana ny dikan-teny. Saingy saika amin'ny layout rehetra dia misy olana mitovy amin'izany.

Kill query dia tokony hamono fanontaniana, fa tsy izany. Nahoana?

Mpampiasa iray, karazana mpandinika, tonga teto amiko ary namorona fangatahana nametraka ny cluster ClickHouse-ko. Ny node na cluster iray manontolo, miankina amin'ny kopia na shard nandehanana ilay fangatahana. Hitako fa ao anaty talantalana ny loharanon-karena CPU rehetra amin'ity server ity, mena ny zava-drehetra. Mandritra izany fotoana izany, ny ClickHouse mihitsy no mamaly ny fangatahana. Ary manoratra aho hoe: "Asehoy ahy azafady, lisitry ny dingana, inona no fangatahana nahatonga ity hadalana ity."

Hitako io fangatahana io ary soratako ny famonoana azy. Ary hitako fa tsy misy na inona na inona mitranga. Ao anaty talantalana ny mpizara, ClickHouse avy eo dia manome baiko vitsivitsy, mampiseho fa velona ny mpizara, ary tsara ny zava-drehetra. Saingy manana fahasimbana amin'ny fangatahan'ny mpampiasa rehetra aho, manomboka amin'ny firaketana an-tsoratra ao amin'ny ClickHouse ny fahasimbana, ary tsy mandeha ny fangatahako famonoana. Nahoana? Noheveriko fa tokony hamono fanontaniana ny kill query, saingy tsy izany.

Ankehitriny dia hisy valiny somary hafahafa. Ny zava-misy dia ny kill query dia tsy mamono fanontaniana.

Kill query dia manamarina boaty kely antsoina hoe "Tiako hovonoina ity fanontaniana ity." Ary ny fangatahana mihitsy no mijery an'io saina io rehefa manodina ny sakana tsirairay. Raha apetraka dia mijanona tsy miasa ny fangatahana. Hita fa tsy misy mamono ny fangatahana, ny tenany dia tsy maintsy manamarina ny zava-drehetra ary mijanona. Ary izany dia tokony hiasa amin'ny toe-javatra rehetra izay ny fangatahana dia ao amin'ny toetry ny fanodinana sakana angona. Izy io dia handamina ny sakana amin'ny angona manaraka, hanamarina ny saina ary hijanona.

Tsy mandeha izany raha toa ka voasakana ny fangatahana amin'ny asa sasany. Marina, azo inoana fa tsy izany no raharahanao, satria, araka ny hevitrao, dia mampiasa loharanon'ny mpizara iray taonina. Mety tsy mandeha izany amin'ny resaka fanasokajiana ivelany sy amin'ny antsipiriany hafa. Saingy amin'ny ankapobeny dia tsy tokony hitranga izany, fa bibikely. Ary ny hany azoko atoro dia ny fanavaozana ny ClickHouse.

Ahoana no kajy ny fotoana mamaly eo ambanin'ny famakiana entana?

Misy latabatra mitahiry ireo fitambarana entana - kaontera isan-karazany. Manodidina ny zato tapitrisa eo ny isan'ny andalana. Azo atao ve ny miantehitra amin'ny fotoana mamaly mialoha raha mandatsaka RPS 1K ho an'ny entana 1K ianao?

Raha jerena amin'ny teny manodidina, dia miresaka momba ny enta-mavesatra isika, satria tsy misy olana amin'ny fanoratana - na dia arivo, na iray hetsy aza, ary indraindray andalana maromaro dia azo ampidirina.

Hafa mihitsy ny fangatahana famakiana. Ao amin'ny safidy 1, ClickHouse dia afaka manao fangatahana an'aliny isan-tsegondra, ka na ny fangatahana fanalahidy iray aza dia efa mitaky loharanon-karena sasany. Ary ny fanontaniana momba ny teboka toy izany dia ho sarotra kokoa noho ny amin'ny angon-drakitra manan-danja sasany, satria isaky ny mamaky dia ilaina ny mamaky andian-drakitra amin'ny alàlan'ny index. Tsy ny firaketana tsirairay no resahinay, fa ny faritra tsirairay. Izany hoe, tsy maintsy mamaky ny faritra manontolo ianao - andalana 8192 amin'ny alàlan'ny default. Ary tsy maintsy manafoana ny sakana data voaporitra avy amin'ny 64 KB mankany 1 MB ianao. Amin'ny ankapobeny, mila milisegondra vitsivitsy vao vita ireo fanontaniana kendrena ireo. Fa ity no safidy tsotra indrindra.

Andeha isika hanandrana aritmetika tsotra. Raha ampitomboinao arivo ny milisegondra vitsivitsy dia mahazo segondra vitsivitsy ianao. Toy ny hoe tsy azo atao ny manaraka ny fangatahana arivo isan-tsegondra, fa raha ny marina dia azo atao izany, satria manana core processeur maromaro izahay. Noho izany, amin'ny ankapobeny, ny ClickHouse dia afaka mitazona 1000 RPS indraindray, fa ho an'ny fangatahana fohy, ireo lasibatra manokana.

Raha mila manitsy ny kluster ClickHouse amin'ny isan'ny fangatahana tsotra ianao, dia manoro hevitra ny zavatra tsotra indrindra aho - mampitombo ny isan'ny replica ary mandefa fangatahana amin'ny replica kisendrasendra. Raha manana fangatahana dimanjato isan-tsegondra ny kopia iray, izay tena zava-misy tanteraka, dia ny kopia telo no handray iray arivo sy sasany.

Indraindray, mazava ho azy, azonao atao ny manamboatra ClickHouse ho an'ny isa ambony indrindra amin'ny famakiana teboka. Inona no ilaina amin'izany? Ny voalohany dia ny fampihenana ny granularity ny index. Amin'ity tranga ity dia tsy tokony hahena ho iray izany, fa amin'ny fototra dia ny isan'ny fidirana ao amin'ny index dia ho maromaro na am-polony tapitrisa isaky ny mpizara. Raha manana andalana zato tapitrisa ny latabatra, dia azo apetraka amin'ny 64 ny granularity.

Azonao atao ny mampihena ny haben'ny sakana voaporitra. Misy fika amin'izany min compresses block habe, max compresses block habe. Azo ahena izy ireo, fenoina amin'ny angona, ary avy eo dia ho haingana kokoa ny fanontaniana kendrena. Na izany aza, ClickHouse dia tsy angon-drakitra manan-danja. Ny fangatahana kely marobe dia antipattern enta-mavesatra.

Kirill Shvakov: Hanome torohevitra aho raha sanatria misy kaonty tsotra any. Toe-javatra mahazatra mahazatra izany rehefa mitahiry karazana kaontera i ClickHouse. Manana mpampiasa aho, avy amin'ny firenena toy izao izy, ary sehatra fahatelo, ary mila mampitombo tsikelikely aho. Raiso ny MySQL, manaova fanalahidy tokana - ao amin'ny MySQL dia fanalahidy dika mitovy, ary ao amin'ny PostgreSQL dia fifandirana - ary ampio famantarana miampy. Hiasa tsara kokoa izany.

Rehefa tsy manana data betsaka ianao dia tsy misy dikany loatra ny fampiasana ClickHouse. Misy angon-drakitra tsy tapaka ary manao izany tsara izy ireo.

Inona no azoko amboarina ao amin'ny ClickHouse mba misy angona bebe kokoa ao anaty cache?

Andeha hojerentsika ny toe-javatra iray - manana 256 GB an'ny RAM ny mpizara, amin'ny andavanandron'ny ClickHouse dia maka 60-80 GB eo ho eo, amin'ny fara-tampony - hatramin'ny 130. Inona no azo atao sy amboarina mba hahatonga ny angona bebe kokoa ao amin'ny cache ary, araka izany, vitsy kokoa ny dia mankany amin'ny kapila?

Amin'ny ankapobeny, ny cache pejin'ny rafitra miasa dia manao asa tsara amin'izany. Raha sokafanao fotsiny ny tampony dia jereo ao ny cache na maimaim-poana - milaza koa hoe ohatrinona ny cache - dia ho hitanao fa ny fahatsiarovana maimaim-poana rehetra dia ampiasaina amin'ny cache. Ary rehefa mamaky ity angon-drakitra ity dia hovakiana tsy avy amin'ny kapila, fa avy amin'ny RAM. Amin'izay fotoana izay ihany koa dia azoko lazaina fa ampiasaina amin'ny fomba mahomby ny cache satria ny angon-drakitra voaporitra no voatahiry.

Na izany aza, raha te hanafaingana fanontaniana tsotra kokoa ianao, dia azo atao ny mamela ny cache amin'ny angon-drakitra decompressed ao anatin'ny ClickHouse. Antsoina hoe cache tsy voafehy. Ao amin'ny fisie config.xml, apetraho ny haben'ny cache tsy voafehy amin'ny sanda ilainao - manoro hevitra aho tsy mihoatra ny antsasaky ny RAM maimaim-poana, satria ny ambiny dia handeha eo ambanin'ny cache pejy.

Fanampin'izany, misy firafitry ny haavon'ny fangatahana roa. Fametrahana voalohany - mampiasa cache tsy voafehy - misy ny fampiasana azy. Amporisihina ny hamela azy io ho an'ny fangatahana rehetra, afa-tsy ny mavesatra, izay afaka mamaky ny angon-drakitra rehetra ary manala ny cache. Ary ny toe-javatra faharoa dia toy ny isan'ny andalana ambony indrindra hampiasana ny cache. Mametra ho azy ireo fanontaniana lehibe izy ireo mba handosirana ny cache.

Ahoana no ahafahako manamboatra storage_configuration ho fitahirizana ao amin'ny RAM?

Tao amin'ny antontan-taratasy ClickHouse vaovao dia namaky ny fizarana mifandraika aho miaraka amin'ny fitahirizana angon-drakitra. Ny famaritana dia misy ohatra miaraka amin'ny SSD haingana.

Manontany tena aho hoe ahoana no ahafahana manamboatra ny zavatra mitovy amin'ny fitadidiana mafana. Ary fanontaniana iray hafa. Ahoana no fomba fiasan'ny Selection miaraka amin'ity fikambanana data ity, hamaky ny andiany iray manontolo ve izy io sa izay ao anaty kapila fotsiny, ary io angon-drakitra io ve dia voatsindry ao anaty fitadidiana? Ary ahoana ny fomba fiasan'ny fizarana prewhere miaraka amin'ny fikambanana data toy izany?

Ity toe-javatra ity dia misy fiantraikany amin'ny fitehirizana ny angon-drakitra, ary tsy miova ny endriny.
Andeha hojerentsika akaiky.

Azonao atao ny manitsy ny fitahirizana data amin'ny RAM. Izay rehetra namboarina ho an'ny kapila dia ny lalany. Mamorona fizarazarana tmpfs ianao izay apetraka amin'ny lalana sasany ao amin'ny rafi-drakitra. Nofaritanao io lalana io ho lalana mitahiry angon-drakitra ho an'ny fizarazarana mafana indrindra, manomboka tonga ny sombin-drakitra ary voasoratra ao, tsara ny zava-drehetra.

Saingy tsy manoro hevitra ny hanao izany aho noho ny fahamendrehana ambany, na dia manana kopia telo farafahakeliny amin'ny foibe data samihafa aza ianao, dia azo atao izany. Raha misy zavatra mitranga dia haverina amin'ny laoniny ny angon-drakitra. Alao sary an-tsaina hoe maty tampoka ny mpizara ary naverina niverina. Napetraka indray ny partition, saingy tsy nisy na inona na inona tao. Rehefa manomboka ny mpizara ClickHouse dia hitany fa tsy manana ireo sombiny ireo, na dia, araka ny metadata ZooKeeper, dia tokony ho eo izy ireo. Jereny izay kopia misy azy, angatahany ary alainy. Amin'izany fomba izany no hamerenana ny angona.

Amin'io lafiny io, ny fitehirizana angona ao amin'ny RAM dia tsy mitovy amin'ny fitehirizana azy amin'ny kapila, satria rehefa soratana amin'ny kapila ny angona dia miafara amin'ny cache pejy ihany koa izy io ary nosoratana ara-batana taty aoriana. Izany dia miankina amin'ny rafitra fichier mounting safidy. Fa raha sanatria, holazaiko fa ny ClickHouse dia tsy fsync rehefa mampiditra.

Amin'ity tranga ity, ny angon-drakitra ao amin'ny RAM dia voatahiry amin'ny endrika mitovy tanteraka amin'ny kapila. Ny fanontaniana voafantina amin'ny fomba mitovy amin'izany dia mifantina ireo sombintsombiny tokony hovakiana, mifantina ny antontam-baovao ilaina ao amin'ireo sombiny, ary mamaky azy ireo. Ary ny prewhere dia miasa mitovy, na inona na inona ny angon-drakitra ao amin'ny RAM na amin'ny kapila.

Hatrany amin'ny isan'ny soatoavina tokana no mandaitra ny Low Cardinality?

Ny kardinaly ambany dia natao tamim-pahakingana. Manangona rakibolana angon-drakitra, saingy eo an-toerana izy ireo. Voalohany, misy diksionera isan-karazany ho an'ny ampahany tsirairay, ary faharoa, na dia ao anatin'ny ampahany iray aza dia mety tsy hitovy amin'ny faritra tsirairay. Rehefa mahatratra ny tokonam-baravarana ny isan'ny soatoavina tsy manam-paharoa — iray tapitrisa, heveriko fa ajanona fotsiny ny rakibolana ary misy iray vaovao noforonina.

Ny valiny dia amin'ny ankapobeny: ho an'ny faritra tsirairay eo an-toerana - lazao, ho an'ny isan'andro - any amin'ny toerana iray hatramin'ny iray tapitrisa tsy manam-paharoa dia mahomby ny Low Cardinality. Aorian'izay dia hisy fihemorana fotsiny, izay hampiasana rakibolana maro samihafa, fa tsy iray ihany. Hiasa mitovy amin'ny tsanganana tady mahazatra izy io, mety tsy dia mahomby loatra, saingy tsy hisy fahasimbana goavana.

Inona avy ireo fomba fanao tsara indrindra amin'ny fitadiavana lahatsoratra feno amin'ny latabatra misy andalana dimy lavitrisa?

Misy valiny samihafa. Ny voalohany dia ny filazana fa ClickHouse dia tsy milina fikarohana feno lahatsoratra. Misy rafitra manokana momba izany, ohatra, Elasticsearch и Sphinx. Na izany aza, hitako mihamitombo ny olona milaza fa mifindra avy amin'ny Elasticsearch mankany ClickHouse izy ireo.

Nahoana no mitranga izany? Manazava izany izy ireo amin'ny hoe Elasticsearch dia mitsahatra amin'ny fiatrehana ny enta-mavesatra amin'ny boky sasany, manomboka amin'ny fananganana index. Manjary sarotra loatra ny fanondroana, ary raha mamindra fotsiny ny angon-drakitra amin'ny ClickHouse ianao, dia hita fa voatahiry imbetsaka amin'ny fomba mahomby kokoa amin'ny resaka volume. Mandritra izany fotoana izany, ny fikarohana fikarohana dia matetika tsy toy izany fa ilaina ny mitady andian-teny ao amin'ny habetsaky ny angon-drakitra, amin'ny fiheverana ny morphologie, fa samy hafa tanteraka. Ohatra, mitadiava tohin'ny bytes ao amin'ny diary nandritra ny ora vitsivitsy farany.

Amin'ity tranga ity, mamorona tondro ao amin'ny ClickHouse ianao, ny saha voalohany amin'izany dia ny daty sy ny ora. Ary ny fanapahana angon-drakitra lehibe indrindra dia hifototra amin'ny isan'ny daty. Ao anatin'ny fetran'ny daty voafantina, amin'ny ankapobeny, dia efa azo atao ny manao fikarohana an-tsoratra feno, na dia amin'ny fampiasana fomba mahery vaika aza amin'ny fampiasana tahaka. Ny mpandraharaha mitovy amin'ny ClickHouse no mpandraharaha mahomby indrindra azonao jerena. Raha mahita zavatra tsara kokoa ianao dia lazao ahy.

Na izany aza, toy ny scan feno. Ary ny scan feno dia mety miadana tsy amin'ny CPU ihany, fa amin'ny kapila koa. Raha tampoka dia manana data terabyte iray isan'andro ianao, ary mitady teny iray mandritra ny andro, dia tsy maintsy mijery ny terabyte ianao. Ary mety amin'ny kapila mafy mahazatra izany, ary amin'ny farany dia ho fenoina amin'ny fomba izay tsy ahafahanao miditra amin'ity server ity amin'ny SSH.

Amin'ity tranga ity dia vonona ny hanolotra fika kely iray hafa aho. Andrana izany - mety hahomby, mety tsy. ClickHouse dia manana fanondroana lahatsoratra feno amin'ny endrika trigram Bloom sivana. Ny mpiara-miasa aminay ao amin'ny Arenadata dia efa nanandrana ireo fanondroana ireo, ary matetika izy ireo dia miasa araka ny tokony ho izy.

Mba hampiasana azy ireo araka ny tokony ho izy dia tokony ho azonao tsara ny fomba fiasan'izy ireo: inona ny sivana Bloom trigram ary ny fomba hifidianana ny habeny. Afaka milaza aho fa hanampy amin'ny fanontaniana momba ireo andian-teny tsy fahita firy izy ireo, zana-tsipika izay zara raha hita ao amin'ny angon-drakitra. Amin'ity tranga ity, ny zana-tsipika dia hofantenana amin'ny alàlan'ny fanondroana ary kely kokoa ny angona hovakiana.

Vao haingana, ny ClickHouse dia nanampy asa mandroso kokoa ho an'ny fikarohana lahatsoratra feno. Ity dia, voalohany, fitadiavana andian-tady iray indray mandeha amin'ny lalana iray, ao anatin'izany ny safidy saro-pady, tsy misy dikany, miaraka amin'ny fanohanana UTF-8 na ho an'ny ASCII ihany. Fidio izay mahomby indrindra ilainao.

Nipoitra ihany koa ny fitadiavana fomba fiteny mahazatra maromaro ao anaty pass iray. Tsy mila manoratra X toy ny zana-tsipìka iray na X toy ny zana-tsipìka hafa ianao. Manoratra avy hatrany ianao, ary vita araka izay azo atao ny zava-drehetra.

Fahatelo, efa misy fikarohana eo ho eo amin'ny regexps sy fikarohana eo ho eo amin'ny substrings. Raha misy diso tsipelina teny iray dia hokarohina amin'ny fifanandrinana ambony indrindra.

Inona no fomba tsara indrindra handaminana ny fidirana amin'ny ClickHouse ho an'ny mpampiasa marobe?

Lazao anay ny fomba tsara indrindra hikarakarana ny fidirana ho an'ny mpanjifa sy mpandinika marobe. Ahoana ny fomba hamoronana filaharana, laharam-pahamehana ny fanontaniana mifanandrify indrindra, ary amin'ny fitaovana inona?

Raha lehibe ny cluster, dia vahaolana tsara ny manangana mpizara roa hafa, izay ho toerana fidirana ho an'ny mpandinika. Izany hoe, aza avela ny mpandinika hiditra amin'ny shards manokana ao amin'ny cluster, fa mamorona lohamilina roa foana, tsy misy data, ary amboary ny zo fidirana amin'izy ireo. Amin'ity tranga ity, ny firafitry ny mpampiasa ho an'ny fangatahana zaraina dia afindra any amin'ny mpizara lavitra. Izany hoe, amboarinao ny zava-drehetra amin'ireo mpizara roa ireo, ary misy fiantraikany amin'ny cluster manontolo ny fikandrana.

Amin'ny ankapobeny, tsy manana angon-drakitra ireo mpizara ireo, fa ny habetsaky ny RAM ao aminy dia tena zava-dehibe amin'ny fanatanterahana ny fangatahana. Ny kapila dia azo ampiasaina amin'ny angona vonjimaika ihany koa raha toa ka alefa ny fanangonana ivelany na ny fanasokajiana ivelany.

Zava-dehibe ny mijery ny toe-javatra mifandray amin'ny fetra rehetra azo atao. Raha mandeha any amin'ny cluster Yandex.Metrica aho amin'ny maha-mpamakafaka ahy ary mangataka fangatahana safidio isa avy amin'ny hitsimoka, dia homena avy hatrany aho fa tsy afaka manatanteraka ny fangatahana. Ny isan'ny laharana ambony indrindra azoko jerena dia zato lavitrisa, ary amin'ny fitambarany dia misy dimampolo arivo tapitrisa amin'izy ireo ao anaty latabatra iray eo amin'ny cluster. Ity no fetra voalohany.

Andeha atao hoe esoriko ny fetran'ny andalana ary avereno indray ilay fanontaniana. Dia ho hitako ity exception manaraka ity - setting enabled force index amin'ny daty. Tsy afaka mameno ny fanontaniana aho raha tsy namariparitra daty. Tsy mila miantehitra amin'ny mpandinika ianao hamaritra izany amin'ny tanana. Ny tranga mahazatra dia rehefa misy ny isan'ny daty voasoratra izay misy ny datin'ny hetsika eo anelanelan'ny herinandro. Ary avy eo izy ireo dia nanendry fononteny fotsiny teo amin'ny toerana tsy mety, ary ho solon'izay dia lasa na - na URL mifanandrify. Raha tsy misy fetra dia handady ny tsanganana URL izy io ary handany loharanon-karena marobe.

Ankoatra izany, ClickHouse dia manana laharam-pahamehana roa. Indrisy anefa fa tena primitive izy ireo. Ny iray dia antsoina tsotra laharam-pahamehana. Raha ny laharam-pahamehana ≠ 0, ary ny fangatahana manana laharam-pahamehana sasany dia tanterahina, fa ny fangatahana manana sanda laharam-pahamehana latsaky ny, izay midika ho laharam-pahamehana kokoa, dia tanterahina, dia misy fangatahana manana sanda laharam-pahamehana lehibe kokoa, izay midika ho laharam-pahamehana ambany. , dia mihantona fotsiny ary tsy hiasa mihitsy mandritra io fotoana io.

Toerana tena tsy misy dikany izany ary tsy mety amin'ny tranga misy enta-mavesatra tsy tapaka ny cluster. Fa raha manana fangatahana fohy sy mipoaka izay manan-danja ianao, ary ny cluster dia tsy miasa amin'ny ankapobeny, ity fananganana ity dia mety.

Ny fametrahana laharam-pahamehana manaraka dia antsoina laharam-pahamehana OS. Izy io dia mametraka fotsiny ny sanda tsara ho an'ny kofehy famonoana fangatahana rehetra ho an'ny mpandrindra Linux. Miasa toy izany, fa mbola miasa. Raha mametraka ny sanda tsara indrindra ianao - io no lehibe indrindra amin'ny vidiny, ary noho izany ny laharam-pahamehana ambany indrindra - ary mametraka -19 ho an'ny fangatahana manana laharam-pahamehana ambony, dia handany ny fangatahana ambany laharam-pahamehana eo amin'ny efatra heny noho ny laharam-pahamehana ambony ny CPU.

Ilainao koa ny manitsy ny fotoana hanatanterahana ny fangatahana ambony indrindra - ohatra, dimy minitra. Ny hafainganam-pandeha farany ambany indrindra amin'ny fanatanterahana fanontaniana no zavatra mahafinaritra indrindra. Efa nisy hatry ny ela io toerana io, ary tsy ilaina ny manamafy fa ny ClickHouse dia tsy miadana, fa manery azy.

Alao sary an-tsaina hoe, nanangana ianao: raha toa ka latsaka ny andalana iray tapitrisa isan-tsegondra ny fangatahana sasany dia tsy azonao atao izany. Izany dia manala baraka ny anarana tsarantsika, ny angon-drakitra tsara. Aleo rarana fotsiny ity. Misy toe-javatra roa. Ny iray dia antsoina hafainganam-pandehan'ny famonoana min - amin'ny andalana isan-tsegondra, ary ny faharoa dia antsoina hoe fe-potoana alohan'ny hanamarinana ny hafainganam-pandehan'ny famonoana - dimy ambin'ny folo segondra amin'ny alàlan'ny default. Izany hoe, dimy ambin'ny folo segondra dia azo atao, ary avy eo, raha miadana, dia manipy fanavahana fotsiny ary atsaharo ny fangatahana.

Mila mametraka quota koa ianao. ClickHouse dia manana quota namboarina izay manisa ny fanjifana loharano. Saingy, indrisy, tsy loharanon-karena toy ny CPU, disks, fa lojika - ny isan'ny fangatahana voakarakara, andalana sy bytes mamaky. Ary azonao atao, ohatra, ny fangatahana an-jatony ambony indrindra ao anatin'ny dimy minitra ary fangatahana arivo isan'ora.

Nahoana no zava-dehibe izany? Satria ny fangatahana analyse sasany dia hatao mivantana mivantana avy amin'ny mpanjifa ClickHouse. Ary ho tsara ny zava-drehetra. Fa raha manana mpandinika ambony ao amin'ny orinasanao ianao, dia hanoratra script izy ireo, ary mety hisy hadisoana amin'ny script. Ary io hadisoana io dia hahatonga ny fangatahana ho tanterahina amin'ny loop tsy manam-petra. Izany no ilaintsika hiarovana ny tenantsika.

Azo atao ve ny manome ny valin'ny fanontaniana iray ho an'ny mpanjifa folo?

Manana mpampiasa maromaro izahay izay te-hiditra amin'ny fangatahana tena lehibe amin'ny fotoana iray ihany. Ny fangatahana dia lehibe ary, amin'ny ankapobeny, tanterahina haingana, fa noho ny fisian'ny fangatahana toy izany miaraka amin'ny fotoana iray ihany, dia lasa tena maharary. Azo atao ve ny manatanteraka ny fangatahana mitovy, izay tonga impolo misesy, indray mandeha, ary manome ny vokatra ho an'ny mpanjifa folo?

Ny olana dia tsy manana ny vokatry ny cache na ny cache ny angona mpanelanelana. Misy pejy cache an'ny rafitra miasa, izay hanakana anao tsy hamaky angon-drakitra avy amin'ny kapila indray, saingy, indrisy, ny angon-drakitra dia mbola ho decompressed, deserialized ary reprocessed.

Te-hisoroka izany aho, na amin'ny alàlan'ny fametahana angon-drakitra mpanelanelana, na amin'ny fametrahana fanontaniana mitovy amin'izany amin'ny karazana filaharana ary manampy cache valiny. Amin'izao fotoana izao dia manana fangatahana fisintonana iray izahay amin'ny fampandrosoana izay manampy cache fangatahana, fa ho an'ny subqueries ao amin'ny fizarana anatiny sy miditra fotsiny - izany hoe, tsy feno ny vahaolana.

Miatrika toe-javatra toy izany koa anefa isika. Ohatra kanônika manokana ny fanontaniam-pejy. Misy ny tatitra, misy pejy maromaro, ary misy ny fangatahana limite 10. Dia torak'izany koa fa limite 10,10. Avy eo ny pejy manaraka. Ary ny fanontaniana dia hoe, nahoana isika no manisa izany rehetra izany isaky ny mandeha? Tsy misy vahaolana anefa izao, ary tsy misy fomba hialana amin’izany.

Misy vahaolana hafa apetraka ho sidecar eo akaikin'ny ClickHouse - ClickHouse Proxy.

Kirill Shvakov: ClickHouse Proxy dia manana fetran'ny tahan'ny naorina sy cache valin'ny naorina. Betsaka ny fanovana natao tao satria nisy olana mitovy amin'izany voavaha. Ny proxy dia ahafahanao mametra ny fangatahana amin'ny alàlan'ny filaharana azy ireo ary manitsy ny faharetan'ny cache fangatahana. Raha toa ka mitovy ny fangatahana, dia handefa azy ireo imbetsaka ny Proxy, fa indray mandeha ihany no mankany amin'ny ClickHouse.

Ny Nginx koa dia manana cache amin'ny dikan-teny maimaim-poana, ary hiasa koa izany. Ny Nginx aza dia manana toe-javatra izay raha tonga amin'ny fotoana mitovy ny fangatahana dia hampiadana ny hafa mandra-pahavitan'ny iray. Saingy ao amin'ny ClickHouse Proxy no vita tsara kokoa ny fanamboarana. Izy io dia natao manokana ho an'ny ClickHouse, indrindra ho an'ireo fangatahana ireo, noho izany dia mety kokoa. Eny ary, mora ny mametraka.

Ahoana ny amin'ny hetsika asynchronous sy ny fomba fijery mivaingana?

Misy olana fa asynchronous ny fiasan'ny motera replay - nosoratana aloha ny angon-drakitra, avy eo mirodana. Raha misy takelaka vita amin'ny fitaovana misy fitambarana sasany mipetraka eo ambanin'ilay famantarana, dia hisy dika mitovy hosoratana aminy. Ary raha tsy misy lojika sarotra, dia ho duplicated ny angona. Inona no azonao atao momba izany?

Misy vahaolana mazava tsara - ny fametrahana trigger amin'ny kilasy matviews mandritra ny hetsika fianjerana asynchronous. Misy bala volafotsy na drafitra hampiharana fiasa mitovy amin'izany ve?

Ilaina ny mahatakatra ny fomba fiasan'ny deduplication. Ny zavatra holazaiko aminao izao dia tsy mifandraika amin'ny fanontaniana, fa sao dia ilaina ny mitadidy.

Rehefa ampidirina ao anaty latabatra averina dia misy ny deduplication ny bloc rehetra natsofoka. Raha averinao indray ilay sakana mitovy misy isa mitovy amin'ny andalana mitovy amin'ny filaharana mitovy, dia nesorina ny angona. Hahazo "Ok" ianao ho valin'ny fampidirana, fa raha ny marina dia misy fonosana data iray hosoratana, ary tsy hadika izany.

Ilaina izany mba hahazoana antoka. Raha mahazo "Ok" ianao mandritra ny fampidirana, dia nampidirina ny angonao. Raha mahazo lesoka avy amin'ny ClickHouse ianao dia midika izany fa tsy nampidirina izy ireo ary mila mamerina ny fampidirana. Fa raha tapaka ny fifandraisana mandritra ny fampidirana, dia tsy fantatrao na nampidirina na tsia ny angona. Ny hany safidy dia ny mamerina ny fampidirana indray. Raha nampidirina tokoa ny angon-drakitra ary naverinao indray dia misy ny deduplication sakana. Ilaina izany mba hisorohana ny dika mitovy.

Ary zava-dehibe ihany koa ny fomba fiasa amin'ny fomba fijery mivaingana. Raha nesorina ny angon-drakitra rehefa nampidirina tao amin'ny tabilao lehibe, dia tsy hiditra amin'ny fijery mivaingana koa izany.

Izao momba ny fanontaniana. Sarotra kokoa ny toe-javatra misy anao satria mirakitra dika mitovy amin'ny andalana tsirairay ianao. Izany hoe, tsy ny fonosana manontolo no adika, fa andalana manokana, ary mirodana ao ambadika. Eny tokoa, hirodana ao amin'ny tabilao lehibe ny angon-drakitra, fa ny angon-drakitra tsy voarodana dia handeha amin'ny fijery mivaingana, ary mandritra ny fampivondronana dia tsy hisy na inona na inona hitranga amin'ny fomba fijery mivaingana. Satria ny fomba fijery mivaingana dia tsy misy afa-tsy trigger insert. Mandritra ny fandidiana hafa dia tsy misy zavatra fanampiny mitranga aminy.

Ary tsy afaka mampifaly anao eto aho. Mila mitady vahaolana manokana ho an'ity tranga ity ianao. Ohatra, azo atao ve ny mamerina azy io amin'ny fomba fijery mivaingana, ary ny fomba deduplication dia mety miasa toy izany koa. Saingy indrisy fa tsy foana. Raha aggregate dia tsy mety.

Kirill Shvakov: Nanao fanamboaran-tseza koa izahay tamin’izany andro izany. Nisy olana ny fisian'ny fitaomana dokam-barotra, ary misy angon-drakitra azonay aseho amin'ny fotoana tena izy - tsindrimandry fotsiny ireo. Mahalana izy ireny no adika, fa raha izany no mitranga, dia hopotehinay any aoriana any. Ary nisy zavatra tsy azo adika - tsindrio sy ity tantara manontolo ity. Te hampiseho azy ireo saika avy hatrany koa anefa aho.

Ahoana no nanaovana ireo hevitra mivaingana? Nisy fomba fijery izay nanoratana azy mivantana - nosoratana tamin'ny angona manta, ary nosoratana ho an'ny fijery. Ao, misy fotoana tsy dia marina loatra ny angon-drakitra, adika izany, sns. Ary misy ampahany faharoa amin'ny latabatra, izay mitovy tanteraka amin'ny fomba fijery mivaingana, izany hoe mitovy tanteraka amin'ny rafitra izy ireo. Indray mandeha isika dia mamerina ny angona, manisa ny angona tsy misy dika mitovy, manorata amin'ireo tabilao ireo.

Nandalo ny API izahay - tsy hiasa amin'ny ClickHouse amin'ny tanana izany. Ary ny API dia mijery: rehefa manana ny datin'ny fanampim-panampiana farany amin'ny latabatra aho, izay azo antoka fa efa kajy ny angona marina, ary manao fangatahana amin'ny latabatra iray sy amin'ny latabatra hafa. Avy amin'ny iray ny fangatahana mifidy hatramin'ny fe-potoana voafaritra, ary avy amin'ny iray hafa dia mahazo izay tsy mbola kajy. Ary miasa izany, fa tsy amin'ny ClickHouse irery.

Raha manana karazana API ianao - ho an'ny mpandinika, ho an'ny mpampiasa - amin'ny ankapobeny, safidy izany. Miisa foana ianao, manisa foana. Izany dia azo atao indray mandeha isan'andro na amin'ny fotoana hafa. Mifidy ho an'ny tenanao ny faritra tsy ilainao ianao ary tsy mitsikera.

ClickHouse dia manana logs be dia be. Ahoana no ahitako ny zava-drehetra mitranga amin'ny mpizara indray mandeha?

ClickHouse dia manana logs isan-karazany be dia be, ary mitombo io isa io. Amin'ny dikan-teny vaovao, ny sasany amin'izy ireo dia alefa amin'ny alàlan'ny default; amin'ny dikan-teny taloha dia tsy maintsy alefa izy ireo rehefa manavao. Na izany aza, dia mihamaro izy ireo. Farany, te-hijery izay mitranga amin'ny mpizarako aho izao, angamba amin'ny karazana dashboard famintinana.

Manana ao amin'ny ekipan'ny ClickHouse ve ianao, na ao amin'ny ekipan'ny namanao, izay manohana ny sasany amin'ireo dashboard efa vita izay hampiseho ireo logs ireo ho vokatra efa vita? Farany, tsara ny mijery logs ao amin'ny ClickHouse. Fa tena mahafinaritra raha toa ka efa voaomana amin'ny endrika dashboard. Ho voaroaka aho amin'ity.

Misy dashboards, na dia tsy manara-penitra aza. Ao amin'ny orinasanay, ekipa 60 eo ho eo no mampiasa ClickHouse, ary ny tena hafahafa dia ny maro amin'izy ireo no manana dashboard izay namboariny ho an'ny tenany, ary hafa kely. Ny ekipa sasany dia mampiasa fametrahana Yandex.Cloud anatiny. Misy tatitra efa vonona, na dia tsy ny ilaina rehetra aza. Ny hafa manana ny azy.

Ny mpiara-miasa amiko avy ao amin'ny Metrica dia manana ny dashboard azy manokana ao Grafana, ary manana ny ahy manokana ho an'ny vondron'izy ireo aho. Mijery zavatra toy ny cache hit ho an'ny serif cache aho. Ary mbola sarotra kokoa aza ny mampiasa fitaovana samihafa. Namorona ny dashboard aho tamin'ny fampiasana fitaovana tranainy antsoina hoe Graphite-web. Tena ratsy tarehy izy. Ary mbola mampiasa an'io fomba io aho, na dia mety ho mety sy tsara tarehy kokoa aza i Grafana.

Ny zavatra fototra amin'ny dashboards dia mitovy. Ireo dia metrika rafitra ho an'ny cluster: CPU, fahatsiarovana, kapila, tambajotra. Ny hafa - isan'ny fangatahana simultaneous, isan'ny simultaneous merges, isan'ny fangatahana isan-tsegondra, isa ambony indrindra amin'ny fizarazarana latabatra MergeTree, fahatarana replication, haben'ny filaharana replication, isan'ny andalana ampidirina isan-tsegondra, isan'ny blocs apetraka isan-tsegondra. Izany rehetra izany dia tsy azo avy amin'ny logs, fa avy amin'ny metrika.

Vladimir Kolobaev: Alexey, te hanitsy kely aho. Misy Grafana. Grafana dia manana loharanom-baovao, izay ClickHouse. Izany hoe, afaka manao fangatahana avy amin'i Grafana mivantana amin'ny ClickHouse aho. ClickHouse dia manana latabatra misy hazo, mitovy amin'ny rehetra. Vokatr'izany dia te-hiditra amin'ity latabatra firaketana ao Grafana ity aho ary hahita ny fangatahana ataon'ny mpizara. Tena tsara ny manana dashboard toy izany.

Nandeha bisikileta aho. Saingy manana fanontaniana aho - raha manara-penitra daholo izany, ary ny Grafana dia ampiasain'ny rehetra, nahoana no tsy manana dashboard ofisialy toy izany i Yandex?

Kirill Shvakov: Raha ny marina, ny loharanom-baovao mandeha amin'ny ClickHouse dia manohana ny Altinity. Ary te-hanome vector fotsiny aho hoe aiza no handavaka sy iza no hanosika. Azonao atao ny manontany azy ireo, satria mbola manao ClickHouse i Yandex, fa tsy ny tantara manodidina azy. Altinity no orinasa lehibe mampiroborobo ny ClickHouse amin'izao fotoana izao. Tsy hahafoy azy ireo, fa hanohana azy. Satria, amin'ny ankapobeny, mba hampidirana dashboard amin'ny tranokalan'ny Grafana dia mila misoratra anarana sy mampakatra azy fotsiny ianao - tsy misy olana manokana.

Alexey Milovidov: Tamin'ny taon-dasa, ClickHouse dia nampiana fahaiza-manao momba ny fangatahana. Misy metrika ho an'ny fangatahana tsirairay momba ny fampiasana loharano. Ary vao haingana dia nampiana mpikirakira fanontaniana ambany kokoa izahay mba hahitana hoe aiza no lanin'ny fanontaniana iray isaky ny milisegondra. Fa raha hampiasa an'io fampiasa io dia tsy maintsy manokatra ny mpanjifa console aho ary manoratra fangatahana, izay adinoko foana. Notehiriziko tany ho any ary hadinoko foana hoe aiza marina.

Enga anie ka mba nisy fitaovana nilaza fotsiny hoe, ireto ny fanontanianao mavesatra, navondrona araka ny kilasin'ny fanontaniana. Notsindriako ny iray, ary nilaza tamiko izy ireo fa izany no mahatonga azy ho mavesatra. Tsy misy vahaolana toy izany ankehitriny. Ary tena hafahafa tokoa fa rehefa manontany ahy ny olona hoe: “Lazao ahy, misy dashboard efa vita ve ho an'i Grafana?”, hoy aho hoe: “Mandehana any amin'ny tranokalan'ny Grafana, misy vondrom-piarahamonina “Dashboards”, ary misy dashboard. avy any Dimka, misy dashboard avy any Kostyan. Tsy fantatro hoe inona izany, tsy nampiasa izany ny tenako. "

Ahoana ny fiantraikan'ny merges mba tsy hidona amin'ny OOM ny mpizara?

Manana latabatra aho, tsy misy afa-tsy partition iray ao amin'ny latabatra, dia ny ReplacingMergeTree. Efa-taona aho no nanoratra angona tao anatiny. Nila nanao fanovana tao aho ary namafa angon-drakitra sasany.

Nanao izany aho, ary nandritra ny fikarakarana an'io fangatahana io dia lany avokoa ny fahatsiarovana rehetra tamin'ny mpizara rehetra tao amin'ny cluster, ary niditra tao amin'ny OOM ny mpizara rehetra tao amin'ny cluster. Avy eo dia niara-nitsangana izy rehetra, nanomboka nanambatra an'io hetsika io ihany, ity sakana data ity, ary latsaka tao amin'ny OOM indray. Dia nitsangana indray izy ireo ka nianjera indray. Ary tsy nijanona izany zavatra izany.

Avy eo dia hita fa tena bibikely nofehezin'ireo bandy ireo. Tena mahafinaritra ity, misaotra indrindra. Fa nisy sisa tavela. Ary ankehitriny, rehefa mieritreritra ny hanao karazana fampivondronana eo amin'ny latabatra aho, dia manana fanontaniana aho - nahoana aho no tsy afaka mitaona ireo fitambarana ireo? Ohatra, mametra azy ireo amin'ny habetsaky ny RAM takiana, na, amin'ny ankapobeny, amin'ny habetsaky ny handrafetana ity latabatra manokana ity.

Manana latabatra antsoina hoe "Metrics" aho, azafady, alaivo ho ahy amin'ny kofehy roa. Tsy ilaina ny mamorona folo na dimy mitambatra, ataovy roa. Heveriko fa manana fahatsiarovana ampy ho an'ny roa aho, saingy mety tsy ho ampy ny fanodinana folo. Nahoana no mijanona ny tahotra? Satria mitombo ny latabatra, ary indray andro any dia hiatrika toe-javatra izay, amin'ny ankapobeny, dia tsy noho ny bibikely intsony, fa satria ny angon-drakitra dia hiova be toy izany ka tsy hanana fahatsiarovana ampy amin'ny mpizara. Ary avy eo dia hidona amin'ny OOM ny mpizara rehefa mitambatra. Ankoatra izany, afaka manafoana ny mutation aho, fa tsy eo intsony i Merji.

Fantatrao fa rehefa mitambatra dia tsy ho latsaka ao amin'ny OOM ny mpizara, satria rehefa mitambatra dia ampiasaina amin'ny angon-drakitra kely fotsiny ny habetsaky ny RAM. Noho izany dia hilamina ny zava-drehetra na inona na inona habetsaky ny angona.

Vladimir Kolobaev: tsara. Eto ny fotoana dia toy izany fa taorian'ny nametrahana ny bug dia nisintona dikan-teny vaovao ho an'ny tenako aho, ary eo amin'ny latabatra iray hafa, kely kokoa, izay misy partitions maro, dia nanao hetsika mitovy amin'izany aho. Ary nandritra ny fampifangaroana, manodidina ny 100 GB RAM no nodorana tao amin'ny server. Nanana 150 aho, 100 no nohanina, ary varavarankely 50 GB sisa, ka tsy tafiditra tao amin'ny OOM aho.

Inona no miaro ahy amin'izao fotoana izao tsy ho tafiditra ao amin'ny OOM raha tena mandany 100 GB ny RAM? Inona no atao raha lany tampoka ny RAM amin'ny merges?

Alexey Milovidov: Misy olana toy izany fa tsy voafetra ny fanjifana RAM manokana ho an'ny fampifangaroana. Ary ny olana faharoa dia ny hoe raha misy karazana fampiraisana voatendry dia tsy maintsy tanterahina satria voarakitra ao amin'ny log de replication. Ny diarin'ny replication dia ireo hetsika ilaina mba hitondrana ny dika mitovy amin'ny fanjakana tsy miova. Raha tsy manao fanodinkodinana amin'ny tanana ianao izay hampihemotra ity diarin'ny replication ity dia tsy maintsy atao amin'ny fomba iray na hafa ny fampifangaroana.

Mazava ho azy fa tsy ho tafahoatra ny manana fetra RAM izay "raha sanatria" miaro amin'ny OOM. Tsy hanampy ny fampivondronana hamita izany, hanomboka indray, hahatratra ny tokonam-baravarana, hanipy maningana, ary avy eo dia manomboka indray - tsy misy tsara ho avy amin'izany. Saingy amin'ny ankapobeny dia ilaina ny mampiditra an'io fameperana io.

Ahoana no hamolavolana ny mpamily Golang ho an'ny ClickHouse?

Ny mpamily Golang, izay nosoratan'i Kirill Shvakov, dia tohanan'ny ekipa ClickHouse amin'ny fomba ofisialy ankehitriny. izy ao amin'ny tranokala ClickHouse, efa lehibe sy tena izy izao.

Naoty kely. Misy tahiry mahafinaritra sy malala amin'ny endrika mahazatra amin'ny filaminana tsy manam-petra - Vertica izany. Manana mpamily python ofisialy manokana ihany koa izy ireo, izay tohanan'ny mpamorona Vertica. Ary imbetsaka no nitranga fa ny dikan-teny fitahirizana sy ny dikan-tenin'ny mpamily dia nivadika tanteraka, ary ny mpamily dia nijanona tsy niasa. Ary ny teboka faharoa. Ny fanohanana an'io mpamily ofisialy io, toa ahy, dia ataon'ny rafitra "nipple" - manoratra olana ho azy ireo ianao, ary mihantona mandrakizay izany.

Manana fanontaniana roa aho. Ankehitriny ny mpamily Golang an'i Kirill dia saika fomba mahazatra hifandraisana amin'i Golang miaraka amin'ny ClickHouse. Raha tsy hoe misy olona mbola mifandray amin'ny alalan'ny interface http satria tiany izany. Hanao ahoana ny fivoaran’ity mpamily ity? Harahina ve izany amin'ny fanovana rehetra ao amin'ny tahiry? Ary ahoana ny fomba handinihana olana iray?

Kirill Shvakov: Ny voalohany dia ny fandaminana ny zava-drehetra amin'ny fomba ofisialy. Tsy noresahina io resaka io ka tsy misy havaliko.

Mba hamaliana ny fanontaniana momba ny olana dia mila tantara kely momba ny mpamily. Niasa tao amin'ny orinasa iray manana data be dia be aho. Izy io dia mpivezivezy dokam-barotra misy hetsika marobe izay mila tehirizina any ho any. Ary tamin'ny fotoana iray dia niseho ny ClickHouse. Nofenoinay angon-drakitra izany, ary tamin'ny voalohany dia tsara ny zava-drehetra, saingy nianjera ny ClickHouse. Tamin'izay fotoana izay dia nanapa-kevitra izahay fa tsy mila izany.

Herintaona taty aoriana, niverina tamin'ny hevitra hampiasa ClickHouse izahay, ary nila nanoratra angona tao izahay. Ny hafatra fampidirana dia izao: tena malemy ny fitaovana, vitsy ny loharanon-karena. Saingy niasa toy izany foana izahay, ary noho izany dia nitodika tany amin'ny protocol teratany izahay.

Koa satria niasa tao amin'ny Go izahay, dia mazava fa mila mpamily Go izahay. Saika tamin'ny fotoana feno no nanaovako izany - asako izany. Nentinay tamin'ny teboka iray izany, ary amin'ny ankapobeny dia tsy nisy nihevitra fa olon-kafa afa-tsy izahay no hampiasa azy io. Avy eo CloudFlare dia tonga niaraka tamin'ny olana mitovy, ary nandritra ny fotoana fohy dia niara-niasa tamin'izy ireo izahay, satria nitovy ny asany. Ambonin'izany, nanao izany izahay na tao amin'ny ClickHouse ny tenanay sy tao amin'ny mpamily.

Tamin'ny fotoana iray dia nijanona fotsiny aho, satria niova kely ny asako momba ny ClickHouse sy ny asa. Noho izany dia tsy mikatona ny olana. Indraindray, ny olona mila zavatra dia manolo-tena amin'ny tahiry. Dia mijery ny fangatahan'ny fisintonana aho ary indraindray aza ny tenako no manova zavatra, saingy mahalana no mitranga izany.

Te hiverina amin'ny mpamily aho. Taona maro lasa izay, rehefa nanomboka ity zavatra rehetra ity, dia hafa ihany koa ny ClickHouse ary manana fahaiza-manao samihafa. Ankehitriny dia manana fahatakarana ny fomba fanamboarana ny mpamily mba hiasa tsara. Raha mitranga izany, dia tsy mifanaraka amin'ny toe-javatra rehetra ny version 2 noho ny crutches miangona.

Tsy haiko ny fomba fandaminana ity raharaha ity. Tsy manam-potoana firy ny tenako. Raha misy olona mahavita ny mpamily dia afaka manampy azy ireo aho ary milaza aminy izay tokony hatao. Saingy ny fandraisana anjara mavitrika amin'ny Yandex amin'ny fampandrosoana ny tetikasa dia tsy mbola noresahina.

Alexey Milovidov: Raha ny marina, tsy mbola misy ny birao momba ireo mpamily ireo. Ny hany tokana dia ny fametrahana azy ireo amin'ny fikambanana ofisialy, izany hoe ity mpamily ity dia ekena ho vahaolana ofisialy ho an'ny Go. Misy ihany koa ny mpamily sasany, saingy misaraka izy ireo.

Tsy manana fampandrosoana anatiny ho an'ireo mpamily ireo izahay. Ny fanontaniana dia ny hoe afaka manakarama olona tsirairay ve isika, tsy ho an’ity mpamily manokana ity, fa ho fampandrosoana ny saofera rehetra, sa mety hahita olona avy any ivelany.

Tsy mandeha ny rakibolana ivelany aorian'ny reboot miaraka amin'ny fampandehanana lazy_load. Ny hatao?

Avelantsika ny lazy_load, ary aorian'ny famerenana ny mpizara dia tsy mandeha irery ny rakibolana. Aorian'ny fidirana amin'ity rakibolana ity ihany no atsangana io. Ary ny fotoana voalohany nidirany dia manome fahadisoana. Azo atao ve ny mampiditra rakibolana mandeha ho azy amin'ny ClickHouse, sa mila mifehy ny fahavononany foana ianao mba tsy hahazoan'ny mpampiasa fahadisoana?

Angamba manana dikan-teny taloha an'ny ClickHouse isika, ka tsy mandeha ho azy ny rakibolana. Mety ho izany ve?

Voalohany, azo terena hampidirina amin'ny alalan'ny fangatahana ny diksionera rafitra reload rakibolana. Faharoa, momba ny hadisoana - raha toa ka efa feno ny rakibolana, dia hiasa araka ny angon-drakitra napetraka ny fanontaniana. Raha mbola tsy voapetraka ny rakibolana dia ho entina mivantana mandritra ny fangatahana.

Tsy mety amin'ny rakibolana mavesatra izany. Ohatra, mila misintona andalana iray tapitrisa avy amin'ny MySQL ianao. Misy olona manao fifantenana tsotra, fa ity voafantina ity dia hiandry andalana iray tapitrisa mitovy. Misy vahaolana roa eto. Ny voalohany dia ny mamono lazy_load. Faharoa, rehefa miakatra ny mpizara, alohan'ny hametrahana ny entana eo aminy dia ataovy rafitra reload rakibolana na manao fanontaniana mampiasa rakibolana fotsiny. Avy eo dia ho feno ny rakibolana. Mila mifehy ny fisian'ny diksionera ianao miaraka amin'ny lazy_load setting, satria ny ClickHouse dia tsy mampiditra azy ireo ho azy.

Ny valin'ny fanontaniana farany dia na efa antitra ny dikan-teny na mila debug.

Inona no tokony hatao amin'ny hoe tsy mahafeno ny rakibolana maro ny rakibolana reload raha toa ka misy hadisoana ny iray amin'izy ireo?

Misy fanontaniana iray hafa momba ny diksionera famerenana ny rafitra. Manana diksionera roa izahay - ny iray dia tsy misy entana, ny faharoa dia feno. Amin'ity tranga ity, ny diksionera System reload dia tsy mampiditra rakibolana, ary tsy maintsy mametaka iray manokana amin'ny anarany amin'ny fampiasana rakibolana reload rafitra. Mifandray amin'ny version ClickHouse koa ve izany?

Te hampifaly anao aho. Niova io fihetsika io. Midika izany fa raha manavao ny ClickHouse ianao dia hiova ihany koa. Raha tsy faly amin'ny fihetsikao ankehitriny ianao rafitra reload rakibolana, fanavaozana, ary manantena fa hiova ho tsara kokoa.

Misy fomba ahafahana manitsy ny antsipiriany ao amin'ny config ClickHouse, fa tsy mampiseho azy ireo raha misy hadisoana?

Ny fanontaniana manaraka dia momba ny fahadisoana mifandraika amin'ny rakibolana, izany hoe ny antsipiriany. Nofaritanay ny antsipirian'ny fifandraisana ao amin'ny config ClickHouse ho an'ny rakibolana, ary raha misy hadisoana dia mahazo ireo antsipiriany sy tenimiafina ireo izahay ho valin'izany.

Namaha ity hadisoana ity izahay tamin'ny fampidirana antsipiriany amin'ny config driver ODBC. Misy fomba hanamboarana ny antsipiriany ao amin'ny config ClickHouse, fa tsy mampiseho ireo antsipiriany ireo raha misy hadisoana?

Ny tena vahaolana eto dia ny mamaritra ireo mari-pamantarana ireo ao amin'ny odbc.ini, ary ao amin'ny ClickHouse ihany no mamaritra ny anaran'ny loharanon'ny data ODBC. Tsy hitranga izany ho an'ny loharanom-pahalalana hafa - na ho an'ny rakibolana miaraka amin'ny MySQL, na ho an'ny hafa, dia tsy tokony hahita ny tenimiafina ianao rehefa mahazo hafatra diso. Ho an'ny ODBC dia hojereko ihany koa - raha misy izy dia mila esorinao fotsiny.

Bonus: fiaviana ho an'ny Zoom avy amin'ny fivoriana

Amin'ny alàlan'ny fipihana ny sary dia hisokatra ho an'ny mpamaky maharitra indrindra ny fiaviana bonus avy amin'ireo fivoriana. Mamono ny afo miaraka amin'ny mascots teknolojia Avito izahay, miresaka amin'ny mpiara-miasa avy amin'ny efitranon'ny mpitantana ny rafitra na ny klioban'ny informatika tranainy, ary manao fivoriana isan'andro eo ambanin'ny tetezana manoloana ny graffiti.

ClickHouse ho an'ireo mpampiasa efa mandroso amin'ny fanontaniana sy valiny

Source: www.habr.com

Add a comment