ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Neskatoties uz to, ka tagad gandrÄ«z visur ir daudz datu, analÄ«tiskās datu bāzes joprojām ir diezgan eksotiskas. Tie ir slikti zināmi un vēl sliktāk spēj tos efektÄ«vi izmantot. Daudzi turpina "ēst kaktusu" ar MySQL vai PostgreSQL, kas paredzēti citiem scenārijiem, cieÅ” no NoSQL vai pārmaksā par komerciāliem risinājumiem. ClickHouse maina spēles noteikumus un ievērojami pazemina slieksni, lai iekļūtu analÄ«tisko DBVS pasaulē.

Atskaite no BackEnd Conf 2018 un tiek publicēta ar runātāja atļauju.


ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)
Kas es esmu un kāpēc es runāju par ClickHouse? Esmu attÄ«stÄ«bas direktors uzņēmumā LifeStreet, kas izmanto ClickHouse. Turklāt es esmu Altinity dibinātājs. Tas ir Yandex partneris, kas reklamē ClickHouse un palÄ«dz Yandex padarÄ«t ClickHouse veiksmÄ«gāku. Gatavs arÄ« dalÄ«ties zināŔanās par ClickHouse.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un es neesmu Petja Zaiceva brālis. Man par to bieži jautā. Nē, mēs neesam brāļi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

ā€œVisi zinaā€, ka ClickHouse:

  • Ä»oti ātri,
  • Ä»oti ērti
  • Izmanto Yandex.

Nedaudz mazāk zināms, kuros uzņēmumos un kā to izmanto.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Es jums pastāstÄ«Å”u, kāpēc, kur un kā ClickHouse tiek izmantots, izņemot Yandex.

Es pastāstÄ«Å”u, kā ar ClickHouse palÄ«dzÄ«bu dažādos uzņēmumos tiek risināti konkrēti uzdevumi, kādus ClickHouse rÄ«kus varat izmantot saviem uzdevumiem un kā tie tika izmantoti dažādos uzņēmumos.

Es izvēlējos trīs piemērus, kas parāda ClickHouse no dažādiem leņķiem. Domāju, ka būs interesanti.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Pirmais jautājums ir: "Kāpēc mums ir nepiecieÅ”ams ClickHouse?". Å Ä·iet, ka tas ir diezgan acÄ«mredzams jautājums, taču uz to ir vairāk nekā viena atbilde.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • Pirmā atbilde ir par veiktspēju. ClickHouse ir ļoti ātrs. Analytics pakalpojumā ClickHouse ir arÄ« ļoti ātra. To bieži var izmantot, ja kaut kas cits notiek ļoti lēni vai ļoti slikti.
  • Otrā atbilde ir izmaksas. Un, pirmkārt, mērogoÅ”anas izmaksas. Piemēram, Vertica ir absolÅ«ti lieliska datu bāze. Tas darbojas ļoti labi, ja jums nav daudz terabaitu datu. Bet, runājot par simtiem terabaitu vai petabaitu, licences un atbalsta izmaksas ir diezgan ievērojamas. Un tas ir dārgi. Un ClickHouse ir bezmaksas.
  • TreŔā atbilde ir ekspluatācijas izmaksas. Å Ä« ir nedaudz atŔķirÄ«ga pieeja. RedShift ir lielisks analogs. Izmantojot RedShift, jÅ«s varat pieņemt lēmumu ļoti ātri. Tas darbosies labi, bet tajā paŔā laikā katru stundu, katru dienu un katru mēnesi jÅ«s maksāsit Amazon diezgan dārgi, jo tas ir ievērojami dārgs pakalpojums. ArÄ« Google BigQuery. Ja kāds to izmantoja, tad viņŔ zina, ka tur var izpildÄ«t vairākus pieprasÄ«jumus un pēkŔņi saņemt rēķinu simtiem dolāru.

ClickHouse Å”o problēmu nav.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Kur tagad tiek izmantots ClickHouse? Papildus Yandex, ClickHouse tiek izmantots daudzos dažādos uzņēmumos un uzņēmumos.

  • Pirmkārt, Ŕī ir tÄ«mekļa lietojumprogrammu analÄ«ze, t.i., tas ir Yandex lietoÅ”anas gadÄ«jums.
  • Daudzi AdTech uzņēmumi izmanto ClickHouse.
  • Daudzi uzņēmumi, kuriem jāanalizē darÄ«jumu žurnāli no dažādiem avotiem.
  • Vairāki uzņēmumi izmanto ClickHouse, lai uzraudzÄ«tu droŔības žurnālus. Viņi augÅ”upielādē tos vietnē ClickHouse, veido pārskatus un iegÅ«st vajadzÄ«gos rezultātus.
  • Uzņēmumi to sāk izmantot finanÅ”u analÄ«zē, t.i., pamazām ClickHouse tuvojas arÄ« lielie uzņēmumi.
  • mākoņu uzliesmojums. Ja kāds seko ClickHouse, tad droÅ”i vien ir dzirdējis Ŕīs kompānijas nosaukumu. Å is ir viens no svarÄ«gākajiem sabiedrÄ«bas lÄ«dzstrādniekiem. Un viņiem ir ļoti nopietna ClickHouse instalācija. Piemēram, viņi izveidoja Kafka Engine uzņēmumam ClickHouse.
  • Telekomunikāciju uzņēmumi sāka izmantot. Vairāki uzņēmumi ClickHouse izmanto kā koncepcijas pierādÄ«jumu vai jau tiek ražoti.
  • Viens uzņēmums izmanto ClickHouse, lai uzraudzÄ«tu ražoÅ”anas procesus. Viņi pārbauda mikroshēmas, noraksta virkni parametru, ir aptuveni 2 raksturlielumu. Un tad viņi analizē, vai spēle ir laba vai slikta.
  • Blockchain analÄ«tika. Ir tāds krievu uzņēmums kā Bloxy.info. Å Ä« ir ethereum tÄ«kla analÄ«ze. Viņi to darÄ«ja arÄ« vietnē ClickHouse.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un izmēram nav nozÄ«mes. Ir daudzi uzņēmumi, kas izmanto vienu nelielu serveri. Un viņŔ ļauj viņiem atrisināt savas problēmas. Un vēl vairāk uzņēmumu izmanto lielas daudzu serveru kopas vai desmitiem serveru.

Un, ja paskatās uz ierakstiem, tad:

  • Yandex: 500+ serveru, tie tur glabā 25 miljardus ierakstu dienā.
  • LifeStreet: 60 serveri, aptuveni 75 miljardi ierakstu dienā. Ir mazāk serveru, vairāk ierakstu nekā Yandex.
  • CloudFlare: 36 serveri, tie saglabā 200 miljardus ierakstu dienā. Viņiem ir vēl mazāk serveru un tiek uzglabāts vēl vairāk datu.
  • Bloomberg: 102 serveri, aptuveni triljons ierakstu dienā. Rekordists.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Ģeogrāfiski tas arī ir daudz. Šī karte parāda siltuma karti, kur pasaulē tiek izmantots ClickHouse. Šeit skaidri izceļas Krievija, Ķīna, Amerika. Eiropas valstu ir maz. Un ir 4 kopas.

Å Ä« ir salÄ«dzinoÅ”a analÄ«ze, nav nepiecieÅ”ams meklēt absolÅ«tos skaitļus. Å Ä« ir to apmeklētāju analÄ«ze, kuri Altinity vietnē lasa materiālus angļu valodā, jo tur nav neviena krievvalodÄ«ga. Un Krievija, Ukraina, Baltkrievija, t.i., kopienas krievvalodÄ«gā daļa, tie ir visvairāk lietotāju. Tad nāk ASV un Kanāda. Ķīna ļoti tuvojas. Pirms pusgada Ķīnas tur gandrÄ«z nebija, tagad Ķīna jau ir apsteigusi Eiropu un turpina augt. Neatpaliek arÄ« Vecā Eiropa, un ClickHouse lietoÅ”anā lÄ«dere, dÄ«vainā kārtā, ir Francija.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Kāpēc es to visu stāstu? Parādīt, ka ClickHouse kļūst par standarta risinājumu lielo datu analīzei un jau tiek izmantots daudzās vietās. Ja jūs to izmantojat, jums ir pareizā tendence. Ja jūs to vēl neizmantojat, varat nebaidīties, ka paliksit viens un neviens jums nepalīdzēs, jo daudzi to jau dara.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Å ie ir reālas ClickHouse izmantoÅ”anas piemēri vairākos uzņēmumos.

  • Pirmais piemērs ir reklāmu tÄ«kls: migrācija no Vertica uz ClickHouse. Un es zinu dažus uzņēmumus, kas ir pārgājuÅ”i no Vertica vai atrodas pārejas procesā.
  • Otrais piemērs ir darÄ«jumu krātuve vietnē ClickHouse. Å is ir piemērs, kas balstÄ«ts uz antirakstiem. Å eit tiek darÄ«ts viss, ko ClickHouse nevajadzētu darÄ«t pēc izstrādātāju ieteikuma. Un tas tiek darÄ«ts tik efektÄ«vi, ka tas darbojas. Un tas darbojas daudz labāk nekā tipisks darÄ«jumu risinājums.
  • TreÅ”ais piemērs ir izplatÄ«tā skaitļoÅ”ana vietnē ClickHouse. Bija jautājums par to, kā ClickHouse var integrēt Hadoop ekosistēmā. Es parādÄ«Å”u piemēru, kā uzņēmums veica kaut ko lÄ«dzÄ«gu kartes samazināŔanas konteineram ClickHouse, sekojot lÄ«dzi datu lokalizācijai utt., lai aprēķinātu ļoti netriviālu uzdevumu.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • LifeStreet ir Ad tech uzņēmums, kam ir visas tehnoloÄ£ijas, kas nāk ar reklāmu tÄ«klu.
  • Viņa nodarbojas ar reklāmu optimizāciju, programmatisko cenu noteikÅ”anu.
  • Daudz datu: aptuveni 10 miljardi notikumu dienā. Tajā paŔā laikā pasākumus tur var iedalÄ«t vairākos apakÅ”pasākumos.
  • Å o datu klientu ir daudz, un tie nav tikai cilvēki, daudz vairāk - tie ir dažādi algoritmi, kas nodarbojas ar programmatisko solÄ«Å”anu.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Uzņēmums ir nogājis garu un sarežģītu ceļu. Un es par to runāju vietnē HighLoad. Pirmkārt, LifeStreet pārcēlās no MySQL (ar īsu pieturu pie Oracle) uz Vertica. Un jūs varat atrast stāstu par to.

Un viss bija ļoti labi, bet ātri kļuva skaidrs, ka dati aug un Vertica ir dārga. Tāpēc tika meklētas dažādas alternatÄ«vas. Daži no tiem ir uzskaitÄ«ti Å”eit. Un patiesÄ«bā mēs veicām koncepcijas pārbaudi vai dažkārt veiktspējas testÄ“Å”anu gandrÄ«z visām datu bāzēm, kas bija pieejamas tirgÅ« no 13. lÄ«dz 16. gadam un bija aptuveni piemērotas funkcionalitātes ziņā. Un par dažiem no tiem es arÄ« runāju vietnē HighLoad.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Uzdevums vispirms bija migrēt no Vertica, jo dati pieauga. Un gadu gaitā tie pieauga eksponenciāli. Tad viņi aizgāja uz plaukta, bet tomēr. Un, paredzot Å”o izaugsmi, biznesa prasÄ«bas attiecÄ«bā uz datu apjomu, par kuru bija jāveic sava veida analÄ«ze, bija skaidrs, ka drÄ«zumā tiks apspriesti petabaiti. Un maksāt par petabaitiem jau ir ļoti dārgi, tāpēc meklējām alternatÄ«vu, kur doties.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Kur doties? Un ilgu laiku vispār nebija skaidrs, kur iet, jo no vienas puses ir komerciālas datu bāzes, tās it kā strādā labi. Daži strādā gandrīz tikpat labi kā Vertica, daži sliktāk. Bet tie visi ir dārgi, neko lētāku un labāku nevarēja atrast.

No otras puses, ir atvērtā pirmkoda risinājumi, kuru nav ļoti daudz, t.i., analÄ«tikai tos var saskaitÄ«t uz pirkstiem. Un tie ir bezmaksas vai lēti, bet lēni. Un viņiem bieži trÅ«kst nepiecieÅ”amās un noderÄ«gas funkcionalitātes.

Un nebija ko apvienot to labo, kas atrodas komerciālajās datubāzēs, un visu to bezmaksas, kas ir atvērtā koda.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Nebija nekā, līdz negaidīti Yandex izvilka ClickHouse, kā burvis no cepures, kā trusis. Un tas bija negaidīts lēmums, viņi joprojām uzdod jautājumu: "Kāpēc?", Bet tomēr.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un uzreiz 2016. gada vasarā mēs sākām skatīties, kas ir ClickHouse. Un izrādījās, ka dažreiz tas var būt ātrāks par Vertica. Mēs pārbaudījām dažādus scenārijus dažādiem pieprasījumiem. Un, ja vaicājumā tika izmantota tikai viena tabula, tas ir, bez savienojuma (join), tad ClickHouse bija divreiz ātrāks nekā Vertica.

Es nebiju pārāk slinks un citu dienu skatījos Yandex testus. Tur ir tas pats: ClickHouse ir divreiz ātrāks par Vertica, tāpēc viņi bieži par to runā.

Bet, ja vaicājumos ir pievienoÅ”anās, tad viss izrādās ne pārāk viennozÄ«mÄ«gi. Un ClickHouse var bÅ«t divreiz lēnāks nekā Vertica. Un, ja jÅ«s nedaudz labojat pieprasÄ«jumu un pārrakstāt to, tad tie ir aptuveni vienādi. Nav slikti. Un bez maksas.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un, saņemot testa rezultātus un aplūkojot tos no dažādiem leņķiem, LifeStreet devās uz ClickHouse.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Šis ir 16. gads, es jums atgādinu. Tas bija kā joks par pelēm, kuras raudāja un durstīja sevi, bet turpināja ēst kaktusu. Un tas tika detalizēti aprakstīts, par to ir video utt.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Tāpēc es par to sÄ«kāk nerunāŔu, runāŔu tikai par rezultātiem un dažām interesantām lietām, par kurām toreiz nerunāju.

Rezultāti ir:

  • VeiksmÄ«ga migrācija un vairāk nekā gadu sistēma jau strādā ražoÅ”anā.
  • Ir palielinājusies produktivitāte un elastÄ«ba. No 10 miljardiem ierakstu, ko mēs varētu atļauties uzglabāt dienā un pēc tam Ä«su laiku, LifeStreet tagad glabā 75 miljardus ierakstu dienā un var to darÄ«t 3 mēneÅ”us vai ilgāk. Ja skaita maksimumu, tad tas ir lÄ«dz miljonam notikumu sekundē. Vairāk nekā miljons SQL vaicājumu dienā nonāk Å”ajā sistēmā, galvenokārt no dažādiem robotiem.
  • Neskatoties uz to, ka ClickHouse tika izmantots vairāk serveru nekā Vertica, tie taupÄ«ja arÄ« uz aparatÅ«ru, jo Verticā tika izmantoti diezgan dārgi SAS diski. ClickHouse izmantoja SATA. Un kāpēc? Jo Vertica ieliktnis ir sinhrons. Un sinhronizācijai ir nepiecieÅ”ams, lai diski pārāk nepalēninātu, un arÄ« tÄ«kls pārāk nepalēninās, tas ir, diezgan dārga darbÄ«ba. Un ClickHouse ieliktnis ir asinhrons. Turklāt jÅ«s vienmēr varat visu rakstÄ«t lokāli, par to nav papildu izmaksu, tāpēc datus ClickHouse var ievietot daudz ātrāk nekā Vertikā, pat uz lēnākiem diskiem. Un lasÄ«Å”ana ir apmēram tā pati. Lasot SATA, ja tie ir RAID, tad tas viss ir pietiekami ātri.
  • Licence neierobežo, t.i., 3 petabaiti datu 60 serveros (20 serveri ir viena kopija) un 6 triljoni ierakstu faktos un apkopojumos. Uzņēmums Vertica neko tādu nevarēja atļauties.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Tagad Å”ajā piemērā pievērÅ”os praktiskām lietām.

  • Pirmā ir efektÄ«va shēma. Daudz kas ir atkarÄ«gs no shēmas.
  • Otrais ir efektÄ«va SQL Ä£enerÄ“Å”ana.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Tipisks OLAP vaicājums ir atlase. Dažas kolonnas pāriet uz grupu pēc, dažas kolonnas pāriet uz apkopotajām funkcijām. Ir kur, ko var attēlot kā kuba Ŕķēli. Visu grupu pēc var uzskatÄ«t par projekciju. Un tāpēc to sauc par daudzfaktoru datu analÄ«zi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un bieži tas tiek modelēts zvaigžņu shēmas veidā, kad ir centrālais fakts un Ŕī fakta Ä«paŔības gar sāniem, gar stariem.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un attiecÄ«bā uz fizisko dizainu, kā tas iederas uz galda, viņi parasti veic normalizētu attēlojumu. JÅ«s varat denormalizēt, bet tas ir dārgs diskā un nav Ä«paÅ”i efektÄ«vs vaicājumos. Tāpēc tie parasti veido normalizētu attēlojumu, t.i., faktu tabulu un daudzas, daudzas dimensiju tabulas.

Bet ClickHouse tas nedarbojas labi. Ir divi iemesli:

  • Pirmais ir tāpēc, ka ClickHouse nav Ä«paÅ”i labi pievienojumi, t.i., ir pievienoÅ”anās, bet tās ir sliktas. Kamēr slikti.
  • Otrais ir tas, ka tabulas netiek atjauninātas. Parasti Å”ajās plāksnēs, kas atrodas ap zvaigznes ķēdi, kaut kas ir jāmaina. Piemēram, klienta vārds, uzņēmuma nosaukums utt. Un tas nedarbojas.

Un ClickHouse no tā ir izeja. pat divi:

  • Pirmais ir vārdnÄ«cu izmantoÅ”ana. Ārējās vārdnÄ«cas palÄ«dz 99% atrisināt problēmu ar zvaigznÄ«Å”u shēmu, atjauninājumiem un tā tālāk.
  • Otrais ir masÄ«vu izmantoÅ”ana. MasÄ«vi palÄ«dz arÄ« atbrÄ«voties no savienojumiem un normalizÄ“Å”anas problēmām.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • PievienoÅ”anās nav nepiecieÅ”ama.
  • Uzlabojams. KopÅ” 2018. gada marta ir parādÄ«jusies nedokumentēta iespēja (to dokumentācijā neatradÄ«siet) daļēji atjaunināt vārdnÄ«cas, t.i., mainÄ«tos ierakstus. Praktiski tas ir kā galds.
  • Vienmēr atmiņā, tāpēc pievienoÅ”anās ar vārdnÄ«cu darbojas ātrāk nekā tad, ja tā bÅ«tu tabula, kas atrodas diskā un vēl nav fakts, ka tā atrodas keÅ”atmiņā, visticamāk, nē.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • Jums arÄ« nav vajadzÄ«gas pievienoÅ”anās.
  • Å is ir kompakts 1 pret daudziem attēlojums.
  • Un, manuprāt, masÄ«vi ir radÄ«ti dÄ«kiem. Tās ir lambda funkcijas un tā tālāk.

Tas nav paredzēts sarkaniem vārdiem. Å Ä« ir ļoti jaudÄ«ga funkcionalitāte, kas ļauj veikt daudzas lietas ļoti vienkārŔā un elegantā veidā.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Tipiski piemēri, kas palÄ«dz atrisināt masÄ«vus. Å ie piemēri ir pietiekami vienkārÅ”i un skaidri:

  • Meklēt pēc tagiem. Ja jums tur ir tēmturi un vēlaties atrast dažas ziņas, izmantojot tēmturi.
  • Meklēt pēc atslēgu un vērtÄ«bu pāriem. Ir arÄ« daži atribÅ«ti ar vērtÄ«bu.
  • Saglabā to atslēgu sarakstus, kas jāpārtulko citā formā.

Visus Ŕos uzdevumus var atrisināt bez masīviem. Tagus var likt kādā rindā un atlasīt ar regulāru izteiksmi vai atseviŔķā tabulā, bet tad ir jāveic savienojumi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un pakalpojumā ClickHouse jums nekas nav jādara, pietiek ar to, lai aprakstītu virkņu masīvu atsaucēm vai izveidotu ligzdotu struktūru atslēgu vērtību sistēmām.

Ligzdota struktūra var nebūt labākais nosaukums. Šie ir divi masīvi, kuru nosaukumā ir kopīga daļa un daži saistīti raksturlielumi.

Un to ir ļoti viegli meklēt pēc atzÄ«mes. Ir funkcija has, kas pārbauda, ā€‹ā€‹vai masÄ«vā ir kāds elements. Visi atrada visus ierakstus, kas attiecas uz mÅ«su konferenci.

MeklÄ“Å”ana pēc subid ir nedaudz sarežģītāka. Vispirms jāatrod atslēgas indekss, pēc tam jāņem elements ar Å”o indeksu un jāpārbauda, ā€‹ā€‹vai Ŕī vērtÄ«ba ir mums vajadzÄ«ga. Tomēr tas ir ļoti vienkārÅ”s un kompakts.

Regulārā izteiksme, kuru jūs vēlētos rakstīt, ja to visu turētu vienā rindā, tā, pirmkārt, būtu neveikla. Un, otrkārt, tas darbojās daudz ilgāk nekā divi masīvi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Vēl viens piemērs. Jums ir masīvs, kurā glabājat ID. Un jūs varat tos pārvērst nosaukumos. Funkcija arrayMap. Šī ir tipiska lambda funkcija. Tu tur nodod lambda izteiksmes. Un viņa no vārdnīcas izvelk katra ID nosaukuma vērtību.

MeklÄ“Å”anu var veikt tādā paŔā veidā. Tiek nodota predikāta funkcija, kas pārbauda elementu atbilstÄ«bu.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Å Ä«s lietas ievērojami vienkārÅ”o ķēdi un atrisina virkni problēmu.

Bet nākamā problēma, ar kuru mēs saskaramies un kuru es vēlētos pieminēt, ir efektīvi vaicājumi.

  • ClickHouse nav vaicājumu plānotāja. Noteikti nē.
  • Tomēr sarežģīti vaicājumi joprojām ir jāplāno. Kādos gadÄ«jumos?
  • Ja vaicājumā ir vairāki savienojumi, tie jāietver apakÅ”atlasēs. Un to izpildes secÄ«bai ir nozÄ«me.
  • Un otrs - ja pieprasÄ«jums tiek izplatÄ«ts. Jo izplatÄ«tajā vaicājumā tikai visdziļākā apakÅ”atlase tiek izpildÄ«ta izplatÄ«ti, un viss pārējais tiek nodots vienam serverim, ar kuru esat izveidojis savienojumu un tur izpildÄ«jāt. Tāpēc, ja esat izplatÄ«jis vaicājumus ar daudziem savienojumiem (join), tad jums ir jāizvēlas secÄ«ba.

Un pat vienkārŔākos gadījumos dažreiz ir nepiecieŔams veikt arī plānotāja darbu un nedaudz pārrakstīt vaicājumus.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Å eit ir piemērs. Kreisajā pusē ir vaicājums, kas parāda 5 populārākās valstis. Un tas, manuprāt, aizņem 2,5 sekundes. Un labajā pusē tas pats vaicājums, bet nedaudz pārrakstÄ«ts. Tā vietā, lai grupētu pēc virknes, mēs sākām grupēt pēc atslēgas (int). Un tas ir ātrāk. Un tad rezultātam pievienojām vārdnÄ«cu. 2,5 sekunžu vietā pieprasÄ«jums aizņem 1,5 sekundes. Tas ir labi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

LÄ«dzÄ«gs piemērs ar pārrakstÄ«Å”anas filtriem. Å eit ir lÅ«gums Krievijai. Tas darbojas 5 sekundes. Ja mēs to pārrakstÄ«sim tā, ka atkal salÄ«dzināsim nevis virkni, bet skaitļus ar kaut kādu to atslēgu komplektu, kas attiecas uz Krieviju, tad tas bÅ«s daudz ātrāk.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Ir daudz Ŕādu triku. Un tie ļauj ievērojami paātrināt vaicājumus, kas, jÅ«suprāt, jau darbojas ātri vai, gluži pretēji, darbojas lēni. Tos var pagatavot vēl ātrāk.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • Maksimālais darbs sadalÄ«tā režīmā.
  • KārtoÅ”ana pēc minimālajiem veidiem, kā es to darÄ«ju pēc ints.
  • Ja ir kādi savienojumi (join), vārdnÄ«cas, tad labāk tos darÄ«t kā pēdējo lÄ«dzekli, kad jau ir dati vismaz daļēji sagrupēti, tad pievienoÅ”anās operācija jeb vārdnÄ«cas izsaukums tiks izsaukts mazāk reižu un tas bÅ«s ātrāk .
  • Filtru nomaiņa.

Ir arī citi paņēmieni, un ne tikai tie, kurus esmu demonstrējis. Un tie visi dažkārt var ievērojami paātrināt vaicājumu izpildi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Pāriesim pie nākamā piemēra. Uzņēmums X no ASV. Ko viņa dara?

Bija uzdevums:

  • Reklāmas darÄ«jumu bezsaistes saistÄ«Å”ana.
  • Dažādu iesieÅ”anas modeļu modelÄ“Å”ana.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Kāds ir scenārijs?

VienkārÅ”s apmeklētājs ierodas vietnē, piemēram, 20 reizes mēnesÄ« no dažādām reklāmām, vai vienkārÅ”i tā dažreiz atnāk bez reklāmām, jo ā€‹ā€‹viņŔ atceras Å”o vietni. Apskata dažus produktus, ieliek grozā, izņem no groza. Un galu galā kaut kas pērk.

Pamatoti jautājumi: "Kam jāmaksā par reklāmu, ja nepiecieÅ”ams?" un "Kāda reklāma viņu ietekmēja, ja tāda bija?". Tas ir, kāpēc viņŔ iegādājās un kā panākt, lai arÄ« tādi cilvēki iegādātos?

Lai atrisinātu Å”o problēmu, jums ir pareizi jāsavieno notikumi, kas notiek vietnē, tas ir, kaut kā jāveido savienojums starp tiem. Pēc tam tie tiek nosÅ«tÄ«ti analÄ«zei uz DWH. Un, pamatojoties uz Å”o analÄ«zi, izveidojiet modeļus, kam un kādas reklāmas rādÄ«t.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Reklāmas darÄ«jums ir saistÄ«tu lietotāja notikumu kopa, kas sākas ar reklāmas rādÄ«Å”anu, pēc tam notiek kaut kas, tad varbÅ«t pirkums un pēc tam var bÅ«t pirkumi pirkuma ietvaros. Piemēram, ja Ŕī ir mobilā aplikācija vai mobilā spēle, tad parasti aplikācijas instalÄ“Å”ana notiek bez maksas, un, ja tur kaut kas tiek darÄ«ts, tad par to var prasÄ«t naudu. Un jo vairāk cilvēks aplikācijā iztērē, jo tā ir vērtÄ«gāka. Bet Å”im jums viss ir jāsavieno.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Ir daudz saistoŔu modeļu.

Populārākie ir:

  • Pēdējā mijiedarbÄ«ba, kur mijiedarbÄ«ba ir vai nu klikŔķis, vai seanss.
  • Pirmā mijiedarbÄ«ba, t.i., pirmā lieta, kas atveda cilvēku uz vietni.
  • Lineāra kombinācija - visi vienādi.
  • VājināŔanās.
  • Un tā tālāk.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un kā tas viss darbojās vispirms? Bija Runtime un Cassandra. Kasandra tika izmantota kā darījumu krātuve, t.i., tajā tika glabāti visi saistītie darījumi. Un, kad Runtime atnāk kāds pasākums, piemēram, rāda kādu lapu vai ko citu, tad tika uzdots lūgums Kasandrai - ir tāds cilvēks vai nav. Tad tika iegūti darījumi, kas uz to attiecas. Un savienojums tika izveidots.

Un, ja ir paveicies, ka pieprasÄ«jumam ir darÄ«juma ID, tad tas ir vienkārÅ”i. Bet parasti neveicas. Tāpēc bija jāatrod pēdējais darÄ«jums vai darÄ«jums ar pēdējo klikŔķi utt.

Un tas viss darbojās ļoti labi, kamēr iesieÅ”ana bija lÄ«dz pēdējam klikŔķim. Jo ir, teiksim, 10 miljoni klikŔķu dienā, 300 miljoni mēnesÄ«, ja mēs uzstādām logu uz mēnesi. Un tā kā Cassandra tam visam ir jābÅ«t atmiņā, lai tas darbotos ātri, jo Runtime ir ātri jāreaģē, tad vajadzēja apmēram 10-15 serverus.

Un, kad viņi gribēja saistÄ«t darÄ«jumu ar displeju, tas uzreiz izrādÄ«jās ne tik jautri. Un kāpēc? Redzams, ka jāuzglabā 30 reizes vairāk notikumu. Un attiecÄ«gi jums ir nepiecieÅ”ams 30 reizes vairāk serveru. Un izrādās, ka Ŕī ir kaut kāda astronomiska figÅ«ra. Saglabāt lÄ«dz 500 serveriem, lai veiktu saistÄ«Å”anu, neskatoties uz to, ka Runtime serveru ir ievērojami mazāk, tas ir kaut kāds nepareizs skaitlis. Un viņi sāka domāt, ko darÄ«t.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un mēs devāmies uz ClickHouse. Un kā to izdarÄ«t ClickHouse? No pirmā acu uzmetiena Ŕķiet, ka tas ir pretrakstu kopums.

  • DarÄ«jums aug, mēs tam pievienojam arvien vairāk notikumu, t.i., tas ir mainÄ«gs, un ClickHouse nedarbojas Ä«paÅ”i labi ar mainÄ«giem objektiem.
  • Kad apmeklētājs ierodas pie mums, mums ir jāizņem viņa darÄ«jumi pēc atslēgas, pēc viņa apmeklējuma ID. Tas ir arÄ« punktu vaicājums, viņi to nedara ClickHouse. Parasti ClickHouse ir lielas ā€¦ skenÄ“Å”anas, bet Å”eit mums ir jāiegÅ«st daži ieraksti. ArÄ« antiraksts.
  • Turklāt darÄ«jums notika json formātā, taču viņi nevēlējās to pārrakstÄ«t, tāpēc vēlējās saglabāt json nestrukturētā veidā un, ja nepiecieÅ”ams, kaut ko no tā izņemt. Un tas arÄ« ir antiraksts.

Tas ir, antirakstu komplekts.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Bet tomēr izrādījās, ka tika izveidota sistēma, kas darbojās ļoti labi.

Kas tika darÄ«ts? ParādÄ«jās ClickHouse, kurā tika iemesti žurnāli, sadalÄ«ti ierakstos. ParādÄ«jās attiecÄ«gais pakalpojums, kas saņēma žurnālus no ClickHouse. Pēc tam par katru ierakstu ar apmeklējuma id saņēmu transakcijas, kas, iespējams, vēl nav apstrādātas un plus momentuzņēmumus, t.i., jau savienotos darÄ«jumus, proti, iepriekŔējā darba rezultātu. Es jau no tiem izveidoju loÄ£iku, izvēlējos pareizo darÄ«jumu, savienoju jaunus notikumus. Atkal pieteicies. Žurnāls atgriezās ClickHouse, t.i., tā ir pastāvÄ«gi cikliska sistēma. Un turklāt es devos uz DWH, lai tur to analizētu.

TieÅ”i Ŕādā formā tas nedarbojās ļoti labi. Un, lai ClickHouse bÅ«tu vieglāk, kad tika saņemts pieprasÄ«jums pēc apmeklējuma id, viņi sagrupēja Å”os pieprasÄ«jumus blokos ar 1ā€“000 apmeklējumu ID un izvilka visus darÄ«jumus 2ā€“000 personām. Un tad tas viss strādāja.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Ja paskatās ClickHouse iekÅ”ienē, tad ir tikai 3 galvenās tabulas, kas to visu apkalpo.

Pirmā tabula, kurā tiek augÅ”upielādēti žurnāli, un žurnāli tiek augÅ”upielādēti gandrÄ«z bez apstrādes.

Otrā tabula. Caur materializēto skatÄ«jumu no Å”iem žurnāliem tika izkosti notikumi, kas vēl nav attiecināti, t.i., nesaistÄ«ti. Izmantojot materializēto skatu, darÄ«jumi tika izņemti no Å”iem žurnāliem, lai izveidotu momentuzņēmumu. Tas ir, Ä«paÅ”s materializēts skats izveidoja momentuzņēmumu, proti, pēdējo uzkrāto darÄ«juma stāvokli.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Šeit ir teksts, kas rakstīts SQL. Es gribētu tajā komentēt dažas svarīgas lietas.

Pirmā svarīgā lieta ir iespēja pakalpojumā ClickHouse no json izvilkt kolonnas un laukus. Tas nozīmē, ka ClickHouse ir dažas metodes darbam ar json. Viņi ir ļoti, ļoti primitīvi.

visitParamExtractInt ļauj iegÅ«t atribÅ«tus no json, t.i., darbojas pirmais trāpÄ«jums. Un Ŕādā veidā jÅ«s varat izņemt darÄ«juma ID vai apmeklēt ID. Å oreiz.

Otrkārt, Å”eit tiek izmantots viltÄ«gs materializēts lauks. Ko tas nozÄ«mē? Tas nozÄ«mē, ka jÅ«s nevarat to ievietot tabulā, t.i., tas netiek ievietots, tas tiek aprēķināts un saglabāts ievietoÅ”anas brÄ«dÄ«. IelÄ«mējot, ClickHouse paveic darbu jÅ«su vietā. Un tas, kas jums nepiecieÅ”ams vēlāk, jau ir izvilkts no json.

Å ajā gadÄ«jumā materializētais skats ir paredzēts neapstrādātām rindām. Un tikko izmantots pirmais galds ar praktiski neapstrādātiem baļķiem. Un ko viņŔ dara? Pirmkārt, tas maina ŔķiroÅ”anu, t.i., ŔķiroÅ”ana tagad notiek pēc apmeklējuma id, jo mums ātri jāizvelk viņa darÄ«jums konkrētai personai.

Otra svarÄ«ga lieta ir index_granularity. Ja esat redzējis MergeTree, tas parasti ir 8 pēc noklusējuma index_granularity. Kas tas ir? Å is ir indeksa retuma parametrs. Programmā ClickHouse indekss ir mazs, tas nekad neindeksē katru ierakstu. Tas tiek darÄ«ts ik pēc 192. Un tas ir labi, ja ir jāaprēķina daudz datu, bet slikti, ja ir maz, jo ir lielas pieskaitāmās izmaksas. Un, ja mēs samazinām indeksa precizitāti, tad samazināsim pieskaitāmās izmaksas. To nevar samazināt lÄ«dz vienam, jo ā€‹ā€‹var nepietikt atmiņas. Indekss vienmēr tiek saglabāts atmiņā.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Snapshot izmanto arī dažas citas interesantas ClickHouse funkcijas.

Pirmkārt, tas ir AggregatingMergeTree. Un AggregatingMergeTree saglabā argMax, t.i., tas ir darÄ«juma stāvoklis, kas atbilst pēdējam laikspiedolam. DarÄ«jumi tiek Ä£enerēti visu laiku konkrētam apmeklētājam. Un paŔā pēdējā Ŕī darÄ«juma stāvoklÄ« mēs pievienojām notikumu, un mums ir jauns stāvoklis. Tas atkal skāra ClickHouse. Un, izmantojot argMax Å”ajā materializētajā skatā, mēs vienmēr varam iegÅ«t paÅ”reizējo stāvokli.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • IesieÅ”ana ir "atsaistÄ«ta" no izpildlaika.
  • MēnesÄ« tiek saglabāti un apstrādāti lÄ«dz 3 miljardiem darÄ«jumu. Tas ir par kārtu vairāk nekā tas bija Cassandra, t.i., tipiskā darÄ«jumu sistēmā.
  • 2x5 ClickHouse serveru klasteris. 5 serveri un katram serverim ir kopija. Tas ir vēl mazāk, nekā tas bija Cassandra, lai veiktu attiecinājumu uz klikŔķiem, un Å”eit mēs esam balstÄ«ti uz seansiem. Tas ir, tā vietā, lai palielinātu serveru skaitu par 30 reizēm, viņiem izdevās tos samazināt.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un pēdējais piemērs ir finanÅ”u uzņēmums Y, kas analizēja akciju cenu izmaiņu korelācijas.

Un uzdevums bija:

  • Ir aptuveni 5 akciju.
  • Ir zināmi citāti ik pēc 100 milisekundēm.
  • Dati ir uzkrāti 10 gadu laikā. AcÄ«mredzot dažiem uzņēmumiem vairāk, dažiem mazāk.
  • Kopā ir aptuveni 100 miljardi rindu.

Un bija jāaprēķina izmaiņu korelācija.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Šeit ir divas akcijas un to kotācijas. Ja viens iet uz augŔu, bet otrs iet uz augŔu, tad tā ir pozitīva korelācija, t.i., viens iet uz augŔu, otrs iet uz augŔu. Ja viens iet uz augŔu, kā diagrammas beigās, bet otrs iet uz leju, tad tā ir negatīva korelācija, t.i., kad viens paceļas, otrs krīt.

Analizējot Ŕīs savstarpējās izmaiņas, var izteikt prognozes finanÅ”u tirgÅ«.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Bet uzdevums ir grÅ«ts. Kas tiek darÄ«ts Å”im nolÅ«kam? Mums ir 100 miljardi ierakstu, kuriem ir: laiks, krājumi un cena. Mums ir jāaprēķina pirmie 100 miljardi reižu darbÄ«basAtŔķirÄ«ba no cenu algoritma. RunningDifference ir ClickHouse funkcija, kas secÄ«gi aprēķina atŔķirÄ«bu starp divām virknēm.

Un pēc tam jums ir jāaprēķina korelācija, un korelācija jāaprēķina katram pārim. 5 akciju pāri ir 000 miljoni. Un tas ir daudz, t.i., 12,5 reizes ir jāaprēķina tieÅ”i Ŕāda korelācijas funkcija.

Un, ja kāds aizmirsa, tad Ķžx un Ķžy ir mats. izlases cerÄ«bas. Tas ir, ir jāaprēķina ne tikai saknes un summas, bet arÄ« vēl viena summa Å”ajās summās. Vairāki aprēķini ir jāveic 12,5 miljonus reižu un pat jāgrupē pa stundām. Mums arÄ« ir daudz stundu. Un jums tas jādara 60 sekundēs. Tas ir joks.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Laikam vismaz kaut kā vajadzēja, jo tas viss darbojās ļoti, ļoti lēni, pirms atnāca ClickHouse.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Viņi mēģināja to aprēķināt, izmantojot Hadoop, Spark, Greenplum. Un tas viss bija ļoti lēni vai dārgi. Tas ir, varēja kaut kā aprēķināt, bet tad tas bija dārgi.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Un tad parādījās ClickHouse, un lietas kļuva daudz labākas.

Atgādinu, ka mums ir problēma ar datu lokalizāciju, jo korelācijas nevar lokalizēt. Mēs nevaram daļu datu ievietot vienā serverī, daļu citā un aprēķināt, mums ir jābūt visiem datiem visur.

Ko viņi izdarÄ«ja? Sākotnēji dati tiek lokalizēti. Katrs serveris glabā datus par noteiktas akciju kopas cenām. Un tie nepārklājas. Tāpēc ir iespējams aprēķināt logReturn paralēli un neatkarÄ«gi, tas viss lÄ«dz Å”im notiek paralēli un sadalÄ«ti.

Tad mēs nolēmām samazināt Å”os datus, vienlaikus nezaudējot izteiksmÄ«gumu. Samaziniet, izmantojot masÄ«vus, t.i., katram laika periodam izveidojiet krājumu masÄ«vu un cenu masÄ«vu. Tāpēc tas aizņem daudz mazāk datu vietas. Un ar tiem ir nedaudz vieglāk strādāt. Tās ir gandrÄ«z paralēlas darbÄ«bas, t.i., mēs daļēji lasām paralēli un pēc tam rakstām uz serveri.

Pēc tam to var atkārtot. Burts "r" nozÄ«mē, ka mēs atkārtojām Å”os datus. Tas ir, mums ir vienādi dati par visiem trim serveriem - tie ir masÄ«vi.

Un tad ar Ä«paÅ”u skriptu no Ŕīs 12,5 miljonu korelāciju kopas, kas jāaprēķina, varat izveidot pakotnes. Tas ir, 2 uzdevumu ar 500 korelāciju pāriem. Un Å”is uzdevums ir jāaprēķina uz konkrēta ClickHouse servera. Viņam ir visi dati, jo dati ir vienādi un viņŔ var tos secÄ«gi aprēķināt.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Atkal tā izskatās. Pirmkārt, mums ir visi dati Å”ajā struktÅ«rā: laiks, akcijas, cena. Tad mēs aprēķinājām logReturn, t.i., tādas paÅ”as struktÅ«ras datus, bet cenas vietā mums jau ir logReturn. Pēc tam tie tika pārtaisÄ«ti, t.i., mēs saņēmām laiku un grupuArray krājumiem un cenām. Replicēts. Un pēc tam mēs Ä£enerējām virkni uzdevumu un ievadÄ«jām tos ClickHouse, lai tas tos uzskaitÄ«tu. Un tas darbojas.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Koncepcijas pierādÄ«jumā uzdevums bija apakÅ”uzdevums, t.i., tika ņemts mazāk datu. Un tikai trÄ«s serveri.

Å ie pirmie divi posmi: Log_return aprēķināŔana un iesaiņoÅ”ana masÄ«vos aizņēma apmēram stundu.

Un korelācijas aprēķins ir apmēram 50 stundas. Bet ar 50 stundām ir par maz, jo agrāk viņi strādāja nedēļām ilgi. Tas bija liels panākums. Un, ja skaita, tad Å”ajā klasterÄ« viss tika saskaitÄ«ts 70 reizes sekundē.

Bet pats galvenais ir tas, ka Ŕī sistēma praktiski ir bez vājajām vietām, t.i., mērogojas gandrÄ«z lineāri. Un viņi to pārbaudÄ«ja. Tas ir veiksmÄ«gi palielināts.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

  • Pareizā shēma ir puse no kaujas. Un pareizā shēma ir visu nepiecieÅ”amo ClickHouse tehnoloÄ£iju izmantoÅ”ana.
  • Summing/AggregatingMergeTrees ir tehnoloÄ£ijas, kas ļauj apkopot vai uzskatÄ«t stāvokļa momentuzņēmumu kā Ä«paÅ”u gadÄ«jumu. Un tas ievērojami vienkārÅ”o daudzas lietas.
  • Materializētie skati ļauj apiet viena indeksa ierobežojumu. VarbÅ«t es to nepateicu ļoti skaidri, bet, kad mēs ielādējām žurnālus, neapstrādātie žurnāli bija tabulā ar vienu indeksu, un atribÅ«tu žurnāli bija tabulā, t.i., tie paÅ”i dati, tikai filtrēti, bet indekss bija pilnÄ«bā citi. Å Ä·iet, ka tie ir tie paÅ”i dati, bet atŔķirÄ«ga ŔķiroÅ”ana. Un materializētie skati ļauj jums, ja jums tas ir nepiecieÅ”ams, apiet Ŕādu ClickHouse ierobežojumu.
  • Samaziniet indeksa precizitāti punktu vaicājumiem.
  • Un gudri sadaliet datus, mēģiniet pēc iespējas vairāk lokalizēt datus serverÄ«. Un mēģiniet nodroÅ”ināt, lai pieprasÄ«jumos pēc iespējas vairāk izmantotu lokalizāciju.

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Rezumējot Å”o Ä«so runu, mēs varam teikt, ka ClickHouse tagad ir stingri ieņēmis gan komerciālo datu bāzu, gan atvērtā koda datu bāzu teritoriju, t.i., Ä«paÅ”i analÄ«tikai. ViņŔ lieliski iekļaujas Å”ajā ainavā. Un vēl vairāk, tas lēnām sāk izspiest citus, jo, kad jums ir ClickHouse, jums nav nepiecieÅ”ams InfiniDB. Vertika drÄ«zumā var nebÅ«t vajadzÄ«ga, ja tie nodroÅ”inās normālu SQL atbalstu. Izbaudi!

ClickHouse izmantoŔanas teorija un prakse reālās lietojumprogrammās. Aleksandrs Zaicevs (2018)

Sākot noPaldies par ziņojumu! Ļoti interesanti! Vai bija kādi salīdzinājumi ar Apache Phoenix?

Nē, es neesmu dzirdējis, ka kāds salÄ«dzinātu. Mēs un Yandex cenÅ”amies izsekot visiem ClickHouse salÄ«dzinājumiem ar dažādām datu bāzēm. Jo, ja pēkŔņi kaut kas izrādās ātrāks par ClickHouse, tad LeÅ”a Milovidova naktÄ«s nevar aizmigt un sāk to strauji paātrināt. Neesmu dzirdējis par tādu salÄ«dzinājumu.

  • (Aleksejs Milovidovs) Apache Phoenix ir SQL dzinējs, ko darbina Hbase. Hbase galvenokārt ir paredzēts atslēgas vērtÄ«bas darba scenārijam. Tur katrā rindā var bÅ«t patvaļīgs skaits kolonnu ar patvaļīgiem nosaukumiem. To var teikt par tādām sistēmām kā Hbase, Cassandra. Un tieÅ”i smagi analÄ«tiski vaicājumi viņiem normāli nedarbosies. Vai arÄ« jÅ«s varētu domāt, ka tie darbojas labi, ja jums nav bijusi pieredze ar ClickHouse.

  • Paldies

    • Labdien Mani Ŕī tēma jau ļoti interesē, jo man ir analÄ«tiskā apakÅ”sistēma. Bet, kad es paskatos uz ClickHouse, man rodas sajÅ«ta, ka ClickHouse ir ļoti labi piemērots notikumu analÄ«zei, mainÄ«gs. Un, ja man ir jāanalizē daudz biznesa datu, izmantojot daudzas lielas tabulas, tad ClickHouse, cik es saprotu, man nav Ä«paÅ”i piemērots? It Ä«paÅ”i, ja tie mainās. Vai tas ir pareizi, vai ir piemēri, kas to var atspēkot?

    • Å is ir pareizi. Un tas attiecas uz lielāko daļu specializēto analÄ«tisko datu bāzu. Tie ir pielāgoti tam, ka ir viena vai vairākas lielas tabulas, kas ir mainÄ«gas, un daudzas mazas, kas mainās lēni. Tas ir, ClickHouse nav kā Oracle, kur var ievietot visu un izveidot dažus ļoti sarežģītus vaicājumus. Lai efektÄ«vi izmantotu ClickHouse, jums ir jāizveido shēma tādā veidā, kas labi darbojas ClickHouse. Tas ir, izvairieties no pārmērÄ«gas normalizācijas, izmantojiet vārdnÄ«cas, mēģiniet izveidot mazāk garu saiÅ”u. Un, ja shēma ir veidota Ŕādā veidā, tad lÄ«dzÄ«gus biznesa uzdevumus ClickHouse var atrisināt daudz efektÄ«vāk nekā tradicionālajā relāciju datu bāzē.

Paldies par ziņojumu! Man ir jautājums par pēdējo finanÅ”u lietu. Viņiem bija analÄ«tika. Vajadzēja salÄ«dzināt, kā viņi iet uz augÅ”u un uz leju. Un es saprotu, ka jÅ«s izveidojāt sistēmu tieÅ”i Å”ai analÄ«zei? Ja, piemēram, rÄ«t viņiem ir nepiecieÅ”ams cits ziņojums par Å”iem datiem, vai viņiem ir jāpārveido shēma un jāaugÅ”upielādē dati? Tas ir, veikt kādu priekÅ”apstrādi, lai saņemtu pieprasÄ«jumu?

Protams, tas ir ClickHouse izmantoÅ”ana ļoti specifiskam uzdevumam. Tradicionālāk to varētu atrisināt Hadoop ietvaros. Hadoop tas ir ideāls uzdevums. Bet Hadoop tas ir ļoti lēns. Un mans mērÄ·is ir demonstrēt, ka ClickHouse spēj atrisināt uzdevumus, kurus parasti risina ar pavisam citiem lÄ«dzekļiem, bet tajā paŔā laikā to izdarÄ«t daudz efektÄ«vāk. Tas ir pielāgots konkrētam uzdevumam. Skaidrs, ka, ja ir problēma ar ko lÄ«dzÄ«gu, tad to var atrisināt lÄ«dzÄ«gi.

Tas ir skaidrs. JÅ«s teicāt, ka tika apstrādātas 50 stundas. Vai tas ir no paÅ”a sākuma, kad ielādējāt datus vai ieguvāt rezultātus?

Jā jā.

Labi liels paldies.

Tas atrodas 3 serveru klasterī.

Sveiciens! Paldies par ziņojumu! Viss ir ļoti interesanti. Nedaudz nejautāŔu par funkcionalitāti, bet gan par ClickHouse izmantoÅ”anu stabilitātes ziņā. Tas ir, vai jums tādas bija, vai jums bija jāatjauno? Kā ClickHouse uzvedas Å”ajā gadÄ«jumā? Un vai gadÄ«jās, ka jums bija arÄ« replika? Piemēram, mēs saskārāmies ar problēmu ar ClickHouse, kad tas joprojām pārsniedz ierobežojumu un nokrÄ«t.

Protams, ideālu sistēmu nav. Un ClickHouse arÄ« ir savas problēmas. Bet vai esat dzirdējuÅ”i par to, ka Yandex.Metrica nedarbojas ilgu laiku? Visticamāk ne. Tas ir uzticami strādājis kopÅ” 2012. lÄ«dz 2013. gadam vietnē ClickHouse. To paÅ”u varu teikt par savu pieredzi. Mums nekad nav bijuÅ”as pilnÄ«gas neveiksmes. Dažas daļējas lietas varēja notikt, taču tās nekad nebija tik kritiskas, lai nopietni ietekmētu uzņēmējdarbÄ«bu. Tas nekad nav noticis. ClickHouse ir diezgan uzticams un neavārē nejauÅ”i. Jums par to nav jāuztraucas. Tā nav jēla lieta. To ir pierādÄ«juÅ”i daudzi uzņēmumi.

Sveiki! JÅ«s teicāt, ka jums nekavējoties jāpārdomā datu shēma. Ko darÄ«t, ja tas notika? Mani dati birst un birst. Paiet seÅ”i mēneÅ”i, un es saprotu, ka Ŕādi dzÄ«vot nav iespējams, man ir atkārtoti jāaugÅ”upielādē dati un kaut kas ar tiem jādara.

Tas, protams, ir atkarÄ«gs no jÅ«su sistēmas. Ir vairāki veidi, kā to izdarÄ«t praktiski bez apstāŔanās. Piemēram, varat izveidot materializētu skatu, kurā izveidot citu datu struktÅ«ru, ja to var unikāli kartēt. Tas ir, ja tas ļauj kartēt, izmantojot ClickHouse, t.i., izvilkt dažas lietas, mainÄ«t primāro atslēgu, mainÄ«t sadalÄ«Å”anu, tad varat izveidot materializētu skatu. Tur pārrakstiet savus vecos datus, automātiski tiks ierakstÄ«ti jauni. Un tad vienkārÅ”i pārejiet uz materializētā skata izmantoÅ”anu, pēc tam pārslēdziet ierakstu un nogaliniet veco tabulu. Parasti Ŕī ir nepārtraukta metode.

Paldies.

Avots: www.habr.com

Pievieno komentāru