Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Trots att det finns mycket data nÀstan överallt nuförtiden, Àr analytiska DBMS fortfarande ganska exotiska. De Àr dÄligt kÀnda och Ànnu sÀmre pÄ att anvÀndas effektivt. MÄnga fortsÀtter att "Àta kaktusar" med MySQL eller PostgreSQL, som Àr utformade för andra scenarier, lider med NoSQL eller betalar överpris för kommersiella lösningar. ClickHouse förÀndrar spelreglerna och sÀnker tröskeln avsevÀrt för att ge sig in i den analytiska DBMS-vÀrlden.

Föredraget Àr frÄn BackEnd Conf 2018 och publiceras med talarens tillstÄnd.


Spela upp video

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)
Vem Àr jag och varför pratar jag om ClickHouse? Jag Àr utvecklingschef pÄ LifeStreet, ett företag som anvÀnder ClickHouse. Jag Àr ocksÄ grundare av Altinity, en Yandex-partner som marknadsför ClickHouse och hjÀlper Yandex att göra ClickHouse mer framgÄngsrikt. Jag Àr ocksÄ villig att dela med mig av min kunskap om ClickHouse.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och jag Àr inte Petya Zaitsevs bror. Jag fÄr ofta frÄgan om detta. Nej, vi Àr inte bröder.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

”Alla vet” att ClickHouse:

  • Mycket snabbt,
  • Mycket bekvĂ€mt,
  • AnvĂ€nds i Yandex.

Det Àr nÄgot mindre kÀnt i vilka företag och hur det anvÀnds.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Jag ska berÀtta varför, var och hur ClickHouse anvÀnds, förutom Yandex.

Jag kommer att berÀtta hur specifika uppgifter löses med hjÀlp av ClickHouse i olika företag, vilka ClickHouse-verktyg du kan anvÀnda för dina uppgifter och hur de anvÀndes i olika företag.

Jag har valt ut tre exempel som visar ClickHouse frÄn olika hÄll. Jag tror att det kommer att bli intressant.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Den första frĂ„gan Ă€r: ”Varför behöver vi ClickHouse?” Det verkar vara en ganska uppenbar frĂ„ga, men det finns fler Ă€n ett svar pĂ„ den.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • Det första svaret gĂ€ller prestanda. ClickHouse Ă€r vĂ€ldigt snabbt. Analys pĂ„ ClickHouse Ă€r ocksĂ„ vĂ€ldigt snabbt. Det kan ofta anvĂ€ndas dĂ€r nĂ„got annat fungerar vĂ€ldigt lĂ„ngsamt eller vĂ€ldigt dĂ„ligt.
  • Det andra svaret Ă€r kostnad. Och först och frĂ€mst, kostnaden för skalning. Vertica Ă€r till exempel en helt utmĂ€rkt databas. Den fungerar mycket bra om du inte har mĂ„nga terabyte data. Men nĂ€r vi pratar om hundratals terabyte eller petabyte blir kostnaden för licensering och support ganska betydande. Och det Ă€r dyrt. Och ClickHouse Ă€r gratis.
  • Det tredje svaret Ă€r driftskostnader. Detta Ă€r en nĂ„got annorlunda metod. RedShift Ă€r en utmĂ€rkt analog. Du kan skapa en lösning pĂ„ RedShift vĂ€ldigt snabbt. Det kommer att fungera bra, men samtidigt kommer du att betala Amazon en hel del varje timme, varje dag, varje mĂ„nad, eftersom det Ă€r en betydligt dyrare tjĂ€nst. Google BigQuery ocksĂ„. Om nĂ„gon har anvĂ€nt det vet de att man kan köra flera frĂ„gor dĂ€r och plötsligt fĂ„ en rĂ€kning pĂ„ hundratals dollar.

ClickHouse har inte dessa problem.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Var anvÀnds ClickHouse nu? Förutom Yandex anvÀnds ClickHouse av en mÀngd olika företag och företag.

  • Först och frĂ€mst Ă€r detta webbapplikationsanalys, d.v.s. detta Ă€r ett anvĂ€ndningsfall som kommer frĂ„n Yandex.
  • MĂ„nga AdTech-företag anvĂ€nder ClickHouse.
  • MĂ„nga företag som behöver analysera operativa loggar frĂ„n olika kĂ€llor.
  • Flera företag anvĂ€nder ClickHouse för att övervaka sĂ€kerhetsloggar. De laddar upp dem till ClickHouse, skapar rapporter och fĂ„r de resultat de behöver.
  • Företag börjar anvĂ€nda det inom finansiell analys, d.v.s. gradvis nĂ€rmar sig Ă€ven stora företag ClickHouse.
  • CloudFlare. Om nĂ„gon följer ClickHouse har de förmodligen hört namnet pĂ„ det hĂ€r företaget. Det Ă€r en av de viktigaste bidragsgivarna frĂ„n communityn. Och de har en vĂ€ldigt seriös ClickHouse-installation. Till exempel skapade de Kafka Engine för ClickHouse.
  • Telekomföretag har börjat anvĂ€nda det. Flera företag anvĂ€nder ClickHouse antingen som ett koncepttest eller redan i produktion.
  • Ett företag anvĂ€nder ClickHouse för att övervaka produktionsprocesser. De testar chip, skriver av en mĂ€ngd parametrar, det finns ungefĂ€r 2 000 egenskaper. Och sedan analyserar de om batchen Ă€r bra eller dĂ„lig.
  • Blockchain-analys. Det finns ett ryskt företag som heter Bloxy.info. Detta Ă€r en analys av ethereum-nĂ€tverket. De gjorde ocksĂ„ detta pĂ„ ClickHouse.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och storleken spelar ingen roll. Det finns mÄnga företag som anvÀnder en enda liten server, och det löser deras problem. Och Ànnu fler företag anvÀnder stora kluster av mÄnga servrar eller dussintals servrar.

