Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Maadaama ClickHouse uu yahay nidaam gaar ah, marka la isticmaalayo waxaa muhiim ah in la tixgeliyo sifooyinka qaab-dhismeedkiisa. Warbixintan, Alexey wuxuu ka hadli doonaa tusaalooyinka khaladaadka caadiga ah marka la isticmaalayo ClickHouse, taas oo keeni karta shaqo aan waxtar lahayn. Tusaalooyinka la taaban karo ayaa tusi doona sida doorashada hal ama nidaam habaynta xogta ay u bedeli karaan waxqabadka amarrada baaxadda leh.

Salaamu calaykum! Magacaygu waa Alexey, waxaan sameeyaa ClickHouse.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Marka hore, waxaan ku degdegayaa inaan isla markiiba ku raali galiyo, maanta kuuma sheegi doono waxa ClickHouse yahay. Run ahaantii, waan ka daalay. Mar kasta oo aan kuu sheego waxa ay tahay. Oo laga yaabo in qof kastaa hore u yaqaan.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Taa bedelkeeda, waxaan kuu sheegi doonaa khaladaadka suurtagalka ah ee jira, taas oo ah, sida aad u isticmaali karto ClickHouse si khaldan. Dhab ahaantii, looma baahna in laga baqo, sababtoo ah waxaan horumarineynaa ClickHouse oo ah nidaam sahlan, ku habboon, oo ka shaqeeya sanduuqa. Waan rakibay, dhib malaha.

Laakiin waxaad weli u baahan tahay inaad tixgeliso in nidaamkani yahay mid khaas ah oo aad si fudud ula kulmi karto kiis aan caadi ahayn oo isticmaalka kaas oo nidaamkan ka saari doona aagga raaxada.

Haddaba, waa maxay nooca xamaasha? Inta badan waxaan ka hadli doonaa waxyaabo muuqda. Wax walba waa u caddahay qof kasta, qof kastaa wuu fahamsan yahay wax walba wuxuuna ku farxi karaa inay aad u caqli badan yihiin, kuwa aan fahmin waxay baran doonaan wax cusub.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Tusaalaha ugu horreeya iyo kan ugu fudud, kaas oo, nasiib darro, inta badan dhacda, waa tiro badan oo la gashado oo leh qaybo yaryar, i..

Haddii aan tixgelinno sida ClickHouse u sameeyo gelinta, markaa waxaad soo diri kartaa ugu yaraan terabyte oo xog ah hal codsi. Dhib maaha.

Oo aynu aragno waxa waxqabadka caadiga ahi noqon doono. Tusaale ahaan, waxaan ku haynaa miiska xogta Yandex.Metrica. Hits 105 tiirar qaar ka mid ah. 700 bytes aan la cabin. Waxaannu si fiican u gelin doonaa dufcooyin hal milyan oo saf ah.

Waxaan gelineynaa MergeTree miiska, waxay soo baxdaa nus milyan safs ilbiriqsikii. Wayn Miiska la soo koobay waxa uu noqon doonaa mid ka yara yaraa, ku dhawaad ​​400 oo saf ilbiriqsikii.

Oo haddii aad awood geliso gelinta kooramka, waxa aad helaysaa in yar, laakiin weli waxqabad hufan, 250 oo shuruudood ilbiriqsikii. Gelida Koorumku waa sifo aan sharciyeysnayn gudaha ClickHouse*.

* laga bilaabo 2020, mar hore la diiwaan galiyay.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Maxaa dhacaya haddii aad sameyso wax xun? Waxaan gelinaa hal saf miiska MergeTree waxaanan helnaa 59 saf ilbiriqsikii. Taasi waa 10 jeer gaabis ah. In ReplicatedMergeTree - 000 saf ilbiriqsikii. Oo haddii kooramku daaran yahay, markaas waxay soo baxaysaa 6 sadar ilbiriqsikii. Fikradayda, tani waa nooc ka mid ah nacasnimo buuxda. Sideed sidaas u gaabin kartaa? Xitaa waxaan ku qoray shaadhkayga in ClickHouse aanu hoos u dhigin. Laakiin si kastaba ha ahaatee waxay dhacdaa mararka qaarkood.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Runtii tani waa nusqaanteenna. Waxaan si fudud wax walba uga dhigi karnaa inay si fiican u shaqeeyaan, laakiin ma aanan samayn. Anagu maanu samayn sababtoo ah qoraalkayagu uma baahna. Waxaan horey u haysanay hilibyo. Hadda waxa nalagu soo dhoweeyey dufcadihii naga soo galayey, wax dhibaato ahna ma jiraan. Waanu gelinaa wax walbana si fiican ayay u shaqeeyaan. Laakiin, dabcan, dhammaan noocyada xaaladaha waa suurtagal. Tusaale ahaan, marka aad haysato farabadan server ah oo xogta laga soo saaro. Oo iyagu ma gelin xogta marar badan, laakiin weli waxay ku dhamaanayaan gelinno joogto ah. Oo waxaan u baahanahay inaan si uun uga fogaano tan.

Marka laga eego dhinaca farsamada, ujeedadu waa marka aad geliso ClickHouse, xogtu kuma dhammaanayso wax la taaban karo. Xitaa ma hayno qaab-dhismeedka log dhabta ah ee MergeTree, laakiin kaliya MergeTree, sababtoo ah ma jiro log ama memTable. Waxaan si fudud isla markiiba ugu qornaa xogta nidaamka faylka, oo horeyba loogu habeeyey tiirar. Oo haddii aad leedahay 100 tiir, markaas in ka badan 200 oo fayl ayaa loo baahan doonaa in lagu qoro hage gaar ah. Waxaasoo dhan aad bay u dhib badan yihiin.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Oo su'aashu waxay soo baxaysaa: "Sidee loo sameeyaa si sax ah?" Haddii xaaladdu sidaas tahay oo aad weli u baahan tahay inaad si uun u duubto xogta ClickHouse.

Habka 1. Tani waa habka ugu fudud. Isticmaal nooc ka mid ah safka la qaybiyey. Tusaale ahaan, Kafka. Waxaad si fudud xogta uga soo saartaa Kafka oo aad u soo saartaa hal ilbiriqsi. Wax walbana way fiicnaan doonaan, waad duubi doontaa, wax walba si fiican ayey u shaqeeyaan.

Khasaaraha ayaa ah in Kafka uu yahay nidaam kale oo weyn oo qaybsan. Waxaan sidoo kale fahamsanahay haddii aad horeba Kafka ugu leedahay shirkaddaada. Way fiican tahay, waa ku habboon tahay. Laakiin haddii aysan jirin, markaa waa inaad ka fikirtaa saddex jeer ka hor intaadan u jiidin nidaam kale oo qaybsan mashruucaaga. Haddaba waxaa habboon in la tixgeliyo beddelka.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Habka 2. Tani waa beddelka dugsigii hore isla markaana aad u fudud. Ma haysaa nooc ka mid ah server-ka soo saara diiwaankaaga. Oo waxay kaliya ku qortaa diiwaankaaga fayl. Iyo hal mar ilbiriqsi, tusaale ahaan, waxaan bedelnaa faylkan oo aan jeexinaa mid cusub. Iyo qoraal gaar ah, ha ahaato cron ama qaar daemon ah, waxay qaadataa faylka ugu da'da weyn oo u qora ClickHouse. Haddii aad duubto diiwaannada hal mar ilbiriqsi, markaas wax walba way fiicnaan doonaan.

Laakiin khasaaraha habkan ayaa ah in haddii server-kaagu uu ka lumo diiwaannada meel ka mid ah, markaa xogta ayaa sidoo kale meesha ka bixi doonta.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Habka 3. Waxaa jira hab kale oo xiiso leh, kaas oo aan u baahnayn faylal ku meel gaar ah gabi ahaanba. Tusaale ahaan, waxaad haysataa nooc ka mid ah spinner advertising ama qaar kale oo xiiso leh daemon oo soo saara xogta. Waxaadna si toos ah ugu ururin kartaa farabadan xogta RAM-ka, ee kaydka. Oo markii wakhti kugu filani dhaafo, waxaad meel dhigtaa kaydkan, waxaad abuurtaa mid cusub, oo dun gooni ah, geli wixii horeba u ururay ClickHouse.

Dhanka kale, xogta ayaa sidoo kale ku baaba'a dil -9. Haddii serfarkaagu xumaado, waxaad waayi doontaa xogtan. Dhibaato kale ayaa ah in haddii aadan awoodin inaad wax u qorto database-ka, markaa xogtaadu waxay ku urursan doontaa RAM. Iyo RAM-ku wuu dhammaan doonaa, ama waxaad si fudud u waayi doontaa xogta.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Habka 4. Hab kale oo xiiso leh. Ma haysaa nooc ka mid ah nidaamka server-ka. Oo waxay u diri kartaa xogta ClickHouse isla markiiba, laakiin ku samee hal xiriir. Tusaale ahaan, waxaan u diray codsi http ah oo leh wareejin-encoding: chunked with insert. Oo waxay soo saartaa jajabyo aan aad dhif u ahayn, waxaad diri kartaa khad kasta, in kasta oo ay jiri doonto xad dhaaf ah samaynta xogtan.

Si kastaba ha ahaatee, kiiskan xogta waxaa loo diri doonaa ClickHouse isla markiiba. Oo ClickHouse ayaa iyaga lafteeda ilaalin doona.

Laakiin sidoo kale dhibaatooyin ayaa soo baxa. Hadda waxaad waayi doontaa xogta, oo ay ku jiraan marka habkaaga la dilo iyo haddii habka ClickHouse la dilay, sababtoo ah waxay noqon doontaa gelin aan dhamaystirnayn. Iyo gelinta ClickHouse waa atomic ilaa xad cayiman oo cabbirka safafka ah. Mabda 'ahaan, tani waa hab xiiso leh. Sidoo kale waa la isticmaali karaa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Habka 5. Halkan waa hab kale oo xiiso leh. Kani waa nooc ka mid ah server-ka ay bulshadu horumarisay ee xog-ururinta. Naftayda ma eegin, markaa waxba ma dammaanad qaadi karo. Si kastaba ha ahaatee, wax dammaanad ah looma hayo ClickHouse lafteeda. Tani sidoo kale waa il furan, laakiin dhinaca kale, waxaa laga yaabaa in lagu isticmaalo heer tayo leh oo aan isku dayno inaan bixinno. Laakiin arrinkan - ma aqaan, tag GitHub, fiiri koodka. Malaha wax caadi ah ayay qoreen.

* laga bilaabo 2020, waa in sidoo kale lagu daraa tixgelin KittenHouse.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Habka 6. Hab kale ayaa ah in la isticmaalo miisaska Buffer. Faa'iidada habkani waa in ay aad u fududahay in la bilaabo isticmaalka. Samee miiska kaydka oo geli.

Khasaaraha ayaa ah in dhibaatada aan si buuxda loo xalin. Haddii, heerka sida MergeTree, waa inaad xogta ku ururisaa hal dufcaddii ilbiriqsi kasta, ka dib qiyaasta miis kaydinta, waxaad u baahan tahay inaad koox u ururiso ugu yaraan ilaa dhowr kun ilbiriqsikii. Haddii ay ka badan tahay 10 ilbiriqsi kasta, weli way xumaan doontaa. Oo haddii aad geliso dufcad, markaas waxaad aragtay in uu noqday boqol kun oo sadar halkii ilbiriqsi. Oo tani waxay horeyba ugu jirtay xog aad u culus.

Iyo sidoo kale miisaska kaydinta ma laha log. Oo haddii ay jiraan wax khalad ah oo ku saabsan server-kaaga, markaa xogta ayaa lumi doonta.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Iyo gunno ahaan, waxaan dhawaan helnay fursada ClickHouse si aan uga soo saarno xogta Kafka. Waxaa jira mashiinka miiska - Kafka. Kaliya waxaad abuurtaa. Oo waxaad ku soo laad-laadsan kartaa matalaad dhab ah. Xaaladdan oo kale, lafteedu waxay ka soo saari doontaa xogta Kafka waxayna geli doontaa miisaska aad u baahan tahay.

Iyo waxa si gaar ah ugu faraxsan fursaddan ayaa ah in aynaan anaga samaynin. Tani waa muuqaal bulsho. Oo markaan idhaahdo "sifada bulshada," waxaan ula jeedaa iyada oo aan la quudhsanayn. Waxaan akhrinay koodka, dib u eegis ayaan sameynay, waa inay si fiican u shaqeyso.

* laga bilaabo 2020, taageero la mid ah ayaa u muuqatay BakayleMQ.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Maxaa kale oo noqon kara dhib ama lama filaan ah marka la gelinayo xogta? Haddii aad samayso galinta qiyamka codso oo ku qor tibaaxaha la xisaabiyay ee qiyamka. Tusaale ahaan, hadda () sidoo kale waa tibaax la xisaabiyay. Xaaladdan oo kale, ClickHouse waxaa lagu qasbay inuu bilaabo turjumaanka tibaaxahaan xariiq kasta, waxqabadkuna wuxuu hoos ugu dhacayaa amarrada cabbirka. Way fiicantahay inaad tan iska ilaaliso.

* Waqtigan xaadirka ah, dhibaatada si buuxda ayaa loo xaliyay, ma jiraan wax dib u dhac ku ah waxqabadka marka la isticmaalayo tibaaxaha VALUES.

Tusaalaha kale waa marka ay jiri karaan xoogaa dhibaatooyin ah marka aad hayso xogta hal dufcadood oo ka tirsan qaybo badan. Sida caadiga ah, qaybaha ClickHouse waa bishii. Oo haddii aad geliso hal milyan oo saf, oo ay jirto xog dhowr sano ah, markaa waxaad halkaas ku yeelan doontaa dhowr iyo toban qaybood. Oo tani waxay u dhigantaa xaqiiqda ah in ay jiri doonaan kooxo dhowr ah oo tobaneeyo jeer ka yar cabbirka, sababtoo ah gudaha waxay had iyo jeer u qaybsan yihiin qaybo.

* Dhawaan, qaab tijaabo ah, ClickHouse waxay ku dartay taageerada qaabka is haysta ee jajabka iyo jajabyada RAM oo leh log-hore qoraal ah, kaas oo si buuxda u xaliya dhibaatada.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Hadda aynu eegno nooca labaad ee dhibaatada - xogta qorida.

Ku qorista xogtu waxay noqon kartaa mid adag ama xadhig. Xariggu waa marka aad hadda qaadatay oo aad caddaysay in dhammaan beerahaagu ay yihiin xadhig nooca. Tani waa nuugtaa. Looma baahna in tan la sameeyo.

Aynu ogaano sida saxda ah ee loo sameeyo kiisaskaas markaad rabto inaad tiraahdo waxaan haysanaa qayb ka mid ah beerta, xarig, oo u ogolow ClickHouse in ay iskeed u ogaato, aniguna dhib maayo. Laakiin wali waa mudan tahay in la sameeyo xoogaa dadaal ah.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Tusaale ahaan, waxaan haynaa ciwaanka IP-ga. Hal kiis, waxaanu u kaydinay sidii xadhig ahaan. Tusaale ahaan, 192.168.1.1. Iyo xaalad kale, waxay noqon doontaa tiro ka mid ah nooca UInt32*. 32-bit ayaa ku filan cinwaanka IPv4.

Marka hore, si yaab leh, xogta ayaa la isku cadaadin doonaa ku dhawaad ​​si siman. Waxaa jiri doona farqi, dabcan, laakiin ma ahan mid weyn. Markaa ma jiraan dhibaatooyin gaar ah oo ku saabsan diskka I/O.

Laakiin waxaa jira farqi weyn oo u dhexeeya wakhtiga processor-ka iyo wakhtiga fulinta su'aasha.

Aynu tirinno tirada cinwaannada IP-ga gaarka ah haddii loo kaydiyo tiro ahaan. Taasi waxay shaqeysaa ilaa 137 milyan oo xariiq ilbiriqsikii. Haddii la mid ah qaabka xargaha, markaa 37 milyan oo xariiq ilbiriqsi kasta. Ma garanayo sababta ay isku beegkan u dhaceen. Codsiyadan aniga qudhayda ayaa fuliyay. Laakiin wali ilaa 4 jeer ayaa ka gaabinaya.

Oo haddii aad xisaabiso farqiga u dhexeeya booska disk, ka dibna waxaa sidoo kale jira farqi. Farqiguna waa qiyaastii hal rubuc, sababtoo ah waxaa jira cinwaanno IP gaar ah oo aad u badan. Oo haddii ay jiraan xariiqyo leh tiro yar oo macneyaal kala duwan leh, markaas si fudud ayaa loo cadaadin lahaa sida ku qoran qaamuuska ilaa qiyaas isku mid ah.

Farqiga wakhtiga oo afar jibbaarana kuma jiro waddada. Waxaa laga yaabaa inaadan wax xun siin, dabcan, laakiin markaan arko farqigaas, way i murugootaa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Aynu eegno kiisas kala duwan.

1. Hal kiis marka aad leedahay qiimayaal kala duwan oo kala duwan. Xaaladdan oo kale, waxaan isticmaalnaa dhaqan fudud oo laga yaabo inaad taqaan oo aad u isticmaali karto DBMS kasta. Tani waxay macno u samaynaysaa ClickHouse oo keliya. Keliya ku qor aqoonsiga nambarada kaydka xogta. Oo waxaad u rogi kartaa xargaha oo aad dib ugu laaban kartaa dhinaca codsigaaga.

Tusaale ahaan, waxaad leedahay gobol. Oo waxaad isku dayaysaa inaad u kaydiso sida xadhig ahaan. Oo waxaa lagu qori doonaa halkaas: Moscow iyo Gobolka Moscow. Oo markaan arko in ay tiraahdo "Moscow", waxba maaha, laakiin marka ay Moscow tahay, waxay si buuxda u noqotaa murugo. Tani waa inta bytes.

Taa beddelkeeda, waxaan si fudud u qoreynaa lambarka Ulnt32 iyo 250. Waxaan ku haynaa 250 Yandex, laakiin kaagu wuu ka duwanaan karaa. Kaliya haddii ay dhacdo, waxaan dhihi doonaa in ClickHouse uu leeyahay karti la dhisay si uu ula shaqeeyo geobase. Waxaad si fudud u qortaa tusaha gobollada, oo ay ku jiraan mid heersare ah, i.e. waxaa jiri doona Moscow, Gobolka Moscow, iyo wax kasta oo aad u baahan tahay. Waxaadna ku beddeli kartaa heerka codsiga.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Doorashada labaad waa isku mid, laakiin taageero gudaha ClickHouse. Tani waa nooca xogta Enum. Waxaad si fudud u qortaa dhammaan qiyamka aad uga baahan tahay gudaha Enum. Tusaale ahaan, nooca qalabka oo halkaas ku qor: desktop, mobile, tablet, TV. Waxaa jira 4 doorasho guud ahaan.

Khasaaraha ayaa ah inaad u baahan tahay inaad beddesho xilliyo. Kaliya hal doorasho ayaa lagu daray. Aan samayno miiska beddelka. Dhab ahaantii, miiska beddelka ee ClickHouse waa bilaash. Gaar ahaan bilaashka ah Enum sababtoo ah xogta ku jirta saxanka waxba iskama beddelin. Laakiin si kastaba ha ahaatee, beddelku wuxuu helayaa quful * miiska dushiisa waana inuu sugaa ilaa dhammaan xulashooyinka la fuliyo. Oo kaliya ka dib beddelkan ayaa la fulin doonaa, i.e. waxaa weli jira dhibaatooyin qaarkood.

* Noocyadii ugu dambeeyay ee ClickHouse, ALTER waxaa la sameeyay gabi ahaanba aan la xannibin.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Doorasho kale oo aad u gaar ah ClickHouse waa isku xirka qaamuusyada dibadda. Waxaad ku qori kartaa lambaro gudaha ClickHouse, oo ku hay hagahaaga nidaam kasta oo adiga kugu habboon. Tusaale ahaan, waxaad isticmaali kartaa: MySQL, Mongo, Postgres. Xitaa waxaad samayn kartaa adeeg-yarahaaga oo xogtan ku soo diri doona http. Iyo heerka ClickHouse, waxaad qortaa hawl ka beddeli doonta xogtan tirooyin ilaa xargo.

Tani waa hab gaar ah laakiin aad u hufan oo lagu sameeyo ku biirista miiska dibadda. Waxaana jira laba ikhtiyaar. Hal qaab, xogtan si buuxda ayaa loo kaydin doonaa, oo si buuxda ugu jirta RAM-ka waxaana lagu cusboonaysiin doonaa iyada oo la adeegsanayo soo noqnoqoshada. Iyo ikhtiyaar kale, haddii xogtani aysan ku habboonayn RAM, markaa qayb ahaan waad kaydin kartaa.

Waa kan tusaale Waxaa jira Yandex.Direct. Oo waxaa jira shirkad xayaysiis iyo boodhadh. Waxaa laga yaabaa inay jiraan ilaa tobanaan milyan oo shirkado xayeysiis ah. Oo waxay ku habboon yihiin RAM-ka. Oo waxaa jira balaayiin boodhadh ah, kuma habboona. Oo waxaan isticmaalnaa qaamuuska kaydsan ee MySQL.

Dhibaatada kaliya ayaa ah in qaamuuska la kaydiyay uu si fiican u shaqeyn doono haddii heerka garaaca uu ku dhow yahay 100%. Haddii ay ka yar tahay, markaa marka la baarayo su'aalaha dufc kasta oo xog ah, waxaad dhab ahaantii u baahan doontaa inaad qaadato furayaasha maqan oo aad xogta ka hesho MySQL. Ku saabsan ClickHouse, weli waan dammaanad qaadi karaa taas - haa, ma gaabinayso, kama hadli doono nidaamyada kale.

Iyo gunno ahaan, qaamuusyadu waa hab aad u fudud oo dib loogu cusbooneysiiyo xogta gudaha ClickHouse. Taasi waa, waxaad lahayd warbixin ku saabsan shirkadaha xayaysiinta, isticmaaluhu wuxuu si fudud u beddelay shirkadda xayaysiinta iyo dhammaan xogta hore, dhammaan warbixinnada, xogtan ayaa sidoo kale isbeddelay. Haddii aad safaf toos ah ugu qorto miiska, suurtogal ma noqon doonto in la cusboonaysiiyo.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Si kale marka aanad garanayn meesha aad ka heli karto aqoonsiga xadhigahaaga. si fudud ayaad u xashiish kartaa Intaa waxaa dheer, ikhtiyaarka ugu fudud waa in la qaato xashiish 64-bit ah.

Dhibaatada kaliya ayaa ah in haddii xashiishku yahay 64-bit, markaa hubaal waxaad yeelan doontaa isku dhacyo. Sababtoo ah haddii ay jiraan hal bilyan oo xariiqyo ah, markaa suurtogalnimada mar hore ayaa la ogaan karaa.

Oo aad uma fiicnaan lahayd in sidan oo kale lagu xashilo magacyada shirkadaha xayaysiisyada. Haddii ololaha xayeysiiska ee shirkadaha kala duwan ay isku dhafan yihiin, markaa waxaa jiri doona wax aan la fahmi karin.

Oo waxaa jira khiyaamo fudud. Run, sidoo kale aad uguma habboona xogta halista ah, laakiin haddii shay aysan ahayn mid aad u daran, ka dibna kaliya ku dar aqoonsiga macmiilka furaha qaamuuska. Kadibna waxaad la kulmi doontaa isku dhac, laakiin kaliya hal macmiil gudahood. Oo waxaan u isticmaalnaa habkan khariidadaha isku xirka ee Yandex.Metrica. Waxaan ku haynaa URL-yo, waxaanu ku kaydinnaa xashiishyada. Waana ognahay in, dabcan, ay jiraan isku dhacyo. Laakiin marka bogga la soo bandhigo, itimaalka in hal bog oo isticmaale ah qaar URL-yada ah ay isku dheggan yihiin tanna waa la ogaan doonaa waa la dayaci karaa.

Gunno ahaan, hawlgallo badan oo xashiish ah oo keliya ayaa ku filan xargaha laftoodana uma baahna in meel kasta lagu kaydiyo.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Tusaale kale waa haddii xargaha ay gaaban yihiin, tusaale ahaan, boggaga internetka. Waxa loo kaydin karaa sida ay tahay. Ama, tusaale ahaan, luqadda browserka ru waa 2 bytes. Dabcan, runtii waan ka xumahay bytes-ka, laakiin ha ka welwelin, 2 bytes maaha wax naxariis ah. Fadlan sida ay tahay u ilaali, ha ka welwelin.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Kiis kale ayaa ah marka, liddi ku ah, waxaa jira khadadka badan oo ay jiraan kuwo badan oo gaar ah oo iyaga ku jira, iyo xitaa setku waa mid aan xadidneyn. Tusaalaha caadiga ah waa weedho raadin ama URLs. Raadi weedho, oo ay ku jiraan qoraal-qoris Aynu aragno inta weedho raadin gaar ah oo jira maalintii. Waxayna soo baxday in ay ku dhow yihiin kala badh dhammaan dhacdooyinka. Xaaladdan oo kale, waxaad u maleyn kartaa inaad u baahan tahay inaad caadi ka dhigto xogta, tiriso aqoonsiga, oo aad geliso miis gaar ah. Laakiin uma baahnid inaad taas samayso. Kaliya xadadkan sida ay yihiin u ilaali.

Way fiicantahay inaadan wax abuurin, sababtoo ah haddii aad si gaar ah u kaydiso, waxaad u baahan doontaa inaad ku biirto. Ku biiritaankuna waa, sida ugu fiican, helitaan aan toos ahayn ee xusuusta, haddii ay wali ku habboon tahay xusuusta. Haddii aysan ku habooneyn, markaa waxaa jiri doona dhibaatooyin.

Iyo haddii xogta lagu kaydiyo meel, ka dibna si fudud ayaa loo akhriyaa habka loo baahan yahay ee nidaamka faylka wax walbana waa fiican yihiin.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Haddii aad leedahay URL-yada ama xargaha kale ee dheer ee adag, markaa waxaa habboon in la tixgeliyo inaad horay u sii xisaabin karto nooc ka mid ah wax soo saarka oo aad ku qorto tiir gooni ah.

URL-yada, tusaale ahaan, waxaad u kaydin kartaa bogga si gaar ah. Oo haddii aad runtii u baahan tahay domain, ka dibna isticmaal tiirkan, URL-yaduna halkaas ayay jiifi doonaan, xitaa ma taaban doontid.

Aan aragno farqiga u dhexeeya. ClickHouse waxay leedahay hawl gaar ah oo xisaabisa domainka. Aad bay u dhakhso badan tahay, waanu hagaajinnay. Iyo, si daacad ah, xitaa ma waafaqsana RFC, laakiin si kastaba ha ahaatee waxay tixgelisaa wax kasta oo aan u baahanahay.

Hal kiisna waxaan si fudud u heli doonnaa URL-yada oo aan xisaabin doonnaa domainka. Taasi waxay shaqeysaa ilaa 166 millise seconds. Oo haddii aad qaadato domain diyaarsan, ka dibna waxay soo baxaysaa kaliya 67 millise seconds, i.e. ku dhawaad ​​saddex jeer ka dhakhso badan. Oo ma degdegsana sababtoo ah waxaan u baahanahay inaan samayno xisaabinta qaar, laakiin sababtoo ah waxaan akhrinay xog yar.

Taasi waa sababta hal codsi, oo gaabis ah, uu leeyahay xawaare sare oo gigabytes ah ilbiriqsi kasta. Sababtoo ah waxay akhridaa gigabytes badan. Tani gabi ahaanba waa xog aan loo baahnayn. Codsigu wuxuu u muuqdaa mid si degdeg ah u socda, laakiin waxay qaadataa waqti dheer in la dhammaystiro.

Haddii aad u fiirsato xadiga xogta ku jirta saxanka, waxa kuu soo baxaysa in URL-ku yahay 126 megabytes, domainkuna uu yahay 5 megabyte oo keliya. Waxay soo baxdaa 25 jeer ka yar. Laakiin si kastaba ha ahaatee, codsiga waxaa la fuliyay oo kaliya 4 jeer si degdeg ah. Laakiin taasi waa sababta oo ah xogtu waa kulushahay. Haddii ay qabow ahaan lahayd, waxay u badan tahay inay 25 jeer ka dheerayn lahayd diskka I/O awgeed.

Sida habka, haddii aad qiyaasto inta uu le'eg yahay domain ka yar URL, waxay soo baxaysaa in ay ku dhowdahay 4 jeer ka yar. Laakiin sababaha qaar, xogtu waxay qaadataa 25 jeer ka yar diskka. Waa maxay sababtu? Cadaadis awgeed. Oo URL-ka waa la cufan yahay, oo domainka waa la cufan yahay. Laakiin inta badan URL-ku wuxuu ka kooban yahay farabadan qashinka.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Iyo, dabcan, waxay bixisaa in la isticmaalo noocyada xogta saxda ah ee loogu talagalay si gaar ah qiyamka la rabo ama ku habboon. Haddii aad ku jirto IPv4, ka dibna kaydi Uint32*. Haddii IPV6, ka dibna FixedString(16), sababtoo ah IPV6 ciwaanka waa 128 bits, tusaale ahaan si toos ah loogu kaydiyaa qaabka binary.

Laakiin maxaa dhacaya haddii aad mararka qaarkood leedahay cinwaannada IPv4 iyo mararka qaarkood IPv6? Haa, waad kaydin kartaa labadaba. Hal tiir oo loogu talagalay IPv4, mid kale oo loogu talagalay IPv6. Dabcan, waxaa jira ikhtiyaar lagu muujiyo IPv4 gudaha IPv6. Tani waxay sidoo kale shaqayn doontaa, laakiin haddii aad inta badan u baahan tahay ciwaanka IPv4 ee codsiyada, markaa way fiicnaan lahayd inaad ku dhejiso tiir gooni ah.

* ClickHouse hadda waxay leedahay IPV4 gaar ah, noocyada xogta IPv6 kuwaaso u kaydiya xogta sida nambarada oo kale, laakiin u matala sida ugu habboon ee xargaha.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Waxa kale oo muhiim ah in la ogaado in ay mudan tahay in horay loo sii wado xogta. Tusaale ahaan, waxaad helaysaa qaar ka mid ah dogob ceeriin ah. Waxaana laga yaabaa inaadan isla markiiba gelin ClickHouse, in kasta oo ay aad u soo jiidanayso inaadan waxba samayn wax walbana way shaqayn doonaan. Laakiin weli waa mudan tahay in la fuliyo xisaabinta suurtagalka ah.

Tusaale ahaan, nooca browserka. Qaar ka mid ah waaxaha u dhow, oo aanan rabin inaan farta ku fiiqo, nooca browserka ayaa loo kaydiyaa sidan oo kale, taas oo ah, xadhig ahaan: 12.3. Dabadeed, si ay warbixin u sameeyaan, waxay soo qaataan xadhiggan oo u qaybiyaan arrayn, ka dibna waxay u qaybiyaan qaybta koowaad ee shaxanka. Dabiici ahaan, wax walba waa ay gaabiyaan. Waxaan weydiiyey sababta ay sidan u sameynayaan. Waxay ii sheegeen inaysan jeclayn hagaajinta degdega ah. Mana jecli niyad-jab dhicis ah.

Markaa kiiskan waxa aad u saxnaan lahayd in loo qaybiyo 4 tiir. Ha ka baqin halkan, sababtoo ah kani waa ClickHouse. ClickHouse waa xog ururin. Iyo tiirar yar oo nadiif ah, ayaa ka sii fiican. Waxaa jiri doona 5 BrowserVersions, samee 5 tiir. Tani way fiican tahay.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Hadda aan eegno waxa la samaynayo haddii aad leedahay xadhko badan oo aad u dhaadheer, oo aad u dheer. Uma baahna in lagu kaydiyo ClickHouse gabi ahaanba. Taa beddelkeeda, waxaad kaliya ku kaydin kartaa aqoonsiga ClickHouse. Oo ku dheji khadadkan dhaadheer nidaam kale.

Tusaale ahaan, mid ka mid ah adeegyadeena falanqaynta ayaa leh qaar ka mid ah xuduudaha dhacdada. Haddii ay jiraan calaamado badan oo dhacdooyinka, waxaan si fudud u badbaadineynaa 512 ee ugu horreeya ee soo baxa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Oo haddii aadan go'aansan karin noocyada xogtaada, waxaad sidoo kale ku duubi kartaa xogta gudaha ClickHouse, laakiin shaxda ku meel gaarka ah ee nooca Log, gaar ahaan xogta ku meel gaarka ah. Taas ka dib, waxaad falanqeyn kartaa waxa qaybinta qiyamka aad halkaas ku leedahay, waxa jira guud ahaan, iyo in la abuuro noocyada saxda ah.

*ClickHouse hadda waxay leedahay nooc xog ah Cardinality Low kaas oo kuu ogolaanaya inaad si hufan u kaydiso xargaha oo leh dadaal yar.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Hadda aan eegno kiis kale oo xiiso leh. Mararka qaarkood arrimuhu waxay dadka ugu shaqeeyaan si la yaab leh. Waan soo galay oo waxan arkaa. Isla markiiba waxay u muuqataa in tan ay sameeyeen qaar aad u khibrad badan, maamule caqli badan oo khibrad dheer u leh dejinta MySQL version 3.23.

Halkan waxaan ku aragnaa kun miis, oo mid walba uu qorayo inta soo hartay qaybinta yaa garan kara kun.

Mabda 'ahaan, waxaan ixtiraamayaa waayo-aragnimada dadka kale, oo ay ku jiraan fahamka dhibaatada lagu heli karo waayo-aragnimadan.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Sababtuna way caddahay ama way badan tahay. Kuwani waa fikrado hore oo laga yaabo in ay urursadeen markii ay la shaqeynayaan nidaamyada kale. Tusaale ahaan, miisaska MyISAM ma laha furaha aasaasiga ah oo kooxaysan. Habkan xogta loo qaybiyayna waxa uu noqon karaa isku day quus ah oo lagu doonayo in lagu helo hawl la mid ah.

Sababta kale ayaa ah in ay adagtahay in lagu sameeyo wax ka beddelka hawlgallada miisaska waaweyn. Wax walba waa la xannibi doonaa. Inkasta oo noocyada casriga ah ee MySQL dhibaatadani aanay hadda ahayn mid halis ah.

Ama, tusaale ahaan, microsharding, laakiin wax badan oo ku saabsan taas ka dib.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Looma baahna in tan lagu sameeyo ClickHouse, sababtoo ah, marka hore, furaha aasaasiga ah waa la ururiyey, xogta waxaa lagu dalbadaa furaha aasaasiga ah.

Mararka qaarkood dadku waxay i weydiiyaan: "Sidee buu u kala duwan yahay waxqabadka weydiimaha kala duwan ee ClickHouse iyadoo ku xiran cabbirka miiska?" Waxaan leeyahay waxba iskama beddelayso. Tusaale ahaan, waxaad haysataa miis leh bilyan oo saf oo waxaad akhriday tiro dhan hal milyan oo saf. Wax walba waa fiican yihiin. Haddii ay jiraan trillion saf oo miis ah oo aad akhrido hal milyan oo saf, waxay noqon doontaa ku dhawaad ​​isku mid.

Iyo, marka labaad, dhammaan noocyada kala duwan ee shay sida qaybaha gacanta looma baahna. Haddii aad gasho oo aad eegto waxa ku jira nidaamka faylka, waxaad arki doontaa in miiska uu yahay heshiis aad u weyn. Oo waxaa jira wax la mid ah qaybo ka mid ah gudaha. Taasi waa, ClickHouse wax walba ayey kuu qabataa mana aha inaad dhibsato.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Beddelka ClickHouse waa bilaash haddii la beddelo tiirka add/ rid.

Oo waa inaadan samayn miisas yaryar, sababtoo ah haddii aad haysato 10 saf ama 10 oo saf oo miis ah, markaa wax macno ah ma laha. ClickHouse waa nidaam hagaajiya wax soo saarka, ma aha daahitaanka, markaa macno ma samaynayso in la farsameeyo 000 xariiq.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Waa sax in la isticmaalo hal miis oo weyn. Ka takhalus fikradaha hore, wax walba way fiicnaan doonaan.

Iyo gunno ahaan, nooca ugu dambeeyay waxaan hadda awood u leenahay inaan abuurno fure qaybin aan sabab lahayn si loo fuliyo dhammaan noocyada hawlgallada dayactirka ee qaybaha shaqsiyeed.

Tusaale ahaan, waxaad u baahan tahay miisas yaryar oo badan, tusaale ahaan, marka ay jirto baahi loo qabo in la farsameeyo qaar ka mid ah xogta dhexdhexaadka ah, waxaad heleysaa jajabyo waxaadna u baahan tahay inaad ku sameyso isbeddel iyaga ka hor inta aadan qorin miiska ugu dambeeya. Xaaladdan oo kale, waxaa jira mashiinka miiska cajiibka ah - StripeLog. Waa nooc la mid ah TinyLog, kaliya ayaa ka fiican.

* hadda ClickHouse sidoo kale waxay leedahay gelinta shaqada miiska.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Qaab kale oo ka hortag ah waa microsharding. Tusaale ahaan, waxaad u baahan tahay inaad share gareyso xogta oo aad leedahay 5 server, berrito waxaa jiri doona 6 server. Oo waxaad ka fekereysaa sida dib loogu soo celin karo xogtan. Taa beddelkeedana ma jebinaysid 5 xabo, laakiin waxaad u kala qaybisaa 1 xabo. Kadibna waxaad khariidaysaa mid kasta oo ka mid ah microshards-kan server gaar ah. Oo waxaad heli doontaa, tusaale ahaan, 000 ClickHouses hal server, tusaale ahaan. Tusaalooyinka kala duwan ee dekedo gaar ah ama xog ururin gaar ah.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Laakiin tani aad uguma fiicna ClickHouse. Sababtoo ah xitaa hal tusaale ClickHouse wuxuu isku dayaa inuu isticmaalo dhammaan agabyada server-ka ee jira si uu uga shaqeeyo hal codsi. Taasi waa, waxaad haysataa nooc ka mid ah server-ka waxayna leedahay, tusaale ahaan, 56 cores processor. Waxaad wadaa su'aal qaadanaysa hal ilbiriqsi waxayna isticmaali doontaa 56 cores. Oo haddii aad ku dhejisay 200 ClickHouses hal server, markaa waxay soo baxday in 10 oo xadhig ah ay bilaabi doonaan. Guud ahaan, wax walba waxay noqon doonaan kuwo aad u xun.

Sababta kale ayaa ah in qaybinta shaqada ee xaaladahan ay noqon doonto mid aan sinnayn. Qaar baa hore u dhammayn doona, qaarna hadhow ayay dhamayn doonaan. Haddii waxaas oo dhami ay ku dhaceen hal tusaale, markaa ClickHouse lafteedu waxay ogaan doontaa sida saxda ah ee loogu qaybiyo xogta dunta dhexdooda.

Iyo sabab kale waa in aad yeelan doonto isgaarsiinta interprocessor via TCP. Xogta waxay noqon doontaa in si taxane ah loo dhigo, laga saaro, tanina waa tiro aad u badan oo microshards ah. Si fudud uma shaqayn doonto si wax ku ool ah.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Qaab kale oo liddi ku ah, in kasta oo ay adag tahay in loogu yeero qaab ka-hortagga. Tani waa xaddi badan oo isugeyn horudhac ah.

Guud ahaan, isku-darka ka hor ayaa wanaagsan. Waxaad haysatay hal bilyan oo saf, waxaad isu geysay oo waxay noqotay 1 saf, hadda su'aashii waa la fuliyay isla markiiba. Wax walba waa weyn. Waad sameyn kartaa tan. Taasna, xitaa ClickHouse waxay leedahay miis gaar ah, AggregatingMergeTree, kaas oo sameeya isku darka kordhinta marka xogta la geliyo.

Laakiin waxaa jira waqtiyo aad u maleyneyso inaan isku geyno xogta sidan oo kale ah oo aan isku geyno xogta sidan oo kale ah. Qaar ka mid ah waaxaha deriska ah, sidoo kale ma rabo inaan sheego midka, waxay isticmaalaan miisaska SummingMergeTree si ay u soo koobaan furaha aasaasiga ah, iyo ilaa 20 tiir ayaa loo isticmaalaa furaha aasaasiga ah. Kaliya haddii ay dhacdo, waxaan bedelay magacyada tiirarka qaar si qarsoodi ah, laakiin taasi waa wax aad u badan.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Dhibaatooyinkaas oo kale ayaa soo baxa. Marka hore, mugga xogtaadu aad hoos uguma dhacayso. Tusaale ahaan, waxay hoos u dhigtaa saddex jeer. Saddex jeer waxay ahaan lahayd qiimo wanaagsan si aad u hesho awoodaha falanqaynta aan xadidnayn ee soo ifbaxa haddii xogtaada aan la isku dari doonin. Haddii xogta la isku daro, ka dib halkii falanqaynta waxaad helaysaa oo kaliya tirakoobyo naxariis leh.

Maxaase gaar ah oo ku saabsan? Xaqiiqdu waxay tahay in dadkan ka socda waaxda deriska ah ay mararka qaarkood tagaan oo weydiiyaan inay ku daraan tiir kale furaha aasaasiga ah. Taasi waa, waxaan isku geynay xogta sidan oo kale ah, laakiin hadda waxaan rabnaa wax yar oo dheeraad ah. Laakin ClickHouse ma laha furaha aasaasiga ah ee beddelka ah. Sidaa darteed, waa inaan ku qornaa qaar ka mid ah qoraallada C++. Anigu ma jecli qoraallada, xitaa haddii ay ku jiraan C++.

Oo haddii aad eegto waxa ClickHouse loo abuuray, ka dibna xogta aan la isku soo ururin waa sida dhabta ah ee ay u dhalatay. Haddii aad u isticmaaleyso ClickHouse xogta aan la isku wada geyn, markaas waxaad sameyneysaa si sax ah. Haddii aad isu geyso, tani mararka qaarkood waa la cafin karaa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Kiis kale oo xiiso leh waa su'aalo ku jira wareeg aan dhammaad lahayn. Mararka qaarkood waxaan aadaa qaar ka mid ah server-ka wax soo saarka oo aan eego liiska bandhigyada halkaas. Oo mar kasta oo aan ogaado in wax laga cabsado ay dhacayaan.

Tusaale ahaan, sidan oo kale. Isla markiiba way caddahay in wax walba lagu samayn karo hal codsi. Kaliya ku qor url-ka iyo liiska halkaas.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Waa maxay sababta su'aalo badan oo noocan oo kale ah ee loop aan dhammaadka lahayn u xun yihiin? Haddii tusaha aan la isticmaalin, markaa waxaad yeelan doontaa baas badan oo isla xogta ah. Laakiin haddii tusmada la isticmaalo, tusaale ahaan, waxaad haysataa furaha aasaasiga ah ee ru oo waxaad ku qortaa url = wax halkaas jooga. Waxaadna u maleyneysaa in haddii hal URL laga akhriyo miiska, wax walbaa way fiicnaan doonaan. Laakiin dhab ahaantii maya. Sababtoo ah ClickHouse waxay wax walba ku qabataa dufcadaha.

Marka uu u baahdo in uu akhriyo xog gaar ah, wax yar ayuu akhriyaa, sababtoo ah tusmada ClickHouse waa mid yar. Tusmadani kuma ogola in aad hal saf oo shaqsi ah ka dhex hesho shaxda, kaliya nooc ka mid ah. Xogtana waxaa lagu soo koobay blocks. Si aad u akhrido hal sadar, waxaad u baahan tahay inaad qaadatid baloogga oo dhan oo aad furto. Oo haddii aad samaynayso farabadan su'aalo, waxaad yeelan doontaa wax badan oo isku dhafan, waxaadna yeelan doontaa shaqo badan oo aad ku celceliso.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Iyo gunno ahaan, waxaad ogaan kartaa in ClickHouse ay tahay inaadan ka baqin inaad ku wareejiso xitaa megabyte iyo xitaa boqolaal megabyte qaybta IN. Waxaan ka xasuustaa dhaqankeena in haddii MySQL aan ku wareejinno farabadan qiyamka qaybta IN, tusaale ahaan, waxaan ku wareejinaa 100 megabytes ee nambarada qaar halkaas, ka dibna MySQL wuxuu cunaa 10 gigabytes oo xusuusta ah wax kale kuma dhicin, wax walba. si liidata u shaqeyso.

Midda labaadna waa in ClickHouse, haddii su'aalahaagu isticmaalaan tusmooyin, markaa had iyo jeer kama gaabiyaan iskaanka buuxa, i.e. haddii aad u baahan tahay inaad akhrido ku dhawaad ​​miiska oo dhan, waxay u socon doontaa si isdaba-joog ah oo akhrin doonta miiska oo dhan. Guud ahaan, isaga ayaa iskiis u garan doona.

Laakiin si kastaba ha ahaatee waxaa jira qaar ka mid ah dhibaatooyinka. Tusaale ahaan, xaqiiqda ah in IN oo leh subquery uusan isticmaalin tusaha. Laakiin tani waa dhibkayaga, waxaanan u baahanahay inaan hagaajino. Ma jiraan wax aasaasi ah halkan. Waan hagaajin doonaa*.

Waxyaabo kale oo xiiso leh ayaa ah in haddii aad haysato codsi aad u dheer oo codsiyada la qaybiyey ay socoto, markaa codsigan aadka u dheer ayaa loo diri doonaa server kasta iyada oo aan la isku dhejin. Tusaale ahaan, 100 megabytes iyo 500 server. Oo, sidaas darteed, waxaad yeelan doontaa 50 gigabytes lagu wareejiyo shabakadda. Waa la gudbin doonaa ka dibna wax walba si guul leh ayaa loo dhammaystiri doonaa.

* mar hore la isticmaalay; Wax walba waa la hagaajiyay sidii ballanku ahaa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Kiis caadi ah oo caadi ahna waa marka codsiyadu ka yimaadaan API-ga. Tusaale ahaan, waxaad abuurtay nooc ka mid ah adeeggaaga. Oo haddii qof u baahan yahay adeeggaaga, ka dibna waxaad furtaa API oo macno ahaan laba maalmood ka dib waxaad arkaysaa in wax aan la fahmi karin ay dhacayaan. Wax walba aad baa loo raray oo codsiyo xun baa imanaya oo aan weligood dhicin.

Waxaana jira hal xal oo kaliya. Haddii aad furto API-ga, markaas waa inaad gooysaa. Tusaale ahaan, soo bandhig nooc ka mid ah kootooyinka. Ma jiraan doorashooyin kale oo caadi ah. Haddii kale, waxay isla markiiba qori doonaan qoraal waxaana jiri doona dhibaatooyin.

Oo ClickHouse waxay leedahay sifo gaar ah - xisaabinta kootada. Intaa waxaa dheer, waxaad wareejin kartaa furaha kootada. Kani waa, tusaale ahaan, aqoonsiga isticmaale ee gudaha. Kootada waxaa loo xisaabin doonaa si madax banaan mid kasta oo iyaga ka mid ah.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Hadda arrin kale oo xiiso leh. Tani waa ku celcelin gacanta ah.

Waan ogahay kiisas badan, in kasta oo ClickHouse uu leeyahay taageerada nuqul ka mid ah, dadku waxay ku celceliyaan ClickHouse gacanta.

Waa maxay mabda'a? Waxaad haysataa dhuumaha habaynta xogta Waxayna si madaxbanaan u shaqeysaa, tusaale ahaan, xarumaha xogta ee kala duwan. Waxaad u qortaa xog isku mid ah si la mid ah ClickHouse. Run, ku celcelinta waxay tusinaysaa in xogtu wali kala duwanaan doonto sababo la xidhiidha sifada koodka. Waxaan rajeynayaa inay ku jirto kaaga.

Oo wakhti ka waqti waxaad weli u baahan doontaa inaad gacanta ku dhejiso. Tusaale ahaan, bishii hal mar maamulayaashu waxay sameeyaan rsync.

Dhab ahaantii, aad bay u fududahay in la isticmaalo ku-celinta ku-meel-gaadhka ah ee ClickHouse. Laakiin waxaa laga yaabaa inay jiraan qaar ka hortag ah, sababtoo ah tan waxaad u baahan tahay inaad isticmaasho ZooKeeper. Ma dhihi doono wax xun oo ku saabsan ZooKeeper, mabda'a, nidaamku wuu shaqeeyaa, laakiin waxaa dhacda in dadku aysan isticmaalin sababtoo ah java-phobia, sababtoo ah ClickHouse waa nidaam wanaagsan, oo ku qoran C ++, oo aad isticmaali karto iyo wax walba way hagaagi doonaan . Iyo ZooKeeper wuxuu ku jiraa Java. Si kastaba ha ahaatee xitaa ma rabto inaad eegto, laakiin markaa waxaad isticmaali kartaa ku celcelinta gacanta.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

ClickHouse waa nidaam wax ku ool ah. Baahidaada ayay ku xisaabtamaysaa. Haddii aad haysato ku-dabaynta gacanta, markaa waxaad samayn kartaa miis la qaybiyay oo eegaya nuqulladaada gacanta oo sameeya guuldarro dhexdooda ah. Oo waxaa jira xitaa ikhtiyaar gaar ah oo kuu ogolaanaya inaad iska ilaaliso flops, xitaa haddii khadadkaagu si nidaamsan u kala duwan yihiin.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Dhibaatooyin kale ayaa iman kara haddii aad isticmaasho matoorada miiska hore. ClickHouse waa dhisme leh farabadan matoorada miiska kala duwan. Dhammaan kiisaska halista ah, sida ku qoran dukumeentiga, isticmaal jaantusyada qoyska MergeTree. Iyo inta kale oo dhan - tani waa sidaas, kiisaska shakhsi ahaaneed ama imtixaannada.

Miiska MergeTree, uma baahnid inaad haysato wax taariikh iyo wakhti ah. Wali waad isticmaali kartaa Haddii aysan jirin taariikh iyo waqti, qor in default waa 2000. Tani way shaqayn doontaa oo uma baahna ilo.

Iyo nooca cusub ee server-ka, waxaad xitaa sheegi kartaa inaad leedahay qaybin gaar ah oo aan furaha qaybinta lahayn. Waxay ahaan doontaa isku mid.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Dhanka kale, waxaad isticmaali kartaa matoorada miiska hore. Tusaale ahaan, buuxi xogta hal mar oo eeg, marooji oo tirtir. Waxaad isticmaali kartaa Log.

Ama kaydinta mugga yar ee habaynta dhexe waa StripeLog ama TinyLog.

Xusuusta waxa la isticmaali karaa haddi xadiga xogtu yartahay oo aad si fudud wax ugu rogto RAM-ka.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

ClickHouse runtii ma jecla xogta dib loo habeeyey.

Waa kan tusaale caadi ah. Tani waa URL aad u tiro badan. Waxaad gelisaa miiska xiga. Kadibna waxay go'aansadeen inay ku biiraan iyaga, laakiin tani ma shaqayn doonto, sida caadiga ah, sababtoo ah ClickHouse kaliya waxay taageertaa Hash JOIN. Haddii aanay jirin RAM ku filan xog badan oo u baahan in lagu xidho, markaa ku biir ma shaqayn doono*.

Haddii xogtu ay tahay mid heer sare ah, ka dibna ha welwelin, ku kaydi qaab aan caadi ahayn, URL-yada ayaa si toos ah ugu jira miiska ugu weyn.

* oo hadda ClickHouse sidoo kale waxay leedahay isku-darka isku-dhafka ah, waxayna ku shaqeysaa xaalado aan xogta dhexe ku habboonayn RAM-ka. Laakiin tani waa mid aan waxtar lahayn, taladana waa ay sii soconaysaa.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Tusaalooyin kale oo lamaane ah, laakiin waxaan horeyba uga shakisanahay inay yihiin qaab-diidmo iyo in kale.

ClickHouse waxay leedahay hal cillad oo la yaqaan. Ma garanayo sida loo cusbooneysiiyo*. Siyaabaha qaarkood, tani xitaa way fiican tahay. Haddii aad haysatid xog muhiim ah, tusaale ahaan, xisaabinta, markaa qofna ma awoodi doono inuu soo diro, sababtoo ah ma jiraan wax cusub.

* Taageerada cusboonaysiinta iyo tirtirida qaabka dufcadda ayaa lagu daray wakhti dheer ka hor.

Laakiin waxaa jira siyaabo gaar ah oo u oggolaanaya cusbooneysiinta sida haddii gadaal. Tusaale ahaan, miisaska sida ReplaceMergeTree. Waxay sameeyaan cusbooneysiin inta lagu jiro isku-darka asalka. Waxaad tan ku qasbi kartaa adigoo isticmaalaya miiska kor u qaad Laakiin tan marar badan ha samayn, sababtoo ah waxay si buuxda u qori doontaa qaybta.

Ku biirista la qaybiyey ee ClickHouse ayaa sidoo kale si liidata ay u maareeyaan qorsheha weydiinta.

Xun, laakiin mararka qaarkood ok.

Isticmaalka ClickHouse kaliya si aad dib ugu akhrido xogta adoo isticmaalaya xulashada*.

Kuma talin lahaa isticmaalka ClickHouse xisaabaha dhibka badan. Laakiin tani gabi ahaanba run maaha, sababtoo ah mar hore ayaanu ka guurnay taladan. Waxaan dhawaan ku darnay awoodda lagu dabaqi karo moodooyinka barashada mashiinka gudaha ClickHouse - Catboost. Wayna i dhibaysaa sababtoo ah waxaan u maleynayaa, "Waa maxay cabsida. Tani waa inta wareeg ee byte kasta ay soo baxdo! Runtii waan necbahay in saacadaha lagu lumiyo byteska.

Isticmaalka wax ku oolka ah ee ClickHouse. Alexey Milovidov (Yandex)

Laakiin ha ka baqin, rakib ClickHouse, wax walbaa way fiicnaan doonaan. Haddii ay jiraan, waxaan leenahay bulsho. By the way, bulshadu waa adiga. Oo haddii aad wax dhibaato ah ku qabtid, waxaad ugu yaraan aadi kartaa sheekeysigayaga, waxaana rajeyneynaa inay ku caawin doonaan.

Su'aalahaada

Waad ku mahadsan tahay warbixinta! Halkeen ka caban karaa shilka ClickHouse?

Aniga shaqsi ahaan ayaad hadda iigu dacwoon kartaa.

Waxaan dhawaan bilaabay isticmaalka ClickHouse. Isla markiiba waxaan ka tuuray cli interface.

Maxaa dhibco ah.

Wax yar ka dib waxaan ku dhacay seerfarkii aniga oo door yar wata.

Waxaad leedahay karti.

Waxaan furay bug GitHub ah, laakiin waa la iska indhatiray.

Waan arki doonnaa.

Alexey ayaa i khiyaameeyay inaan ka qayb galo warbixinta, isagoo ballan qaaday inuu ii sheegi doono sida aad u gasho xogta gudaha.

Aad u fudud.

Waxaan gartay tan shalay. Faahfaahin dheeraad ah

Halkaas ma jiraan khiyaamo xun. Waxa jira uun isku xidhid block-by-block. Asal ahaan waa LZ4, waxaad awood u yeelan kartaa ZSTD*. Waxay ka soo jeedaan 64 kilobytes ilaa 1 megabyte.

* Waxa kale oo jira taageero loogu talagalay codecs isku-buufinta gaarka ah oo loo isticmaali karo silsilad leh algorithms kale.

blocks ma xog cayriin ah baa?

Ma aha gebi ahaanba cayriin. Waxaa jira habab. Haddii aad leedahay tiir tiro, markaas nambarada safka ku jira waxaa lagu meeleeyaa soo koobid.

Waan arkayaa.

Alexey, tusaale la socday uniqExact oo ka sarreeya IP-yada, tusaale ahaan in uniqExact ay qaadato waqti dheer in lagu xisaabiyo khadadka marka loo eego tirooyinka, iyo wixii la mid ah. Ka warran haddaynu isticmaalno dheen dhegahayaga oo aynu tuurno wakhtiga saxitaanka? Taasi waa, waxaad mooddaa inaad sheegtay in diskooga aanu aad uga duwanayn. Haddii aan akhrino xariiqyada saxanka oo aan tuurno, isku darkayadu miyay dhakhso badanayaan mise maya? Mise halkan ayaan weli wax yar ka heli doonnaa? Waxay ila tahay inaad tan tijaabisay, laakiin sabab qaar ka mid ah kuma aadan tilmaamin bartilmaameedka.

Waxaan filayaa inay ka gaabin doonto tuurista la'aanta. Xaaladdan oo kale, cinwaanka IP-ga waa in laga soosaaraa xadhigga. Dabcan, ClickHouse, ciwaanka IP-gayada sidoo kale waa la wanaajiyey. Aad baannu u dadaalnay, laakiin halkaas waxaad haysataa tirooyinka ku qoran foomka toban kun. Aad u dhib badan. Dhanka kale, shaqada uniqExact waxay si tartiib tartiib ah ugu shaqeyn doontaa xargaha, ma aha oo kaliya sababtoo ah kuwani waa xargaha, laakiin sidoo kale sababtoo ah takhasus kale oo algorithm ayaa la doortay. Xargaha si fudud ayaa loo habeeyaa.

Maxaa dhacaya haddii aan qaadanno nooc xogeed oo dheeraad ah? Tusaale ahaan, waxaan qornay id-ka isticmaalaha, oo aan ku dhex jirnay, u qornay si line ah, ka dibna la xoqay, ma ka sii xiiso badan tahay mise maya?

shaki ayaan qabaa. Waxaan u maleynayaa inay xitaa murugo badan noqon doonto, sababtoo ah ka dib oo dhan, tirooyinka kala-soocidda waa dhibaato halis ah. Waxay ila tahay in saaxiibkani uu xitaa warbixin ka bixiyay sida ay u adag tahay in tirooyin lagu kala saaro toban kun, laakiin malaha.

Alexey, aad baad ugu mahadsantahay warbixinta! Aad baad ugu mahadsantahay ClickHouse! Waxaan qabaa su'aal ku saabsan qorshayaasha. Ma jiraan wax qorshayaal ah oo ku saabsan sifo si aan dhammaystirnayn loo cusboonaysiiyo qaamuusyada?

Taasi waa, qayb dib u bilaabay?

Haa Haa. Sida awooda lagu dejiyo goobta MySQL, ie cusboonaysii ka dib si xogtan kaliya loo raro haddii qaamuusku aad u weyn yahay.

Muuqaal aad u xiiso badan. Oo waxaan filayaa in qof uu ku soo jeediyay sheekadeena. Malaha xataa adiga ayay ahayd.

U malayn maayo.

Way fiicantahay, hadda waxaa soo baxday in ay jiraan laba codsi. Oo si tartiib ah ayaad u bilaabi kartaa inaad sameyso. Laakiin waxaan rabaa inaan isla markiiba kaaga digo in habkani uu yahay mid fudud in la fuliyo. Taasi waa, aragti ahaan, waxaad u baahan tahay oo kaliya inaad ku qorto lambarka nooca miiska ka dibna qor: nooca ka yar kan iyo sida. Tani waxay ka dhigan tahay, inay u badan tahay, waxaan u soo bandhigi doonaa tan kuwa xiiseeya. Ma tahay xamaasad?

Haa, laakiin, nasiib daro, kuma jiro C++.

Saaxiibadaa ma yaqaaniin sida wax loogu qoro C++?

qof baan helayaa

Wayn*.

* muuqaalka ayaa lagu daray laba bilood ka dib warbixinta - qoraaga su'aasha ayaa soo saaray oo u diray kiisa codsi qaadasho.

Waad ku mahadsan tahay!

Hello! Waad ku mahadsan tahay warbixinta! Waxaad sheegtay in ClickHouse uu aad ugu wanaagsan yahay isticmaalka dhammaan agabka uu heli karo. Afhayeenka ku xiga Luxoft ayaa ka hadlay xalkiisa Boostada Ruushka. Wuxuu sheegay inay runtii jeclaayeen ClickHouse, laakiin ma aysan isticmaalin halkii ay ku tartami lahaayeen si sax ah sababtoo ah waxay cuni jirtay dhammaan CPU. Oo way ku xidhi waayeen dhismahooda, ZooKeeper-kooda oo wata dockers. Suurtagal ma tahay in si uun loo xaddido ClickHouse si aanay u cunin wax kasta oo diyaar u ah?

Haa, waa suurtogal waana mid aad u fudud. Haddii aad rabto in aad isticmaasho koofiyadaha yaryar, ka dibna kaliya qor set max_threads = 1. Taasina waa, waxay ku fulin doontaa codsiga hal xudun. Waxaa intaa dheer, waxaad u cayimi kartaa goobaha kala duwan ee isticmaalayaasha kala duwan. Markaa dhib malahan. Una sheeg asxaabtaada Luxoft inaysan wanaagsanayn inay goobtan ka helin dukumeentiga.

Alexey, hello! Waxaan jeclaan lahaa inaan wax ka weydiiyo su'aashan. Tani maaha markii ugu horeysay ee aan maqlo in dad badani ay bilaabayaan inay ClickHouse u isticmaalaan kaydinta logyada. Warbixinta waxaad sheegtay inaadan samayn tan, i.e. uma baahnid inaad kaydiso xargaha dhaadheer. Maxaad u malaynaysaa?

Marka hore, logu waa, sida caadiga ah, ma aha xadhig dheer. Waxaa jira, dabcan, ka-reebis. Tusaale ahaan, qaar ka mid ah adeegyada ku qoran java waxay tuurayaan wax ka reeban, waa la qoray. Iyo wixii la mid ah wareeg aan dhammaad lahayn, iyo booska darawalka adagi wuu dhammaadaa. Xalku waa mid aad u fudud. Haddii khadadka ay aad u dheer yihiin, ka dibna gooya. Maxaa dheer macnaheedu? Tobanaan kilobytes ayaa xun*.

* Noocyadii ugu dambeeyay ee ClickHouse, "laqabsiga granularity index" waa la furay, taas oo meesha ka saaraysa dhibaatada kaydinta safafka dhaadheer inta badan.

Kiiloobyte caadi ma yahay?

Waa caadi.

Hello! Waad ku mahadsan tahay warbixinta! Mar hore ayaan arrintan ku waydiiyay sheekada, laakiin ma xasuusto haddii aan jawaab ka helay. Ma jiraan qorshayaal lagu balaadhinayo qaybta WITH habka CTE?

Weli ma aha. Qaybtayada WITH waa wax aan macquul ahayn. Waxay noo tahay muuqaal yar oo kale.

waan fahmay Mahadsanid!

Waad ku mahadsan tahay warbixinta! Aad u xiiso badan! Su'aal caalami ah. Ma jiraan wax qorshayaal ah oo lagu beddelayo tirtirka xogta, laga yaabee qaab nooc ka mid ah saxarada?

Waa daruuri. Tani waa hawshayada ugu horeysa ee safkayaga. Waxaan hadda si firfircoon uga fekereynaa sida wax walba loo sameeyo si sax ah. Oo waa inaad bilowdaa inaad riixdo kiiboodhka*.

* riix badhamada kiiboodhka oo wax walba sameeyay.

Tani si uun ma u saameyn doontaa waxqabadka nidaamka mise maya? Gelintu ma u degdegi doontaa sida ay hadda tahay?

Waxaa laga yaabaa in ay naftooda tirtiraan iyo cusbooneysiinta laftooda ay noqon doonaan kuwo aad u culus, laakiin tani ma saameyn doonto waxqabadka xulashada ama waxqabadka wax-qabadyada.

Iyo hal su'aal oo kale oo yar. Bandhigga waxaad ka hadashay furaha aasaasiga ah. Sidaa darteed, waxaan leenahay qaybinta, taas oo bille ah by default, sax? Oo marka aan dejino kala duwanaansho taariikheed oo ku habboon bil gudaheed, markaa qaybtan kaliya ayaa la akhriyaa, sax?

Haa.

Suaal. Haddii aynaan dooran karin furaha aasaasiga ah, markaa sax ma tahay in si gaar ah loo sameeyo iyada oo loo eegayo goobta "Taariikhda" si gadaasha ay u yaraato dib u habeynta xogtan si ay ugu habboonaato si nidaamsan? Haddii aadan haysan su'aalo kala duwan oo aadan xitaa dooran karin fure kasta, ma mudan tahay inaad taariikhda geliso furaha aasaasiga ah?

Haa.

Waxaa laga yaabaa inay macno samaynayso in meel la geliyo furaha aasaasiga ah oo si fiican u cadaadin doona xogta haddii goobtan lagu kala saaro. Tusaale ahaan, aqoonsiga isticmaalaha. Isticmaalaha, tusaale ahaan, wuxuu aadaa isla goobta. Xaaladdan, geli id ​​isticmaale iyo waqti. Ka dibna xogtaada si fiican ayaa loo cadaadin doonaa. Dhanka taariikhda, haddii aadan runtii haysan oo aadan weligaa weydiin taariikhaha kala duwan, markaa uma baahnid inaad taariikhda geliso furaha aasaasiga ah.

OK aad baad u mahadsantahay!

Source: www.habr.com

Add a comment