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.
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.
Un es neesmu Petja Zaiceva brÄlis. Man par to bieži jautÄ. NÄ, mÄs neesam brÄļi.
āVisi zinaā, ka ClickHouse:
- Ä»oti Ätri,
- Ä»oti Ärti
- Izmanto Yandex.
Nedaudz mazÄk zinÄms, kuros uzÅÄmumos un kÄ to izmanto.
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.
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.
- 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.
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.
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.
Ä¢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.
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.
Å 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.
- 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.
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.
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.
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.
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.
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.
Un, saÅemot testa rezultÄtus un aplÅ«kojot tos no dažÄdiem leÅÄ·iem, LifeStreet devÄs uz ClickHouse.
Å 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.
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.
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.
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.
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.
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.
- 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Ä.
- 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Ä.
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.
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.
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.
Å Ä«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.
Å 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.
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.
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.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
Å 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ÅÄ.
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.
- 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.
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.
Å 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Å«.
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.
Laikam vismaz kaut kÄ vajadzÄja, jo tas viss darbojÄs ļoti, ļoti lÄni, pirms atnÄca ClickHouse.
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.
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.
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.
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.
- 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.
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!
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