{"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\/hu\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g","title":{"rendered":"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b46b964324a3311157d5df737526b1d1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>B\u00e1r a jelenlegi adatok szinte mindenhol b\u0151s\u00e9gesek, az analitikai adatb\u00e1zisok m\u00e9g mindig meglehet\u0151sen egzotikusak. Keveset tudnak r\u00f3luk, \u00e9s m\u00e9g rosszabbul tudj\u00e1k \u0151ket hat\u00e9konyan haszn\u00e1lni. Sokan tov\u00e1bbra is &quot;kaktuszt esznek&quot; MySQL-lel vagy PostgreSQL-lel, amelyek m\u00e1s forgat\u00f3k\u00f6nyvekhez lettek tervezve, szenvednek a NoSQL-t\u00f3l vagy t\u00fal sokat fizetnek a kereskedelmi megold\u00e1sok\u00e9rt. A ClickHouse megv\u00e1ltoztatja a j\u00e1t\u00e9kszab\u00e1lyokat, \u00e9s jelent\u0151sen cs\u00f6kkenti a bel\u00e9p\u00e9s k\u00fcsz\u00f6b\u00e9t az analitikai DBMS vil\u00e1g\u00e1ba.<\/p>\n<p><\/p>\n<p>A BackEnd Conf 2018. \u00e9vi el\u0151ad\u00e1sa, amelyet a besz\u00e9l\u0151 enged\u00e9ly\u00e9vel publik\u00e1ltak.<\/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=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" 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=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6c55b639d9703f460d99e0b0b1194507.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKi vagyok \u00e9n \u00e9s mi\u00e9rt besz\u00e9lek a ClickHouse-r\u00f3l? \u00c9n vagyok a LifeStreet fejleszt\u00e9si igazgat\u00f3ja, amely haszn\u00e1lja a ClickHouse-t. Ezen k\u00edv\u00fcl \u00e9n az Altinity alap\u00edt\u00f3ja is vagyok. Ez egy Yandex partner, amely n\u00e9pszer\u0171s\u00edti a ClickHouse-t \u00e9s seg\u00edti a Yandexet a ClickHouse sikeresebb\u00e9 t\u00e9tel\u00e9ben. Sz\u00edvesen osztom meg tud\u00e1somat a ClickHouse-r\u00f3l. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/36af6acba62271f7aa19dda2eb470870.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s igen, nem Peti Zaycev testv\u00e9re vagyok. Gyakran k\u00e9rdeznek err\u0151l. Nem, nem vagyunk testv\u00e9rek.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6ca605f97619a1373bb8a92f88d480d5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\"Mindenki tudja\", hogy a ClickHouse:<\/p>\n<p><\/p>\n<ul>\n<li>Nagyon gyors,<\/li>\n<li>Nagyon felhaszn\u00e1l\u00f3bar\u00e1t, <\/li>\n<li>A Yandexn\u00e9l haszn\u00e1lj\u00e1k. <\/li>\n<\/ul>\n<p><\/p>\n<p>Kicsit kev\u00e9sb\u00e9 ismert, hogy mely v\u00e1llalatokban \u00e9s hogyan haszn\u00e1lj\u00e1k. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c097b003bf8ea13b8a3bb765270e99c8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Elmondom, mire, hol \u00e9s hogyan haszn\u00e1lj\u00e1k a ClickHouse-t a Yandexen k\u00edv\u00fcl. <\/p>\n<p><\/p>\n<p>Elmondom, hogy a ClickHouse seg\u00edts\u00e9g\u00e9vel hogyan oldj\u00e1k meg a konkr\u00e9t feladatokat k\u00fcl\u00f6nb\u00f6z\u0151 c\u00e9gekn\u00e9l, milyen eszk\u00f6z\u00f6ket haszn\u00e1lhat a ClickHouse a saj\u00e1t feladataihoz, \u00e9s hogyan haszn\u00e1lt\u00e1k \u0151ket k\u00fcl\u00f6nb\u00f6z\u0151 c\u00e9gekn\u00e9l.<\/p>\n<p><\/p>\n<p>H\u00e1rom p\u00e9ld\u00e1t \u00e1ll\u00edtottam \u00f6ssze, amelyek k\u00fcl\u00f6nb\u00f6z\u0151 szempontb\u00f3l mutatj\u00e1k be a ClickHouse-t. Azt hiszem, ez \u00e9rdekes lesz.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d3cab92ceccd6c7d01ca1f28b028803f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az els\u0151 k\u00e9rd\u00e9s: \"Mi\u00e9rt van sz\u00fcks\u00e9g a ClickHouse-ra?\" Elvileg ez egy el\u00e9g nyilv\u00e1nval\u00f3 k\u00e9rd\u00e9s, de t\u00f6bb v\u00e1lasz is van r\u00e1. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1a4e14cc041a3c01ad0fd2a305aeeab0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151 v\u00e1lasz - a teljes\u00edtm\u00e9ny\u00e9rt. A ClickHouse nagyon gyors. Az analitika a ClickHouse-on szint\u00e9n nagyon gyors. Gyakran olyan helyeken is haszn\u00e1lhat\u00f3, ahol valami m\u00e1s nagyon lassan vagy nagyon rosszul m\u0171k\u00f6dik. <\/li>\n<li>A m\u00e1sodik v\u00e1lasz - a k\u00f6lts\u00e9g. \u00c9s els\u0151 sorban a sk\u00e1l\u00e1z\u00e1s k\u00f6lts\u00e9ge. P\u00e9ld\u00e1ul a Vertica - teljesen m\u00e1s adatb\u00e1zis. Nagyon j\u00f3l m\u0171k\u00f6dik, ha nem sok terab\u00e1jt adat van. De amikor sz\u00f3 van t\u00f6bb sz\u00e1z terab\u00e1jtr\u00f3l vagy petab\u00e1jtr\u00f3l, a licenc- \u00e9s t\u00e1mogat\u00e1si k\u00f6lts\u00e9gek elegend\u0151en magas \u00f6sszegre r\u00fagnak. \u00c9s ez dr\u00e1ga. A ClickHouse viszont ingyenes. <\/li>\n<li>A harmadik v\u00e1lasz a m\u0171k\u00f6d\u00e9si k\u00f6lts\u00e9g. Ez egy megk\u00f6zel\u00edt\u00e9s, amely kicsit m\u00e1s szemsz\u00f6gb\u0151l n\u00e9zi a dolgokat. A RedShift remek alternat\u00edva. A RedShift-en nagyon gyorsan k\u00e9sz\u00edthet\u00fcnk megold\u00e1sokat. J\u00f3l fog m\u0171k\u00f6dni, de minden \u00f3r\u00e1ban, minden nap \u00e9s minden h\u00f3napban meglehet\u0151sen dr\u00e1g\u00e1n kell fizetnie az Amazonnak, mert ez egy jelent\u0151sen k\u00f6lts\u00e9ges szolg\u00e1ltat\u00e1s. A Google BigQuery is ilyen. Aki m\u00e1r haszn\u00e1lta, tudja, hogy n\u00e9h\u00e1ny lek\u00e9rdez\u00e9st futtathat, \u00e9s hirtelen t\u00f6bb sz\u00e1z doll\u00e1ros sz\u00e1ml\u00e1t kaphat. <\/li>\n<\/ul>\n<p><\/p>\n<p>A ClickHouse-n\u00e1l ezek a probl\u00e9m\u00e1k nincsenek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3084a8bd9271f14726d73989946816c5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hol haszn\u00e1lj\u00e1k most a ClickHouse-t? A Yandexen k\u00edv\u00fcl a ClickHouse-t sz\u00e1mos k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e1llalkoz\u00e1s \u00e9s c\u00e9g alkalmazza. <\/p>\n<p><\/p>\n<ul>\n<li>Els\u0151sorban webalkalmaz\u00e1sok elemz\u00e9s\u00e9re, azaz ez egy haszn\u00e1lati eset, amely a Yandex-b\u00f3l indult.<\/li>\n<li>Sok AdTech v\u00e1llalat haszn\u00e1lja a ClickHouse-t. <\/li>\n<li>Sz\u00e1mos olyan v\u00e1llalat, amelyeknek sz\u00fcks\u00e9g\u00fck van k\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokb\u00f3l sz\u00e1rmaz\u00f3 operat\u00edv napl\u00f3k elemz\u00e9s\u00e9re.<\/li>\n<li>N\u00e9h\u00e1ny v\u00e1llalat a ClickHouse-t haszn\u00e1lja biztons\u00e1gi napl\u00f3k monitoroz\u00e1s\u00e1ra. Felt\u00f6ltik \u0151ket a ClickHouse-ba, riportokat k\u00e9sz\u00edtenek, \u00e9s el\u00e9rik a sz\u00fcks\u00e9ges eredm\u00e9nyeket.<\/li>\n<li>A v\u00e1llalatok kezdenek p\u00e9nz\u00fcgyi elemz\u00e9sn\u00e9l is alkalmazni, azaz fokozatosan a nagyobb \u00fczlet\u00e1gak is k\u00f6zel\u00edtenek a ClickHouse-hoz. <\/li>\n<li>CloudFlare. Aki figyelemmel k\u00eds\u00e9ri a ClickHouse-t, biztosan hallott err\u0151l a c\u00e9gr\u0151l. Ez az egyik jelent\u0151s k\u00f6z\u00f6ss\u00e9gi hozz\u00e1j\u00e1rul\u00f3. Nagyon komoly ClickHouse telep\u00edt\u00e9s\u00fck van. P\u00e9ld\u00e1ul k\u00e9sz\u00edtettek egy Kafka Engine-t a ClickHouse-hoz. <\/li>\n<li>T\u00e1vk\u00f6zl\u00e9si c\u00e9gek is elkezdt\u00e9k haszn\u00e1lni. N\u00e9h\u00e1ny v\u00e1llalat a ClickHouse-t proof of conceptk\u00e9nt vagy m\u00e1r produkci\u00f3ban haszn\u00e1lja.<\/li>\n<li>Egy c\u00e9g a ClickHouse-t a gy\u00e1rt\u00e1si folyamatok monitoroz\u00e1s\u00e1ra haszn\u00e1lja. Mikrosch\u00e9m\u00e1kat tesztelnek, rengeteg param\u00e9tert r\u00f6gz\u00edtenek, k\u00f6r\u00fclbel\u00fcl 2000 jellemz\u0151t. Azt\u00e1n elemeznek \u2013 j\u00f3 vagy rossz t\u00e9tel.<\/li>\n<li>Blockchain-elemz\u00e9s. Van egy orosz c\u00e9g, a Bloxy.info. Ez az ethereum h\u00e1l\u00f3zat elemz\u00e9se. Ezt is a ClickHouse-on val\u00f3s\u00edtott\u00e1k meg. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/8a0c1924a20ed2d15cd0f959e9b3e499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A m\u00e9ret nem sz\u00e1m\u00edt. Sok c\u00e9g haszn\u00e1l egy kis szervert. Ez lehet\u0151v\u00e9 teszi sz\u00e1mukra a probl\u00e9m\u00e1ik megold\u00e1s\u00e1t. \u00c9s m\u00e9g t\u00f6bb c\u00e9g haszn\u00e1l nagy klasztereket sz\u00e1mos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/server\/\"   title=\"szerverek\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1513\">szerverek<\/a> vagy tucatnyi szerverb\u0151l. <\/p>\n<p><\/p>\n<p>\u00c9s ha megn\u00e9zz\u00fck a rekordokat, akkor:<\/p>\n<p><\/p>\n<ul>\n<li>Yandex: 500+ szerver, napi 25 milli\u00e1rd rekordot t\u00e1rolnak.<\/li>\n<li>LifeStreet: 60 szerver, k\u00f6r\u00fclbel\u00fcl 75 milli\u00e1rd rekord naponta. Kevesebb szerver, t\u00f6bb rekord, mint a Yandex eset\u00e9ben. <\/li>\n<li>CloudFlare: 36 szerver, napi 200 milli\u00e1rd rekordot t\u00e1rolnak. M\u00e9g kevesebb szerver\u00fck van \u00e9s m\u00e9g t\u00f6bb adatot \u0151riznek meg. <\/li>\n<li>Bloomberg: 102 <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/server\/dts-los-angeles\/\"   title=\"a szerver\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3643\">a szerver<\/a>, k\u00f6r\u00fclbel\u00fcl egy trilli\u00f3 rekord naponta. Rekordert a rekordok sz\u00e1m\u00e1ban.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/49194030b6586221cb17029889ce33da.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00f6ldrajzilag ez is sok. Ez a t\u00e9rk\u00e9p megmutatja a heatmapet, ahol a ClickHouse a vil\u00e1gban haszn\u00e1latban van. Itt Oroszorsz\u00e1g, K\u00edna, Amerika kiemelkedik. Kev\u00e9s eur\u00f3pai orsz\u00e1g van. N\u00e9gy klasztert tudunk kiemelni.<\/p>\n<p><\/p>\n<p>Ez egy \u00f6sszehasonl\u00edt\u00f3 elemz\u00e9s, itt nem kell abszol\u00fat sz\u00e1mokat keresni. Ez az anal\u00edzis olyan l\u00e1togat\u00f3kr\u00f3l k\u00e9sz\u00fclt, akik angol nyelv\u0171 anyagokat olvasnak az Altinity weboldalon, mert oroszul besz\u00e9l\u0151k nincsenek ott. Oroszorsz\u00e1g, Ukrajna, Feh\u00e9roroszorsz\u00e1g, teh\u00e1t az orosz nyelv\u0171 k\u00f6z\u00f6ss\u00e9g a legnumerikusabb felhaszn\u00e1l\u00f3. Ut\u00e1na az Egyes\u00fclt \u00c1llamok \u00e9s Kanada k\u00f6vetkezik. K\u00edna nagyon gyorsan felz\u00e1rk\u00f3zik. F\u00e9l \u00e9vvel ezel\u0151tt K\u00edn\u00e1nak szinte nyoma sem volt, most m\u00e1r K\u00edna megel\u0151zte Eur\u00f3p\u00e1t \u00e9s tov\u00e1bb n\u00f6vekszik. Az \u00f6reg Eur\u00f3pa sem marad le, \u00e9s a ClickHouse haszn\u00e1lat\u00e1nak vezet\u0151je, meglep\u0151 m\u00f3don, Franciaorsz\u00e1g. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3a8305c51b1bd62f3467b795402df4ed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Mi\u00e9rt mes\u00e9lek mindezt? Az\u00e9rt, hogy megmutassam, hogy a ClickHouse standard megold\u00e1ss\u00e1 v\u00e1lik a nagy adatok elemz\u00e9s\u00e9re, \u00e9s m\u00e1r nagyon sok helyen haszn\u00e1lj\u00e1k.<\/strong> Ha \u00d6n haszn\u00e1lja, akkor j\u00f3 \u00faton j\u00e1r. Ha m\u00e9g nem haszn\u00e1lja, ne f\u00e9ljen att\u00f3l, hogy egyed\u00fcl marad, \u00e9s senki nem seg\u00edt, hiszen m\u00e1r sokan foglalkoznak ezzel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6aa635f3a35034d3af837c78b2c8fe60.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezek a ClickHouse val\u00f3s felhaszn\u00e1l\u00e1si p\u00e9ld\u00e1i t\u00f6bb c\u00e9gn\u00e9l. <\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151 p\u00e9lda egy rekl\u00e1mh\u00e1l\u00f3zat: migr\u00e1ci\u00f3 a Vertica-b\u00f3l ClickHouse-ra. Tudok n\u00e9h\u00e1ny c\u00e9gr\u0151l, amelyek \u00e1tt\u00e9rtek a Vertica-r\u00f3l vagy a folyamatban vannak. <\/li>\n<li>A m\u00e1sodik p\u00e9lda egy tranzakcion\u00e1lis t\u00e1rol\u00f3 ClickHouse-on. Ez egy p\u00e9lda, amely az antipatterns alapjain k\u00e9sz\u00fclt. Minden, amit a fejleszt\u0151k tan\u00e1csa szerint nem szabadna ClickHouse-on csin\u00e1lni, itt megtal\u00e1lhat\u00f3. Ennek ellen\u00e9re annyira hat\u00e9konyan val\u00f3sult meg, hogy m\u0171k\u00f6dik. \u00c9s sokkal jobban m\u0171k\u00f6dik, mint a tipikus tranzakci\u00f3s megold\u00e1s. <\/li>\n<li>A harmadik p\u00e9lda a ClickHouse-on t\u00f6rt\u00e9n\u0151 elosztott sz\u00e1m\u00edt\u00e1sok. Volt egy k\u00e9rd\u00e9s arr\u00f3l, hogyan lehet a ClickHouse-t integr\u00e1lni a Hadoop \u00f6kosziszt\u00e9m\u00e1ba. Megmutatom, hogy egy c\u00e9g hogyan csin\u00e1lt ClickHouse-on valami hasonl\u00f3t a map reduce kont\u00e9nerhez, figyelve az adatok lokaliz\u00e1ci\u00f3j\u00e1ra, hogy megoldhasson egy nagyon nem trivi\u00e1lis feladatot. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (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 Ez egy Ad Tech c\u00e9g, amely mindennel rendelkezik, ami a rekl\u00e1mh\u00e1l\u00f3zat m\u0171k\u00f6d\u00e9s\u00e9hez sz\u00fcks\u00e9ges. <\/li>\n<li>Rekl\u00e1mok optimaliz\u00e1l\u00e1s\u00e1val \u00e9s programmatic bidding-gel foglalkozik. <\/li>\n<li>Sok adat: k\u00f6r\u00fclbel\u00fcl 10 milli\u00e1rd esem\u00e9ny naponta. Ezek az esem\u00e9nyek t\u00f6bb als\u00f3 esem\u00e9nyre is feloszthat\u00f3k.<\/li>\n<li>Sok \u00fcgyf\u00e9l haszn\u00e1lja ezeket az adatokat, nemcsak emberek, hanem sokkal t\u00f6bb \u2013 k\u00fcl\u00f6nb\u00f6z\u0151 algoritmusok, amelyek programatikus aj\u00e1nlatt\u00e9tellel foglalkoznak. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2da99b53eb25f675a2431027f86db934.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A c\u00e9g hossz\u00fa \u00e9s r\u00f6g\u00f6s utat j\u00e1rt be. Err\u0151l mes\u00e9ltem a HighLoad-on. El\u0151sz\u00f6r a LifeStreet MySQL-r\u0151l (egy r\u00f6vid meg\u00e1ll\u00e1ssal az Oracle-n\u00e1l) Vertica-ra v\u00e1ltott. Err\u0151l besz\u00e1mol\u00f3t is tal\u00e1lhatunk. <\/p>\n<p><\/p>\n<p>Minden nagyon j\u00f3l ment, de el\u00e9g gyorsan kider\u00fclt, hogy az adatok n\u00f6vekednek, \u00e9s a Vertica dr\u00e1ga. Ez\u00e9rt k\u00fcl\u00f6nb\u00f6z\u0151 alternat\u00edv\u00e1kat kerest\u00fcnk. N\u00e9h\u00e1nyat itt felsorolunk. Val\u00f3j\u00e1ban a 13-as \u00e9s 16-os \u00e9v k\u00f6z\u00f6tt a piacon el\u00e9rhet\u0151 adatb\u00e1zisok gyakorlatilag mindegyik\u00e9t tesztelt\u00fck, amelyek nagyj\u00e1b\u00f3l megfeleltek a funkcion\u00e1lis k\u00f6vetelm\u00e9nyeknek. \u00e9s ezek egy r\u00e9sz\u00e9r\u0151l szint\u00e9n besz\u00e9ltem a HighLoad-on.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/4bebd2f43892cbef9249ddded1b8a70a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az volt a feladatunk, hogy migr\u00e1ljunk a Vertica-b\u00f3l, f\u0151leg, mert az adatok n\u00f6vekedtek. \u00c9vek \u00f3ta exponenci\u00e1lisan n\u0151ttek. Azt\u00e1n egy id\u0151 ut\u00e1n meg\u00e1lltak, de ez nem jelenti azt, hogy ne lett volna n\u00f6veked\u00e9s. A n\u00f6veked\u00e9s el\u0151rejelz\u00e9sekor a v\u00e1llalkoz\u00e1s ig\u00e9nyei az adatmennyis\u00e9gre, amellyel valamilyen elemz\u00e9st kell v\u00e9gezni, jelezt\u00e9k, hogy hamarosan p\u00e9terbyte-okr\u00f3l lesz sz\u00f3. A p\u00e9terbyte-ok\u00e9rt m\u00e1r nagyon dr\u00e1g\u00e1n kell fizetni, ez\u00e9rt kerest\u00fcnk alternat\u00edv\u00e1t, hov\u00e1 lehet \u00e1tt\u00e9rni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f170a4307168e8560122966eab85c24e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hov\u00e1 lehet \u00e1tt\u00e9rni? Hossz\u00fa ideig teljesen nem volt vil\u00e1gos, hogy hov\u00e1 lehet menni, mert egyr\u00e9szt ott vannak a kereskedelmi adatb\u00e1zisok, amelyek j\u00f3nak t\u0171nnek. N\u00e9h\u00e1ny szinte ugyanolyan j\u00f3l m\u0171k\u00f6dik, mint a Vertica, n\u00e9h\u00e1ny rosszabbul. De mind dr\u00e1ga, nem siker\u00fclt olcs\u00f3bb \u00e9s jobbat tal\u00e1lni. <\/p>\n<p><\/p>\n<p>M\u00e1sr\u00e9szt vannak ny\u00edlt forr\u00e1s\u00fa megold\u00e1sok, de ezek nem t\u00fal sokan vannak, azaz az elemz\u00e9shez keveset lehet sz\u00e1molni. Ezek ingyenesek vagy olcs\u00f3k, de lassan m\u0171k\u00f6dnek. \u00c9s gyakran hi\u00e1nyzik bel\u0151l\u00fck a sz\u00fcks\u00e9ges \u00e9s hasznos funkcionalit\u00e1s.<\/p>\n<p><\/p>\n<p>Teh\u00e1t, hogy \u00f6tv\u00f6zze a kereskedelmi adatb\u00e1zisokban l\u00e9v\u0151 j\u00f3 tulajdons\u00e1gokat \u00e9s mindazt, ami ingyenes a ny\u00edlt forr\u00e1s\u00fa megold\u00e1sokban \u2013 semmi sem volt. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/abbefbf0d9578b554f81579b87213a50.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Semmi sem volt, am\u00edg v\u00e1ratlanul a Yandex el\u0151 nem rukkolt a ClickHouse-szal, mint a var\u00e1zsl\u00f3 a kalapb\u00f3l h\u00fazott ny\u00fallal. Ez meglep\u0151 megold\u00e1s volt, \u00e9s az\u00f3ta is k\u00e9rd\u00e9seket tesznek fel: \"Mi\u00e9rt?\", de mindenesetre. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c88981aace9d5925396ca5171241b7d2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9s 2016 nyar\u00e1n elkezdt\u00fck n\u00e9zni, mi is az a ClickHouse. Kider\u00fclt, hogy n\u00e9ha gyorsabb lehet, mint a Vertica. K\u00fcl\u00f6nb\u00f6z\u0151 forgat\u00f3k\u00f6nyveket tesztelt\u00fcnk k\u00fcl\u00f6nb\u00f6z\u0151 lek\u00e9rdez\u00e9sekkel. Ha a lek\u00e9rdez\u00e9s csak egy t\u00e1bl\u00e1t haszn\u00e1lt, azaz nem voltak csatlakoz\u00e1sok (join), akkor a ClickHouse k\u00e9tszer olyan gyors volt, mint a Vertica. <\/p>\n<p><\/p>\n<p>Nem sajn\u00e1ltam az id\u0151t, \u00e9s m\u00e9g egyszer megn\u00e9ztem a Yandex teszteket. Ott is ugyanez van: a ClickHouse k\u00e9tszer olyan gyors, mint a Vertica, ez\u00e9rt gyakran besz\u00e9lnek r\u00f3la. <\/p>\n<p><\/p>\n<p>De ha a lek\u00e9rdez\u00e9sekben vannak csatlakoz\u00e1sok (join), akkor a helyzet nem annyira egy\u00e9rtelm\u0171. A ClickHouse lehet, hogy lassabb a Vertica-n\u00e1l k\u00e9tszer. De ha egy kicsit \u00e1t\u00edrjuk a lek\u00e9rdez\u00e9st, akkor nagyj\u00e1b\u00f3l egyenl\u0151ek. Nem rossz. \u00c9s ingyenes. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/188bf56b72123175a18d2cb97d989a47.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A teszteredm\u00e9nyek meg\u00e9rkez\u00e9se ut\u00e1n, \u00e9s mivel t\u00f6bb szempontb\u00f3l is megn\u00e9zt\u00fck ezt, a LifeStreet \u00e1tt\u00e9rt a ClickHouse-ra.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/1183b9b7681916686c52786fc95ccb45.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Eml\u00e9keztetem, ez 2016. olyan volt, mint egy vicc a f\u00e9rgekr\u0151l, akik s\u00edrtak \u00e9s sz\u00fart\u00e1k magukat, de folytatt\u00e1k a kaktusz ev\u00e9s\u00e9t. Ezt r\u00e9szletesen elmondt\u00e1k, van r\u00f3la vide\u00f3 stb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/993052ed83dc295c3777e614c7703456.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ez\u00e9rt nem fogom r\u00e9szletesen elmondani, csak az eredm\u00e9nyekr\u0151l \u00e9s n\u00e9h\u00e1ny \u00e9rdekes dologr\u00f3l besz\u00e9lek, amir\u0151l akkor nem besz\u00e9ltem. <\/p>\n<p><\/p>\n<p>Az eredm\u00e9nyek a k\u00f6vetkez\u0151k:<\/p>\n<p><\/p>\n<ul>\n<li>Sikeres migr\u00e1ci\u00f3, \u00e9s t\u00f6bb mint egy \u00e9ve m\u0171k\u00f6dik a rendszer a termel\u00e9si k\u00f6rnyezetben. <\/li>\n<li>A teljes\u00edtm\u00e9ny \u00e9s rugalmass\u00e1g n\u0151t. A napi 10 milli\u00e1rd bejegyz\u00e9st, amit eddig meg tudtunk engedni, most a LifeStreet napi 75 milli\u00e1rd bejegyz\u00e9st t\u00e1rol, \u00e9s ezt 3 h\u00f3napig \u00e9s tov\u00e1bb is meg tudja tenni. Ha a cs\u00facsokat n\u00e9zz\u00fck, az ak\u00e1r egymilli\u00f3 esem\u00e9ny m\u00e1sodpercenk\u00e9nt is menthet\u0151. T\u00f6bb mint egymilli\u00f3 SQL-lek\u00e9rdez\u00e9s \u00e9rkezik a rendszerbe naponta, f\u0151leg k\u00fcl\u00f6nb\u00f6z\u0151 robotokt\u00f3l. <\/li>\n<li>B\u00e1r a ClickHouse-n\u00e1l t\u00f6bb szervert haszn\u00e1ltak, mint a Vertica eset\u00e9ben, a k\u00f6lts\u00e9gek megtakar\u00edt\u00e1sa is megval\u00f3sult, mert a Vertica meglehet\u0151sen dr\u00e1ga SAS-lemezeket haszn\u00e1lt. A ClickHouse SATA-t haszn\u00e1lt. Mi\u00e9rt? Mert a Vertica szinkron besz\u00far\u00e1sokat haszn\u00e1l. A szinkroniz\u00e1l\u00e1s megk\u00f6veteli, hogy a lemezek ne lassuljanak le t\u00fals\u00e1gosan, \u00e9s hogy a h\u00e1l\u00f3zat se lassuljon le, azaz ez egy el\u00e9g k\u00f6lts\u00e9ges m\u0171velet. A ClickHouse viszont aszinkron besz\u00far\u00e1sokat haszn\u00e1l. S\u0151t, mindig lehet mindenf\u00e9le helyi \u00edr\u00e1s, tov\u00e1bbi k\u00f6lts\u00e9gek n\u00e9lk\u00fcl, \u00edgy az adatok a ClickHouse-ba sokkal gyorsabban bet\u00f6lthet\u0151ek, mint a Vertica-ba, m\u00e9g a nem leggyorsabb lemezek eset\u00e9n is. Az olvas\u00e1s pedig nagyj\u00e1b\u00f3l ugyanolyan. Az olvas\u00e1s SATA-n, ha RAID-ben vannak, akkor mindez el\u00e9g gyors. <\/li>\n<li>Nincsenek licencianeh\u00e9zs\u00e9gek, teh\u00e1t 3 petab\u00e1jt adat 60 szerveren (20 szerver egy replik\u00e1t jelent) \u00e9s 6 trilli\u00f3 rekord az t\u00e9nyekben \u00e9s aggreg\u00e1lt adatokban. Ilyet a Vertica nem engedhetett meg mag\u00e1nak. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f461cdc12917ee655655dd7eb9c32bb2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Most \u00e1tt\u00e9rek a gyakorlati dolgokra ebben a p\u00e9ld\u00e1ban.<\/p>\n<p><\/p>\n<ul>\n<li>El\u0151sz\u00f6r is, hat\u00e9kony s\u00e9ma sz\u00fcks\u00e9ges. A s\u00e9ma sok mindent befoly\u00e1sol. <\/li>\n<li>A m\u00e1sodik a hat\u00e9kony SQL-gener\u00e1l\u00e1s.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e7dc2a217e77c8794ff6e8a754e78c85.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A tipikus OLAP-lek\u00e9rdez\u00e9s a select. N\u00e9h\u00e1ny oszlop group by-ba ker\u00fcl, m\u00edg m\u00e1s oszlopok aggreg\u00e1l\u00f3 funkci\u00f3kba. Van egy where, amit a kocka szelet\u00e9nek tekinthet\u00fcnk. Az eg\u00e9sz group by bemutatja a projektet. Ez\u00e9rt nevezz\u00fck ezt t\u00f6bbdimenzi\u00f3s adatelemz\u00e9snek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a03a2d7fd28905ae83183346f0c673e2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Gyakran ezt csillags\u00e9mak\u00e9nt modellezik, ahol van egy k\u00f6zponti t\u00e9ny \u00e9s a t\u00e9ny jellemz\u0151i k\u00f6rk\u00f6r\u00f6sen, mint sug\u00e1rban helyezkednek el. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d9671af4b39cc83e1ae49e6fd75d0e02.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fizikai diz\u00e1jn szempontj\u00e1b\u00f3l, ahogyan az t\u00e1bl\u00e1zatra helyezkedik, \u00e1ltal\u00e1ban normaliz\u00e1lt megjelen\u00edt\u00e9st v\u00e9geznek. Lehet denormaliz\u00e1lni, de az k\u00f6lts\u00e9ges lemezter\u00fcleten, \u00e9s nem t\u00fal hat\u00e9kony a lek\u00e9rdez\u00e9sek szempontj\u00e1b\u00f3l. Ez\u00e9rt \u00e1ltal\u00e1ban normaliz\u00e1lt megjelen\u00edt\u00e9st alkalmaznak, teh\u00e1t egy t\u00e9nyt\u00e1bl\u00e1t \u00e9s sok-sok dimenzi\u00f3s t\u00e1bl\u00e1t. <\/p>\n<p><\/p>\n<p>De a ClickHouse-ban ez rosszul m\u0171k\u00f6dik. K\u00e9t oka van: <\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151, hogy a ClickHouse nem nagyon j\u00f3 csatlakoz\u00e1sokkal (join) rendelkezik, teh\u00e1t csatlakoz\u00e1sok vannak, de gyeng\u00e9k. Jelenleg gyeng\u00e9k. <\/li>\n<li>A m\u00e1sodik pedig az, hogy a t\u00e1bl\u00e1k nem friss\u00fclnek. \u00c1ltal\u00e1ban az ilyen t\u00e1bl\u00e1k k\u00f6r\u00fcl, amelyek a csillags\u00e9m\u00e1k k\u00f6r\u00e9 \u00e9p\u00fclnek, v\u00e1ltoztatni kell valamin. P\u00e9ld\u00e1ul az \u00fcgyf\u00e9l neve, a c\u00e9g neve \u00e9s \u00edgy tov\u00e1bb. \u00c9s ez nem m\u0171k\u00f6dik. <\/li>\n<\/ul>\n<p><\/p>\n<p>A ClickHouse-ban azonban van megold\u00e1s, s\u0151t kett\u0151 is: <\/p>\n<p><\/p>\n<ul>\n<li>Az els\u0151 a sz\u00f3t\u00e1rak haszn\u00e1lata. Az External Dictionaries k\u00f6zel 99%-ban seg\u00edt megoldani a csillags\u00e9m\u00e1val, az friss\u00edt\u00e9sekkel \u00e9s egyebekkel kapcsolatos probl\u00e9m\u00e1t. <\/li>\n<li>A m\u00e1sodik a t\u00f6mb\u00f6k haszn\u00e1lata. A t\u00f6mb\u00f6k is seg\u00edtenek megszabadulni a csatlakoz\u00e1sokt\u00f3l (join) \u00e9s a normaliz\u00e1l\u00e1si probl\u00e9m\u00e1kt\u00f3l. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/775972cc412651600799173407384492.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Nincs sz\u00fcks\u00e9g csatlakoz\u00e1sokra (join). <\/li>\n<li>Friss\u00edthet\u0151k. 2018 m\u00e1rcius\u00e1t\u00f3l egy nem dokument\u00e1lt lehet\u0151s\u00e9g jelent meg (a dokument\u00e1ci\u00f3ban err\u0151l nem tal\u00e1l), ahol a sz\u00f3t\u00e1rak r\u00e9szlegesen friss\u00edthet\u0151k, teh\u00e1t azok a bejegyz\u00e9sek, amelyek megv\u00e1ltoztak. Gyakorlatilag \u00fagy m\u0171k\u00f6dik, mint egy t\u00e1bl\u00e1zat.<\/li>\n<li>Mindig a mem\u00f3ri\u00e1ban van, ez\u00e9rt a sz\u00f3t\u00e1rral v\u00e9gzett csatlakoz\u00e1sok (join) gyorsabban m\u0171k\u00f6dnek, mint ha egy t\u00e1bl\u00e1zat lenne, ami a lemezen van, \u00e9s val\u00f3sz\u00edn\u0171leg nincs is a cache-ben. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f73176a650b6d885011e3265c2af2fc3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>Ez sem ig\u00e9nyel csatlakoz\u00e1sokat (join).<\/li>\n<li>Ez egy kompakt 1 a sokhoz megjelen\u00edt\u00e9s. <\/li>\n<li>V\u00e9lem\u00e9nyem szerint a t\u00f6mb\u00f6k a geekek sz\u00e1m\u00e1ra k\u00e9sz\u00fcltek. Ezek lambda-funkci\u00f3k \u00e9s hasonl\u00f3k. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ez nem csup\u00e1n szavakban kifejezett dolog. Ez egy rendk\u00edv\u00fcl er\u0151teljes funkci\u00f3, amely lehet\u0151v\u00e9 teszi sok dolog nagyon egyszer\u0171 \u00e9s eleg\u00e1ns v\u00e9grehajt\u00e1s\u00e1t. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5d813952ca8f3da7a74c6f2a15d80a9b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tipikus p\u00e9ld\u00e1k, amelyek seg\u00edtenek az t\u00f6mb\u00f6k kezel\u00e9s\u00e9ben. Ezek a p\u00e9ld\u00e1k egyszer\u0171ek \u00e9s el\u00e9g szeml\u00e9letesek:<\/p>\n<p><\/p>\n<ul>\n<li>Keres\u00e9s c\u00edmk\u00e9k alapj\u00e1n. Ha ott vannak hashtagek, \u00e9s szeretn\u00e9 tal\u00e1lni azokat a bejegyz\u00e9seket, amelyek a hashtag alatt vannak. <\/li>\n<li>Keres\u00e9s key-value p\u00e1rok alapj\u00e1n. Itt is vannak k\u00fcl\u00f6nb\u00f6z\u0151 attrib\u00fatumok \u00e9rt\u00e9kkel. <\/li>\n<li>Kulcslist\u00e1k t\u00e1rol\u00e1sa, amelyeket m\u00e1sra kell ford\u00edtani.<\/li>\n<\/ul>\n<p><\/p>\n<p>Mindezek a feladatok megoldhat\u00f3k t\u00f6mb\u00f6k n\u00e9lk\u00fcl. A c\u00edmk\u00e9ket elhelyezheti egy k\u00e9ziratba, \u00e9s regul\u00e1ris kifejez\u00e9ssel kiv\u00e1laszthatja, vagy k\u00fcl\u00f6n t\u00e1bl\u00e1zatba, de akkor csatlakoztatni kell (join).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/dbbf90eee098c4564206532f24156823.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A ClickHouse-ban mindezt nem kell csin\u00e1lni, elegend\u0151, ha le\u00edrja a string t\u00f6mb\u00f6t a hashtagekhez, vagy egy be\u00e1gyazott strukt\u00far\u00e1t k\u00e9sz\u00edt key-value t\u00edpus\u00fa rendszerekhez.<\/p>\n<p><\/p>\n<p>A be\u00e1gyazott strukt\u00fara tal\u00e1n nem a legjobb n\u00e9v. Ez k\u00e9t t\u00f6mb, amelyek k\u00f6z\u00f6s r\u00e9sz\u00fck van a nev\u00fckben \u00e9s n\u00e9h\u00e1ny kapcsol\u00f3d\u00f3 tulajdons\u00e1guk. <\/p>\n<p><\/p>\n<p>A c\u00edmk\u00e9k szerinti keres\u00e9s nagyon egyszer\u0171. Van egy funkci\u00f3 <code>has<\/code>, amely ellen\u0151rzi, hogy a t\u00f6mbben van-e elem. Ennyi, megtal\u00e1ltuk az \u00f6sszes bejegyz\u00e9st, amely a konferenci\u00e1nkhoz tartozik.<\/p>\n<p><\/p>\n<p>A subid szerinti keres\u00e9s kicsit bonyolultabb. El\u0151sz\u00f6r meg kell tal\u00e1lnunk a kulcs index\u00e9t, majd el kell venn\u00fcnk az indexszel rendelkez\u0151 elemet, \u00e9s ellen\u0151rizn\u00fcnk kell, hogy az \u00e9rt\u00e9k az, amit keres\u00fcnk. De ha r\u00f6viden, nagyon egyszer\u0171 \u00e9s t\u00f6m\u00f6r.<\/p>\n<p><\/p>\n<p>A regul\u00e1ris kifejez\u00e9s, amit \u00edrn\u00e1nak, ha mindezt egy sorban t\u00e1rolt\u00e1k volna, egyr\u00e9szt cs\u00fanya lenne. M\u00e1sr\u00e9szt pedig sokkal tov\u00e1bb tartana, mint k\u00e9t t\u00f6mb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/17664c3121b2b0d33188adbfaa653d4e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Egy m\u00e1sik p\u00e9lda. Van egy t\u00f6mb, amelyben az ID-kat t\u00e1rolja. \u00c9s ezeket nevess\u00e9 lehet alak\u00edtani. A funkci\u00f3 <code>arrayMap<\/code>. Ez egy tipikus lambda-funkci\u00f3. \u00c1tadja a lambda-kifejez\u00e9seket. \u00c9s ez minden ID-ra a sz\u00f3t\u00e1rban kinyeri a nevet.<\/p>\n<p><\/p>\n<p>Hasonl\u00f3 m\u00f3don lehet keres\u00e9st is v\u00e9gezni. Egy predik\u00e1tum-funkci\u00f3t adunk \u00e1t, amely ellen\u0151rzi, hogy az elemek minek felelnek meg. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/146917b71a35d38a550cd9accf6ab2f7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ezek a dolgok jelent\u0151sen leegyszer\u0171s\u00edtik a s\u00e9m\u00e1t \u00e9s megoldanak egy csom\u00f3 probl\u00e9m\u00e1t. <\/p>\n<p><\/p>\n<p>De a k\u00f6vetkez\u0151 probl\u00e9ma, amellyel szembes\u00fclt\u00fcnk, \u00e9s amir\u0151l szeretn\u00e9k besz\u00e9lni, az hat\u00e9kony lek\u00e9rdez\u00e9sek. <\/p>\n<p><\/p>\n<ul>\n<li>A ClickHouse-ban nincs lek\u00e9rdez\u00e9s \u00fctemez\u0151. Egy\u00e1ltal\u00e1n nincs. <\/li>\n<li>De mindazon\u00e1ltal a bonyolult lek\u00e9rdez\u00e9seket m\u00e9gis \u00fctemezni kell. Milyen esetekben? <\/li>\n<li>Ha a k\u00e9r\u00e9sben t\u00f6bb join tal\u00e1lhat\u00f3, amelyeket als\u00f3 lek\u00e9rdez\u00e9sekbe csomagol. A v\u00e9grehajt\u00e1suk sorrendje sz\u00e1m\u00edt. <\/li>\n<li>A m\u00e1sodik pedig \u2013 ha a k\u00e9r\u00e9s elosztott. Mert az elosztott k\u00e9r\u00e9sben csak a legbels\u0151 als\u00f3 lek\u00e9rdez\u00e9s hajt\u00f3dik v\u00e9gre elosztottan, a t\u00f6bbi egy szerverre ker\u00fcl, amelyhez csatlakozott, \u00e9s ott hajtj\u00e1k v\u00e9gre. Teh\u00e1t ha elosztott lek\u00e9rdez\u00e9seid vannak sok join-nal, akkor figyelemmel kell k\u00eds\u00e9rni a sorrendet. <\/li>\n<\/ul>\n<p><\/p>\n<p>M\u00e9g egyszer\u0171bb esetekben is n\u00e9ha \u00e9rdemes a tervez\u0151t megdolgoztatni, \u00e9s a lek\u00e9rdez\u00e9seket egy kicsit \u00e1t\u00edrni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/217d422b429e8b4bc13abbf0efdf6be1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt egy p\u00e9lda. Az egyik oldalon a lek\u00e9rdez\u00e9s, amely megmutatja az \u00f6t legjobb orsz\u00e1got. \u00c9s ez 2,5 m\u00e1sodperc alatt fut le, ahogy gondolom. A m\u00e1sik oldalon ugyanez a lek\u00e9rdez\u00e9s, de kicsit \u00e1t\u00edrtuk. Ahelyett, hogy soronk\u00e9nt csoportos\u00edtan\u00e1nk, kulcs (int) alapj\u00e1n csoportos\u00edtottunk. Ez gyorsabb. Majd az eredm\u00e9nyhez csatlakoztattuk a sz\u00f3t\u00e1rat. A 2,5 m\u00e1sodperc helyett 1,5 m\u00e1sodperc alatt fut le a lek\u00e9rdez\u00e9s. Ez j\u00f3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/f19fb7d7f0397a3b38b2a3bd179c156b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hasonl\u00f3 p\u00e9lda a sz\u0171r\u0151k \u00e1t\u00edr\u00e1s\u00e1ra. Itt a lek\u00e9rdez\u00e9s Oroszorsz\u00e1gra vonatkozik. 5 m\u00e1sodperc alatt fut le. Ha \u00e1t\u00edrjuk \u00fagy, hogy nem ism\u00e9tl\u00fcnk \u00f6sszehasonl\u00edt\u00e1st, hanem sz\u00e1mokat hasonl\u00edtunk \u00f6ssze egy olyan kulcsk\u00e9szlettel, amely Oroszorsz\u00e1gra vonatkozik, akkor ez sokkal gyorsabb lesz. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0c1dd1f317133d1d106ffef85f337079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sok ilyen tr\u00fckk akad. Ezek lehet\u0151v\u00e9 teszik, hogy jelent\u0151sen felgyors\u00edtsuk a lek\u00e9rdez\u00e9seket, amelyeket m\u00e1r gyorsnak t\u0171nnek, vagy \u00e9ppen ellenkez\u0151leg, lass\u00faak. Ezeket m\u00e9g gyorsabb\u00e1 tehetj\u00fck.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/25b132790b03f239e38237af5e92ab63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>A maxim\u00e1lis munka elosztott m\u00f3dban. <\/li>\n<li>Rendez\u00e9s a minim\u00e1lis t\u00edpusok szerint, ahogy azt az intek eset\u00e9ben tettem. <\/li>\n<li>Ha vannak join-ok, sz\u00f3t\u00e1rak, akkor azokat a legutols\u00f3 pillanatban \u00e9rdemes v\u00e9gezni, amikor az adatok m\u00e1r legal\u00e1bb r\u00e9szben csoportos\u00edtva vannak, \u00edgy a join vagy sz\u00f3t\u00e1rh\u00edv\u00e1s kevesebb alkalommal fog megt\u00f6rt\u00e9nni, ami gyorsabb\u00e1 teszi. <\/li>\n<li>Sz\u0171r\u0151k cser\u00e9je. <\/li>\n<\/ul>\n<p><\/p>\n<p>Vannak m\u00e1s technik\u00e1k is, nem csak azok, amelyeket bemutattam. Mindegyik alkalmank\u00e9nt jelent\u0151sen felgyors\u00edthatja a lek\u00e9rdez\u00e9sek v\u00e9grehajt\u00e1s\u00e1t.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/175832796bee525909d8875bd723a881.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00e9rj\u00fcnk a k\u00f6vetkez\u0151 p\u00e9ld\u00e1ra. A X c\u00e9g az Egyes\u00fclt \u00c1llamokb\u00f3l. Mit csin\u00e1l? <\/p>\n<p><\/p>\n<p>Volt egy feladat: <\/p>\n<p><\/p>\n<ul>\n<li>Offline hirdet\u00e9si tranzakci\u00f3k \u00f6sszekapcsol\u00e1sa. <\/li>\n<li>K\u00fcl\u00f6nb\u00f6z\u0151 \u00f6sszekapcsol\u00e1si modellek modellez\u00e9se. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/0136b71a1205512d86f13e86761146f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi a forgat\u00f3k\u00f6nyv l\u00e9nyege?<\/p>\n<p><\/p>\n<p>A typical visitor visits the site, for example, 20 times a month from different ads or just sometimes comes without any ads because they remember the site. They look at some products, add them to their cart, take them out of the cart. And in the end, they buy something. <\/p>\n<p><\/p>\n<p>Reasonable questions: 'Who needs to pay for advertising, if needed?' and 'Which advertisement influenced them, if any?'. That is, why did they buy and how to make people similar to this person also buy?<\/p>\n<p><\/p>\n<p>To solve this task, it's necessary to link events occurring on the website in the correct way, that is, to build a connection between them. Then, send them for analysis to the DWH. Based on this analysis, create models on whom and which advertisements to show.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/e53ec81ce89150697d0eca4d72886638.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>An advertising transaction is a set of related user events that start from an ad display, something happens next, then possibly a purchase, and there could be further purchases subsequently. For example, if it\u2019s a mobile app or mobile game, the app installation usually happens for free, but if something else is done there, money might be required for that. The more a person spends in the app, the more valuable they are. But to make this work, everything needs to be linked. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/a2213613f1ef660409124ef8bcdd4fe3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>There are many models of linking. <\/p>\n<p><\/p>\n<p>The most popular ones are:<\/p>\n<p><\/p>\n<ul>\n<li>Last Interaction, where interaction is either a click or a display.<\/li>\n<li>First Interaction, that is, the first thing that brought the person to the site.<\/li>\n<li>Linear combination \u2013 equal for everyone. <\/li>\n<li>Decay.<\/li>\n<li>And others. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/9523307d557e094d981da5b525ed0b59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>And how did all this work initially? There was Runtime and Cassandra. Cassandra was used as transaction storage, that is, it stored all related transactions. When an event comes to Runtime, for example, displaying a certain page or something else, a query was made to Cassandra \u2013 is there such a person or not. Then the transactions related to them were retrieved. And linking was performed.<\/p>\n<p><\/p>\n<p>And if it was lucky that the request has a transaction id, then it's easy. But usually, luck is not on our side. Therefore, it was necessary to find the last transaction or the transaction with the last click, etc. <\/p>\n<p><\/p>\n<p>Ez eddig nagyon j\u00f3l m\u0171k\u00f6d\u00f6tt, am\u00edg a kapcsol\u00f3d\u00e1st az utols\u00f3 kattint\u00e1sra alapoztuk. Mert mondjuk naponta 10 milli\u00f3 kattint\u00e1s van, havonta 300 milli\u00f3, ha havonta n\u00e9zz\u00fck a dolgot. \u00c9s mivel a Cassandr\u00e1nak ezt mind mem\u00f3ri\u00e1ban kell tartania, hogy gyorsan m\u0171k\u00f6dj\u00f6n, hiszen a Runtime-nak gyors v\u00e1laszra van sz\u00fcks\u00e9ge, k\u00f6r\u00fclbel\u00fcl 10-15 szerverre volt sz\u00fcks\u00e9g. <\/p>\n<p><\/p>\n<p>De amikor a tranzakci\u00f3kat m\u00e1r a megjelen\u00edt\u00e9shez k\u00f6t\u00f6tt\u00e9k, akkor ez m\u00e1r nem volt annyira vid\u00e1m. Mi\u00e9rt? Nyilv\u00e1nval\u00f3, hogy 30-szor t\u00f6bb esem\u00e9nyt kellett t\u00e1rolni. \u00c9s ennek megfelel\u0151en 30-szor t\u00f6bb szerverre van sz\u00fcks\u00e9g. \u00c9s ez m\u00e1r egy olyan csillag\u00e1szati sz\u00e1m, hogy 500 szervert kell fenntartani a kapcsol\u00f3d\u00e1shoz, mik\u00f6zben a Runtime-ban sokkal kevesebb szerver van, ez m\u00e1r nem egy helyes sz\u00e1m. Elkezdtek gondolkodni, hogy mit tegyenek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/7af35f1ade680232cc83a6887891bc5c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cdgy ker\u00fclt\u00fcnk a ClickHouse-hoz. De hogyan csin\u00e1ljuk ezt ClickHouse-szal? Els\u0151 pillant\u00e1sra \u00fagy t\u0171nik, hogy ez egy antipattern assemblage. <\/p>\n<p><\/p>\n<ul>\n<li>A tranzakci\u00f3 n\u0151, folyamatosan \u00fajabb \u00e9s \u00fajabb esem\u00e9nyeket f\u0171z\u00fcnk hozz\u00e1, teh\u00e1t v\u00e1ltoztathat\u00f3, a ClickHouse pedig nem igaz\u00e1n m\u0171k\u00f6dik j\u00f3l a v\u00e1ltoztathat\u00f3 objektumokkal. <\/li>\n<li>Amikor hozz\u00e1nk \u00e9rkezik egy l\u00e1togat\u00f3, ki kell h\u00faznunk a tranzakci\u00f3it a kulcs alapj\u00e1n, a l\u00e1togat\u00e1si azonos\u00edt\u00f3ja szerint. Ez is egy point query, a ClickHouse-ban \u00edgy nem csin\u00e1lnak. \u00c1ltal\u00e1ban a ClickHouse nagy \u2026 skan\u00e1l\u00e1sokat v\u00e9gez, nek\u00fcnk pedig n\u00e9h\u00e1ny bejegyz\u00e9st kellene el\u00e9rn\u00fcnk. Ez is antipattern. <\/li>\n<li>Ezen k\u00edv\u00fcl a tranzakci\u00f3 json form\u00e1tumban volt, de nem akart\u00e1k \u00e1t\u00edrni, ez\u00e9rt azt akart\u00e1k, hogy a json ne legyen struktur\u00e1lva, hanem ha sz\u00fcks\u00e9ges, akkor abb\u00f3l valami kiker\u00fclhessen. Ez is antipattern. <\/li>\n<\/ul>\n<p><\/p>\n<p>Teh\u00e1t ez egy antipattern set. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/2473129a5880ee3172b8ab7bf4afc376.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De ennek ellen\u00e9re siker\u00fclt egy olyan rendszert l\u00e9trehozni, amely nagyon j\u00f3l m\u0171k\u00f6d\u00f6tt. <\/p>\n<p><\/p>\n<p>Mi t\u00f6rt\u00e9nt? Megjelent a ClickHouse, ahova a logok felker\u00fcltek, bejegyz\u00e9sekre bontva. Megjelent egy attributed szolg\u00e1ltat\u00e1s, amely a ClickHouse-b\u00f3l szedte ki a logokat. Ezut\u00e1n minden bejegyz\u00e9s eset\u00e9n a l\u00e1togat\u00e1si azonos\u00edt\u00f3 szerint kinyerte a tranzakci\u00f3kat, amelyek esetleg m\u00e9g feldolgozatlanok voltak, plusz a snapshotokat, teh\u00e1t m\u00e1r \u00f6sszekapcsolt tranzakci\u00f3k, azaz a kor\u00e1bbi munka eredm\u00e9nye. Ezekb\u0151l m\u00e1r k\u00e9sz\u00edtette a logik\u00e1t, kiv\u00e1lasztotta a megfelel\u0151 tranzakci\u00f3t, csatlakoztatta az \u00faj esem\u00e9nyeket. \u00dajra bele\u00edrta a logba. A log visszaker\u00fclt a ClickHouse-ba, teh\u00e1t ez egy folyamatos ciklikus rendszer. Ezen k\u00edv\u00fcl beker\u00fclt a DWH-ba is, hogy ott elemezz\u00e9k. <\/p>\n<p><\/p>\n<p>Ezen a m\u00f3don nem m\u0171k\u00f6d\u00f6tt t\u00fal j\u00f3l. Ahhoz, hogy a ClickHouse k\u00f6nnyebben tudjon kezelni egy lek\u00e9rdez\u00e9st a l\u00e1togat\u00e1si azonos\u00edt\u00f3 alapj\u00e1n, a lek\u00e9rdez\u00e9seket 1 000\u20132 000 l\u00e1togat\u00e1si azonos\u00edt\u00f3ra csoportos\u00edtott\u00e1k, \u00e9s 1 000\u20132 000 ember tranzakci\u00f3j\u00e1t hozt\u00e1k el\u0151. \u00cdgy minden m\u0171k\u00f6dni kezdett.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d920ce231e6e4b5fd5b27ab28f848aed.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ha belen\u00e9z\u00fcnk a ClickHouse belsej\u00e9be, h\u00e1rom f\u0151 t\u00e1bl\u00e1zat van, ami mindezt kezeli. <\/p>\n<p><\/p>\n<p>Az els\u0151 t\u00e1bl\u00e1zat, ahov\u00e1 a napl\u00f3kat bet\u00f6ltik, r\u00e1ad\u00e1sul a napl\u00f3k szinte feldolgoz\u00e1s n\u00e9lk\u00fcl t\u00f6lt\u0151dnek be.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik t\u00e1bl\u00e1zat. A napl\u00f3kb\u00f3l egy materializ\u00e1lt n\u00e9zet r\u00e9v\u00e9n kiemelt\u00e9k azokat az esem\u00e9nyeket, amelyek m\u00e9g nem lettek hozz\u00e1rendelve, azaz nem kapcsol\u00f3dnak semmihez. A napl\u00f3k alapj\u00e1n egy materializ\u00e1lt n\u00e9zet seg\u00edts\u00e9g\u00e9vel a tranzakci\u00f3kat is kiemelt\u00e9k a pillanatfelv\u00e9tel l\u00e9trehoz\u00e1s\u00e1hoz. Teh\u00e1t egy speci\u00e1lis materializ\u00e1lt n\u00e9zet \u00e9p\u00edtette fel a pillanatfelv\u00e9telt, nevezetesen a legutols\u00f3 felhalmozott tranzakci\u00f3\u00e1llapotot. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/12b0adb691f483923a6c35bb6e4a5017.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt van egy SQL-re \u00edrt sz\u00f6veg. Szeretn\u00e9k n\u00e9h\u00e1ny fontos dolgot megjegyezni benne. <\/p>\n<p><\/p>\n<p>Az els\u0151 fontos dolog \u2013 a ClickHouse lehet\u0151s\u00e9ge, hogy json-b\u00f3l kiemeljen oszlopokat, mez\u0151ket. Teh\u00e1t a ClickHouse-ban vannak bizonyos m\u00f3dszerek a json kezel\u00e9s\u00e9re. Ezek nagyon-nagyon primit\u00edvek. <\/p>\n<p><\/p>\n<p>A visitParamExtractInt lehet\u0151v\u00e9 teszi az attrib\u00fatumok kiemel\u00e9s\u00e9t a json-b\u00f3l, teh\u00e1t az els\u0151 tal\u00e1lat azonnal m\u0171k\u00f6dik. \u00cdgy ki lehet emelni a tranzakci\u00f3 azonos\u00edt\u00f3t vagy a l\u00e1togat\u00e1si azonos\u00edt\u00f3t. Ez az egyik. <\/p>\n<p><\/p>\n<p>A m\u00e1sodik \u2013 itt egy \u00fcgyes materializ\u00e1lt mez\u0151 ker\u00fclt felhaszn\u00e1l\u00e1sra. Mit is jelent ez? Azt jelenti, hogy nem lehet a t\u00e1bl\u00e1zatba betenni, azaz nem a t\u00e1bl\u00e1zatba ker\u00fcl, hanem kisz\u00e1m\u00edtj\u00e1k \u00e9s a besz\u00far\u00e1s sor\u00e1n t\u00e1rolj\u00e1k. A besz\u00far\u00e1skor a ClickHouse elv\u00e9gzi helyetted a munk\u00e1t. \u00c9s m\u00e1r a json-b\u00f3l kiemeli azt, amire k\u00e9s\u0151bb sz\u00fcks\u00e9ged lesz.<\/p>\n<p><\/p>\n<p>Ebben az esetben a materializ\u00e1lt n\u00e9zet a feldolgozand\u00f3 sorokhoz k\u00e9sz\u00fclt. \u00c9ppen az els\u0151 t\u00e1bl\u00e1zatb\u00f3l haszn\u00e1lja a szinte nyers napl\u00f3kat. \u00c9s mit csin\u00e1l? El\u0151sz\u00f6r is megv\u00e1ltoztatja a rendez\u00e9st, azaz a rendez\u00e9s most a l\u00e1togat\u00e1si azonos\u00edt\u00f3 alapj\u00e1n t\u00f6rt\u00e9nik, mert gyorsan szeretn\u00e9nk kiemelni egy konkr\u00e9t szem\u00e9ly tranzakci\u00f3j\u00e1t. <\/p>\n<p><\/p>\n<p>A m\u00e1sodik fontos dolog \u2013 az index_granularity. Ha l\u00e1ttad a MergeTree-t, akkor \u00e1ltal\u00e1ban alap\u00e9rtelmez\u00e9s szerint 8 192-re van \u00e1ll\u00edtva az index_granularity. Mi ez tulajdonk\u00e9ppen? Ez az index s\u0171r\u0171s\u00e9g\u00e9nek param\u00e9tere. A ClickHouse eset\u00e9ben az index ritk\u00e1s, soha nem indexeli az \u00f6sszes bejegyz\u00e9st. Ezt 8 192-esenk\u00e9nt v\u00e9gzi. Ez j\u00f3nak sz\u00e1m\u00edt, amikor sok adatot kell megsz\u00e1molni, de rossz, amikor kicsit, mert nagy a t\u00falfejleszt\u00e9s. Ha cs\u00f6kkentj\u00fck az index s\u0171r\u0171s\u00e9get, cs\u00f6kkentj\u00fck a t\u00falfejleszt\u00e9st. Egyesre cs\u00f6kkenteni nem lehet, mert nem lenne el\u00e9g mem\u00f3ria. Az index mindig a mem\u00f3ri\u00e1ban t\u00e1rol\u00f3dik. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5fe303061977cad64e6c0333b125d595.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A snapshot m\u00e9g n\u00e9h\u00e1ny \u00e9rdekes funkci\u00f3t haszn\u00e1l a ClickHouse-ban.<\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, ez az AggregatingMergeTree. Az AggregatingMergeTree t\u00e1rolja az argMax-ot, azaz az aktu\u00e1lis tranzakci\u00f3 \u00e1llapot\u00e1t, ami a legutols\u00f3 timestamp-hez tartozik. A tranzakci\u00f3k folyamatosan gener\u00e1l\u00f3dnak az adott l\u00e1togat\u00f3 sz\u00e1m\u00e1ra. Az utols\u00f3 \u00e1llapothoz hozz\u00e1adtunk egy esem\u00e9nyt, \u00e9s \u00faj \u00e1llapotunk lett. Ez \u00fajra beker\u00fclt a ClickHouse-ba. Az argMax seg\u00edts\u00e9g\u00e9vel ebben a materializ\u00e1lt n\u00e9zetben mindig meg tudjuk kapni a legfrissebb \u00e1llapotot.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/d1b87301ab5206a36bf035679f79d35a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>A kapcsol\u00f3d\u00e1s \u201elev\u00e1lasztva\u201d a Runtime-t\u00f3l. <\/li>\n<li>Havonta legfeljebb 3 milli\u00e1rd tranzakci\u00f3t t\u00e1rolunk \u00e9s dolgozunk fel. Ez nagys\u00e1grendekkel t\u00f6bb, mint ami a Cassandra-ban volt, azaz a tipikus tranzakci\u00f3s rendszerhez k\u00e9pest. <\/li>\n<li>2x5 szerverb\u0151l \u00e1ll\u00f3 ClickHouse klaszter. 5 szerver van, \u00e9s minden szervernek van egy p\u00e9ld\u00e1nya. Ez m\u00e9g kevesebb, mint amit a Kassandraban haszn\u00e1ltunk, hogy kattint\u00e1s alap\u00fa attrib\u00faci\u00f3t v\u00e9gezzen, m\u00edg itt impresszi\u00f3 alap\u00fa. Azaz ahelyett, hogy 30-szoros\u00e1ra n\u00f6veln\u00e9nk a szerverek sz\u00e1m\u00e1t, siker\u00fclt cs\u00f6kkenteni. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/583779fe9e133df519411e2256401eb3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az utols\u00f3 p\u00e9lda egy Y p\u00e9nz\u00fcgyi v\u00e1llalat, amely a r\u00e9szv\u00e9ny\u00e1rfolyamok v\u00e1ltoz\u00e1sainak korrel\u00e1ci\u00f3it elemezte. <\/p>\n<p><\/p>\n<p>A feladat a k\u00f6vetkez\u0151 volt:<\/p>\n<p><\/p>\n<ul>\n<li>K\u00f6r\u00fclbel\u00fcl 5000 r\u00e9szv\u00e9ny van. <\/li>\n<li>Az \u00e1rfolyamok 100 milliszekundumk\u00e9nt ismertek. <\/li>\n<li>Az adatok 10 \u00e9v alatt gy\u0171ltek \u00f6ssze. Nyilv\u00e1nval\u00f3an egyes c\u00e9gek eset\u00e9ben t\u00f6bb, m\u00e1sokn\u00e1l kevesebb. <\/li>\n<li>\u00d6sszesen k\u00f6r\u00fclbel\u00fcl 100 milli\u00e1rd sor. <\/li>\n<\/ul>\n<p><\/p>\n<p>A v\u00e1ltoz\u00e1sok korrel\u00e1ci\u00f3j\u00e1t kellett kisz\u00e1molni. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/b02051e6cadec8c51e7f6e351ef903f9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt k\u00e9t r\u00e9szv\u00e9ny \u00e9s azok \u00e1rfolyamai szerepelnek. Ha az egyik felfel\u00e9 megy, \u00e9s a m\u00e1sik is felfel\u00e9, az pozit\u00edv korrel\u00e1ci\u00f3t jelent, azaz az egyik n\u0151, a m\u00e1sik is n\u0151. Ha az egyik felfel\u00e9 megy, mint a grafikon v\u00e9g\u00e9n, a m\u00e1sik pedig lefel\u00e9, az negat\u00edv korrel\u00e1ci\u00f3t jelent, azaz amikor az egyik n\u0151, a m\u00e1sik cs\u00f6kken. <\/p>\n<p><\/p>\n<p>Ezeknek a k\u00f6lcs\u00f6n\u00f6s v\u00e1ltoz\u00e1soknak az elemz\u00e9s\u00e9vel el\u0151rejelz\u00e9seket lehet k\u00e9sz\u00edteni a p\u00e9nzpiacon. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/31329cf7523eef6a167632d281a634ce.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De a feladat \u00f6sszetett. Mit tesz\u00fcnk ez\u00e9rt? 100 milli\u00e1rd rekordunk van, amelyekben: id\u0151, r\u00e9szv\u00e9ny \u00e9s \u00e1r szerepel. El\u0151sz\u00f6r 100 milli\u00e1rdszor kell kisz\u00e1molnunk a runningDifference-t az \u00e1r algoritmus\u00e1b\u00f3l. A runningDifference egy olyan funkci\u00f3 a ClickHouse-ban, amely a k\u00e9t sor k\u00f6z\u00f6tti k\u00fcl\u00f6nbs\u00e9get folyamatosan sz\u00e1molja. <\/p>\n<p><\/p>\n<p>Ezut\u00e1n pedig a korrel\u00e1ci\u00f3t kell kisz\u00e1molni, m\u00e9gpedig minden p\u00e1rra. Az 5000 r\u00e9szv\u00e9ny eset\u00e9ben 12,5 milli\u00f3 p\u00e1r van. Ez sok, azaz 12,5-sz\u00f6r kell kisz\u00e1m\u00edtani ezt a korrel\u00e1ci\u00f3s funkci\u00f3t. <\/p>\n<p><\/p>\n<p>Ha valaki elfelejtette volna, \u035ex \u00e9s \u035ey \u2013 ezek a mint\u00e1ra vonatkoz\u00f3 matematikai elv\u00e1r\u00e1sok. Ez\u00e9rt nem csak a gy\u00f6k\u00f6ket \u00e9s az \u00f6sszegeket kell kisz\u00e1molni, hanem ezeken bel\u00fcl is \u00fajabb \u00f6sszegeket. Egy csom\u00f3-csom\u00f3 sz\u00e1m\u00edt\u00e1st kell v\u00e9gezni 12,5 milli\u00f3 alkalommal, \u00e9s m\u00e9g az \u00f3r\u00e1k szerint is kell csoportos\u00edtani. \u00c9s \u00f3r\u00e1kb\u00f3l is van nem kev\u00e9s. Az eg\u00e9sznek 60 m\u00e1sodperc alatt kellene befejez\u0151dnie. Ez vicc. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/567a07f586a824c91671820fe21ec305.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Valahogy be kellett fejezni, mert mindez nagyon-nagyon lassan m\u0171k\u00f6d\u00f6tt, miel\u0151tt meg\u00e9rkezett a ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/3eca1af4c3f25ff4b23fce9b84e16659.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Megpr\u00f3b\u00e1lt\u00e1k Hadoop-on, Spark-on, Greenplum-on kisz\u00e1molni. \u00c9s mindez nagyon lass\u00fa vagy dr\u00e1ga volt. Teh\u00e1t valahogy lehetett sz\u00e1molni, de az azt\u00e1n dr\u00e1ga lett. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/37608c7e87ddb9a7d54854643044c369.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Azt\u00e1n meg\u00e9rkezett a ClickHouse, \u00e9s minden sokkal jobbra fordult. <\/p>\n<p><\/p>\n<p>Eml\u00e9keztetem, hogy a probl\u00e9ma a localit\u00e1s a adatokkal, ez\u00e9rt a korrel\u00e1ci\u00f3kat nem lehet lokaliz\u00e1lni. Nem tudjuk a r\u00e9szadatokat egy helyi szerverre helyezni, a m\u00e1sik helyi szerverre pedig a t\u00f6bbit, mindenkinek minden adatnak rendelkez\u00e9sre kell \u00e1llnia. <\/p>\n<p><\/p>\n<p>Mit tettek? Kezdetben az adatok lokaliz\u00e1ltak voltak. Minden egyes szerveren a bizonyos k\u00e9szlet r\u00e9szv\u00e9ny\u00e9nek \u00e1rk\u00e9pz\u00e9se szerinti adatok t\u00e1rol\u00f3dnak. \u00c9s ezek nem metszik egym\u00e1st. Ez\u00e9rt a logReturn-t p\u00e1rhuzamosan \u00e9s f\u00fcggetlen\u00fcl lehetett sz\u00e1molni, mindez p\u00e1rhuzamosan \u00e9s elosztva t\u00f6rt\u00e9nik. <\/p>\n<p><\/p>\n<p>K\u00e9s\u0151bb \u00fagy d\u00f6nt\u00f6ttek, hogy ezeket az adatokat cs\u00f6kkentik, an\u00e9lk\u00fcl hogy kifejez\u0151k\u00e9pess\u00e9get vesz\u00edten\u00e9nek. A cs\u00f6kkent\u00e9s t\u00f6mb\u00f6k seg\u00edts\u00e9g\u00e9vel t\u00f6rt\u00e9nik, azaz minden id\u0151intervallumra l\u00e9trehoznak egy r\u00e9szv\u00e9ny- \u00e9s \u00e1rk\u00f6z\u00e9pt\u00f6mb\u00f6t. \u00cdgy az adatok jelent\u0151sen kevesebb helyet foglalnak el. \u00cdgy valamivel k\u00e9nyelmesebben lehet vel\u00fck dolgozni. Ezek szinte p\u00e1rhuzamos m\u0171veletek, azaz p\u00e1rhuzamosan r\u00e9szben sz\u00e1molunk \u00e9s azt\u00e1n r\u00f6gz\u00edtj\u00fck a szerveren. <\/p>\n<p><\/p>\n<p>Ezut\u00e1n ez replik\u00e1lhat\u00f3. Az 'r' bet\u0171 azt jelenti, hogy ezeket az adatokat replik\u00e1ltuk. Teh\u00e1t mindh\u00e1rom szerveren azonosak az adatok \u2013 ezeket a t\u00f6mb\u00f6ket. <\/p>\n<p><\/p>\n<p>Ezut\u00e1n egy k\u00fcl\u00f6n szkripttel a 12,5 milli\u00f3 korrel\u00e1ci\u00f3s adatcsomagb\u00f3l, amit sz\u00e1molni kell, lehet csomagokat k\u00e9sz\u00edteni. Azaz 2 500 feladat 5 000 p\u00e1r a korrel\u00e1ci\u00f3kb\u00f3l. \u00c9s ezt a feladatot egy adott ClickHouse szerveren lehet sz\u00e1molni. Minden adat a rendelkez\u00e9s\u00e9re \u00e1ll, mert az adatok azonosak, \u00e9s el\u0151re haladhat a sz\u00e1m\u00edt\u00e1sokkal. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/587c6d587a48f2407dd2687f5423d44a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dajra, hogy n\u00e9z ki ez. El\u0151sz\u00f6r is, minden adatunk ilyen strukt\u00far\u00e1ban van: id\u0151, r\u00e9szv\u00e9nyek, \u00e1r. Azt\u00e1n kisz\u00e1m\u00edtottuk a logReturn-t, azaz az adatok ugyanebben a strukt\u00far\u00e1ban, csak a \u00e1r helyett m\u00e1r logReturn. Ezut\u00e1n \u00e1tkonvert\u00e1ltuk \u0151ket, \u00edgy az id\u0151 \u00e9s a groupArray a r\u00e9szv\u00e9nyek \u00e9s az \u00e1rak alapj\u00e1n keletkezett. \u00d6sszevontuk. \u00c9s ezut\u00e1n l\u00e9trehoztunk egy halom feladatot, \u00e9s t\u00e1pl\u00e1ltuk a ClickHouse-t, hogy sz\u00e1molja \u0151ket. Ez m\u0171k\u00f6dik. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/434e7385aebcffcc03d1bd1a2020c8bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A proof of concept feladat \u2013 ez egy r\u00e9szfeladat volt, azaz kevesebb adatot vett\u00fcnk. \u00c9s mind\u00f6ssze h\u00e1rom szerveren.<\/p>\n<p><\/p>\n<p>Az els\u0151 k\u00e9t f\u00e1zis: a log_return sz\u00e1m\u00edt\u00e1sa \u00e9s az \u00e1tkonvert\u00e1l\u00e1s t\u00f6mb\u00f6kre k\u00f6r\u00fclbel\u00fcl egy \u00f3r\u00e1t vett ig\u00e9nybe. <\/p>\n<p><\/p>\n<p>A korrel\u00e1ci\u00f3 sz\u00e1m\u00edt\u00e1sa k\u00f6r\u00fclbel\u00fcl 50 \u00f3r\u00e1t vett ig\u00e9nybe. De 50 \u00f3ra \u2013 ez kev\u00e9s, mert kor\u00e1bban ez heteken \u00e1t tartott. Ez nagy siker volt. \u00c9s ha megn\u00e9zz\u00fck, a klaszter\u00fcnk\u00f6n m\u00e1sodpercenk\u00e9nt 70-szer v\u00e9gezte a sz\u00e1m\u00edt\u00e1st.<\/p>\n<p><\/p>\n<p>De a legfontosabb, hogy ez a rendszer gyakorlatilag nem tartalmaz sz\u0171k keresztmetszeteket, azaz gyakorlatilag line\u00e1risan sk\u00e1l\u00e1zhat\u00f3. Ezt kipr\u00f3b\u00e1lt\u00e1k. Sikeresen sk\u00e1l\u00e1zt\u00e1k. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/5a595a84897e492b49dccfb0f058b1b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li>A helyes s\u00e9ma a siker fele. A helyes s\u00e9ma pedig az \u00f6sszes sz\u00fcks\u00e9ges ClickHouse technol\u00f3gia haszn\u00e1lat\u00e1t jelenti. <\/li>\n<li>Summing\/Aggregating MergeTrees \u2013 ezek olyan technol\u00f3gi\u00e1k, amelyek lehet\u0151v\u00e9 teszik az aggreg\u00e1l\u00e1st vagy a snapshot \u00e1llapot sz\u00e1m\u00edt\u00e1s\u00e1t mint k\u00fcl\u00f6n eset. Ez l\u00e9nyegesen egyszer\u0171s\u00edti a dolgokat. <\/li>\n<li>A Materialized Views lehet\u0151v\u00e9 teszik, hogy kiker\u00fclj\u00fck az egy indexre vonatkoz\u00f3 korl\u00e1toz\u00e1st. Lehet, hogy ezt nem mondtam el t\u00fal vil\u00e1gosan, de amikor bet\u00f6lt\u00f6tt\u00fck a napl\u00f3kat, a nyers napl\u00f3k egy egy indexes t\u00e1bl\u00e1ban voltak, m\u00edg az attributum napl\u00f3k egy m\u00e1sik t\u00e1bl\u00e1ban voltak, azaz ugyanazok az adatok, csak sz\u0171rt form\u00e1ban, de a index teljesen m\u00e1s volt. L\u00e1tsz\u00f3lag ugyanazok az adatok, de k\u00fcl\u00f6nb\u00f6z\u0151 rendez\u00e9s. A Materialized Views lehet\u0151v\u00e9 teszi, ha sz\u00fcks\u00e9ge van r\u00e1, hogy megker\u00fclje ezt a ClickHouse korl\u00e1toz\u00e1st. <\/li>\n<li>Cs\u00f6kkentse az index granularit\u00e1s\u00e1t a pontszer\u0171 lek\u00e9rdez\u00e9sekhez. <\/li>\n<li>\u00c9s intelligensen osztja el az adatokat, pr\u00f3b\u00e1lja meg maxim\u00e1lisan lokaliz\u00e1lni az adatokat a szerveren bel\u00fcl. \u00c9s igyekezzen, hogy a lek\u00e9rdez\u00e9sek is a lehet\u0151 legjobban haszn\u00e1lj\u00e1k a lokaliz\u00e1ci\u00f3t. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/c0fc1737986e3f18ed1d3c53df9f0252.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00d6sszefoglalva ezt a r\u00f6vid besz\u00e9det, elmondhat\u00f3, hogy a ClickHouse most m\u00e1r hat\u00e1rozottan elfoglalta a kereskedelmi adatb\u00e1zisok \u00e9s az open source adatb\u00e1zisok ter\u00fclet\u00e9t, azaz kifejezetten az analitika sz\u00e1m\u00e1ra. Remek\u00fcl illeszkedik ebbe a t\u00e1jk\u00e9pe. S\u0151t, fokozatosan kezdi kiszor\u00edtani a m\u00e1sokat, mert ha van ClickHouse, akkor nincs sz\u00fcks\u00e9g InfiniDB-re. A Vertica tal\u00e1n hamarosan feleslegess\u00e9 v\u00e1lik, ha norm\u00e1lis SQL-t\u00e1mogat\u00e1st ny\u00fajtanak. Haszn\u00e1lj\u00e1tok!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A ClickHouse elm\u00e9lete \u00e9s gyakorlati alkalmaz\u00e1sa val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018)\" src=\"\/wp-content\/uploads\/2020\/07\/6e9a65d32eb6de7f9f139a30e7ab0d25.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u2014<em>K\u00f6sz\u00f6n\u00f6m az el\u0151ad\u00e1st! Nagyon \u00e9rdekes! Volt valamilyen \u00f6sszehasonl\u00edt\u00e1s az Apache Phoenix-szal?<\/em><\/p>\n<p><\/p>\n<p>-Nem, nem hallottam, hogy valaki \u00f6sszehasonl\u00edtotta volna. Mi, a Yandex, igyeksz\u00fcnk nyomon k\u00f6vetni minden \u00f6sszehasonl\u00edt\u00e1st a ClickHouse \u00e9s k\u00fcl\u00f6nb\u00f6z\u0151 adatb\u00e1zisok k\u00f6z\u00f6tt. Mert ha esetleg valami gyorsabb lesz, mint a ClickHouse, akkor Lesha Milovidov nem tud aludni \u00e9jjel, \u00e9s gyorsan elkezdi gyors\u00edtani. \u00c9n nem hallottam ilyen \u00f6sszehasonl\u00edt\u00e1sr\u00f3l. <\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>(Aleksey Milovidov) Az Apache Phoenix egy SQL-motor az Hbase-en. Az Hbase f\u0151leg kulcs-\u00e9rt\u00e9k t\u00edpus\u00fa munkafolyamatokhoz k\u00e9sz\u00fclt. Minden sorhoz tetsz\u0151leges sz\u00e1m\u00fa oszlop rendelhet\u0151, tetsz\u0151leges nevekkel. Ezt elmondhatjuk az olyan rendszerekre, mint az Hbase vagy a Cassandra. \u00c9s ezekkel a neh\u00e9z analitikai lek\u00e9rdez\u00e9sekkel norm\u00e1lisan nem fognak m\u0171k\u00f6dni. Vagy azt gondolhatod, hogy j\u00f3l m\u0171k\u00f6dnek, ha nincs tapasztalatod a ClickHouse haszn\u00e1lat\u00e1ban.<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>K\u00f6sz\u00f6n\u00f6m<\/p>\n<p><\/p>\n<ul>\n<li>\n<p><em>J\u00f3 napot! M\u00e1r el\u00e9g r\u00e9g\u00f3ta \u00e9rdekl\u0151d\u00f6m ez ir\u00e1nt a t\u00e9ma ir\u00e1nt, mert van egy analitikai alrendszerem. De amikor a ClickHouse-ra n\u00e9zek, az az \u00e9rz\u00e9sem t\u00e1mad, hogy a ClickHouse nagyon j\u00f3 az esem\u00e9nyek, a m\u00f3dos\u00edthat\u00f3 adatok elemz\u00e9s\u00e9re. \u00c9s ha sok \u00fczleti adatot kell elemeznem rengeteg nagy t\u00e1bl\u00e1val, akkor a ClickHouse, ahogy \u00e9rtem, nem nagyon nekem val\u00f3? K\u00fcl\u00f6n\u00f6sen, ha ezek v\u00e1ltoznak. Igaz ez, vagy vannak olyan p\u00e9ld\u00e1k, amelyek ezt megc\u00e1folhatj\u00e1k?<\/em><\/p>\n<p>\n<\/li>\n<li>\n<p>Ez helyes. \u00c9s ez igaz a legt\u00f6bb specializ\u00e1lt analitikai adatb\u00e1zisra. Ezek arra vannak optimaliz\u00e1lva, hogy egy vagy t\u00f6bb nagy t\u00e1bl\u00e1val dolgozzanak, amelyek v\u00e1ltoztathat\u00f3k, \u00e9s sok kis t\u00e1bl\u00e1val, amelyek lassan v\u00e1ltoznak. Azaz, a ClickHouse nem olyan, mint az Oracle, ahov\u00e1 mindent belet\u00f6lthet\u00fcnk \u00e9s bonyolult lek\u00e9rdez\u00e9seket \u00e9p\u00edthet\u00fcnk. Annak \u00e9rdek\u00e9ben, hogy a ClickHouse-t hat\u00e9konyan haszn\u00e1lhassuk, a s\u00e9m\u00e1t \u00fagy kell fel\u00e9p\u00edteni, ahogyan az j\u00f3l m\u0171k\u00f6dik a ClickHouse-ban. Azaz, \u00e9rdemes elker\u00fclni a t\u00falzott normaliz\u00e1l\u00e1st, sz\u00f3t\u00e1rakat haszn\u00e1lni, \u00e9s igyekezni kevesebb hossz\u00fa kapcsolatot kialak\u00edtani. Ha a s\u00e9m\u00e1t \u00edgy \u00e9p\u00edtj\u00fck fel, akkor a hasonl\u00f3 \u00fczleti kih\u00edv\u00e1sokat a ClickHouse-szal sokkal hat\u00e9konyabban lehet megoldani, mint a hagyom\u00e1nyos rel\u00e1ci\u00f3s adatb\u00e1zissal. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! K\u00e9rd\u00e9sem van az utols\u00f3 p\u00e9nz\u00fcgyi esettel kapcsolatban. Volt analitikai adataik. \u00d6ssze kellett hasonl\u00edtani, hogy hogyan v\u00e1ltozik felfel\u00e9-lefel\u00e9. J\u00f3l \u00e9rtem, hogy a rendszert kifejezetten erre az analitik\u00e1ra \u00e9p\u00edtett\u00e9k? Ha holnap p\u00e9ld\u00e1ul sz\u00fcks\u00e9g\u00fck lenne egy m\u00e1sik jelent\u00e9sre ezen adatok alapj\u00e1n, \u00fajra kell \u00e9p\u00edteni a s\u00e9m\u00e1t \u00e9s bet\u00f6lteni az adatokat? Azaz, sz\u00fcks\u00e9g van valamilyen el\u0151feldolgoz\u00e1sra az lek\u00e9rdez\u00e9shez?<\/em><\/p>\n<p><\/p>\n<p>Term\u00e9szetesen, ez a ClickHouse haszn\u00e1lata egy konkr\u00e9t feladathoz. Ezt hagyom\u00e1nyosan a Hadoop keretein bel\u00fcl oldan\u00e1k meg. A Hadoop sz\u00e1m\u00e1ra ez egy ide\u00e1lis feladat. De a Hadoopon ez nagyon lass\u00fa. Az \u00e9n c\u00e9lom az, hogy bemutassam, hogy a ClickHouse seg\u00edts\u00e9g\u00e9vel olyan feladatokat lehet megoldani, amelyeket \u00e1ltal\u00e1ban teljesen m\u00e1s eszk\u00f6z\u00f6kkel oldanak meg, de sokkal hat\u00e9konyabban. Ez egy specifikus feladatra van optimaliz\u00e1lva. Nyilv\u00e1nval\u00f3, hogy ha van egy hasonl\u00f3 feladat, akkor azt hasonl\u00f3 m\u00f3don lehet megoldani. <\/p>\n<p><\/p>\n<p><em>\u00c9rtem. Azt mondtad, hogy 50 \u00f3r\u00e1t dolgozott. Ez az elej\u00e9t\u0151l kezdve, amikor az adatokat bet\u00f6lt\u00f6tt\u00e9k, vagy amikor az eredm\u00e9nyeket kapt\u00e1k?<\/em><\/p>\n<p><\/p>\n<p>Igen-igen.<\/p>\n<p><\/p>\n<p><em>Rendben, k\u00f6sz\u00f6n\u00f6m sz\u00e9pen.<\/em><\/p>\n<p><\/p>\n<p>Ez egy 3 szerveres klaszteren van. <\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! K\u00f6sz\u00f6n\u00f6m a besz\u00e1mol\u00f3t! Minden nagyon \u00e9rdekes. Egy kicsit nem a funkci\u00f3kr\u00f3l k\u00e9rdezn\u00e9k, hanem a ClickHouse stabilit\u00e1s\u00e1nak haszn\u00e1lata szempontj\u00e1b\u00f3l. Volt-e b\u00e1rmilyen incidens, amely helyre\u00e1ll\u00edt\u00e1st ig\u00e9nyelt? Hogyan viselkedik a ClickHouse ilyenkor? El\u0151fordult-e, hogy a replik\u00e1ja is kiesett? P\u00e9ld\u00e1ul nek\u00fcnk a ClickHouse-szal az a probl\u00e9m\u00e1nk t\u00e1madt, hogy v\u00e9g\u00fcl t\u00fall\u00e9pte a hat\u00e1r\u00e9rt\u00e9k\u00e9t \u00e9s le\u00e1llt.<\/em><\/p>\n<p><\/p>\n<p>Term\u00e9szetesen nincsenek t\u00f6k\u00e9letes rendszerek. A ClickHouse-nak is vannak probl\u00e9m\u00e1i. De hallott\u00e1l arr\u00f3l, hogy a Yandex.Metrica hossz\u00fa ideig nem m\u0171k\u00f6d\u00f6tt? Val\u00f3sz\u00edn\u0171leg nem. 2012-2013 \u00f3ta megb\u00edzhat\u00f3an m\u0171k\u00f6dik a ClickHouse-nal. A tapasztalataimr\u00f3l is besz\u00e9lhetek. Soha nem volt teljes le\u00e1ll\u00e1sunk. Apr\u00f3bb probl\u00e9m\u00e1k el\u0151fordulhattak, de soha nem voltak olyan kritikusak, hogy komolyan befoly\u00e1solj\u00e1k a v\u00e1llalkoz\u00e1st. Ilyen m\u00e9g nem t\u00f6rt\u00e9nt. A ClickHouse el\u00e9g megb\u00edzhat\u00f3, \u00e9s nem omlik \u00f6ssze v\u00e9letlenszer\u0171en. Ezen nem kell agg\u00f3dni. Ez nem egy nyers dolog. Ezt sok c\u00e9g bizony\u00edtotta. <\/p>\n<p><\/p>\n<p><em>\u00dcdv\u00f6zl\u00f6m! Azt mondta, hogy alaposan meg kell gondolni az adatstrukt\u00far\u00e1t az elej\u00e9n. Mi van, ha ez megt\u00f6rt\u00e9nt? Az adatok folyamatosan \u00e9rkeznek. F\u00e9l \u00e9v eltelt\u00e9vel r\u00e1j\u00f6v\u00f6k, hogy \u00edgy nem lehet \u00e9lni, \u00fajra kell t\u00f6ltenem az adatokat \u00e9s valamit kezdeni vel\u00fck.<\/em> <\/p>\n<p><\/p>\n<p>Ez term\u00e9szetesen a rendszer\u00e9t\u0151l f\u00fcgg. Van n\u00e9h\u00e1ny m\u00f3dszer, amellyel ezt gyakorlatilag le\u00e1ll\u00e1s n\u00e9lk\u00fcl meg lehet val\u00f3s\u00edtani. P\u00e9ld\u00e1ul l\u00e9trehozhat egy Materialized View-t, amelyben egy m\u00e1sik adatstrukt\u00far\u00e1t alak\u00edt \u00e1t, ha az egy\u00e9rtelm\u0171en lek\u00e9pezhet\u0151. Teh\u00e1t ha lehets\u00e9ges a ClickHouse eszk\u00f6zeivel t\u00f6rt\u00e9n\u0151 lek\u00e9pz\u00e9s, azaz bizonyos dolgok kinyer\u00e9se, a primary key megv\u00e1ltoztat\u00e1sa, a particion\u00e1l\u00e1s m\u00f3dos\u00edt\u00e1sa, akkor l\u00e9trehozhat egy Materialized View-t. Az el\u0151z\u0151 adatait \u00e1tm\u00e1solhatja, az \u00faj adatokat automatikusan fogj\u00e1k be\u00edrni. Azt\u00e1n egyszer\u0171en csak \u00e1t\u00e1llhat a Materialized View haszn\u00e1lat\u00e1ra, majd \u00e1tkapcsolhatja az \u00edr\u00e1st, \u00e9s az r\u00e9gi t\u00e1bl\u00e1t t\u00f6r\u00f6lheti. Ez val\u00f3j\u00e1ban le\u00e1ll\u00e1s n\u00e9lk\u00fcli megold\u00e1s. <\/p>\n<p><\/p>\n<p><em>K\u00f6sz\u00f6n\u00f6m.<\/em><\/p>\n<p>Forr\u00e1s: <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 5.0.3 - aioseo.com -->\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\/hu\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-clickhouse-v-realnyh-prilozheniyah-aleksandr-zajczev-2018g\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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:url\" content=\"https:\/\/prohoster.info\/hu\/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\udd47A ClickHouse elm\u00e9lete \u00e9s gyakorlata a val\u00f3s alkalmaz\u00e1sokban. Alexander Zaytsev (2018) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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:url":"https:\/\/prohoster.info\/hu\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/89878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=89878"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/89878\/revisions"}],"predecessor-version":[{"id":162171,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/89878\/revisions\/162171"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/89879"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=89878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=89878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=89878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}