Och om man tittar pÄ protokollen, sÄ:

  • Yandex: 500+ servrar, 25 miljarder poster per dag lagras dĂ€r.
  • LifeStreet: 60 servrar, cirka 75 miljarder poster per dag. FĂ€rre servrar, fler poster Ă€n Yandex.
  • CloudFlare: 36 servrar, 200 miljarder poster per dag lagrar de. De har Ă€nnu fĂ€rre servrar och lagrar Ă€nnu mer data.
  • Bloomberg: 102 server, ungefĂ€r en biljon poster per dag. RekordhĂ„llare för antalet poster.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Geografiskt sett Àr detta ocksÄ mycket. Den hÀr kartan visar en temperaturkarta över var ClickHouse anvÀnds i vÀrlden. Ryssland, Kina och Amerika sticker ut hÀr. Det finns fÄ europeiska lÀnder. Och fyra kluster kan identifieras.

Detta Àr en jÀmförande analys, det finns ingen anledning att leta efter absoluta siffror. Detta Àr en analys av besökare som lÀser engelsksprÄkigt material pÄ Altinitys webbplats, eftersom det inte finns nÄgra rysktalande anvÀndare dÀr. Och Ryssland, Ukraina, Vitryssland, d.v.s. den rysktalande delen av gemenskapen, Àr de mest talrika anvÀndarna. Sedan kommer USA och Kanada. Kina kommer ikapp mycket snabbt. För sex mÄnader sedan var Kina nÀstan obefintligt, nu har Kina redan gÄtt om Europa och fortsÀtter att vÀxa. Gamla Europa ligger inte lÄngt efter, och ledande inom anvÀndningen av ClickHouse Àr, konstigt nog, Frankrike.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Varför berÀttar jag allt detta? För att visa att ClickHouse hÄller pÄ att bli en standardlösning för stordataanalys och redan anvÀnds pÄ mÄnga stÀllen. Om du anvÀnder det Àr du inne pÄ rÀtt spÄr. Om du inte anvÀnder det Àn kan du inte vara rÀdd för att du kommer att vara ensam och att ingen kommer att hjÀlpa dig, eftersom mÄnga redan gör det.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Det hÀr Àr verkliga exempel pÄ hur ClickHouse anvÀnds i flera företag.

  • Det första exemplet Ă€r ett annonsnĂ€tverk: migrering frĂ„n Vertica till ClickHouse. Och jag kĂ€nner till flera företag som har migrerat frĂ„n Vertica eller hĂ„ller pĂ„ att migrera.
  • Det andra exemplet Ă€r en transaktionell lagring pĂ„ ClickHouse. Detta Ă€r ett exempel byggt pĂ„ anti-mönster. Allt som inte borde göras i ClickHouse enligt utvecklarnas rĂ„d görs hĂ€r. Och det görs sĂ„ effektivt att det fungerar. Och det fungerar mycket bĂ€ttre Ă€n en typisk transaktionell lösning.
  • Det tredje exemplet Ă€r distribuerad databehandling pĂ„ ClickHouse. Det fanns en frĂ„ga om hur ClickHouse kan integreras i Hadoop-ekosystemet. Jag ska visa ett exempel pĂ„ hur ett företag skapade nĂ„got i stil med en kartreducerad containeranalog pĂ„ ClickHouse, övervakade datalokalisering etc. för att berĂ€kna en mycket icke-trivial uppgift.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • LifeStreet – Detta Ă€r ett Ad Tech-företag som har all teknik som krĂ€vs för att driva ett annonsnĂ€tverk.
  • Hon arbetar med annonsoptimering och programmatisk budgivning.
  • Mycket data: cirka 10 miljarder hĂ€ndelser per dag. Samtidigt kan hĂ€ndelser delas in i flera underhĂ€ndelser.
  • Det finns mĂ„nga klienter av denna data, och det Ă€r inte bara mĂ€nniskor, utan mycket fler – det Ă€r olika algoritmer som arbetar med programmatisk budgivning.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Företaget har haft en lÄng och mödosam resa. Och jag pratade om det pÄ HighLoad. Först flyttade LifeStreet frÄn MySQL (med ett kort stopp pÄ Oracle) till Vertica. Och du kan hitta en artikel om det.

Och allt var mycket bra, men det blev snabbt tydligt att datamÀngden vÀxte och att Vertica var dyrt. SÄ olika alternativ söktes. NÄgra av dem listas hÀr. Och faktum Àr att vi gjorde proof of concept eller ibland prestandatester av nÀstan alla databaser som fanns tillgÀngliga pÄ marknaden frÄn 13 till 16 och som var ungefÀr lÀmpliga i funktionalitet. Och jag pratade ocksÄ om nÄgra av dem pÄ HighLoad.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Uppgiften var att migrera frÄn Vertica först och frÀmst, eftersom datamÀngden vÀxte. Och den vÀxte exponentiellt i flera Är. Sedan lades den pÄ hyllan, men ÀndÄ. Och med tanke pÄ denna tillvÀxt, affÀrskraven för den datamÀngd som analyser skulle göras pÄ, var det tydligt att det snart skulle pratas om petabyte. Och det Àr redan vÀldigt dyrt att betala för petabyte, sÄ de letade efter ett alternativ, vart de skulle ta vÀgen.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Vart skulle man ta vÀgen? Och lÀnge var det helt oklart vart man skulle ta vÀgen, för Ä ena sidan finns det kommersiella databaser, de verkar fungera bra. Vissa fungerar nÀstan lika bra som Vertica, vissa Àr sÀmre. Men de Àr alla dyra, inget billigare och bÀttre kunde hittas.

Å andra sidan finns det lösningar med öppen kĂ€llkod, vilka inte Ă€r sĂ€rskilt mĂ„nga, d.v.s. för analys kan man rĂ€kna dem pĂ„ fingrarna. Och de Ă€r gratis eller billiga, men de arbetar lĂ„ngsamt. Och de saknar ofta den nödvĂ€ndiga och anvĂ€ndbara funktionaliteten.

