Kalim në ClickHouse: 3 vjet më vonë

Tre vjetĂ« mĂ« parĂ«, Viktor Taranavskiy dhe Aleksey Milovidov nga Yandex ishin nĂ« skenĂ« HighLoad++ folĂ«m, sa i mirĂ« Ă«shtĂ« ClickHouse dhe si nuk ngadalĂ«sohet. NdĂ«rsa nĂ« skenĂ«n pĂ«rballĂ« ishte AleksandĂ«r Zaytsev me prezentim rreth kalimit nĂ« ClickHouse nga njĂ« DB analitike tjetĂ«r dhe pĂ«rfundimi se ClickHouse, sigurisht, Ă«shtĂ« e mirĂ«, por jo shumĂ« e pĂ«rshtatshme. Kur nĂ« vitin 2016 kompania LifeStreet, nĂ« tĂ« cilĂ«n Aleksandri atĂ«herĂ« punonte, po kalonte njĂ« sistem analitik multi-petabajt nĂ« ClickHouse, kjo ishte njĂ« "rrugĂ« me tulla tĂ« verdha", e mbushur me rreziqe tĂ« panjohura— ClickHouse atĂ«herĂ« dukej si njĂ« minĂ«.

Tre vjet mĂ« vonĂ« ClickHouse ka ardhur shumĂ« mĂ« mirë— gjatĂ« kĂ«saj kohe Aleksandri themeloi kompaninĂ« Altinity, e cila jo vetĂ«m qĂ« ndihmon nĂ« kalimin nĂ« ClickHouse disa projekte, por gjithashtu pĂ«rmirĂ«son produktin vetĂ« sĂ« bashku me kolegĂ«t nga Yandex. TashmĂ« ClickHouse nuk Ă«shtĂ« ende njĂ« shĂ«titje pa ndarje, por gjithashtu nuk Ă«shtĂ« mĂ« njĂ« minĂ«.

Aleksandri merret me sisteme të shpërndara që nga viti 2003, duke zhvilluar projekte të mëdha mbi MySQL, Oracle dhe Vertica. Në konferencën e kaluar HighLoad++ 2019 Aleksandri, një nga pionierët e përdorimit ClickHouse, tregoi se çfarë përfaqëson tani kjo DB. Ne do të mësojmë për tiparet kryesore ClickHouse: çfarë e dallon atë nga sistemet e tjera dhe në cilat raste është më efektive ta përdorim. Në shembuj, do të shqyrtojmë praktikat e reja dhe të provuara nga projektet për ndërtimin e sistemeve mbi ClickHouse.

Luaj videon

Retrospektivë: çfarë ndodhi 3 vjet më parë

Tre vjet më parë ne po kalonim kompaninë LifeStreet në ClickHouse nga një bazë të dhënash analitike tjetër, dhe migraimi i analitikës së rrjetit reklamues dukej kështu:

  • Qershor 2016. NĂ« OpenSource ka dalĂ« ClickHouse dhe filloi projekti ynĂ«;
  • Gusht. Proof Of Concept: njĂ« rrjet i madh reklamues, infrastruktura dhe 200-300 terabajt tĂ« dhĂ«nash;
  • Tetor. TĂ« dhĂ«nat e para nĂ« prodhim;
  • TĂ« DhjetĂ«. Ngarkesa e plotĂ« produktive— 10-50 miliard ngjarjesh nĂ« ditĂ«.
  • Qershor 2017. Kalimi i suksesshĂ«m i pĂ«rdoruesve nĂ« ClickHouse, 2.5 petabajt tĂ« dhĂ«nash nĂ« njĂ« klasĂ« prej 60 serverĂ«sh.

Gjatë procesit të migrimit, kuptimi se ClickHouse është një sistem i mirë, me të cilin është kënaqësi të punosh, por është një projekt i brendshëm i kompanisë Yandex. Prandaj ka nuanca: Yandex fillimisht do të merret me porositë e veta të brendshme dhe vetëm pastaj me komunitetin dhe nevojat e përdoruesve të jashtëm, dhe ClickHouse atëherë nuk arrinte në nivelin e ndërmarrjes në shumë fusha funksionale. Prandaj, në mars 2017 ne themeluam kompaninë Altinity, për ta bërë ClickHouse edhe më të shpejtë dhe më të lehtë jo vetëm për Yandex, por edhe për përdoruesit e tjerë. Dhe tani ne:

  • TrajmĂ« dhe ndihmojmĂ« nĂ« ndĂ«rtimin e zgjidhjeve mbi ClickHouse nĂ« mĂ«nyrĂ« qĂ« klientĂ«t tĂ« mos bĂ«jnĂ« gabime, dhe qĂ« zgjidhja tĂ« funksionojĂ« nĂ« pĂ«rfundim;
  • SigurojmĂ« mbĂ«shtetje 24/7 ClickHouse-instalimeve;
  • ZhvillojmĂ« projekte tĂ« ekosistemit tonĂ«;
  • Aktivisht kontributojmĂ« nĂ« vetĂ« ClickHouse, duke iu pĂ«rgjigjur kĂ«rkesave tĂ« pĂ«rdoruesve, tĂ« cilĂ«t duan tĂ« shohin disa funksionalitete.

Dhe natyrisht, ne ndihmojmë në kalimin në ClickHouse me MySQL, Vertica, Oracle, Greenplum, Redshift dhe sisteme të tjera. Ne kemi marrë pjesë në kalime të ndryshme dhe të gjitha janë e suksesshme.

Kalim në ClickHouse: 3 vjet më vonë

Pse të kalosh në ClickHouse

Nuk ngadalëson! Kjo është arsyeja kryesore. ClickHouse - është një bazë të dhënash shumë e shpejtë për skenarë të ndryshëm:

Kalim në ClickHouse: 3 vjet më vonë

Citatet e rastësishme nga njerëzit që punojnë gjatë me ClickHouse.

Shkallëzueshmëria. Në një DB tjetër, mund të arrijmë një performancë të mirë në një server, por ClickHouse mund të shkallëzohet jo vetëm vertikalisht, por edhe horizontalisht, thjesht duke shtuar serverë. Gjithçka nuk funksionon aq smoothly, sa do të donim, por funksionon. Mund të rritet sistemi me rritjen e biznesit. Kjo është e rëndësishme, sepse nuk jemi të kufizuar në zgjidhje tani dhe gjithmonë ka potencial për zhvillim.

Portabilitet. Nuk ka lidhje me diçka të vetme. P.sh., me Amazon Redshift është e vështirë të kalosh diku. Por ClickHouse mund të instalohet në laptopin tënd, server, ta ndajë në cloud, të shkojë në Kubernetes - nuk ka kufizime për eksploatimin e infrastrukturës. Kjo është e përshtatshme për të gjithë, dhe kjo është një avantazh i madh që shumë DB të tjera të ngjashme nuk e kanë.

Fleksibiliteti. ClickHouse nuk ndalet nĂ« diçka tĂ« vetme, p.sh., nĂ« Yandex.Metrica, por zhvillohet dhe pĂ«rdoret nĂ« njĂ« numĂ«r gjithnjĂ« e mĂ« tĂ« madh projektesh dhe industrish. Mund tĂ« zgjerohet duke shtuar mundĂ«si tĂ« reja pĂ«r zgjidhjen e detyrave tĂ« reja. P.sh., besohet se ruajtja e logeve nĂ« DB— Ă«shtĂ« njĂ« mospĂ«rputhje, prandaj pĂ«r kĂ«tĂ« Ă«shtĂ« menduar Elasticsearch. Por, falĂ« fleksibilitetit ClickHouse, mund tĂ« ruajmĂ« loget aty, dhe shpesh Ă«shtĂ« madje mĂ« mirĂ« se nĂ« Elasticsearch — nĂ« ClickHouse pĂ«r kĂ«tĂ« kĂ«rkohet 10 herĂ« mĂ« pak harduer.

Falësisht Open Source. Nuk ka nevojë të paguash për asgjë. Nuk ka nevojë të bisedosh për lejen për të vendosur sistemin në laptopin tënd ose server. Nuk ka pagesa të fshehta. Në të njëjtën kohë, asnjë teknologji tjetër të hapur burimi të bazave të dhënash nuk mund të konkurrojë me shpejtësinë e ClickHouse. MySQL, MariaDB, Greenplum - të gjithë ata janë shumë më të ngadalshëm.

Komuniteti, energjia dhe argëtim. Ka ClickHouse një komunitet të shkëlqyer: meetups, biseda dhe Aleksey Milovidov, i cili na ngarkon të gjithëve me energjinë dhe optimizmin e tij.

Kalimi në ClickHouse

Për të kaluar në ClickHouse nga diçka, ju nevojiten vetëm tre gjëra:

  • TĂ« kuptoni kufijtĂ« ClickHouse dhe pĂ«r çfarĂ« nuk i pĂ«rshtatet.
  • TĂ« shfrytĂ«zoni avantazhet e teknologjisĂ« dhe forcat e saj mĂ« tĂ« mĂ«dha.
  • TĂ« eksperimentoni. Edhe duke e kuptuar si funksionon ClickHouse, nuk Ă«shtĂ« gjithmonĂ« e mundur tĂ« parashikohet se kur Ă«shtĂ« mĂ« i shpejtĂ«, kur mĂ« i ngadalshĂ«m, kur mĂ« i mirĂ«, e kur mĂ« i keq. Prandaj provoni.

Problemi i migrimit

Ka vetëm një "por": nëse po migroni nga ClickHouse nga diçka tjetër, zakonisht diçka shkon keq. Jemi të zakonshëm me disa praktika dhe gjëra që funksionojnë në DB-në tonë të preferuar. Për shembull, çdo person që punon me SQ-bazat e të dhënave, i konsideron të domosdoshme këtë grup funksionesh:

  • transaksione;
  • kushtet;
  • konstistenca;
  • indekset;
  • UPDATE/DELETE;
  • NULLs;
  • milisekonda;
  • konvertimet automatike;
  • bashkime tĂ« shumta;
  • particionet e rastit;
  • mjetet e menaxhimit tĂ« klasterit.

Grupi është i domosdoshëm, por tre vjet më parë në ClickHouse nuk ekzistonte asnjë nga këto funksione! Tani nga ato që nuk janë realizuar ka mbetur më pak se gjysma: transaksione, kushtet, Konsistenca, milisekonda dhe konvertimi i tipit.

Dhe e rĂ«ndĂ«sishmja — ka disa praktika standarde dhe qasje qĂ« nuk funksionojnĂ« ose funksionojnĂ« ndryshe nga ç’mĂ«sojmĂ« ne. Gjithçka qĂ« shfaqet nĂ« ClickHouse , i pĂ«rket " ClickHouseClickHouse way", dmth. funksionet ndryshojnĂ« nga tĂ« tjerat Baza tĂ« tĂ« dhĂ«nave. PĂ«r shembull:Indekset nuk zgjidhen, por kalohen.

  • nuk janĂ« sinkrone, por asinkrone.
  • UPDATE/DELETE Bashkimet e shumta ekzistojnĂ«, por plani i kĂ«rkesĂ«s mungon. Si realizohen ato pastaj, njerĂ«zit nga bota e Baza tĂ« tĂ« dhĂ«nave nuk e kuptojnĂ« shumĂ«.
  • ScenarĂ«t e ClickHouse

Në vitin 1960, matematicieni amerikan me origjinë hungareze

Wigner E. P. shkroi njĂ« artikull " The unreasonable effectiveness of mathematics in the natural sciences" ("E pamundur efektiviteti i matematikĂ«s nĂ« shkencat natyrore") pĂ«r faktin se bota pĂ«rreth na pĂ«rshkruhet mirĂ« nga ligjet matematikore. Matematika — njĂ« shkencĂ« abstrakte, dhe ligjet fizike, tĂ« shprehura nĂ« formĂ«n matematikore, nuk janĂ« triviale, dhetheksoi se kjo Ă«shtĂ« shumĂ« e çuditshme. shkroi njĂ« artikull " Sipas mendimit tim,

— njĂ« çudi e tillĂ«. Duke e riformuluar Wigner, mund tĂ« thuhet kĂ«shtu: e habitshme efikasiteti i pamundur ClickHouse nĂ« aplikacione analitike tĂ« ndryshme! ClickHouse PĂ«r shembull, tĂ« marrim

Kalim në ClickHouse: 3 vjet më vonë

Real-Time Data Warehouse , nĂ« tĂ« cilin tĂ« dhĂ«nat merren pothuajse vazhdimisht. Ne duam tĂ« marrim nga ai kĂ«rkesa me vonesĂ« sekondore. Ju lutemi — pĂ«rdorim, sepse pĂ«r kĂ«tĂ« skenar Ă«shtĂ« projektuar. ClickHousepikĂ«risht kĂ«shtu pĂ«rdoret jo vetĂ«m nĂ« ueb, por edhe nĂ« analitikĂ«n marketingut dhe financave, ClickHouse AdTech , si dhe nĂ«detectio n e mashtrimit. NĂ«Real-time Data Warehouse pĂ«rdoret njĂ« strukturĂ« e ndĂ«rlikuar e tipit "yll" ose "gjak", shumĂ« tabela me (ndonjĂ«herĂ« tĂ« shumta), dhe tĂ« dhĂ«nat zakonisht ruhen dhe ndryshojnĂ« nĂ« disa sisteme. JOIN TĂ« marrim njĂ« tjetĂ«r skenar —

Time Series : monitorimi i pajisjeve, rrjeteve, statistika e pĂ«rdorimit, interneti i gjĂ«rave. KĂ«tu ne pĂ«rballemi me ngjarje mjaft tĂ« thjeshta tĂ« renditura me kohĂ«.pĂ«r kĂ«tĂ« nuk Ă«shtĂ« projektuar fillimisht, por ka treguar rezultate tĂ« mira, kĂ«shtu qĂ« kompanitĂ« e mĂ«dha e pĂ«rdorin ClickHouse si njĂ« depo pĂ«r informacionin e monitorimit. PĂ«r tĂ« studiuar, nĂ«se ClickHouse pĂ«rshtatet pĂ«r time-series, ne kemi bĂ«rĂ« njĂ« benchmark mbi qasjen dhe rezultatet ClickHouse pĂ«r seritĂ« e kohĂ«s, ne bĂ«mĂ« njĂ« benchmark tĂ« bazuar nĂ« qasjen dhe rezultatet InfluxDB dhe TimescaleDB — bazat e tĂ« dhĂ«nave tĂ« specializuara time-series. databases. Doli, qĂ« ClickHouse, madje pa optimizim pĂ«r kĂ«to detyra, fiton dhe nĂ« fushĂ«n e huaj:

Kalim në ClickHouse: 3 vjet më vonë

NĂ« time-series. zakonisht pĂ«rdoret njĂ« tabelĂ« e ngushtĂ« — disa kolona tĂ« vogla. Nga monitorimi mund tĂ« vijnĂ« shumĂ« tĂ« dhĂ«na — miliona regjistrime nĂ« sekondĂ« — dhe zakonisht ato vijnĂ« me inserts tĂ« vogla (trafik nĂ« kohĂ« reale streaming). Prandaj, ne kemi nevojĂ« pĂ«r njĂ« skenar tjetĂ«r tĂ« insertit, dhe vetĂ« kĂ«rkesat — me disa specifika tĂ« saj.

Log Management. Grumbullimi i log-eve në DB zakonisht është i keq, por në ClickHouse kjo mund të bëhet me disa komente, siç përshkruhet më lart. Shumë kompani përdorin ClickHouse pikërisht për këtë. Në këtë rast përdoret një tabelë e gjerë e sheshtë, ku ne ruajmë log-et tërësisht (për shembull, në formën JSON), ose i presim në pjesë. Të dhënat zakonisht merren me grupe të mëdha (skedarëve), dhe ne e kërkojmë sipas ndonjë fushe.

Për secilën nga këto funksione zakonisht përdoren Baza të të dhënave të specializuara. ClickHouse njëra mund ta bëjë të gjitha këto dhe aq mirë sa e tejkalon atë në performancë. Le të shqyrtojmë tani time-series. skenerin dhe si të "përgatitni" ClickHouse për këtë skenar.

Time-Series

Aktualisht ky Ă«shtĂ« skenari kryesor, pĂ«r tĂ« cilin ClickHouse njihet si zgjidhja standarte. Time-series — Ă«shtĂ« njĂ« grup ngjarjesh tĂ« renditura me kohĂ«, qĂ« pĂ«rfaqĂ«sojnĂ« ndryshimet e njĂ« procesi gjatĂ« kohĂ«s. PĂ«r shembull, mund tĂ« jetĂ« frekuenca e rrahjeve tĂ« zemrĂ«s pĂ«r ditĂ« ose numri i proceseve nĂ« sistem. Çdo gjĂ« qĂ« jep tik-tak tĂ« kohĂ«s me disa matje – Ă«shtĂ« pĂ«rdorimi i time-series.:

Kalim në ClickHouse: 3 vjet më vonë

Ngjarjet e tilla vijnë kryesisht nga monitorimi. Kjo mund të përfshijë jo vetëm monitorimin e uebit, por edhe të pajisjeve reale: automjeteve, sistemeve industriale, IoT, prodhimi ose taksitë pa pilot, në bagazhin e të cilëve Yandex tashmë po vendos ClickHouse-server.

PĂ«r shembull, ka kompani qĂ« mbledhin tĂ« dhĂ«na nga anijet. Çdo disa sekonda sensorĂ«t e njĂ« kontejneri dĂ«rgojnĂ« qindra matje tĂ« ndryshme. InxhinierĂ«t i studiojnĂ« ato, ndĂ«rtuan modele dhe pĂ«rpiqen tĂ« kuptojnĂ« sa eficient pĂ«rdoret anija, sepse njĂ« kontejner nuk duhet tĂ« qĂ«ndrojĂ« as njĂ« sekondĂ« pa punĂ«. Çdo ndalim Ă«shtĂ« humbje parash, prandaj Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« parashikohet rruge qĂ« ndalesat tĂ« jenĂ« minimale.

Aktualisht ka një rritje të DB-ve të specializuara, të cilat masin time-series.. Në faqen DB-Engines siç janë klasifikuar në mënyra të ndryshme bazat e të dhënave, dhe ato mund të shikohen sipas llojeve:

Kalim në ClickHouse: 3 vjet më vonë

Lloji më në rritje të shpejtë është time-seriess. Gjithashtu po rriten DB-të grafike, por time-seriess po rriten më shpejt gjatë viteve të fundit. Përfaqësues tipikë të kësaj familjeje të DB-ve janë InfluxDB, Prometheus, KDB, TimescaleDB (e ndërtuar mbi PostgreSQL), zgjidhjet nga Amazon. ClickHouse këtu gjithashtu mund të përdoret, dhe përdoret. Do të jap disa shembuj publik.

NjĂ« nga pioniere Ă«shtĂ« kompania CloudFlare (CDN-ofrues). Ata monitorojnĂ« CDN pĂ«rmes ClickHouse (DNS-kĂ«rkesat, HTTP-kĂ«rkesat) me njĂ« ngarkesĂ« tĂ« madhe — 6 milion ngjarje nĂ« sekondĂ«. TĂ« gjitha kalojnĂ« pĂ«rmes Kafka, dĂ«rguar nĂ« ClickHouse, e cila ofron mundĂ«sinĂ« pĂ«r tĂ« parĂ« nĂ« kohĂ« reale tabela tĂ« ngjarjeve nĂ« sistem.

Comcast është një nga liderët e telekomunikacioneve në SHBA: interneti, televizionin digjital, telefoninë. Ata krijuan një sistem të ngjashëm menaxhimi CDN në kuadër të Open Source projekti Apache Traffic Control për punën me të dhënat e tyre të mëdha. ClickHouse përdoret si backend për analitikë.

Percona ata e ndërtuan ClickHouse brenda PMM, për të ruajtur monitorimin e ndryshëm MySQL.

Kërkesat specifike

Për databazat time-series ka kërkesa specifike.

  • NjĂ« futje e shpejtĂ« nga shumĂ« agjentĂ«.Duhet tĂ« futim tĂ« dhĂ«na shumĂ« shpejt nga shumĂ« rrjedha. ClickHouse e bĂ«n kĂ«tĂ« mirĂ«, sepse tĂ« gjitha futjet janĂ« qĂ« nuk bllokojnĂ«. Çdo insert ka tĂ« bĂ«jĂ« me njĂ« skedĂ« tĂ« re nĂ« disk, dhe futjet e vogla mund tĂ« bufrizohen nĂ« njĂ« mĂ«nyrĂ« ose njĂ« tjetĂ«r. NĂ« ClickHouse Ă«shtĂ« mĂ« mirĂ« tĂ« futni tĂ« dhĂ«nat me grupe tĂ« mĂ«dha, e jo rresht pas rreshti.
  • Skema fleksibĂ«l. NĂ« time-series. zakonisht nuk e dimĂ« strukturĂ«n e tĂ« dhĂ«nave deri nĂ« fund. Mund tĂ« ndĂ«rtojmĂ« njĂ« sistem monitorimi pĂ«r njĂ« aplikacion tĂ« caktuar, por atĂ«herĂ« Ă«shtĂ« e vĂ«shtirĂ« ta pĂ«rdorim pĂ«r njĂ« aplikacion tjetĂ«r. PĂ«r kĂ«tĂ« kĂ«rkohet njĂ« skemĂ« mĂ« fleksibĂ«l. ClickHouse, qĂ« e lejon kĂ«tĂ« tĂ« bĂ«het, edhe pse Ă«shtĂ« njĂ« bazĂ« e tipizuar strikt.
  • Ruajtja efektive dhe "harresa" e tĂ« dhĂ«nave. Zakonisht nĂ« time-series. volume tĂ« mĂ«dha tĂ« dhĂ«nash, prandaj ato duhet tĂ« ruhet sa mĂ« efektivisht. PĂ«r shembull, e InfluxDB kompresimi i mirĂ« — Ă«shtĂ« veçoria e tij kryesore. Por pĂ«rveç ruajtjes, duhet tĂ« dimĂ« gjithashtu si tĂ« "harrojmĂ«" tĂ« dhĂ«nat e vjetra dhe tĂ« bĂ«jmĂ« ndonjĂ« downsampling — llogaritje automatike tĂ« agregateve.
  • KĂ«rkesat e shpejta tĂ« tĂ« dhĂ«nave tĂ« agreguara. Disa herĂ« Ă«shtĂ« interesante tĂ« shikoni 5 minutat e fundit me saktĂ«si deri nĂ« milisekondĂ«, por pĂ«r tĂ« dhĂ«nat mujore, granulariteti minutor ose sekondar mund tĂ« mos jetĂ« e nevojshme — statistika e pĂ«rgjithshme Ă«shtĂ« e mjaftueshme. MbĂ«shtetje e tillĂ« Ă«shtĂ« e nevojshme, ndryshe kĂ«rkesa pĂ«r 3 muaj do tĂ« realizohet shumĂ« ngadalĂ«, edhe nĂ« ClickHouse.
  • KĂ«rkesat e tipit "last point, as of». KĂ«to janĂ« pĂ«rcaktimin e time-series. kĂ«rkesat: shohim matjen e fundit ose gjendjen e sistemit nĂ« njĂ« moment tĂ« caktuar t. PĂ«r DB-nĂ« kĂ«to nuk janĂ« kĂ«rkesa shumĂ« tĂ« kĂ«ndshme, por ato duhet tĂ« mund tĂ« realizohen gjithashtu.
  • "Bashkimi" i serive kohore. Time-series — Ă«shtĂ« njĂ« seri e kohore. NĂ«se ka dy seri kohore, shpesh nevojitet t'i bashkojmĂ« dhe t'i korrelacionojmĂ« ato. Jo nĂ« tĂ« gjitha DB-tĂ« Ă«shtĂ« e lehtĂ« tĂ« bĂ«het kjo, veçanĂ«risht me seritĂ« kohore qĂ« nuk janĂ« tĂ« rregullta: kĂ«tu — njĂ« sĂ«rĂ« pĂ«rkohĂ«sish, atje — tjetra. Mund tĂ« llogariten mesatarĂ«t, por ndoshta gjithsesi do tĂ« ketĂ« njĂ« vend bosh, kĂ«shtu qĂ« nuk Ă«shtĂ« e qartĂ«.

Le të shohim se si këto kërkesa realizohen në ClickHouse.

Skema

NĂ« ClickHouse njĂ« skemĂ« pĂ«r time-series. mund tĂ« bĂ«het nĂ« mĂ«nyra tĂ« ndryshme, nĂ« varĂ«si tĂ« shkallĂ«s sĂ« rregullt tĂ« tĂ« dhĂ«nave. Mund tĂ« ndĂ«rtojmĂ« njĂ« sistem nĂ« tĂ« dhĂ«na tĂ« rregullta, kur e dimĂ« tĂ« gjitha metrikat paraprakisht. PĂ«r shembull, kĂ«shtu bĂ«ri CloudFlare me monitorimin CDN — kjo Ă«shtĂ« njĂ« sistem i optimizuar mirĂ«. Mund tĂ« ndĂ«rtojmĂ« njĂ« sistem mĂ« tĂ« pĂ«rgjithshĂ«m, i cili monitoron gjithĂ« infrastrukturĂ«n, shĂ«rbime tĂ« ndryshme. NĂ« rastet e tĂ« dhĂ«nave jo tĂ« rregullta, ne nuk e dimĂ« paraprakisht se çfarĂ« po monitorojmĂ« — dhe ndoshta, ky Ă«shtĂ« rasti mĂ« i pĂ«rgjithshĂ«m.

TĂ« dhĂ«nat e rregullta. Kolonat. Skema e thjeshtĂ« – kolonat me llojet e nevojshme:

CREATE TABLE cpu (
  created_date Date DEFAULT today(),  
  created_at DateTime DEFAULT now(),  
  time String,  
  tags_id UInt32,  /* join to dim_tag */
  usage_user Float64,  
  usage_system Float64,  
  usage_idle Float64,  
  usage_nice Float64,  
  usage_iowait Float64,  
  usage_irq Float64,  
  usage_softirq Float64,  
  usage_steal Float64,  
  usage_guest Float64,  
  usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Kjo është një tabelë e zakonshme që monitoron një aktivitet të caktuar për ngarkesën e sistemit (përdorues, system, idle, nice). E thjeshtë dhe e përshtatshme, por jo fleksibile. Nëse duam një skemë më fleksibile, mund të përdorim seria.

Të dhëna jo të rregullta. Seritë:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  )
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

Struktura Nested — janĂ« dy seria: metrics.name dhe metrics.value. KĂ«tu mund tĂ« ruhen tĂ« dhĂ«na tĂ« tilla monitoruese si seria tĂ« emrave dhe seria tĂ« vlerave nĂ« secilin ngjarje. PĂ«r njĂ« optimizim tĂ« mĂ«tejshĂ«m, nĂ« vend tĂ« njĂ« strukture tĂ« tillĂ« mund tĂ« krijojmĂ« disa. PĂ«r shembull, njĂ« — pĂ«r float-vlerĂ«n, njĂ« tjetĂ«r — pĂ«r int-vlerĂ«n, sepse int duam tĂ« ruajmĂ« mĂ« efektivisht.

Por me këtë strukturë është më e vështirë të aksesosh. Do të duhet të përdorësh një strukturë speciale, përmes funksioneve speciale për të nxjerrë vlerat fillimisht nga indeksi, e më pas nga seria:

SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...

Por kjo funksionon ende mjaft shpejt. NjĂ« mĂ«nyrĂ« tjetĂ«r pĂ«r tĂ« ruajtur tĂ« dhĂ«nat jo tĂ« rregullta – rreshtat.

TĂ« dhĂ«na jo tĂ« rregullta. Rreshtat. NĂ« kĂ«tĂ« mĂ«nyrĂ« tradicionale, pa seria ruhen menjĂ«herĂ« emrat dhe vlerat. NĂ«se nga njĂ« pajisje vijnĂ« menjĂ«herĂ« 5,000 matje — gjenerohen 5,000 rreshta nĂ« DB:

CREATE TABLE cpu_rlc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metric_name LowCardinality(String),  
  metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);


SELECT 
    maxIf(metric_value, metric_name = 'usage_user'),
    ... 
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)

ClickHouse kjo e pĂ«rballon — ka zgjerime speciale ClickHouse SQL. PĂ«r shembull, maxIf — njĂ« funksion special qĂ« llogarit maksimumin e metrikes nĂ«n njĂ« kusht tĂ« caktuar. Mund tĂ« shkruash disa shprehje tĂ« tilla nĂ« njĂ« kĂ«rkesĂ« dhe menjĂ«herĂ« tĂ« llogaritĂ«sh vlerĂ«n pĂ«r disa metrika.

Le të krahasojmë tri qasje:

Kalim në ClickHouse: 3 vjet më vonë

Detajet

Këtu kam shtuar "Madhësia e të dhënave në disk" për një grup të dhënash testuese. Në rastin e kolonave, kemi madhësinë më të vogël të të dhënave: kompresimi maksimal, shpejtësinë maksimale të kërkimeve, por paguajmë që duhet të regjistrojmë gjithçka menjëherë.

NĂ« rastin e serive, gjĂ«rat janĂ« pak mĂ« keq. TĂ« dhĂ«nat ende kompresohen mirĂ« dhe mund tĂ« ruajmĂ« njĂ« skemĂ« tĂ« pa rregullt. Por ClickHouse — njĂ« bazĂ« tĂ« dhĂ«nash kolonale, dhe kur fillojmĂ« tĂ« ruajmĂ« gjithçka nĂ« seri, ajo kthehet nĂ« njĂ« bazĂ« tĂ« dhĂ«nash rreshtore, dhe paguajmĂ« pĂ«r fleksibilitet me efikasitet. PĂ«r çdo operacion, do tĂ« duhet tĂ« lexojmĂ« tĂ« gjithĂ« serinĂ« nĂ« memorie, e pastaj tĂ« gjejmĂ« elementin e nevojshĂ«m — dhe tĂ« rritet seria, shpejtĂ«sia degradon.

Në një nga kompanitë që përdorin këtë qasje (për shembull, Uber), seritë ndahen në pjesë prej 128 elementësh. Të dhënat e disa mijëra metrike me një volum prej 200 TB të dhënash/ditë ruhen jo në një seri, por në 10 ose 30 seria me logjikë speciale për ruajtjen.

Qasja më e thjeshtë është me rreshta. Por të dhënat kompresohen keq, madhësia e tabelës bëhet e madhe, dhe kur kërkesat shkojnë për disa metrika, ClickHouse punon në mënyrë jo optimale.

Schema hibride

Supozoni se kemi zgjedhur skemën me seri. Por nqs e dimë se shumica e tabelave tona tregojnë vetëm metriks user dhe system, ne mund të materializojmë këto metrika në kolona në nivelin e tabelës në këtë mënyrë:

CREATE TABLE cpu_alc (
  created_date Date,  
  created_at DateTime,  
  time String,  
  tags_id UInt32,  
  metrics Nested(
    name LowCardinality(String),  
    value Float64
  ),
  usage_user Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
  usage_system Float64 
             MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

Kur vendosim ClickHouse automatikisht do t'i llogaritë ato. Kështu mund të bashkoni të mirën me të dobishmen: skema është fleksible dhe e përgjithshme, por ne kemi nxjerrë kolona që përdoren më shpesh. Dua të theksoj se kjo nuk kërkoi të ndryshoja vendosjen dhe ETL, i cili vazhdon të vendosë në tabelë seritë. Ne thjesht bëmë ALTER TABLE, shtuam disa kolona dhe mora një skemë hibride dhe më të shpejtë, që mund të fillojmë ta përdorim menjëherë.

Kodekët dhe kompresimi

PĂ«r time-series. Ă«shtĂ« e rĂ«ndĂ«sishme, sa mĂ« mirĂ« i paketoni tĂ« dhĂ«nat, sepse seria e informacionit mund tĂ« jetĂ« shumĂ« e madhe. NĂ« ClickHouse ka njĂ« set mjetesh pĂ«r arritjen e efektit tĂ« kompresimit 1:10, 1:20, dhe ndonjĂ«herĂ« edhe mĂ« shumĂ«. Kjo do tĂ« thotĂ« se tĂ« dhĂ«nat e paketuara me volumin 1 TB nĂ« disk zĂ«nĂ« 50-100 GB. MadhĂ«sia mĂ« e vogĂ«l — Ă«shtĂ« mirĂ«, tĂ« dhĂ«nat lexohen mĂ« shpejt dhe mund tĂ« pĂ«rpunohen.

Për të arritur një nivel të lartë kompresimi, ClickHouse mbështet kodekët e mëposhtëm:

Kalim në ClickHouse: 3 vjet më vonë

Shembull tabele:

CREATE TABLE benchmark.cpu_codecs_lz4 (
    created_date Date DEFAULT today(), 
    created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4), 
    tags_id UInt32, 
    usage_user Float64 Codec(Gorilla, LZ4), 
    usage_system Float64 Codec(Gorilla, LZ4), 
    usage_idle Float64 Codec(Gorilla, LZ4), 
    usage_nice Float64 Codec(Gorilla, LZ4), 
    usage_iowait Float64 Codec(Gorilla, LZ4), 
    usage_irq Float64 Codec(Gorilla, LZ4), 
    usage_softirq Float64 Codec(Gorilla, LZ4), 
    usage_steal Float64 Codec(Gorilla, LZ4), 
    usage_guest Float64 Codec(Gorilla, LZ4), 
    usage_guest_nice Float64 Codec(Gorilla, LZ4), 
    additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);

KĂ«tu ne pĂ«rcaktojmĂ« kodekĂ«t DoubleDelta nĂ« njĂ« rast, kurse nĂ« tĂ« dytin — Gorilla, dhe patjetĂ«r shtojmĂ« edhe LZ4 kompresimin. Si rezultat, madhĂ«sia e tĂ« dhĂ«nave nĂ« disk zvogĂ«lohet ndjeshĂ«m:

Kalim në ClickHouse: 3 vjet më vonë

Këtu tregohet se sa hapësirë zënë të dhënat e njëjta, por duke përdorur kodeka dhe kompresione të ndryshme:

  • nĂ« njĂ« skedar tĂ« kompresuar GZIP nĂ« disk;
  • nĂ« ClickHouse pa kodeka, por me kompresimin ZSTD;
  • nĂ« ClickHouse me kodeka dhe kompresimin LZ4 dhe ZSTD.

Duket që tabelat me kodekë zënë shumë më pak hapësirë.

Madhësia ka rëndësi

Po aq e rëndësishme të zgjidhni tipin e duhur të të dhënave:

Kalim në ClickHouse: 3 vjet më vonë

NĂ« tĂ« gjitha shembujt e sipĂ«rm kam pĂ«rdorur Float64. Por nĂ«se do tĂ« kishim zgjedhur Float32, do tĂ« kishte qenĂ« madje mĂ« mirĂ«. Kjo Ă«shtĂ« demonstruar mirĂ« nga ekipi i PerkonĂ«s nĂ« artikullin nĂ« lidhjen e mĂ«sipĂ«rme. ËshtĂ« e rĂ«ndĂ«sishme tĂ« pĂ«rdorim tipin mĂ« kompakt tĂ« mundshĂ«m qĂ« i pĂ«rshtatet detyrĂ«s: madje mĂ« pak pĂ«r madhĂ«sinĂ« nĂ« disk, sesa pĂ«r shpejtĂ«sinĂ« e pyetjeve. ClickHouse Ă«shtĂ« shumĂ« i ndjeshĂ«m ndaj kĂ«tij faktori.

NĂ«se mund tĂ« pĂ«rdorni int32 nĂ« vend tĂ« int64, pritni njĂ« rritje pothuajse dyfish tĂ« performancĂ«s. TĂ« dhĂ«nat zĂ«nĂ« mĂ« pak kujtesĂ« dhe e gjithĂ« "aritmetika" punon shumĂ« mĂ« shpejt. ClickHouse brenda vetes — njĂ« sistem shumĂ« i tipizuar, ai e shfrytĂ«zon maksimalisht tĂ« gjitha mundĂ«sitĂ« qĂ« ofrojnĂ« sistemet moderne.

Agregimi dhe Materialized Views

Agregimi dhe pamjet e materializuara lejojnë krijimin e agregatëve për raste të ndryshme:

Kalim në ClickHouse: 3 vjet më vonë

PĂ«r shembull, mund tĂ« keni tĂ« dhĂ«na origjinale tĂ« paagreguara, dhe mbi to mund tĂ« vendosni pamje tĂ« ndryshme materializuara me shumimin automatik pĂ«rmes motorit tĂ« veçantĂ« SummingMergeTree (SMT). SMT — Ă«shtĂ« njĂ« strukturĂ« e veçantĂ« e dhĂ«nash qĂ« bĂ«n agregatĂ«t automatikisht. TĂ« dhĂ«nat e papĂ«rpunuara futen nĂ« bazĂ«n e tĂ« dhĂ«nave, ato agregatizohen automatikisht, dhe menjĂ«herĂ« mund tĂ« pĂ«rdoren pĂ«r dashboardet.

TTL — "harrojmĂ«" tĂ« dhĂ«nat e vjetra

Si "tĂ« harrojmĂ«" tĂ« dhĂ«nat qĂ« nuk janĂ« mĂ« tĂ« nevojshme? ClickHouse e di kĂ«tĂ«. Kur krijoni tabela, mund tĂ« specifikoni TTL shprehje: pĂ«r shembull, qĂ« tĂ« dhĂ«nat minutore i ruajmĂ« njĂ« ditĂ«, ato ditore — 30 ditĂ«, kurse ato javore ose mujore nuk i prekim kurrĂ«:

CREATE TABLE aggr_by_minute


TTL time + interval 1 day

CREATE TABLE aggr_by_day


TTL time + interval 30 day

CREATE TABLE aggr_by_week


/* no TTL */

Multi-tier — ndajmĂ« tĂ« dhĂ«nat sipas disqeve

Duke zhvilluar këtë idenë, të dhënat mund të ruhen në ClickHouse në vende të ndryshme. Supozoni se dëshirojmë të ruajmë të dhënat e nxehta nga java e fundit në një disk lokal shumë të shpejtë, SSDkurse të dhënat më historike i ruajmë në një vend tjetër. Në ClickHouse tani është e mundur:

Kalim në ClickHouse: 3 vjet më vonë

Mund të konfigurohet një politikë ruajtjeje (storage policy) në atë mënyrë që ClickHouse automatikisht të transferojë të dhënat kur të arrihen disa kushte në një ruajtje tjetër.

Por kjo nuk është e gjitha. Në nivelin e një tabele të veçantë, mund të përcaktoni rregulla, kur pikërisht sipas kohës të dhënat kalojnë në ruajtjen e ftohtë. Për shembull, 7 ditë të dhënat qëndrojnë në një disk shumë të shpejtë, dhe gjithçka që është më e vjetër transferohet në të ngadalshëm. Kjo është e mirë sepse lejon sistemin të ruajë performancën maksimale, duke kontrolluar menjëherë shpenzimet dhe pa shpenzuar fonde për të dhënat e ftohta:

CREATE TABLE 
... 
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume', 
    date + INTERVAL 180 DAY DELETE

Mundësi unike ClickHouse

NĂ« pothuajse gjithçka nĂ« ClickHouse ka kĂ«to "carakteristika", por ato neutralizohen nga ekskluziviteti — ajo qĂ« nuk e ka ndonjĂ« DB tjetĂ«r. PĂ«r shembull, kĂ«tu janĂ« disa nga funksionet unike ClickHouse:

  • Tabelat. NĂ« ClickHouse mbĂ«shtetje shumĂ« e mirĂ« pĂ«r tabela, si dhe mundĂ«sinĂ« pĂ«r tĂ« kryer llogaritje tĂ« komplikuara mbi to.
  • Struktura agreguese e tĂ« dhĂ«nave.Kjo Ă«shtĂ« njĂ« nga "tiparet" vrasĂ«se. ClickHouseMegjithĂ«se ekipi nga Yandex thotĂ« se ne nuk dĂ«shirojmĂ« tĂ« agregojmĂ« tĂ« dhĂ«nat, tĂ« gjithĂ« agregojnĂ« nĂ« ClickHouse, sepse Ă«shtĂ« e shpejtĂ« dhe e pĂ«rshtatshme.
  • Pamjet materializuara.SĂ« bashku me struktura agreguese tĂ« tĂ« dhĂ«nave, pamjet materializuara lejojnĂ« tĂ« bĂ«jnĂ« njĂ« agregim tĂ« pĂ«rshtatshĂ«m. trafik nĂ« kohĂ« reale ClickHouse SQL.
  • Ky Ă«shtĂ« njĂ« zgjerim i gjuhĂ«sme disa funksione shtesĂ« dhe ekskluzive qĂ« janĂ« vetĂ«m nĂ« SQL . MĂ« parĂ«, kjo ishte si njĂ« zgjerim nga njĂ«ra anĂ«, dhe nga ana tjetĂ«r — njĂ« disavantazh. Tani pothuajse tĂ« gjitha disavantazhet nĂ« krahasim me ClickHouseSQL 92 i kemi eliminuar, tani Ă«shtĂ« vetĂ«m njĂ« zgjerim. Lambda
  • –shprehjet.A kanĂ« ato ende ndonjĂ« databazĂ« tjetĂ«r?A janĂ« ata akoma nĂ« ndonjĂ« bazĂ« tjetĂ«r tĂ« dhĂ«nash?
  • ML-mbĂ«shtetje.Kjo Ă«shtĂ« e pranishme nĂ« DB tĂ« ndryshme, nĂ« disa mĂ« mirĂ«, nĂ« disa mĂ« keq.
  • Kodi i hapur. Ne mund tĂ« zgjerim ClickHouse se bashku. Tani nĂ« ClickHouse rreth 500 kontribuues, dhe ky numĂ«r po rritet vazhdimisht.

Kërkesa të sofistikuara

Në ClickHouse ka shumë mënyra të ndryshme për të bërë të njëjtën gjë. Për shembull, mund të merrni vlerën e fundit nga tabela në tre mënyra CPU (ka edhe një të katërt, por është më eksotike).

E para tregon se si e bën të lehtë në ClickHouse kërkesat, kur dëshoni të kontrolloni se tuple çfarë përmban një nënkërkesë. Kjo është diçka që personalisht më ka munguar shumë në bazat e tjera të të dhënave. Nëse dua të krahasoj diçka me nënkërkesën, në bazat e tjera të të dhënave mund të krahasoj vetëm skalarë, ndersa për disa kolona duhet të shkruaj JOIN. Në ClickHouse mund të përdorim tuple:

SELECT *
  FROM cpu 
 WHERE (tags_id, created_at) IN 
    (SELECT tags_id, max(created_at)
        FROM cpu 
        GROUP BY tags_id)

Mënyra e dytë bën të njëjtën gjë, por përdor funksionin agregat argMax:

SELECT 
    argMax(usage_user), created_at),
    argMax(usage_system), created_at),
...
 FROM cpu 

Në ClickHouse ka disa dhjetëra funksione agregate, dhe nëse përdorim kombinatorë, për ligjet e kombinatorikës do të marrim rreth një mijë. ArgMax është një nga funksionet që llogarit vlerën maksimale: kërkesa kthen vlerën usage_user, në të cilën arrihet vlera maksimale created_at:

SELECT now() as created_at,
       cpu.*
  FROM (SELECT DISTINCT tags_id from cpu) base 
  ASOF LEFT JOIN cpu USING (tags_id, created_at)

ASOF JOIN është "bashkimi" i rreshtave me kohë të ndryshme. Kjo është një funksion unik për bazat e të dhënave, i cili ka edhe në kdb+. Nëse ka dy seri kohore me kohë të ndryshme, ASOF JOIN lejon që ato të zhvendosen dhe të bashkohen në një kërkesë. Për çdo vlerë në një seri kohore, gjendet vlera më e afërt në tjetrën, dhe ato kthehen në një rresht:

Kalim në ClickHouse: 3 vjet më vonë

Funksionet analitike

Në standardin SQL-2003 mund të shkruhen kështu:

SELECT origin,
       timestamp,
       timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
       timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
       ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
       COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
  FROM mytable
ORDER BY origin, timestamp;

NĂ« ClickHouse kĂ«shtu nuk funksionon — ai nuk mbĂ«shtet standardin SQL-2003 dhe ndoshta kurrĂ« nuk do ta bĂ«jĂ« kĂ«tĂ«. NĂ« vend tĂ« kĂ«saj, nĂ« ClickHouse Ă«shtĂ« e zakonshme tĂ« shkruhen kĂ«shtu:

Kalim në ClickHouse: 3 vjet më vonë

Premtova lambda – ja ato!

Kjo Ă«shtĂ« njĂ« ekuivalent i kĂ«rkesĂ«s analitike nĂ« standardin SQL-2003: ajo llogarit diferencĂ«n midis dy timestamp, duration, numri rendor — gjithçka qĂ« zakonisht ne e konsiderojmĂ« funksione analitike. NĂ« ClickHouse i llogarisim ato pĂ«rmes array-ve: sĂ« pari pĂ«rmbledhim tĂ« dhĂ«nat nĂ« njĂ« array, mĂ« pas i bĂ«jmĂ« gjithçka qĂ« duam nĂ« atĂ« array, dhe pastaj i shtrijmĂ« sĂ«rish. Kjo nuk Ă«shtĂ« shumĂ« e pĂ«rshtatshme, kĂ«rkon dashuri pĂ«r programimin funksional, tĂ« paktĂ«n, por Ă«shtĂ« shumĂ« fleksibil.

Funksionet speciale

Për më tepër në ClickHouse ka shumë funksione të specializuara. Për shembull, si të përcaktohet se sa session-e kalojnë në të njëjtën kohë? Një detyrë tipike për monitorimin është të përcaktohet ngarkesa maksimale me një kërkesë. Në ClickHouse ka një funksion të veçantë për këtë qëllim:

Kalim në ClickHouse: 3 vjet më vonë

Në të vërtetë, për shumë qëllime në ClickHouse ka funksione speciale:

  • runningDifference, runningAccumulate, neighbor;
  • sumMap(key, value);
  • timeSeriesGroupSum(uid, timestamp, value);
  • timeSeriesGroupRateSum(uid, timestamp, value);
  • skewPop, skewSamp, kurtPop, kurtSamp;
  • WITH FILL / WITH TIES;
  • simpleLinearRegression, stochasticLinearRegression.

Ky nuk është një listë e plotë funksionesh, në total janë 500-600. Një këshillë: të gjitha funksionet në ClickHouse janë në tabelën sistemike (jo të gjitha të dokumentuara, por të gjitha interesante):

select * from system.functions order by name

ClickHouse vetë mban shumë informacion rreth vetes, përfshirë log tables, query_log, log i gjurmimit, log i operacioneve me blloqe të dhënash (part_log), log i metrikeve, dhe log sistemor, që zakonisht shkruan në disk. Log-u i metrikeve është time-series. në ClickHouse realisht: ClickHouseBD-ja vetë mund të luajë rolin e time-series. bazës së të dhënave, duke "ngrënë" vetveten.

Kalim në ClickHouse: 3 vjet më vonë

Kjo Ă«shtĂ« gjithashtu njĂ« gjĂ« unike — pasi ne bĂ«jmĂ« mirĂ« punĂ«n pĂ«r time-series., pse nuk mund tĂ« ruajmĂ« gjithçka qĂ« na nevojitet brenda vetes? Nuk na nevojitet Prometheus, ne ruajmĂ« gjithçka brenda vetes. Aktivizuam Grafana dhe monitorojmĂ« vetveten. MegjithatĂ«, nĂ«se ClickHouse rahin, atĂ«herĂ« nuk do ta shohim, — pse, — ndaj zakonisht nuk bĂ«het kĂ«shtu.

Klastër i madh ose shumë të vegjël ClickHouse

ÇfarĂ« Ă«shtĂ« mĂ« mirĂ« — njĂ« klaster i madh ose shumĂ« tĂ« vegjĂ«l ClickHouse? Qasja tradicionale pĂ«r DWH Ă«shtĂ« njĂ« klaster i madh, nĂ« tĂ« cilin ndahen skema pĂ«r çdo aplikacion. Ne shkuam te administratori i BD-sĂ« — na jepni njĂ« skemĂ«, dhe na u dha ajo:

Kalim në ClickHouse: 3 vjet më vonë

Në ClickHouse mund të bëhet ndryshe. Mund të bëjmë çdo aplikacion të ketë skemën e tij të vet. ClickHouse:

Kalim në ClickHouse: 3 vjet më vonë

Një klaster i madh monstroz dhe admin të padëshiruar nuk janë më të nevojshme. Ne mund të japim çdo aplikacion skemën e vet, dhe zhvilluesi mund ta bëjë atë vetë, sepse DWH instalohet shumë lehtë dhe nuk kërkon administrim të komplikuar: ClickHousePor nëse kemi shumë ClickHouse , dhe duam ta instalohet shpesh, atëherë dëshirojmë ta automatizojmë këtë proces. Për këtë mund, për shembull, të përdorim

Kalim në ClickHouse: 3 vjet më vonë

Por nëse kemi shumë ClickHouse-operatorin. Në Kubernetes dhe clickhouseKubernetes ClickHouse Kubernetes ClickHouse mund të vendoset «me një klik»: unë mund të shtyp butonin, të nis manifestin dhe baza është gati. Mund të krijoj menjëherë një skemë, të filloj të ngarkoj metrikat, dhe brenda 5 minutash kam tashmë një panel Grafana. Janë kaq të thjeshta!

ÇfarĂ« doli pĂ«rfundimisht?

Pra, ClickHouse — Ă«shtĂ«:

  • Shpejt. TĂ« gjithĂ« e dinĂ« kĂ«tĂ«.
  • ThjeshtĂ«. Pak e diskutueshme, por mendoj se Ă«shtĂ« e vĂ«shtirĂ« nĂ« mĂ«sim, e lehtĂ« nĂ« luftĂ«. NĂ«se kupton si ClickHouse punon, mĂ« pas gjithçka Ă«shtĂ« shumĂ« e thjeshtĂ«.
  • Universale. Ai pĂ«rshtatet pĂ«r skenarĂ« tĂ« ndryshĂ«m: DWH, SeritĂ« e KohĂ«s, Ruajtja e Log-eve. Por kjo nuk Ă«shtĂ« baza e tĂ« dhĂ«nave OLTP, prandaj mos u pĂ«rpiqni tĂ« bĂ«ni aty futje dhe lexime tĂ« shkurtra. bazĂ« tĂ« dhĂ«nash, prandaj mos u pĂ«rpiqni tĂ« bĂ«ni atje inserte dhe leximet e shkurtra.
  • Interesante. Ndoshta, ai qĂ« punon me ClickHouse, ka pĂ«rjetuar shumĂ« minuta interesante nĂ« kuptim tĂ« mirĂ« dhe tĂ« keq. PĂ«r shembull, doli njĂ« version i ri, gjithçka u ndal. Ose kur ishit duke u munduar me njĂ« detyrĂ« pĂ«r dy ditĂ«, por pas njĂ« pyetjeje nĂ« Telegram, detyra u zgjidh nĂ« dy minuta. Ose si nĂ« konferencĂ« nĂ« ligjĂ«ratĂ«n e Alexey Milovidov, ekrani i ClickHouse prishi transmetimin HighLoad++. KĂ«to lloje gjĂ«rash ndodhin vazhdimisht dhe e bĂ«jnĂ« jetĂ«n tonĂ« me ClickHouse tĂ« gjallĂ« dhe interesante!

Prezantimin mund ta shihni këtu.

Kalim në ClickHouse: 3 vjet më vonë

Takimi i pritur i zhvilluesve të sistemeve me ngarkesë të lartë në HighLoad++ do të mbahet më 9 dhe 10 nëntor në Skolkovo. Më në fund do të jetë një konferencë offline (përkundër të gjitha masave të sigurisë), sepse energjia e HighLoad++ nuk mund të paketizohet në online.

Për konferencën ne gjejmë dhe ju tregojmë raste mbi mundësitë maksimale të teknologjive: HighLoad++ ka qenë, është dhe do të jetë vendi i vetëm ku mund të mësoni për dy ditë si funksionojnë Facebook, Yandex, VKontakte, Google dhe Amazon.

Duke mbajtur takimet tona pa ndërprerje që nga viti 2007, këtë vit do të takohemi për herë të 14-të. Gjatë kësaj kohe, konferenca është rritur dhjetëfish, vitin e kaluar ngjarja kryesore e industrisë mbajti 3339 pjesëmarrës, 165 folës të ligjëratave dhe takimeve, dhe për njëkohësisht kishte 16 rrugë.
Vitin e kaluar ju ofruam 20 autobuzĂ«, 5280 liter çaji dhe kafeje, 1650 litra lĂ«ngje dhe 10200 shishe uji. Gjithashtu 2640 kilogramĂ« ushqim, 16000 pjatĂ« dhe 25000 gota. PĂ«r mĂ« tepĂ«r, me paratĂ« e fituara nga letĂ«rsia e ricikluar, ne mbollĂ«m 100 fidanĂ« dushku 🙂

Biletat mund tĂ« blihen kĂ«tu, tĂ« merrni lajme pĂ«r konferencĂ«n — kĂ«tu, dhe tĂ« flisni — nĂ« tĂ« gjitha rrjetet sociale: Telegram, Facebook, Vkontakte dhe Twitter.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster