{"id":89878,"date":"2020-07-27T01:42:42","date_gmt":"2020-07-26T23:42:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g"},"modified":"2020-07-27T01:42:42","modified_gmt":"2020-07-26T23:42:42","slug":"teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","title":{"rendered":"ClickHouse'i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b46b964324a3311157d5df737526b1d1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuigi andmeid on praegu peaaegu igal pool palju, on anal\u00fc\u00fctilised andmebaasid endiselt \u00fcsna eksootilised. Need on halvasti tuntud ja veel hullem, neid osatakse efektiivselt kasutada v\u00e4ga halvasti. Paljud j\u00e4tkavad 'kaktuse s\u00f6\u00f6mist' MySQL-i v\u00f5i PostgreSQL-iga, mis on kavandatud teiste stsenaariumide jaoks, kannatavad NoSQL-i all v\u00f5i maksavad liiga palju kommertslike lahenduste eest. ClickHouse muudab m\u00e4ngureegleid ja v\u00e4hendab oluliselt sissep\u00e4\u00e4su takistusi anal\u00fc\u00fctiliste DBMS-ide maailma.<\/p>\n<p><\/p>\n<p>Ettekanne BackEnd Conf 2018 ja see on avaldatud esineja loal.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"9MwKE30aUPs\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/9MwKE30aUPs\/hqdefault.jpg\" alt=\"Vaata videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6c55b639d9703f460d99e0b0b1194507.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKes ma olen ja miks ma r\u00e4\u00e4gin ClickHouse'ist? Olen LifeStreeti arenduse direkter, kes kasutab ClickHouse'i. Lisaks olen Altinity asutaja. See on Yandexi partner, mis edendab ClickHouse'i ja aitab Yandexil teha ClickHouse'ist edukamat. Olen samuti valmis jagama teadmisi ClickHouse'i kohta. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/36af6acba62271f7aa19dda2eb470870.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja ma ei ole Petja Zaitsevi vend. Paljud k\u00fcsivad seda sageli. Ei, me ei ole vennad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6ca605f97619a1373bb8a92f88d480d5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00abIga\u00fchele on teada\u00bb, et ClickHouse on:<\/p>\n<p><\/p>\n<ul>\n<li>V\u00e4ga kiire,<\/li>\n<li>V\u00e4ga mugav, <\/li>\n<li>Kasutatakse Yandexis. <\/li>\n<\/ul>\n<p><\/p>\n<p>Veidi v\u00e4hem on teada, millistes ettev\u00f5tetes ja kuidas seda kasutatakse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c097b003bf8ea13b8a3bb765270e99c8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kertan teile, miks, kus ja kuidas ClickHouse'i kasutatakse peale Yandexi. <\/p>\n<p><\/p>\n<p>Selgitan, kuidas konkreetseid \u00fclesandeid lahendatakse ClickHouse'i abil erinevates ettev\u00f5tetes, milliseid t\u00f6\u00f6riistu saate ClickHouse'ist oma vajaduste jaoks kasutada ja kuidas neid erinevates ettev\u00f5tetes on rakendatud.<\/p>\n<p><\/p>\n<p>Olen valinud kolm n\u00e4idet, mis n\u00e4itavad ClickHouse'i erinevaid k\u00fclgi. Arvan, et see on huvitav.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d3cab92ceccd6c7d01ca1f28b028803f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Esimene k\u00fcsimus: \"Miks on ClickHouse vajalik?\". Tundub, et k\u00fcsimus on piisavalt ilmne, kuid vastuseid sellele on rohkem kui \u00fcks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1a4e14cc041a3c01ad0fd2a305aeeab0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Esimene vastus on seotud tootlikkusega. ClickHouse on v\u00e4ga kiire. Anal\u00fc\u00fcs ClickHouse'is on samuti v\u00e4ga kiire. Seda saab sageli kasutada seal, kus midagi muud t\u00f6\u00f6tab v\u00e4ga aeglaselt v\u00f5i halvasti. <\/li>\n<li>Teine vastus on seotud kuludega. Esiteks, skaleerimise kulud. N\u00e4iteks Vertica on t\u00e4iesti suurep\u00e4rane andmebaas. See t\u00f6\u00f6tab v\u00e4ga h\u00e4sti, kui teil on mitte liiga palju terabaiti andmeid. Kuid kui jutt on sadadest terabaitidest v\u00f5i petabaitidest, siis litsentsi ja toe hind t\u00f5useb piisavalt k\u00f5rgeks. Ja see on kallis. ClickHouse on aga tasuta. <\/li>\n<li>Kolmas vastus on opereerimise kulu. See l\u00e4henemine on veidi teistsugune. RedShift on suurep\u00e4rane analoog. RedShiftis saab lahenduse v\u00e4ga kiiresti valmis teha. See t\u00f6\u00f6tab h\u00e4sti, kuid iga tund, iga p\u00e4ev ja iga kuu maksate te Amazonile \u00fcsna palju, sest see on \u00fcsna kallis teenus. Google BigQuery samuti. Kui keegi on seda kasutanud, siis teab ta, et seal saab k\u00e4ivitada mitu p\u00e4ringut ja \u00fcllatusena saada emakasu sadu dollareid. <\/li>\n<\/ul>\n<p><\/p>\n<p>ClickHouse'is neid probleeme ei esine. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3084a8bd9271f14726d73989946816c5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kus kasutatakse ClickHouse'i praegu? Peale Yandexi kasutatakse ClickHouse'i paljudes erinevates \u00e4ri\u00fchingutes ja ettev\u00f5tetes. <\/p>\n<p><\/p>\n<ul>\n<li>Esiteks on see veebirakenduste anal\u00fc\u00fcs, st see on kasutusjuht, mis tuli Yandexist.<\/li>\n<li>Paljud AdTech ettev\u00f5tted kasutavad ClickHouse'i. <\/li>\n<li>Mitmed ettev\u00f5tted, kes peavad anal\u00fc\u00fcsima operatiivlogisid erinevatest allikatest.<\/li>\n<li>M\u00f5ned ettev\u00f5tted kasutavad ClickHouse'i turvalogide j\u00e4lgimiseks. Nad laadivad need ClickHouse'i, teevad aruandeid ja saavad vajalikud tulemid.<\/li>\n<li>Ettev\u00f5tted hakkavad seda kasutama finantsanal\u00fc\u00fcsis, st j\u00e4rk-j\u00e4rgult hakkab ka suur\u00e4ri ClickHouse'i kasutusele v\u00f5tma. <\/li>\n<li>CloudFlare. Kui keegi j\u00e4lgib ClickHouse'i, siis on ta kindlasti kuulnud selle ettev\u00f5tte nime. See on \u00fcks olulisemaid panustajaid kogukonnas. Nendel on v\u00e4ga t\u00f5sine ClickHouse'i paigaldus. N\u00e4iteks nad l\u00f5id Kafka Engine'i ClickHouse'ile. <\/li>\n<li>Telekommunikatsiooniettev\u00f5tted on hakanud seda kasutama. Mitmed ettev\u00f5tted kasutavad ClickHouse'i kas t\u00f5estusena m\u00f5tte v\u00f5i juba tootmises.<\/li>\n<li>\u00dcks ettev\u00f5te kasutab ClickHouse'i tootmisprotsesside j\u00e4lgimiseks. Nad testivad mikroskeeme, koguvad hulga parameetreid, seal on umbes 2000 omadust. Ja seej\u00e4rel anal\u00fc\u00fcsivad \u2013 kas partii on hea v\u00f5i halb.<\/li>\n<li>Blockchain-anal\u00fc\u00fcs. On selline Venemaa ettev\u00f5te nagu Bloxy.info. See anal\u00fc\u00fcsib ethereum'i v\u00f5rku. Ka selle nad tegid ClickHouse'il. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/8a0c1924a20ed2d15cd0f959e9b3e499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja suurus ei oma t\u00e4htsust. On palju ettev\u00f5tteid, kes kasutavad \u00fchte v\u00e4ikest serverit. See aitab neil lahendada nende probleeme. Ja veel rohkem ettev\u00f5tteid kasutab suuri klastreid paljusid <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/\"   title=\"serverite\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1513\">serverite<\/a> v\u00f5i tosin serverit. <\/p>\n<p><\/p>\n<p>Ja kui vaadata rekordite j\u00e4rgi, siis:<\/p>\n<p><\/p>\n<ul>\n<li>Yandex: 500+ serverit, 25 miljardit kirjet p\u00e4evas nad seal salvestavad.<\/li>\n<li>LifeStreet: 60 serverit, umbes 75 miljardit kirjet p\u00e4evas. Servereid on v\u00e4hem, kirjeid rohkem kui Yandex'il. <\/li>\n<li>CloudFlare: 36 serverit, 200 miljardit kirjet p\u00e4evas nad salvestavad. Neil on veel v\u00e4hem servereid ja veel rohkem andmeid, mida nad salvestavad. <\/li>\n<li>Bloomberg: 102 <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/dts-los-angeles\/\"   title=\"serverile\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3643\">serverile<\/a>, umbes triljon kirjet p\u00e4evas. Rekordite loobja.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/49194030b6586221cb17029889ce33da.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Geograafiliselt on see ka palju. See kaart n\u00e4itab heatmap'i, kus ClickHouse'i maailmas kasutatakse. Siin paistab silma Venemaa, Hiina, Ameerika. Euroopa riike on v\u00e4he. Ja eristada saab 4 klastrit.<\/p>\n<p><\/p>\n<p>See on v\u00f5rdlev anal\u00fc\u00fcs, siin pole vaja otsida absoluutseid numbreid. See on anal\u00fc\u00fcs k\u00fclastajatest, kes loevad ingliskeelseid materjale Altinity saidil, kuna venekeelseid seal pole. Ja Venemaa, Ukraina, Valgevene, st venekeelne osa kogukonnast, on k\u00f5ige arvukamad kasutajad. J\u00e4rgnevad USA ja Kanada. Hiina j\u00e4\u00e4b v\u00e4ga l\u00e4hedale. Pool aastat tagasi ei olnud Hiinat peaaegu \u00fcldse, n\u00fc\u00fcd on Hiina juba Euroopat \u00fcle t\u00fckkis ja j\u00e4tkab kasvu. Vanadaam Euroopa j\u00e4\u00e4b samuti maha, ja ClickHouse'i kasutamise liider \u2013 nagu imelik see ei oleks, on Prantsusmaa. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3a8305c51b1bd62f3467b795402df4ed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Miks ma k\u00f5ik seda r\u00e4\u00e4gin? Selleks, et n\u00e4idata, et ClickHouse on muutumas standardseks lahenduseks suurte andmete anal\u00fc\u00fcsiks ja seda kasutatakse juba v\u00e4ga paljudes kohtades.<\/strong> Kui te seda kasutate, siis olete \u00f5igel teel. Kui te seda veel ei kasuta, siis pole vaja karta, et j\u00e4\u00e4te \u00fcksi ja keegi ei aita, sest paljud inimesed on juba sellega tegelenud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6aa635f3a35034d3af837c78b2c8fe60.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Need on ClickHouse'i reaalsed kasutusn\u00e4ited mitmetes ettev\u00f5tetes. <\/p>\n<p><\/p>\n<ul>\n<li>Esimene n\u00e4ide on reklaamiv\u00f5rgustik: \u00fcleminek Verticalt ClickHouse'ile. Ja ma tean mitmeid ettev\u00f5tteid, kes on Verticalt \u00fcle l\u00e4inud v\u00f5i on \u00fclemineku protsessis. <\/li>\n<li>Teine n\u00e4ide on tehinguhoidla ClickHouse'is. See n\u00e4ide p\u00f5hineb anti-mustritel. K\u00f5ik, mida ei tohiks ClickHouse'is teha vastavalt arendajate soovitustele, on siin tehtud. Ja sellegipoolest on see nii t\u00f5hus, et see t\u00f6\u00f6tab. Ja t\u00f6\u00f6tab palju paremini kui t\u00fc\u00fcpiline tehingulahendus. <\/li>\n<li>Kolmas n\u00e4ide on jaotatud arvutused ClickHouse'is. Oli k\u00fcsimus selle kohta, kuidas saab ClickHouse'i integreerida Hadoopi \u00f6kos\u00fcsteemi. N\u00e4itan n\u00e4idet, kuidas ettev\u00f5te tegi ClickHouse'is midagi sarnast map reduce konteinerile, j\u00e4lgides andmete lokaliseerimist jne, et lahendada v\u00e4ga keeruline \u00fclesanne. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e08ab5418500599f08d40324ccdfbcd0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>LifeStreet \u2013 see on reklaamitehnoloogia ettev\u00f5te, millel on k\u00f5ik tehnoloogiad, mis toetavad reklaamiv\u00f5rku. <\/li>\n<li>Ta tegeleb reklaamide optimeerimise ja programmilise pakkumisega. <\/li>\n<li>Palju andmeid: umbes 10 miljardit s\u00fcndmust p\u00e4evas. Samas v\u00f5ivad s\u00fcndmused jaguneda mitmeks alas\u00fcndmuseks.<\/li>\n<li>Seda andmestikku kasutavad paljud kliendid, sealhulgas mitte ainult inimesed, vaid ka palju rohkem \u2013 erinevad algoritmid, mis tegelevad programmilise pakkumisega. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2da99b53eb25f675a2431027f86db934.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ettev\u00f5te on l\u00e4binud pika ja keerulise tee. Ja ma r\u00e4\u00e4kisin sellest HighLoadis. Alguses \u00fcleminek LifeStreet MySQL-lt (v\u00e4ikese peatumisega Oracle'il) Vertica-le. Ja selle kohta on v\u00f5imalik leida lugu. <\/p>\n<p><\/p>\n<p>Ja k\u00f5ik l\u00e4ks v\u00e4ga h\u00e4sti, kuid \u00fcsna kiiresti sai selgeks, et andmed kasvavad ja Vertica on kallis. Seet\u00f5ttu otsiti erinevaid alternatiive. M\u00f5ned neist on siin loetletud. Tegelikult tegime me t\u00f5estuskontseptsiooni v\u00f5i m\u00f5nikord j\u00f5udluskatsetusi peaaegu k\u00f5igi andmebaasidega, mis olid turul saadaval aastatel 2013 kuni 2016 ja sobisid oma funktsionaalsusega. Ja osa neist olin ma samuti HighLoadis r\u00e4\u00e4kinud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/4bebd2f43892cbef9249ddded1b8a70a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Olukord oli migreerida Verticast eelk\u00f5ige, kuna andmed kasvasid. Ja need kasvasid eksponentsiaalselt mitu aastat. Kui nad l\u00f5puks stabiliseerusid, oli siiski selge, et prognoosides seda kasvu, on \u00e4ri n\u00f5udmised andmete mahu osas, mille p\u00f5hjal tuleb teha mingeid anal\u00fc\u00fcse, sellised, et varsti tuleb juttu petabaidist. Ja petabaidi eest maksmine on juba v\u00e4ga kallis, seet\u00f5ttu otsiti alternatiivi, kuhu minna. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f170a4307168e8560122966eab85c24e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuhu minna? Pikka aega ei olnud selgelt aru saada, kuhu minna, kuna \u00fchelt poolt on olemas kaubanduslikud andmebaasid, mis n\u00e4ivad t\u00f6\u00f6tavat h\u00e4sti. M\u00f5ned t\u00f6\u00f6tavad peaaegu sama h\u00e4sti kui Vertica, m\u00f5ned aga halvemini. Kuid nad k\u00f5ik on kallid, odavamat ja paremat leida ei \u00f5nnestunud. <\/p>\n<p><\/p>\n<p>Teiselt poolt on olemas avatud allika lahendused, mida on \u00fcsna v\u00e4he, st uurimiseks v\u00f5ib neid loendada s\u00f5rmedel. Need on tasuta v\u00f5i odavad, kuid t\u00f6\u00f6tavad aeglaselt. Tihti puudub neis vajalike ja kasulike funktsioonide hulk.<\/p>\n<p><\/p>\n<p>Seega, et koondada parim, mis kaubanduslikes andmebaasides on, ja k\u00f5ik tasuta, mis avatud allikas leidub \u2014 midagi ei olnud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/abbefbf0d9578b554f81579b87213a50.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ei olnud suurt midagi, kuni Yandex \u00fchel p\u00e4eval ei t\u00f5mmanud ClickHouse'i nagu kunstnik k\u00fcbara seest v\u00e4lja. See oli ootamatu otsus, mille \u00fcle endiselt k\u00fcsitakse: \u201eMiks?\u201c, kuid siiski. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c88981aace9d5925396ca5171241b7d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kohe suvel 2016. aastal hakkasime vaatama, mis ClickHouse'i enda sees toimub. Selgus, et see v\u00f5ib kohati olla kiirem kui Vertica. Testisime erinevaid stsenaariume erinevate p\u00e4ringutega. Ja kui p\u00e4ring kasutas ainult \u00fcht tabelit, st ilma igasuguste liitumisteta (join), siis oli ClickHouse kaks korda kiirem kui Vertica. <\/p>\n<p><\/p>\n<p>Ma ei viitsinud ja vaatasin hiljuti ka Yandexi teste. Seal on sama: ClickHouse on kaks korda kiirem kui Vertica, seega r\u00e4\u00e4givad nad sellest sageli. <\/p>\n<p><\/p>\n<p>Aga kui p\u00e4ringutes on liitumised (join), siis ei ole k\u00f5ik nii \u00fcheselt arusaadav. Ja ClickHouse v\u00f5ib olla Vertica'ist kaks korda aeglasem. Kui p\u00e4ringut veidi kohendada ja \u00fcmber kirjutada, siis on tulemused enam-v\u00e4hem v\u00f5rdsed. \u00dcsna hea. Ja tasuta. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/188bf56b72123175a18d2cb97d989a47.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Saades testide tulemused ja vaadates sellele eri nurkade alt, suunas LifeStreet ennast ClickHouse'i poole.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1183b9b7681916686c52786fc95ccb45.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on 2016. aasta, tuletan meelde. See oli nagu naljas, kus hiired nuttisid ja piinasid end, aga j\u00e4tkasid kaktuse s\u00f6\u00f6mist. Sellest on p\u00f5hjalikult r\u00e4\u00e4gitud, olemas on videod jne. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/993052ed83dc295c3777e614c7703456.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seet\u00f5ttu ei hakka ma sellest p\u00f5hjalikult r\u00e4\u00e4kima, vaid r\u00e4\u00e4gin vaid tulemustest ja mitmest huvitavast asjast, millest ma siis ei r\u00e4\u00e4kinud. <\/p>\n<p><\/p>\n<p>Tulemused on j\u00e4rgmised:<\/p>\n<p><\/p>\n<ul>\n<li>Edasi minek ja s\u00fcsteem on t\u00f6\u00f6tanud tootmises \u00fcle aasta. <\/li>\n<li>T\u00f5husus ja paindlikkus on kasvanud. 10 miljardi kirje asemel, mida me suutsime p\u00e4evas hoida ja seejuures l\u00fchikest aega, salvestab LifeStreet n\u00fc\u00fcd 75 miljardit kirjet p\u00e4evas ja suudab seda teha 3 kuud v\u00f5i kauem. Kui arvestada tipptasemel, siis salvestatakse kuni miljon s\u00fcndmust sekundis. \u00dcle miljoni SQL-p\u00e4ringu p\u00e4evas j\u00f5uab sellesse s\u00fcsteemi, peamiselt erinevatelt robotitelt. <\/li>\n<li>Kuigi ClickHouse'i jaoks kasutatakse rohkem servereid kui Vertica jaoks, on ka riistvara kokkuhoid, kuna Verticas kasutati \u00fcsna kalliseid SAS-kettasid. ClickHouse'is kasutati SATA-kettasid. Miks? Sest Verticas on insert s\u00fcnkroonne. S\u00fcnkroniseerimine n\u00f5uab, et kettad ei oleks liiga aeglased ja et v\u00f5rk ei oleks liiga aeglane, st see on piisavalt kallis operatsioon. ClickHouse'is on insert as\u00fcnkroonne. Veelgi enam, andmeid saab alati kohapeal kirjutada, lisakulusid ei ole, mist\u00f5ttu saab ClickHouse'i andmeid sisestada palju kiiremini kui Verticas isegi mitte k\u00f5ige kiirematel kettadel. Lugemine on aga enam-v\u00e4hem sama. SATA lugemine, kui need on RAID-is, on piisavalt kiire. <\/li>\n<li>Ei ole litsentsiga piiratud, st 3 petabaiti andmeid 60 serveris (20 serverit \u2013 \u00fcks koopia) ja 6 triljonit kirjet faktides ja agregaatides. Me ei saanud Verticas midagi sellist endale lubada. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f461cdc12917ee655655dd7eb9c32bb2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd liigun ma selle n\u00e4ite praktilistele asjadele.<\/p>\n<p><\/p>\n<ul>\n<li>Esimene on t\u00f5hus skeem. Skeemi s\u00f5ltub v\u00e4ga palju. <\/li>\n<li>Teine on t\u00f5husate SQL-ide genereerimine.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e7dc2a217e77c8794ff6e8a754e78c85.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00fc\u00fcpiline OLAP-p\u00e4ring on select. Osa veerge on group by, osa veerge l\u00e4heb aggregaatfunktsioonidesse. On olemas where, mida v\u00f5ib m\u00f5elda kui kuubi l\u00f5iku. Kogu group by v\u00f5ib m\u00f5elda kui projektsioon. Ja seet\u00f5ttu nimetatakse seda mitmem\u00f5\u00f5tmeliseks andmeanal\u00fc\u00fcsiks. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a03a2d7fd28905ae83183346f0c673e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seda modelleeritakse sageli star-skeemina, kus keskne fakt ja selle omadused asuvad \u00fcmbritsevatel k\u00fclgedel. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d9671af4b39cc83e1ae49e6fd75d0e02.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja f\u00fc\u00fcsilise disaini seisukohalt, kuidas see andmebaasi tabelisse paigutatakse, luuakse tavaliselt normaliseeritud esitus. V\u00f5ite seda denormaliseerida, kuid see on andmekasutuses kulukas ning v\u00e4hem efektiivne p\u00e4ringute osas. Seet\u00f5ttu luuakse tavaliselt normaliseeritud esitus, st faktitabel ja palju m\u00f5\u00f5tetabeleid. <\/p>\n<p><\/p>\n<p>Kuid ClickHouse'is ei toimi see h\u00e4sti. On kaks p\u00f5hjust: <\/p>\n<p><\/p>\n<ul>\n<li>Esiteks, ClickHouse'il ei ole v\u00e4ga h\u00e4id liitumisi (join), st liitumised (join) on olemas, kuid need on halvad. Siiani on nad halvad. <\/li>\n<li>Teiseks, tabelid ei uuene. Tavaliselt on star-skeemi \u00fcmber olevates tabelites midagi muuta. N\u00e4iteks kliendi nimi, firma nimi jne. Ja see ei toimi. <\/li>\n<\/ul>\n<p><\/p>\n<p>ClickHouse'il on sellest v\u00e4ljap\u00e4\u00e4s. Tegelikult kaks: <\/p>\n<p><\/p>\n<ul>\n<li>Esimene on s\u00f5nastike kasutamine. External Dictionaries aitavad 99% ulatuses lahendada star-skeemi probleemi, uuendusi ja muud. <\/li>\n<li>Teine on massiivide kasutamine. Massiivid aitavad samuti vabaneda join-idest ja normaliseerimise probleemidest. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/775972cc412651600799173407384492.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Join-e pole vaja. <\/li>\n<li>uuendatavad. Alates m\u00e4rtsist 2018 on ilmnenud dokumenteerimata v\u00f5imalus (dokumentatsioonist te ei leia) uuendada s\u00f5nastikke osaliselt, st neid kirjeid, mis on muutunud. Praktikas on see nagu tabel.<\/li>\n<li>Alati m\u00e4lus, seega join-id s\u00f5nastikuga t\u00f6\u00f6tavad kiiremini kui juhul, kui see oleks tabel, mis asub kettal, ja ei ole sugugi kindel, et see on vahemikus, t\u00f5en\u00e4oliselt mitte. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f73176a650b6d885011e3265c2af2fc3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Ega join-e pole vaja.<\/li>\n<li>See on kompaktne esitus 1 paljudele. <\/li>\n<li>Ja minu arvates on massiivid tehtud n\u00f6rdimiseks. Need on lambda-funktsioonid ja muu. <\/li>\n<\/ul>\n<p><\/p>\n<p>See ei ole iluelemendi jaoks. See on v\u00e4ga v\u00f5imas funktsionaalsus, mis v\u00f5imaldab teha paljusid asju v\u00e4ga lihtsalt ja elegantselt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5d813952ca8f3da7a74c6f2a15d80a9b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00fc\u00fcpilised n\u00e4ited, mis aitavad lahendada massiive. Need n\u00e4ited on lihtsad ja piisavalt visuaalsed:<\/p>\n<p><\/p>\n<ul>\n<li>Otsimine siltide j\u00e4rgi. Kui teil on seal hashtags ja soovite leida mingit teavet hashtag'i j\u00e4rgi. <\/li>\n<li>Otsing key-value paaride kaudu. Samuti on m\u00f5ned atribuudid v\u00e4\u00e4rtusega. <\/li>\n<li>Salvestage v\u00f5tmete loendid, mille peate t\u00f5lkima millegi muuks.<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00f5iki neid \u00fclesandeid saab lahendada ilma massiivideta. Sildid saab panna \u00fchte ritta ja valida regulaaravaldusega v\u00f5i panna eraldi tabelisse, kuid siis tuleb teha liitumised (join).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/dbbf90eee098c4564206532f24156823.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja ClickHouse'is ei pea midagi tegema, piisab string massiivi kirjeldamisest hashtagi jaoks v\u00f5i v\u00f5ib luua sisemise struktuuri key-value t\u00fc\u00fcpide s\u00fcsteemide jaoks.<\/p>\n<p><\/p>\n<p>Sisemine struktuur \u2013 see v\u00f5ib-olla ei ole k\u00f5ige \u00f5nnestunum nimetus. Need on kaks massiivi, millel on \u00fchine osa nimes ja m\u00f5ned omavahel seotud omadused. <\/p>\n<p><\/p>\n<p>Ja sildi j\u00e4rgi otsimine on v\u00e4ga lihtne. On funktsioon <code>has<\/code>, mis kontrollib, kas massiivis on element. K\u00f5ik, leidsime k\u00f5ik kirjed, mis kuuluvad meie konverentsile.<\/p>\n<p><\/p>\n<p>Subidi j\u00e4rgi otsimine on veidi keerulisem. Peame esmalt leidma v\u00f5tme indeksi ja siis v\u00f5tma selle indeksi element ja kontrollima, kas see v\u00e4\u00e4rtus on see, mida vajame. Kuid see on ikkagi v\u00e4ga lihtne ja kompaktne.<\/p>\n<p><\/p>\n<p>Regulaarav v\u00e4ljend, mille sooviksite kirjutada, kui hoiaksite k\u00f5ik \u00fches reas, oleks see esiteks kohmakas. Ja teiseks t\u00f6\u00f6taks see palju kauem kui kaks massiivi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/17664c3121b2b0d33188adbfaa653d4e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teine n\u00e4ide. Teil on massiiv, kus hoidsite ID-sid. Ja saate need nimedeks t\u00f5lkida. Funktsioon <code>arrayMap<\/code>. See on t\u00fc\u00fcpiline lambda-funktsioon. Te edastate sinna lambda-v\u00e4ljendeid. Ja see toob igale ID-le s\u00f5nastikust v\u00e4lja nime v\u00e4\u00e4rtuse.<\/p>\n<p><\/p>\n<p>Sama moodi saab teha ka otsingut. Edastatakse predikaatfunktsioon, mis kontrollib, millistele elementidele vastavad. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/146917b71a35d38a550cd9accf6ab2f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Need asjad lihtsustavad skeemi ja lahendavad hulga probleeme. <\/p>\n<p><\/p>\n<p>Aga j\u00e4rgmine probleem, millega me silmitsi seisame ja mille osas soovin mainida, on efektiivsed p\u00e4ringud. <\/p>\n<p><\/p>\n<ul>\n<li>ClickHouse'is ei ole p\u00e4ringute planeerijat. \u00dcldse mitte. <\/li>\n<li>Kuid keerulisi p\u00e4ringuid tuleb ikka planeerida. Millal? <\/li>\n<li>Kui p\u00e4ringus on mitu liitumist (join), mille te keerate alam-p\u00e4ringuteks. Ja j\u00e4rjekord, milles need t\u00e4idetakse, on oluline. <\/li>\n<li>Ja teine \u2013 kui p\u00e4ring on jagatud. Sest jagatud p\u00e4ringus t\u00e4idetakse ainult k\u00f5ige sisemine alamvalik jagatuna, samas kui k\u00f5ik muu saadetakse \u00fchele serverile, millega olete \u00fchendatud ja kus see t\u00e4idetakse. Seega, kui teil on paljude liitumistega (join) jagatud p\u00e4ringud, tuleb valida j\u00e4rjekord. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ja isegi lihtsamatel juhtudel on m\u00f5nikord otstarbekas planeerija t\u00f6\u00f6d teha ja p\u00e4ringuid veidi \u00fcmber kirjutada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/217d422b429e8b4bc13abbf0efdf6be1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on n\u00e4ide. Vasakul on p\u00e4ring, mis n\u00e4itab 5 parimat riiki. See t\u00e4idetakse umbes 2,5 sekundi jooksul. Paremal on sama p\u00e4ring, kuid veidi \u00fcmber kirjutatud. Me ei gruppeerinud enam rea kaupa, vaid gruppeerisime v\u00f5tme (int) kaupa. See on kiiremini. Ja siis liitsime tulemusele s\u00f5naraamatu. Kui esimene p\u00e4ring v\u00f5ttis 2,5 sekundit, siis see uus p\u00e4ring t\u00e4idetakse 1,5 sekundiga. See on hea. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f19fb7d7f0397a3b38b2a3bd179c156b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sarnane n\u00e4ide filtrite \u00fcmber kirjutamisest. Siin on p\u00e4ring Venemaa kohta. See t\u00e4idetakse 5 sekundi jooksul. Kui me kirjutame selle \u00fcmber nii, et ei v\u00f5rreldaks enam rida, vaid numbreid m\u00f5ne v\u00f5tme kogumiga, mis kuulub Venemaale, siis see on palju kiirem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0c1dd1f317133d1d106ffef85f337079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selliseid trikke on palju. Need v\u00f5imaldavad oluliselt kiirendada p\u00e4ringute t\u00f6\u00f6d, mis teie arvates juba t\u00f6\u00f6tavad kiiresti v\u00f5i, vastupidi, t\u00f6\u00f6tavad aeglaselt. Neid saab veel kiiremini teha.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/25b132790b03f239e38237af5e92ab63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Maksimaalne t\u00f6\u00f6 jaotatud re\u017eiimis. <\/li>\n<li>Sorteerimine minimaalsete t\u00fc\u00fcpide alusel, nagu ma seda intansid tehes tegin. <\/li>\n<li>Kui on mingid liitumised (join), s\u00f5nastikud, siis on parem need teha viimasel korral, kui teil on juba andmed v\u00e4hemalt osaliselt grupeeritud, sest siis toimub liitumise (join) v\u00f5i s\u00f5nastiku v\u00e4ljakutsumine v\u00e4hem ja see on kiirem. <\/li>\n<li>Filtrite asendamine. <\/li>\n<\/ul>\n<p><\/p>\n<p>On veel teisi tehnikaid, mitte ainult neid, mida ma demonstreerisin. Ja k\u00f5ik need v\u00f5imaldavad m\u00f5nikord oluliselt kiirendada p\u00e4ringute t\u00e4itmist.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/175832796bee525909d8875bd723a881.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00e4heme j\u00e4rgmise n\u00e4ite juurde. Firma X USA-st. Mida ta teeb? <\/p>\n<p><\/p>\n<p>\u00dclesanne oli: <\/p>\n<p><\/p>\n<ul>\n<li>Offline-reklaami tehingute seondamine. <\/li>\n<li>Erinevate seondumise mudelite modelleerimine. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0136b71a1205512d86f13e86761146f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mis on stsenaarium?<\/p>\n<p><\/p>\n<p>Tavaline k\u00fclastaja k\u00fclastab saiti umbes 20 korda kuus erinevatelt reklaamidel v\u00f5i lihtsalt nii, et ta meeles peab seda saiti. Ta vaatab tooteid, paneb need ostukorvi, v\u00f5tab need ostukorvist v\u00e4lja. Ja l\u00f5puks ostab ta midagi. <\/p>\n<p><\/p>\n<p>M\u00f5istlikud k\u00fcsimused: \u201eKellele tuleks reklaamihinna eest maksta, kui seda on vaja?\u201d ja \u201eMilline reklaam m\u00f5jutas teda, kui m\u00f5jutas?\u201d See t\u00e4hendab, miks ta ostis ja kuidas teha nii, et sarnased inimesed ostaksid samuti?<\/p>\n<p><\/p>\n<p>Selle \u00fclesande lahendamiseks on vaja siduda s\u00fcndmusi, mis veebisaidil juhtuvad, \u00f5igesti, st luua nende vahel seosed. Seej\u00e4rel edastada need anal\u00fc\u00fcsimiseks DWH-sse. Ja selle anal\u00fc\u00fcsi p\u00f5hjal luua mudel, kellele ja millist reklaami n\u00e4idata.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e53ec81ce89150697d0eca4d72886638.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Reklaamitehing on komplekt seotud kasutaja s\u00fcndmustest, mis algavad reklaami kuvamisest, seej\u00e4rel toimub midagi, mille j\u00e4rel v\u00f5ib j\u00e4rgneda ost ja potentsiaalselt ka edasised ostud. N\u00e4iteks, kui see on mobiilirakendus v\u00f5i mobiilm\u00e4ng, siis installimine toimub tavaliselt tasuta, aga kui seal toimub midagi muud, v\u00f5ivad selleks kulud tekkida. Mida rohkem inimene rakenduses kulutab, seda v\u00e4\u00e4rtuslikumaks ta muutub. Kuid selleks tuleb k\u00f5ik siduda. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a2213613f1ef660409124ef8bcdd4fe3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On palju sidumise mudeleid. <\/p>\n<p><\/p>\n<p>K\u00f5ige populaarsemad on:<\/p>\n<p><\/p>\n<ul>\n<li>Viimane interaktsioon, kus interaktsioon on kas klikk v\u00f5i kuvamine.<\/li>\n<li>Esimene interaktsioon, s.t. esimene asi, mis inimese veebilehele t\u00f5i.<\/li>\n<li>Lineaarne kombinatsioon \u2013 k\u00f5ik v\u00f5rdselt. <\/li>\n<li>H\u00e4vimine.<\/li>\n<li>Ja muud. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/9523307d557e094d981da5b525ed0b59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuidas see k\u00f5ik algselt t\u00f6\u00f6tas? Oli Runtime ja Cassandra. Cassandra'd kasutati tehingute salvestamiseks, see t\u00e4hendab, et seal salvestati k\u00f5ik seotud tehingud. Ja kui m\u00f5ni s\u00fcndmus j\u00f5uab Runtime'i, n\u00e4iteks kindla lehe kuvamine v\u00f5i midagi muud, siis tehti p\u00e4ring Cassandra'sse \u2013 kas selline inimene eksisteerib v\u00f5i mitte. Siis toodi v\u00e4lja temaga seotud tehingud ja tehti sidumine.<\/p>\n<p><\/p>\n<p>Ja kui \u00f5nnestub leida tehingu ID, siis on see lihtne. Kuid tavaliselt ei ole \u00f5nne. Seet\u00f5ttu oli vaja leida viimane tehing v\u00f5i tehing viimase kl\u00f5psuga jne. <\/p>\n<p><\/p>\n<p>See t\u00f6\u00f6tas v\u00e4ga h\u00e4sti, kuni sidumine toimis viimase kl\u00f5psuga. Kuna klikke on n\u00e4iteks 10 miljonit p\u00e4evas, 300 miljonit kuus, kui seada kuu vahemik. Ja kuna Cassandras peab see k\u00f5ik olema m\u00e4lus, et see kiiresti t\u00f6\u00f6taks, kuna n\u00f5utakse, et Runtime vastaks kiiresti, siis oli vaja umbes 10-15 serverit. <\/p>\n<p><\/p>\n<p>Kuid kui sooviti siduda tehingu n\u00e4itamisega, ei olnud see enam nii l\u00f5bus. Miks? N\u00e4ha on, et 30 korda rohkem s\u00fcndmusi tuleb salvestada. Ja seet\u00f5ttu on vaja 30 korda rohkem servereid. Ja see tundub olevat mingisugune astronoomiline number. Hoidmine kuni 500 serverit, et saavutada sidumine, samas kui Runtime serverite arv on oluliselt v\u00e4iksem, on vale number. Ja hakati m\u00f5tlema, mida teha. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/7af35f1ade680232cc83a6887891bc5c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja j\u00f5uti ClickHouse'i. Kuidas seda ClickHouse'is teha? Esmapilgul tundub, et see on antipatternide kogum. <\/p>\n<p><\/p>\n<ul>\n<li>Tehing suureneb, me liidame sellele \u00fcha uusi s\u00fcndmusi, st see on muudetav, samas kui ClickHouse ei toimi eriti h\u00e4sti muudetavate objektidega. <\/li>\n<li>Kui k\u00fclastaja meie juurde j\u00f5uab, peame v\u00e4lja t\u00f5mbama tema tehingud v\u00f5tme, st tema k\u00fclastuse ID j\u00e4rgi. See on samuti punktip\u00e4ring, mida ClickHouse ei kasuta. T\u00fc\u00fcpiliselt ClickHouse'is kasutatakse suuri... skaneerimisi, kuid siin peame saama m\u00f5ned kirjed. Samuti on see vastupidine muster. <\/li>\n<li>Lisaks oli tehing JSON-is, kuid \u00fcmber kirjutada ei soovitud, seet\u00f5ttu soovisime hoiustada JSON-i struktureerimata kujul, ja kui vaja, siis midagi sealt v\u00e4lja v\u00f5tta. See on samuti vastupidine muster. <\/li>\n<\/ul>\n<p><\/p>\n<p>St. \u00fchte kogumit vastupidiseid mustreid. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2473129a5880ee3172b8ab7bf4afc376.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid sellegipoolest \u00f5nnestus luua s\u00fcsteem, mis t\u00f6\u00f6tas v\u00e4ga h\u00e4sti. <\/p>\n<p><\/p>\n<p>Mis on tehtud? Tekkis ClickHouse, kuhu koguti logid, jagatuna sissekanneteks. Ilmus attributed teenus, mis sai ClickHouse'ilt logid. P\u00e4rast seda saadi iga sissekande jaoks visit id kaudu tehingud, mis v\u00f5isid olla veel t\u00f6\u00f6tlemata, ja lisaks snapshot'id, st juba seotud tehingud, nimelt eelneva t\u00f6\u00f6 tulemus. Nendest loodi juba loogika, valiti \u00f5ige tehing ja \u00fchendati uued s\u00fcndmused. Seej\u00e4rel salvestati logi uuesti. Logi saadeti tagasi ClickHouse'i, st tegu oli pidevalt ts\u00fcklilise s\u00fcsteemiga. Ning lisaks saadeti see DWH-sse, et seal anal\u00fc\u00fcsida. <\/p>\n<p><\/p>\n<p>Just sellisel kujul see ei t\u00f6\u00f6tanud v\u00e4ga h\u00e4sti. Ja et ClickHouse'i p\u00e4ring oleks lihtsam, gruppeerisime need p\u00e4ringud visit id kaupade kaupa 1 000-2 000 ja t\u00f5mbasime 1 000-2 000 inimese jaoks k\u00f5ik tehingud. Ja siis see k\u00f5ik hakkas t\u00f6\u00f6le.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d920ce231e6e4b5fd5b27ab28f848aed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kui vaadata ClickHouse'i sisse, siis seal on kokku 3 p\u00f5hitaanet, mis seda k\u00f5ike teenindavad. <\/p>\n<p><\/p>\n<p>Esimene tabel, kuhu logid laetakse, ja logid laetakse praktiliselt ilma t\u00f6\u00f6tlemiseta.<\/p>\n<p><\/p>\n<p>Teine tabel. Neid logisid k\u00e4idi materialiseeritud vaate kaudu l\u00e4bi, mis ei oleks veel omistatud s\u00fcndmused, st seostumata. Ja nende logide materialiseeritud vaate kaudu toodi v\u00e4lja tehingud, et luua seisak. Ehk spetsiifiline materialiseeritud vaade koosnes seisakust, milleks oli viimase kogunenud tehingu seisund. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/12b0adb691f483923a6c35bb6e4a5017.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on kirjutatud tekst SQLis. Tahaksin sellele m\u00e4rkida mitu olulist asja. <\/p>\n<p><\/p>\n<p>Esimene oluline asi on v\u00f5imalus ClickHouse'is JSONist v\u00e4ljav\u00f5tteid teha veergudest ja v\u00e4ljadest. Ehk ClickHouse'is on m\u00f5ned meetodid JSONiga t\u00f6\u00f6tamiseks. Need on v\u00e4ga-v\u00e4ga primitiivsed. <\/p>\n<p><\/p>\n<p>visitParamExtractInt v\u00f5imaldab JSONist atribuutide v\u00e4ljav\u00f5tteid teha, st esimene sobitamine aktiveerub. Niimoodi saab v\u00e4lja v\u00f5tta tehingu ID v\u00f5i k\u00fclastuse ID. See on \u00fcks. <\/p>\n<p><\/p>\n<p>Teiseks \u2013 siin on kasutatud nutikat materialiseeritud v\u00e4ljad. Mida see t\u00e4hendab? See t\u00e4hendab, et te ei saa seda tabelisse sisestada, st see ei ole sisestatav, see arvutatakse ja salvestatakse sisestamisel. Sisestamisel teeb ClickHouse teie eest t\u00f6\u00f6 \u00e4ra. Ja juba toodud JSONist see, mis teil hiljem vajalik on.<\/p>\n<p><\/p>\n<p>Antud juhul on materialiseeritud vaade m\u00f5eldud t\u00f6\u00f6tlemata ridade jaoks. Just seda kasutatakse esimese tabeli puhul, kus on praktiliselt toored logid. Ja mida ta teeb? Esiteks muudab ta sortimist, st sortimine toimub n\u00fc\u00fcd k\u00fclastuse ID p\u00f5hjal, sest meil on oluline kiiresti leida konkreetse isiku tehing. <\/p>\n<p><\/p>\n<p>Teine oluline asi on index_granularity. Kui olete n\u00e4inud MergeTree'd, siis tavaliselt on index_granularity vaikimisi 8192. Mis see on? See on indeksi harvuse parameeter. ClickHouse'is on indeks harv, ta ei indekseeri kunagi iga kirje. Ta teeb seda iga 8192. tagant. See on hea, kui on vaja palju andmeid arvutada, aga halb, kui on v\u00e4he, sest on suur overhead. Ja kui v\u00e4hendame index granularity't, siis v\u00e4hendame overhead'i. \u00dchte v\u00e4hendada ei saa, sest kui m\u00e4lu ei j\u00e4tku. Indeks on alati m\u00e4lus. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5fe303061977cad64e6c0333b125d595.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja snapshot kasutab veel m\u00f5ningaid huvitavaid ClickHouse'i funktsioone.<\/p>\n<p><\/p>\n<p>Esiteks on see AggregatingMergeTree. Ja AggregatingMergeTree's hoitakse argMax, st see on tehingu olek, mis vastab viimasele timestamp'ile. Tehingud genereeritakse pidevalt uute k\u00fclastajate jaoks. Ja viimasest tehingu olekust lisasime s\u00fcndmuse ja meil tekkis uus olek. See j\u00f5udis tagasi ClickHouse'i. Ja argMax kaudu selles materialiseeritud esituses saame alati k\u00e4tte ajakohase oleku.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d1b87301ab5206a36bf035679f79d35a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Sidumine on \u00ablahutatud\u00bb Runtime'ist. <\/li>\n<li>Kuni 3 miljardit tehingut kuus salvestatakse ja t\u00f6\u00f6deldakse. See on kordades rohkem kui oli Cassandra's, s.t. t\u00fc\u00fcpilises tehingus\u00fcsteemis. <\/li>\n<li>2x5 ClickHouse'i serverikluster. 5 serverit, kus iga serveril on koopia. See on isegi v\u00e4hem, kui oli Cassandra's click based atribuutimise tegemiseks, ja siin on meil impression based. S.t. selle asemel, et suurendada serverite arvu 30 korda, \u00f5nnestus neid v\u00e4hendada. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/583779fe9e133df519411e2256401eb3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja viimane n\u00e4ide on finantsfirma Y, mis anal\u00fc\u00fcsis aktsiate hindade muutuste korrelatsioone. <\/p>\n<p><\/p>\n<p>Ja \u00fclesanne oli j\u00e4rgmine:<\/p>\n<p><\/p>\n<ul>\n<li>On umbes 5000 aktsiat. <\/li>\n<li>Hinnad on teada iga 100 millisekundi j\u00e4rel. <\/li>\n<li>Andmed on kogunenud 10 aasta jooksul. Ilmselt on m\u00f5ne ettev\u00f5tte jaoks rohkem, m\u00f5ne jaoks v\u00e4hem. <\/li>\n<li>Kokku umbes 100 miljardit rida. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ja tuli arvutada muudatuste korrelatsioon. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b02051e6cadec8c51e7f6e351ef903f9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin on kaks aktsiat ja nende kursid. Kui \u00fcks t\u00f5useb ja teine t\u00f5useb, siis on see positiivne korrelatsioon, st kui \u00fcks kasvab, siis kasvab ka teine. Kui \u00fcks t\u00f5useb, nagu graafiku l\u00f5pus, ja teine langeb, siis on see negatiivne korrelatsioon, st kui \u00fcks kasvab, siis teine langeb. <\/p>\n<p><\/p>\n<p>Anal\u00fc\u00fcsides neid vastastikuseid muudatusi, saab teha prognoose finantsturul. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/31329cf7523eef6a167632d281a634ce.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid \u00fclesanne on keeruline. Mida selleks tehakse? Meil on 100 miljardit kirjet, milles on: aeg, aktsia ja hind. Peame esmalt arvutama 100 miljardit korda runningDifference hindade algoritmist. RunningDifference on ClickHouse'is funktsioon, mis arvutab j\u00e4rjestikku kahe rea vahe. <\/p>\n<p><\/p>\n<p>Ja p\u00e4rast seda tuleb arvutada korrelatsioon, lisaks tuleb korrelatsioon arvutada iga paari jaoks. 5000 aktsia jaoks on paare 12,5 miljonit. Ja see on palju, st 12,5 korda tuleb arvutada sellist korrelatsiooni funktsiooni. <\/p>\n<p><\/p>\n<p>Ja kui keegi unustas, siis \u035ex ja \u035ey on statistiline ootus. See t\u00e4hendab, et tuleb arvutada mitte ainult juured ja summad, vaid ka nende summade sees veel teised summad. Koguda tuleb tohutult arvutusi 12,5 miljonit korda ja samas on vaja ka tunni kaupa grupeerida. Ja tunde on meil ka p\u00e4ris palju. Ja k\u00f5ik see tuleb teha 60 sekundi jooksul. See on nali. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/567a07f586a824c91671820fe21ec305.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid mingil viisil pidin ma \u00e4ra suutma, sest k\u00f5ik see t\u00f6\u00f6tas enne ClickHouse'i saabumist v\u00e4ga, v\u00e4ga aeglaselt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3eca1af4c3f25ff4b23fce9b84e16659.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nad \u00fcritasid seda arvutada Hadoopi, Spark'i ja Greenplum'i peal. Ja k\u00f5ik juhtus v\u00e4ga aeglaselt v\u00f5i oli kallis. See t\u00e4hendab, et teatud m\u00e4\u00e4ral sai arvutada, kuid see oli hiljem kallis. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/37608c7e87ddb9a7d54854643044c369.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja siis tuli ClickHouse ning k\u00f5ik l\u00e4ks palju paremaks. <\/p>\n<p><\/p>\n<p>Tuletan meelde, et meil on andmete lokaalsusega probleem, seet\u00f5ttu ei saa korrelatsioone lokaliseerida. Me ei saa andmeid \u00fchele serverile ja teisele teise serverisse koondada ja arvutada, me peame k\u00f5ik andmed olema k\u00f5ikides kohtades. <\/p>\n<p><\/p>\n<p>Mida nad tegid? Alguses olid andmed lokaliseeritud. Iga serveri peal hoitakse andmeid teatud aktsiate hindade osas. Ja need ei \u00fcksteisega ristuva. Seega saab logReturni paralleelselt ja s\u00f5ltumatult arvutada, k\u00f5ik see toimub samal ajal ja on jaotatud. <\/p>\n<p><\/p>\n<p>Edasi otsustasime neid andmeid v\u00e4hendada, kaotamata seejuures v\u00e4ljendusrikkust. V\u00e4hendada massiivide abil, st iga ajavahemiku jaoks luua aktsiate ja hindade massiivid. Nii v\u00f5tab andmete salvestamine palju v\u00e4hem ruumi. Ja nendega on ka veidi mugavam t\u00f6\u00f6tada. Need on peaaegu paralleelsed opereerimised, st arvutame paralleelselt osaliselt ja salvestame seej\u00e4rel serverisse. <\/p>\n<p><\/p>\n<p>P\u00e4rast seda saab seda replikeerida. T\u00e4ht \"r\" t\u00e4hendab, et need andmed oleme replikeerinud. St k\u00f5ikidel kolmel serveril on samu andmeid \u2013 need massiivid. <\/p>\n<p><\/p>\n<p>Seej\u00e4rel saab spetsiaalse skripti abil sellest komplektist 12,5 miljonist korrelatsioonist, mida tuleb arvutada, teha pakette. St 2 500 \u00fclesannet 5 000 korrelatsiooni paari kohta. Ja seda \u00fclesannet saab arvutada konkreetse ClickHouse serveris. Tal on k\u00f5ik andmed, kuna andmed on samad ja ta saab neid j\u00e4rjestikult arvutada. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/587c6d587a48f2407dd2687f5423d44a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Veel veel, kuidas see v\u00e4lja n\u00e4eb. Esiteks on meil k\u00f5ik andmed sellises struktuuris: aeg, aktsiad, hind. Siis arvutasime logReturn'i, st sama struktuuri andmed, ainult et hinna asemel on meil juba logReturn. P\u00e4rast seda muutsime need \u00fcmber, st saime aja ja groupArray aktsiate ja hindade kaupa. Me \u00fchendame need. Ja p\u00e4rast seda genereerisime hunniku \u00fclesandeid ja toitsime need ClickHouse'ile, et ta saaks need arvutada. Ja see t\u00f6\u00f6tab. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/434e7385aebcffcc03d1bd1a2020c8bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Proof of concept \u00fclesande puhul oli see alamine \u00fclesanne, st v\u00f5tsime v\u00e4hem andmeid. Ja vaid kolme serveri peal.<\/p>\n<p><\/p>\n<p>Need kaks esimest etappi: log_return'i arvutamine ja massiividesse m\u00e4hkimine v\u00f5ttis kumbki umbes tunni. <\/p>\n<p><\/p>\n<p>Aga korrelatsiooni arvutamine kestis kuskil 50 tundi. Kuid 50 tundi on v\u00e4he, sest varem t\u00f6\u00f6tas see n\u00e4dalate kaupa. See oli suur edu. Ja kui arvestada, siis 70 korda sekundis arvutati k\u00f5ike sellel klastril.<\/p>\n<p><\/p>\n<p>Aga k\u00f5ige olulisem on see, et see s\u00fcsteem on praktiliselt ilma kitsaskohtadeta, st see skaleerub praktiliselt lineaarselt. Ja nad kontrollisid seda. Nad skaleerisid selle edukalt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5a595a84897e492b49dccfb0f058b1b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>\u00d5ige skeem on pool edu. Ja \u00f5ige skeem on kasutada k\u00f5iki vajalikke tehnoloogiaid ClickHouse'is. <\/li>\n<li>Summing\/AggregatingMergeTrees on tehnoloogiad, mis v\u00f5imaldavad agregreerida v\u00f5i lugeda snapshots olekuna kui erandit. See lihtsustab paljusid asju. <\/li>\n<li>Materialiseeritud vaated v\u00f5imaldavad \u00fcletada \u00fchte indeksi piirangut. V\u00f5ib-olla ei v\u00e4ljendanud ma seda v\u00e4ga selgelt, kuid kui me laadisime logisid, siis toored logid olid tabelis \u00fche indeksiga, samas kui atribuutide logid olid tabelis, st sama teave, lihtsalt filtreeritud, kuid indeks oli t\u00e4iesti erinev. Tunduvad nagu samad andmed, kuid erinev sorteerimine. Ja Materialiseeritud vaated v\u00f5imaldavad, kui see on vajalik, selliseid piiranguid ClickHouse'is \u00fcmber k\u00e4ia. <\/li>\n<li>V\u00e4hendage indeksi granulaarsust t\u00e4ppp\u00e4raste p\u00e4ringute jaoks. <\/li>\n<li>Ja jagage andmeid nutikalt, p\u00fc\u00fcdke maksimaalselt lokaliseerida andmeid serveri sees. Ja p\u00fc\u00fce, et p\u00e4ringud kasutaks samuti lokaliseerimist seal, kus see on v\u00f5imalikult maksimaalne. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c0fc1737986e3f18ed1d3c53df9f0252.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kokkuv\u00f5tteks v\u00f5ib \u00f6elda, et ClickHouse on n\u00fc\u00fcd kindlalt valitsenud nii kommertsbasseinide kui ka avatud l\u00e4htekoodiga andmebaaside alal, st just anal\u00fc\u00fctika jaoks. See on suurep\u00e4raselt sobitunud sellesse maastikku. Ja veel enam, see hakkab vaikselt teisi v\u00e4lja t\u00f5rjuma, sest kui on olemas ClickHouse, siis ei ole vajadust InfiniDB j\u00e4rele. Veritka v\u00f5ib peagi olla mittevajalik, kui nad teevad normaalse SQL toe. Kasutage seda!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse&#039;i teooria ja praktika reaalses rakenduses. Aleksandr Zaitsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6e9a65d32eb6de7f9f139a30e7ab0d25.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>&#8212;<em>Ait\u00e4h ettekande eest! V\u00e4ga huvitav! Kas oli mingeid v\u00f5rdlusi Apache Phoenixiga?<\/em><\/p>\n<p><\/p>\n<p>- Ei, ma ei ole kuulnud, et keegi oleks v\u00f5rdlejat. Me ja Yandex p\u00fc\u00fcame j\u00e4lgida k\u00f5iki ClickHouse'i v\u00f5rdlusi erinevate andmebaasidega. Sest kui \u00e4kki osutub midagi kiiremini ClickHouse'ist, siis Aleksei Milovidov ei suuda \u00f6\u00f6sel magada ja hakkab seda kiiresti kiirendama. Ma ei ole sellest v\u00f5rdlusest kuulnud. <\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>(Aleksandr Milovidov) Apache Phoenix on SQL-mootor Hbase'il. Hbase on peamiselt m\u00f5eldud key-value t\u00fc\u00fcpi t\u00f6\u00f6deks. Igas reas v\u00f5ib olla suvaline arv veerge suvaliste nimedega. Sama kehtib ka selliste s\u00fcsteemide kohta nagu Hbase, Cassandra. Neis ei toimita rasked anal\u00fc\u00fctilised p\u00e4ringud korralikult. V\u00f5ite arvata, et need t\u00f6\u00f6tavad h\u00e4sti, kui teil pole ClickHouse'iga t\u00f6\u00f6tamisest mingit kogemust.<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>Ait\u00e4h<\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>Tere p\u00e4evast! Olen juba p\u00e4ris palju selle teema vastu huvi tundnud, sest mul on anal\u00fc\u00fcsis\u00fcsteem. Kuid kui vaatan ClickHouse'i, tekib mul tunne, et ClickHouse sobib v\u00e4ga h\u00e4sti s\u00fcndmuste anal\u00fc\u00fcsimiseks, mutable. Ja kui mul on vaja anal\u00fc\u00fcsida palju \u00e4rilisi andmeid koos suure hulga tabelitega, siis ClickHouse, nii palju kui ma aru saan, ei sobi mulle eriti? Eriti kui need muudavad. Kas see on \u00f5ige v\u00f5i on olemas n\u00e4iteid, mis v\u00f5iksid selle \u00fcmber l\u00fckata?<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>See on \u00f5ige. Ja see kehtib enamikule spetsialiseeritud anal\u00fc\u00fctikabaasidest. Need on kohandatud \u00fche v\u00f5i mitme suure, muudetava tabeli ja paljude v\u00e4ikeste, aeglaselt muutuvate tabelite jaoks. Ehk siis ClickHouse ei ole nagu Oracle, kuhu saab panna k\u00f5ike ja luua v\u00e4ga keerulisi p\u00e4ringuid. Et ClickHouse'i t\u00f5husalt kasutada, tuleb skeem \u00fcles ehitada viisil, mis ClickHouse'is h\u00e4sti toimib. Ehk tuleks v\u00e4ltida liialdatud normaliseerimist, kasutada s\u00f5nastikke ja \u00fcritada luua v\u00e4hem pikki seoseid. Ja kui skeem selliselt \u00fcles ehitada, siis saavad sarnased \u00e4ri\u00fclesanded ClickHouse'is olema lahendatud palju efektiivsemalt kui traditsioonilistes relaatiivsetes andmebaasides. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>Ait\u00e4h ettekande eest! Mul on k\u00fcsimus viimase finantsjuhtumi kohta. Neil oli anal\u00fc\u00fcs. Pidi olema v\u00f5rdlus, kuidas asjad \u00fcles ja alla k\u00e4ivad. Ja ma saan aru, et te ehitasite s\u00fcsteemi just seda anal\u00fc\u00fcsi silmas pidades? Kui neil homsest on n\u00e4iteks vaja mingit muud aruannet nende andmete p\u00f5hjal, peab skeemi uuesti \u00fcles ehitama ja andmed uuesti laadima? Ehk siis tuleb teha mingit eelt\u00f6\u00f6tlust, et p\u00e4ring saada?<\/em><\/p>\n<p><\/p>\n<p>Muidugi, see on ClickHouse'i kasutamine konkreetse \u00fclesande jaoks. Traditsiooniliselt oleks see v\u00f5ib-olla lahendatud Hadoopi raames. Hadoopile on see ideaalne \u00fclesanne. Kuid Hadoopis on see v\u00e4ga aeglane. Minu eesm\u00e4rk on demonstreerida, et ClickHouse'is saab lahendada \u00fclesandeid, mida tavaliselt lahendatakse t\u00e4iesti erinevate vahenditega, kuid samas palju efektiivsemalt. See on suunatud konkreetsele \u00fclesandele. Selge on, et kui on sarnane \u00fclesanne, siis saab seda sarnasel viisil lahendada. <\/p>\n<p><\/p>\n<p><em>Selge. Te \u00fctlesite, et 50 tundi t\u00f6\u00f6tati. Kas see h\u00f5lmas algust, kui andmed \u00fcles laaditi v\u00f5i saadi tulemused?<\/em><\/p>\n<p><\/p>\n<p>Jah-jah.<\/p>\n<p><\/p>\n<p><em>Hea, ait\u00e4h v\u00e4ga.<\/em><\/p>\n<p><\/p>\n<p>See on 3-serveri klastris. <\/p>\n<p><\/p>\n<p><em>Tere! Ait\u00e4h ettekande eest! K\u00f5ik on v\u00e4ga huvitav. K\u00fcsin veidi mitte funktsionaalsuse kohta, vaid ClickHouse'i kasutamisest stabiilsuse seisukohalt. Kas teil on olnud mingeid probleeme, kas on olnud vaja taastada? Kuidas ClickHouse selle ajal k\u00e4itub? Ja kas juhtus nii, et teil langes v\u00e4lja ka replikatsioon? Meie, n\u00e4iteks, oleme ClickHouse'is kokku puutunud probleemiga, kus see \u00fcletab siiski oma limiidi ja kukub.<\/em><\/p>\n<p><\/p>\n<p>Muidugi, ideaalseid s\u00fcsteeme pole. Ka ClickHouse'il on oma probleemid. Kuid kas olete kuulnud, et Yandex.Metrica ei t\u00f6\u00f6tanud pikka aega? Ilmselt mitte. See on usaldusv\u00e4\u00e4rselt t\u00f6\u00f6tanud ClickHouse'is umbes 2012-2013. aastast. Ma v\u00f5in r\u00e4\u00e4kida ka oma kogemusest. Meil pole kunagi olnud t\u00e4ielikke katkestusi. M\u00f5ned osalised probleemid v\u00f5isid esineda, kuid need ei ole kunagi olnud piisavalt kriitilised, et t\u00f5siselt \u00e4ri m\u00f5jutada. Sellist olukorda pole kunagi olnud. ClickHouse on piisavalt usaldusv\u00e4\u00e4rne ega kuku juhuslikult. Selle p\u00e4rast ei pea muretsema. See ei ole tooraine. Seda on t\u00f5estanud paljud ettev\u00f5tted. <\/p>\n<p><\/p>\n<p><em>Tere! Te \u00fctlesite, et andmemudelit tuleb kohe h\u00e4sti l\u00e4bi m\u00f5elda. Aga kui see juba juhtus? Andmed voolavad ja voolavad. Aasta m\u00f6\u00f6dub ja ma saan aru, et nii ei saa elada, mul on vaja andmeid uuesti \u00fcles laadida ja nendega midagi ette v\u00f5tta.<\/em> <\/p>\n<p><\/p>\n<p>See s\u00f5ltub loomulikult teie s\u00fcsteemist. On mitu v\u00f5imalust seda praktiliselt katkematult teha. N\u00e4iteks v\u00f5ite luua materialiseeritud vaate, millesse luua teine andmestruktuur, kui seda saab \u00fchem\u00f5tteliselt kaardistada. St. kui see v\u00f5imaldab kaardistamist ClickHouse'i abil, st. teatud asjade v\u00e4ljav\u00f5tmist, primaarv\u00f5tme muutmist, partitsioneerimist muutmist, siis saab luua materialiseeritud vaate. Sinna kirjutatakse teie vanad andmed, uued kirjutatakse automaatselt. Ja siis saab lihtsalt \u00fcle minna materialiseeritud vaate kasutamisele, seej\u00e4rel suunata kirjutamine ja h\u00e4vitada vana tabel. See on t\u00e4iesti katkematu meetod. <\/p>\n<p><\/p>\n<p><em>Ait\u00e4h.<\/em><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/512304\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0411\u0414 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b. \u0418\u0445 \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u044e\u0442 \u0438 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 &quot;\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0442\u0443\u0441&quot; \u0441 MySQL \u0438\u043b\u0438 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 NoSQL \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. ClickHouse \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":89879,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-89878","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0411\u0414 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b. \u0418\u0445 \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u044e\u0442 \u0438 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 &quot;\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0442\u0443\u0441&quot; \u0441 MySQL \u0438\u043b\u0438 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 NoSQL \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. ClickHouse \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ClickHouse \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0417\u0430\u0439\u0446\u0435\u0432 (2018\u0433) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0411\u0414 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b. \u0418\u0445 \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u044e\u0442 \u0438 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 &quot;\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0442\u0443\u0441&quot; \u0441 MySQL \u0438\u043b\u0438 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 NoSQL \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. ClickHouse \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-26T23:42:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-26T23:42:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ClickHouse'i teooria ja praktika reaalses rakendustes. Aleksandr Zaitsev (2018) | ProHoster","description":"Hoolimata sellest, et andmeid on praegu pea igal pool palju, on anal\u00fc\u00fctilised andmebaasid endiselt \u00fcsna eksootilised. Neid tuntakse halvasti ja veel halvemini osatakse neid t\u00f5husalt kasutada. Paljud j\u00e4tkavad 'kaktuse s\u00f6\u00f6mist' MySQL v\u00f5i PostgreSQLiga, mis on projekteeritud teiste stsenaariumide jaoks, kannatavad NoSQL-i all v\u00f5i maksavad p\u00f5hjendamatult kommertslahenduste eest. ClickHouse muudab m\u00e4ngureegleid ja v\u00e4hendab oluliselt sissep\u00e4\u00e4suk\u00fcnnist.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ClickHouse \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0417\u0430\u0439\u0446\u0435\u0432 (2018\u0433) | ProHoster","og:description":"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0437\u0434\u0435, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0411\u0414 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b. \u0418\u0445 \u043f\u043b\u043e\u0445\u043e \u0437\u043d\u0430\u044e\u0442 \u0438 \u0435\u0449\u0435 \u0445\u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 &quot;\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0442\u0443\u0441&quot; \u0441 MySQL \u0438\u043b\u0438 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 NoSQL \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. ClickHouse \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-26T23:42:42+00:00","article:modified_time":"2020-07-26T23:42:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"89878","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:02:37","updated":"2026-02-22 15:29:33"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/89878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=89878"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/89878\/revisions"}],"predecessor-version":[{"id":162171,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/89878\/revisions\/162171"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/89879"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=89878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=89878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=89878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}