Och det fanns ingenting som kombinerade de goda sakerna som finns i kommersiella databaser och allt som Àr gratis som finns i öppen kÀllkod.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Det fanns ingenting förrÀn Yandex plötsligt drog ut ClickHouse som en trollkarl som drar en kanin ur en hatt. Och det var ett ovÀntat beslut, och folk stÀller sig fortfarande frÄgan: "Varför?", men ÀndÄ.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och direkt sommaren 2016 började vi titta pÄ vad ClickHouse Àr. Och det visade sig att det ibland kan vara snabbare Àn Vertica. Vi testade olika scenarier pÄ olika frÄgor. Och om frÄgan bara anvÀnde en tabell, dvs. utan nÄgra joins, dÄ var ClickHouse dubbelt sÄ snabb som Vertica.

Jag var inte lat och tittade pÄ Yandex tester hÀromdagen. Det Àr samma sak dÀr: ClickHouse Àr dubbelt sÄ snabb som Vertica, sÄ de pratar ofta om det.

Men om det finns joins i frÄgorna, dÄ Àr allt inte sÄ tydligt. Och ClickHouse kan vara dubbelt sÄ lÄngsamt som Vertica. Men om du korrigerar och skriver om frÄgan nÄgot, dÄ Àr de ungefÀr lika. Inte dÄligt. Och gratis.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och efter att ha mottagit testresultaten och granskat dem frÄn olika vinklar, gick LifeStreet till ClickHouse.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Det hÀr Àr 16:e Äret, vill jag pÄminna er. Det var som i skÀmtet om mössen som grÀt och stack sig, men fortsatte att Àta kaktusen. Och det berÀttades i detalj, det finns en video om det, etc.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

DÀrför kommer jag inte att gÄ in pÄ detaljer om det, jag kommer bara att prata om resultaten och nÄgra intressanta saker som jag inte pratade om dÄ.

Resultaten Àr:

  • Migreringen har lyckats och systemet har varit i produktion i över ett Ă„r.
  • Prestanda och flexibilitet har ökat. FrĂ„n 10 miljarder poster som vi hade rĂ„d att lagra per dag och inte lĂ€nge, lagrar LifeStreet nu 75 miljarder poster per dag och kan göra detta i 3 mĂ„nader eller mer. Om man rĂ€knar vid toppnivĂ„ lagras upp till en miljon hĂ€ndelser per sekund. Mer Ă€n en miljon SQL-frĂ„gor per dag flyger in i det hĂ€r systemet, frĂ€mst frĂ„n olika robotar.
  • Trots att ClickHouse började anvĂ€nda fler servrar Ă€n Vertica, sparades det ocksĂ„ pĂ„ hĂ„rdvara, eftersom Vertica anvĂ€nde ganska dyra SAS-diskar. ClickHouse anvĂ€nde SATA. Varför? För att Vertica har synkron insert. Och synkronisering krĂ€ver att diskarna inte saktar ner för mycket, och Ă€ven att nĂ€tverket inte saktar ner för mycket, d.v.s. det Ă€r en ganska dyr operation. Och i ClickHouse Ă€r insert asynkront. Dessutom kan man alltid skriva allt lokalt, det finns inga extra kostnader för detta, sĂ„ data kan infogas i ClickHouse mycket snabbare Ă€n i Vertica, Ă€ven pĂ„ inte de snabbaste diskarna. Och lĂ€sning Ă€r ungefĂ€r detsamma. LĂ€sning pĂ„ SATA, om de Ă€r i RAID, dĂ„ gĂ„r allt ganska snabbt.
  • Inte begrĂ€nsat av licens, d.v.s. 3 petabyte data pĂ„ 60 servrar (20 servrar Ă€r en replik) och 6 biljoner poster i fakta och aggregeringar. Inget liknande hade Vertica rĂ„d med.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Nu gÄr jag vidare till det praktiska i det hÀr exemplet.

  • Det första Ă€r ett effektivt system. Mycket beror pĂ„ systemet.
  • Det andra Ă€r att generera effektiv SQL.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

En typisk OLAP-frÄga Àr select. Vissa kolumner gÄr till group by, andra kolumner gÄr till aggregeringsfunktioner. Det finns where, vilket kan representeras som en del av kuben. Hela group by kan representeras som en projektion. Och det Àr dÀrför det kallas flerdimensionell dataanalys.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och ofta modelleras detta i form av ett stjÀrndiagram, nÀr det finns ett centralt faktum och egenskaper hos detta faktum pÄ sidorna, lÀngs strÄlarna.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och ur ett fysiskt designperspektiv, hur det passar in i tabellen, dÄ brukar de göra en normaliserad representation. Man kan avnormalisera, men det Àr dyrt pÄ disk och inte sÀrskilt effektivt nÀr det gÀller frÄgor. DÀrför brukar de göra en normaliserad representation, dvs. en faktatabell och mÄnga, mÄnga dimensionstabeller.

Men i ClickHouse fungerar det dÄligt. Det finns tvÄ anledningar:

  • Det första beror pĂ„ att ClickHouse inte har sĂ€rskilt bra joins, d.v.s. det finns joins, men de Ă€r dĂ„liga. Hittills dĂ„liga.
  • Det andra Ă€r att tabellerna inte uppdateras. Vanligtvis i dessa tabeller som ligger runt stjĂ€rnschemat behöver nĂ„got Ă€ndras. Till exempel klientnamnet, företagsnamnet etc. Och det fungerar inte.

Och det finns en vÀg ut ur detta i ClickHouse. Det finns faktiskt tvÄ:

  • Det första Ă€r att anvĂ€nda ordböcker. Externa ordböcker Ă€r det som hjĂ€lper till att lösa 99 % av problemen med stjĂ€rnschemat, uppdateringar etc.
  • Det andra Ă€r anvĂ€ndningen av arrayer. Arrayer hjĂ€lper ocksĂ„ till att bli av med joins och problem med normalisering.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • Inga kopplingar behövs.
  • Uppdaterbar. Sedan mars 2018 har en odokumenterad funktion dykt upp (du hittar den inte i dokumentationen) för att uppdatera ordböcker delvis, dvs. de poster som har Ă€ndrats. I praktiken Ă€r det som en tabell.
  • Alltid i minnet, sĂ„ kopplingar med en ordlista fungerar snabbare Ă€n om det vore en tabell som fanns pĂ„ disk och det inte var ett faktum att den fanns i cachen, troligtvis inte.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • Inget behov av joins heller.
  • Detta Ă€r en kompakt 1-till-mĂ„nga-representation.
  • Och enligt min mening Ă€r arrayer gjorda för nördar. Det hĂ€r Ă€r lambdafunktioner och sĂ„ vidare.

Detta Àr inte bara ett slagord. Det hÀr Àr en mycket kraftfull funktion som lÄter dig göra mÄnga saker vÀldigt enkelt och elegant.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Typiska exempel som hjÀlper till att lösa matriser. Dessa exempel Àr enkla och ganska illustrativa:

  • Sök efter taggar. Om du har hashtaggar dĂ€r och vill hitta inlĂ€gg efter hashtag.
  • Sök efter nyckel-vĂ€rde-par. Det finns ocksĂ„ vissa attribut med ett vĂ€rde.
  • Föra listor över nycklar som du behöver översĂ€tta till nĂ„got annat.

Alla dessa uppgifter kan lösas utan arrayer. Taggar kan placeras pÄ nÄgon rad och vÀljas med ett reguljÀrt uttryck eller i en separat tabell, men dÄ mÄste man göra joins.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och i ClickHouse behöver du inte göra nÄgonting, det rÀcker med att beskriva en strÀngmatris för hashtags eller skapa en kapslad struktur för system av nyckel-vÀrde-typ.

Kapslad struktur Àr kanske inte det bÀsta namnet. Det Àr tvÄ arrayer som har en gemensam del i namnet och nÄgra relaterade egenskaper.

Och det Àr vÀldigt enkelt att söka efter tagg. Det finns en funktion has, vilket kontrollerar att arrayen innehÄller ett element. Det var allt, vi hittade alla poster som relaterar till vÄr konferens.

Att söka efter sub-id Àr lite mer komplicerat. Vi behöver först hitta nyckelindexet och sedan ta elementet med detta index och kontrollera att det hÀr vÀrdet Àr vad vi behöver. Men det Àr ÀndÄ vÀldigt enkelt och kompakt.

Det reguljÀra uttryck du skulle vilja skriva om du lagrade allt pÄ en rad skulle för det första vara klumpigt. Och för det andra skulle det ta mycket lÀngre tid att arbeta Àn tvÄ arrayer.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Ett annat exempel. Du har en array dÀr du lagrar ID:n. Och du kan översÀtta dem till namn. Funktionen arrayMapDetta Àr en typisk lambda-funktion. Du skickar lambda-uttryck dit. Och den hÀmtar namnvÀrdet för varje ID frÄn ordlistan.

En sökning kan göras pÄ ett liknande sÀtt. En predikatfunktion skickas, som kontrollerar vad elementen motsvarar.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Dessa saker förenklar systemet avsevÀrt och löser mÄnga problem.

Men nÀsta problem vi stötte pÄ som jag vill nÀmna Àr effektiva frÄgor.

  • ClickHouse har ingen frĂ„geplanerare. Ingen alls.
  • Men komplexa frĂ„gor mĂ„ste Ă€ndĂ„ planeras. I vilka fall?
  • Om det finns flera kopplingar i frĂ„gan, slĂ„r du in dem i undersekvenser. Och ordningen i vilken de körs spelar roll.
  • Och den andra - om frĂ„gan Ă€r distribuerad. För i en distribuerad frĂ„ga exekveras endast den innersta delselekteringen distribuerat, och allt annat överförs till en server som du har anslutit och exekverat dĂ€r. DĂ€rför, om du har distribuerade frĂ„gor med mĂ„nga joins, mĂ„ste du vĂ€lja ordningen.

Och Àven i enklare fall bör ibland planerarens arbete göras och frÄgorna skrivas om nÄgot.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

HÀr Àr ett exempel. Till vÀnster, en frÄga som visar de 5 frÀmsta lÀnderna. Och det tar 2,5 sekunder, tror jag. Och till höger, samma frÄga, men nÄgot omskriven. IstÀllet för att gruppera efter strÀng började vi gruppera efter nyckel (int). Och det Àr snabbare. Och sedan kopplade vi en ordbok till resultatet. IstÀllet för 2,5 sekunder tar frÄgan 1,5 sekunder. Det Àr bra.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Ett liknande exempel med omskrivning av filter. HĂ€r Ă€r en frĂ„ga för Ryssland. Det tar 5 sekunder. Om vi ​​skriver om den pĂ„ ett sĂ„dant sĂ€tt att vi inte jĂ€mför en strĂ€ng, utan tal med nĂ„gon uppsĂ€ttning nycklar som relaterar till Ryssland, kommer det att gĂ„ mycket snabbare.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Det finns mÄnga sÄdana knep. Och de lÄter dig avsevÀrt snabba upp frÄgor som du tror redan fungerar snabbt, eller tvÀrtom, fungerar lÄngsamt. De kan göras Ànnu snabbare.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • Maximalt arbete i distribuerat lĂ€ge.
  • Sorterar efter minsta typer, som jag gjorde efter heltal.
  • Om det finns nĂ„gra kopplingar eller ordböcker Ă€r det bĂ€ttre att göra dem sist, nĂ€r du redan har Ă„tminstone delvis grupperad data, dĂ„ kommer kopplingsoperationen eller ordboksanropet att anropas fĂ€rre gĂ„nger och det kommer att gĂ„ snabbare.
  • Byte av filter.

Det finns andra tekniker Àn bara de jag har demonstrerat, och alla kan ibland avsevÀrt snabba upp exekveringen av frÄgor.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

LÄt oss gÄ vidare till nÀsta exempel. Företag X frÄn USA. Vad gör det?

Uppgiften var:

  • Offline-lĂ€nkning av annonstransaktioner.
  • Modellering av olika bindningsmodeller.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Vad Àr scenariot?

En vanlig besökare kommer till webbplatsen, till exempel, 20 gÄnger i mÄnaden frÄn olika annonser eller ibland utan annonser, eftersom hen kommer ihÄg den hÀr webbplatsen. Tittar pÄ nÄgra produkter, lÀgger dem i varukorgen, tar ut dem ur varukorgen. Och köper till slut nÄgot.

Rimliga frÄgor: "Vem ska fÄ betalt för reklam, om det behövs?" och "Vilken reklam pÄverkade honom, om den gjorde det?" Det vill sÀga, varför köpte han och hur kan vi göra det sÄ att personer som liknar den hÀr personen ocksÄ köper?

För att lösa detta problem behöver du koppla samman hÀndelserna som intrÀffar pÄ webbplatsen pÄ rÀtt sÀtt, d.v.s. pÄ nÄgot sÀtt skapa en koppling mellan dem. Sedan överföra dem för analys till DWH. Och baserat pÄ denna analys bygga modeller för vem som ska visa vilka annonser för.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

En annonstransaktion Àr en uppsÀttning relaterade anvÀndarhÀndelser som börjar med att en annons visas, sedan hÀnder nÄgot, sedan kanske ett köp, och sedan kan det finnas köp inom ett köp. Om det till exempel Àr en mobilapp eller ett mobilspel, sÄ installeras appen vanligtvis gratis, men om nÄgot annat görs dÀr, dÄ kan pengar krÀvas. Och ju mer en person spenderar i appen, desto mer vÀrdefull Àr den. Men för detta mÄste allt vara uppkopplat.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Det finns mÄnga modeller av bindning.

De mest populÀra Àr:

  • Senaste interaktion, dĂ€r interaktionen antingen Ă€r ett klick eller en visning.
  • Första interaktionen, d.v.s. det första som förde en person till webbplatsen.
  • LinjĂ€r kombination - lika andelar för alla.
  • Fading.
  • Och sĂ„ vidare.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och hur fungerade allt frĂ„n början? Det fanns Runtime och Cassandra. Cassandra anvĂ€ndes som transaktionslagring, d.v.s. alla relaterade transaktioner lagrades dĂ€r. Och nĂ€r en hĂ€ndelse intrĂ€ffade i Runtime, till exempel visning av en sida eller nĂ„got annat, dĂ„ gjordes en förfrĂ„gan till Cassandra – om en sĂ„dan person existerade eller inte. Sedan hĂ€mtades transaktionerna relaterade till honom. Och lĂ€nkningen utfördes.

Och om du har tur att begÀran har ett transaktions-ID, sÄ Àr det enkelt. Men oftast har du otur. SÄ du var tvungen att hitta den senaste transaktionen eller transaktionen med det senaste klicket, etc.

Och allt fungerade vÀldigt bra, sÄ lÀnge kopplingen var till det sista klicket. För klick, sÀg, 10 miljoner per dag, 300 miljoner per mÄnad, om man stÀller in ett fönster pÄ en mÄnad. Och eftersom allt i Cassandra mÄste finnas i minnet för att fungera snabbt, eftersom Runtime mÄste svara snabbt, dÄ krÀvdes ungefÀr 10-15 servrar.

Och nÀr de ville lÀnka en transaktion till displayen blev det inte sÄ roligt direkt. Och varför? Det Àr uppenbart att 30 gÄnger fler hÀndelser behöver lagras. Och följaktligen behövs 30 gÄnger fler servrar. Och det visar sig att detta Àr nÄgon slags astronomisk siffra. Att behÄlla upp till 500 servrar för att göra lÀnkningen, med tanke pÄ att det finns betydligt fÀrre servrar i Runtime, Àr nÄgon slags felaktig siffra. Och de började fundera pÄ vad de skulle göra.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och vi gick till ClickHouse. Och hur gör man det pÄ ClickHouse? Vid första anblicken verkar det som en uppsÀttning antimönster.

  • Transaktionen vĂ€xer, vi kopplar fler och fler nya hĂ€ndelser till den, d.v.s. den Ă€r muterbar, och ClickHouse fungerar inte sĂ€rskilt bra med muterbara objekt.
  • NĂ€r en besökare kommer till oss behöver vi extrahera hans transaktioner efter nyckel, efter hans besöks-ID. Detta Ă€r ocksĂ„ en punktfrĂ„ga, ClickHouse gör inte det. ClickHouse har vanligtvis stora ...skanningar, men hĂ€r behöver vi extrahera flera poster. Även ett antimönster.
  • Dessutom var transaktionen i json, men de ville inte skriva om den, sĂ„ de ville lagra json ostrukturerad, och om nödvĂ€ndigt, extrahera nĂ„got frĂ„n den. Och detta Ă€r ocksĂ„ ett antimönster.

Det vill sÀga en uppsÀttning antimönster.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Men trots det lyckades vi skapa ett system som fungerade mycket bra.

Vad gjordes? ClickHouse dök upp, dĂ€r loggar, uppdelade i poster, lades till. En attributionstjĂ€nst dök upp, som tog emot loggar frĂ„n ClickHouse. DĂ€refter tog den emot transaktioner som Ă€nnu inte kunde ha bearbetats för varje post efter besöks-ID, plus ögonblicksbilder, dvs. transaktioner som redan var lĂ€nkade, nĂ€mligen resultatet av tidigare arbete. FrĂ„n dem skapade den logik, valde rĂ€tt transaktion, kopplade nya hĂ€ndelser. Återigen skrev den till loggen. Loggen gick tillbaka till ClickHouse, dvs. detta Ă€r ett stĂ€ndigt cykliskt system. Och dessutom gick den till DWH för att analysera den dĂ€r.

Det fungerade inte sĂ€rskilt bra i den hĂ€r formen. Och för att göra det enklare för ClickHouse, nĂ€r det kom en förfrĂ„gan efter besöks-ID, grupperade de dessa förfrĂ„gningar i block om 1 000–2 000 besöks-ID:n och hĂ€mtade ut alla transaktioner för 1 000–2 000 personer. Och sedan fungerade allt.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Om du tittar inuti ClickHouse finns det bara 3 huvudbord som serverar allt detta.

Den första tabellen till vilken loggar laddas upp, och loggarna laddas upp praktiskt taget utan bearbetning.

Den andra tabellen. Genom den materialiserade vyn extraherades hÀndelser som Ànnu inte hade tillskrivits frÄn dessa loggar, dvs. orelaterade. Och genom den materialiserade vyn extraherades transaktioner frÄn dessa loggar för att skapa en ögonblicksbild. Det vill sÀga, en speciell materialiserad vy skapade en ögonblicksbild, nÀmligen transaktionens senast ackumulerade tillstÄnd.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

HÀr Àr texten skriven i SQL. Jag skulle vilja kommentera flera viktiga saker i den.

Det första viktiga Àr möjligheten att extrahera kolumner och fÀlt frÄn json i ClickHouse. Det vill sÀga, ClickHouse har nÄgra metoder för att arbeta med json. De Àr vÀldigt, vÀldigt primitiva.

visitParamExtractInt lÄter dig extrahera attribut frÄn json, d.v.s. den första trÀffen fungerar. Och pÄ sÄ sÀtt kan du extrahera transaktions-ID eller besöks-ID. Det Àr ett exempel.

För det andra anvÀnds ett knepigt materialiserat fÀlt hÀr. Vad betyder det? Det betyder att du inte kan infoga det i tabellen, d.v.s. det infogas inte, utan berÀknas och lagras nÀr det infogas. NÀr det infogas gör ClickHouse jobbet Ät dig. Och det du behöver senare hÀmtas frÄn json-filen.

I det hÀr fallet Àr den materialiserade vyn för obearbetade rader. Och den första tabellen med nÀstan rÄa loggar anvÀnds. Och vad gör den? Först Àndrar den sorteringen, d.v.s. sorteringen sker nu efter besöks-ID, eftersom vi snabbt behöver extrahera en transaktion för en specifik person.

Den andra viktiga saken Àr index_granularity. Om du har sett MergeTree Àr standardvÀrdet vanligtvis 8 192 index_granularity. Vad Àr det? Detta Àr indexets sparseness-parameter. I ClickHouse Àr indexet sparse, det indexerar aldrig varje post. Det gör detta var 8 192:e. Och detta Àr bra nÀr du behöver berÀkna mycket data, men dÄligt nÀr du behöver berÀkna lite, eftersom overheaden Àr stor. Och om du minskar indexgranulariteten minskar vi overheaden. Du kan inte minska den till ett, eftersom det kanske inte finns tillrÀckligt med minne. Indexet lagras alltid i minnet.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och ögonblicksbilden anvÀnder nÄgra andra intressanta ClickHouse-funktioner.

Först Àr det AggregatingMergeTree. Och AggregatingMergeTree lagrar argMax, d.v.s. detta Àr transaktionstillstÄndet som motsvarar den senaste tidsstÀmpeln. Nya transaktioner genereras stÀndigt för denna besökare. Och i det allra sista tillstÄndet för denna transaktion lade vi till en hÀndelse och vi fick ett nytt tillstÄnd. Det hamnade i ClickHouse igen. Och genom argMax i denna materialiserade vy kan vi alltid fÄ det aktuella tillstÄndet.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • Bindningen Ă€r frikopplad frĂ„n Runtime.
  • Lagrar och bearbetar upp till 3 miljarder transaktioner per mĂ„nad. Detta Ă€r en storleksordning mer Ă€n Cassandra, ett typiskt transaktionssystem.
  • Ett kluster av 2x5 ClickHouse-servrar. 5 servrar och varje server har en replika. Detta Ă€r Ă€nnu fĂ€rre Ă€n vad det var i Cassandra för att göra klickbaserad attribution, och hĂ€r har vi visningsbaserad. Det vill sĂ€ga, istĂ€llet för att öka antalet servrar med 30 gĂ„nger, minskades de.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och det sista exemplet Àr finansföretaget Y, som analyserade korrelationer mellan förÀndringar i aktiekurser.

Och uppgiften var denna:

  • Det finns cirka 5 000 aktier.
  • Citat Ă€r kĂ€nda var 100:e millisekund.
  • Informationen har samlats in under 10 Ă„r. Tydligen Ă€r det mer för vissa företag, mindre för andra.
  • Det finns ungefĂ€r 100 miljarder linjer totalt.

Och det var nödvÀndigt att berÀkna korrelationen mellan förÀndringarna.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

HÀr Àr tvÄ aktier och deras kurser. Om den ena gÄr upp och den andra gÄr upp, dÄ Àr detta en positiv korrelation, d.v.s. den ena vÀxer och den andra vÀxer. Om den ena gÄr upp, som i slutet av diagrammet, och den andra gÄr ner, dÄ Àr detta en negativ korrelation, d.v.s. nÀr den ena vÀxer, faller den andra.

Genom att analysera dessa ömsesidiga förÀndringar kan man göra förutsÀgelser pÄ finansmarknaden.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Men uppgiften Àr komplicerad. Vad görs för detta? Vi har 100 miljarder poster, som innehÄller: tid, lager och pris. Vi mÄste först berÀkna 100 miljarder gÄnger runningDifference frÄn prisalgoritmen. RunningDifference Àr en funktion i ClickHouse som sekventiellt berÀknar skillnaden mellan tvÄ rader.

Och efter det behöver du berÀkna korrelationen, och korrelationen behöver berÀknas för varje par. För 5 000 aktier finns det 12,5 miljoner par. Och det Àr mycket, d.v.s. du behöver berÀkna denna korrelationsfunktion 12,5 gÄnger.

Och om nĂ„gon glömde, sĂ„ Ă€r ͞x och ͞y den matematiska förvĂ€ntade siffran för urvalet. Det vill sĂ€ga, vi behöver berĂ€kna inte bara rötterna och summorna, utan ocksĂ„ nĂ„gra fler summor inom dessa summor. En hel massa berĂ€kningar mĂ„ste göras 12,5 miljoner gĂ„nger, och de mĂ„ste ocksĂ„ grupperas efter timmar. Och vi har ocksĂ„ mĂ„nga timmar. Och vi mĂ„ste göra det pĂ„ 60 sekunder. Det hĂ€r Ă€r ett skĂ€mt.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Vi var tvungna att fÄ det att fungera pÄ nÄgot sÀtt, eftersom allt detta fungerade vÀldigt, vÀldigt lÄngsamt innan ClickHouse dök upp.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

De försökte berÀkna det pÄ Hadoop, pÄ Spark, pÄ Greenplum. Och allt detta var vÀldigt lÄngsamt eller dyrt. Det vill sÀga, det var möjligt att pÄ nÄgot sÀtt berÀkna det, men det var dyrt.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och sedan kom ClickHouse och allt blev mycket bÀttre.

LÄt mig pÄminna er om att vi har ett problem med datalokalitet, eftersom korrelationer inte kan lokaliseras. Vi kan inte lÀgga viss data pÄ en server, viss data pÄ en annan och berÀkna, vi mÄste ha all data överallt.

Vad gjorde de? Inledningsvis Àr informationen lokaliserad. Varje server lagrar data om prissÀttningen av en viss uppsÀttning aktier. Och de korsar inte varandra. DÀrför Àr det möjligt att berÀkna logReturn parallellt och oberoende, allt detta sker parallellt och distribueras för tillfÀllet.

Sedan bestÀmde vi oss för att reducera denna data utan att förlora uttrycksfullhet. Reducera den med hjÀlp av arrayer, d.v.s. för varje tidsintervall, skapa en array med aktier och en array med priser. PÄ sÄ sÀtt tar informationen upp mycket mindre plats. Och det Àr nÄgot bekvÀmare att arbeta med dem. Dessa Àr nÀstan parallella operationer, d.v.s. vi berÀknar delvis parallellt och skriver sedan till servern.

Efter det kan den replikeras. Bokstaven "r" betyder att vi har replikerat dessa data. Det vill sÀga, vi har samma data pÄ alla tre servrar - dessa arrayer.

Och sedan, med hjÀlp av ett speciellt skript, kan du skapa paket frÄn denna uppsÀttning av 12,5 miljoner korrelationer som behöver berÀknas. Det vill sÀga 2 500 uppgifter med 5 000 par korrelationer. Och berÀkna denna uppgift pÄ en specifik ClickHouse-server. Den har all data, eftersom datan Àr densamma och den kan berÀkna dem sekventiellt.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Återigen, hur det ser ut. Först har vi all data i den hĂ€r strukturen: tid, aktier, pris. Sedan berĂ€knade vi logReturn, d.v.s. data frĂ„n samma struktur, fast istĂ€llet för pris har vi logReturn. Sedan omarbetades de, d.v.s. vi fick time och groupArray efter aktier och priser. Replikerade. Och efter det genererade vi en massa uppgifter och matade dem till ClickHouse sĂ„ att det skulle berĂ€kna dem. Och det fungerar.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

För koncepttestningsuppgiften var det en deluppgift, d.v.s. de tog mindre data. Och bara pÄ tre servrar.

De tvÄ första stegen: att berÀkna Log_return och slÄ in den i arrayer tog ungefÀr en timme vardera.

Och berÀkningen av korrelationen Àr ungefÀr 50 timmar. Men 50 timmar Àr inte tillrÀckligt, för innan dess fungerade det i veckor. Det var en stor framgÄng. Och om man rÀknar, sÄ berÀknades allting 70 gÄnger per sekund pÄ detta kluster.

Men det viktigaste Àr att det hÀr systemet i princip inte har nÄgra flaskhalsar, d.v.s. det skalar nÀstan linjÀrt. Och de testade det. De skalade det framgÄngsrikt.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

  • RĂ€tt upplĂ€gg Ă€r halva framgĂ„ngen. Och rĂ€tt upplĂ€gg Ă€r anvĂ€ndningen av all nödvĂ€ndig ClickHouse-teknik.
  • Summing/AggregatingMergeTrees Ă€r teknologier som möjliggör aggregering eller att betrakta en tillstĂ„ndsbild som ett specialfall. Och detta förenklar mĂ„nga saker avsevĂ€rt.
  • Materialized Views lĂ„ter dig kringgĂ„ begrĂ€nsningen av ett index. Jag kanske inte sa det sĂ„ tydligt, men nĂ€r vi laddade loggarna fanns de rĂ„a loggarna i en tabell med ett index, och attributloggarna fanns i en tabell, d.v.s. samma data, bara filtrerade, men indexet var helt annorlunda. Det verkar vara samma data, men med annan sortering. Och Materialized Views lĂ„ter dig, om du behöver det, kringgĂ„ denna ClickHouse-begrĂ€nsning.
  • Minska indexgranulariteten för punktfrĂ„gor.
  • Och distribuera data klokt, försök att lokalisera data inom servern sĂ„ mycket som möjligt. Och försök att anvĂ€nda lokalisering i sĂ„ stor utstrĂ€ckning som möjligt vid frĂ„gor.

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

Och för att sammanfatta detta korta anförande kan vi sÀga att ClickHouse nu har ockuperat territoriet för bÄde kommersiella databaser och databaser med öppen kÀllkod, d.v.s. specifikt för analys. Det har passat anmÀrkningsvÀrt bra in i detta landskap. Och dessutom börjar det sakta men sÀkert ersÀtta andra, för nÀr du har ClickHouse behöver du inte InfiniDB. Vertika kan snart bli onödigt om de har normalt SQL-stöd. AnvÀnd det!

Teori och praktik för att anvÀnda ClickHouse i verkliga applikationer. Alexander Zaitsev (2018)

-Tack för rapporten! Mycket intressant! Fanns det nÄgra jÀmförelser med Apache Phoenix?

– Nej, jag har inte hört talas om nĂ„gon som jĂ€mfört. Vi och Yandex försöker spĂ„ra alla jĂ€mförelser av ClickHouse med olika databaser. För om nĂ„got visar sig vara snabbare Ă€n ClickHouse, dĂ„ kan Lesha Milovidov inte sova pĂ„ natten och börjar snabba upp det snabbt. Jag har inte hört talas om en sĂ„dan jĂ€mförelse.

  • (Alexey Milovidov) Apache Phoenix Ă€r en SQL-motor pĂ„ Hbase. Hbase Ă€r huvudsakligen avsedd för nyckel-vĂ€rde-scenarier. Varje rad kan ha ett godtyckligt antal kolumner med godtyckliga namn. Detta kan sĂ€gas om system som Hbase, Cassandra. Och tunga analytiska frĂ„gor kommer inte att fungera normalt pĂ„ dem. Eller sĂ„ kanske du tror att de fungerar normalt om du inte har nĂ„gon erfarenhet av ClickHouse.

  • Tack

    • Hej! Jag Ă€r redan ganska intresserad av det hĂ€r Ă€mnet, eftersom jag har ett analytiskt delsystem. Men nĂ€r jag tittar pĂ„ ClickHouse fĂ„r jag kĂ€nslan av att ClickHouse Ă€r mycket vĂ€l lĂ€mpat för att analysera hĂ€ndelser, det Ă€r förĂ€nderligt. Och om jag behöver analysera mycket affĂ€rsdata med en massa stora tabeller, dĂ„ Ă€r ClickHouse, sĂ„vitt jag förstĂ„r, inte sĂ€rskilt lĂ€mpligt för mig? SĂ€rskilt om de Ă€ndras. StĂ€mmer detta eller finns det exempel som kan motbevisa detta?

    • Det stĂ€mmer. Och det stĂ€mmer om de flesta specialiserade analytiska databaser. De Ă€r utformade för en eller flera stora tabeller som Ă€r förĂ€nderliga, och mĂ„nga smĂ„ som Ă€ndras lĂ„ngsamt. Det vill sĂ€ga, ClickHouse Ă€r inte som Oracle, dĂ€r man kan lĂ€gga in allt och bygga nĂ„gra vĂ€ldigt komplexa frĂ„gor. För att kunna anvĂ€nda ClickHouse effektivt mĂ„ste man bygga ett schema pĂ„ ett sĂ€tt som fungerar bra i ClickHouse. Det vill sĂ€ga, undvik överdriven normalisering, anvĂ€nd ordböcker, försök att göra fĂ€rre lĂ„nga lĂ€nkar. Och om man bygger ett schema pĂ„ det hĂ€r sĂ€ttet kan liknande affĂ€rsuppgifter pĂ„ ClickHouse lösas mycket mer effektivt Ă€n i en traditionell relationsdatabas.

Tack för rapporten! Jag har en frÄga om det senaste ekonomiska fallet. De hade analyser. Det var nödvÀndigt att jÀmföra hur de gÄr upp och ner. Och som jag förstÄr det, byggde ni systemet specifikt för denna analys? Om de till exempel behöver nÄgon annan rapport om dessa data imorgon, behöver de bygga om schemat och ladda in datan? Det vill sÀga, göra nÄgon förbehandling för att fÄ begÀran?

Naturligtvis anvÀnder man ClickHouse för en mycket specifik uppgift. Den skulle kunna lösas mer traditionellt inom Hadoop. För Hadoop Àr detta en idealisk uppgift. Men pÄ Hadoop Àr det vÀldigt lÄngsamt. Och mitt mÄl Àr att visa att ClickHouse kan lösa uppgifter som vanligtvis löses med helt andra metoder, men samtidigt kan det göras mycket mer effektivt. Detta Àr skrÀddarsytt för en specifik uppgift. Det Àr tydligt att om det finns en uppgift som Àr nÄgot liknande, sÄ kan den lösas pÄ ett liknande sÀtt.

Jag förstĂ„r. Du sa 50 timmars bearbetning. Är det frĂ„n allra första början, nĂ€r du laddade in data eller fick resultaten?

Jaja.

Okej, tack sÄ mycket.

Detta Àr pÄ ett kluster med 3 servrar.

Hej! Tack för rapporten! Allt Àr vÀldigt intressant. Jag frÄgar inte om funktionaliteten, utan om anvÀndningen av ClickHouse ur stabilitetssynpunkt. Det vill sÀga, har ni haft nÄgra, var ni tvungna att ÄterstÀlla? Hur beter sig ClickHouse i det hÀr fallet? Och har det nÄgonsin hÀnt att ni ocksÄ har haft en replikkrasch? Till exempel stötte vi pÄ ett problem med ClickHouse nÀr det ÀndÄ överskrider sin grÀns och kraschar.

Naturligtvis finns det inga ideala system. Och ClickHouse har sina egna problem. Men har du hört talas om att Yandex.Metrica inte har fungerat pÄ lÀnge? Förmodligen inte. Det har fungerat tillförlitligt sedan ungefÀr 2012-2013 pÄ ClickHouse. Jag kan ocksÄ tala om mina erfarenheter. Vi har aldrig haft fullstÀndiga fel. Vissa delvisa saker kunde hÀnda, men de var aldrig tillrÀckligt kritiska för att allvarligt pÄverka verksamheten. Detta har aldrig hÀnt. ClickHouse Àr ganska tillförlitligt och kraschar inte slumpmÀssigt. Du behöver inte oroa dig för det. Det Àr inte en rÄ sak. Detta har bevisats av mÄnga företag.

Hej! Du sa att du mÄste tÀnka igenom dataschemat direkt. Men tÀnk om det hÀr hÀnde? Min data strömmar in och ut. Ett halvÄr gÄr, och jag förstÄr att jag inte kan leva sÄ hÀr, jag mÄste ladda upp informationen igen och göra nÄgot med den.

Det beror naturligtvis pÄ ditt system. Det finns flera sÀtt att göra detta praktiskt utan att stoppa. Till exempel kan du skapa en Materialized View, dÀr du skapar en annan datastruktur, om den kan mappas entydigt. Det vill sÀga, om den tillÄter mappning med hjÀlp av ClickHouse, dvs. extrahera vissa saker, Àndra primÀrnyckeln, Àndra partitioneringen, dÄ kan du skapa en Materialized View. Skriv om dina gamla data dÀr, de nya kommer att skrivas automatiskt. Och sedan bara byta till att anvÀnda Materialized View, sedan byta post och avsluta den gamla tabellen. Detta Àr en metod utan att stoppa alls.

Tack.

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster