{"id":80775,"date":"2020-05-08T13:42:47","date_gmt":"2020-05-08T11:42:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah"},"modified":"2020-05-08T13:42:47","modified_gmt":"2020-05-08T11:42:47","slug":"clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah","title":{"rendered":"ClickHouse halad\u00f3 felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra k\u00e9rd\u00e9sek \u00e9s v\u00e1laszokban","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00c1prilisban az Avito m\u00e9rn\u00f6kei online tal\u00e1lkoz\u00f3ra k\u00e9sz\u00fcltek ClickHouse f\u0151 fejleszt\u0151j\u00e9vel, Alexei Milovidovval \u00e9s a Golang fejleszt\u0151vel, Kirill Shvakovval, az Integros c\u00e9gt\u0151l. Arr\u00f3l besz\u00e9lgettek, hogy hogyan haszn\u00e1ljuk az adatb\u00e1zis-kezel\u0151 rendszert \u00e9s milyen neh\u00e9zs\u00e9geink vannak. <\/p>\n<p><\/p>\n<p>A tal\u00e1lkoz\u00f3 alapj\u00e1n \u00f6sszegy\u0171jt\u00f6tt\u00fcnk egy cikket szak\u00e9rt\u0151k v\u00e1laszaival a mi \u00e9s a n\u00e9z\u0151k k\u00e9rd\u00e9seire a biztons\u00e1gi ment\u00e9sekr\u0151l, az adatok \u00fajrahaszn\u00e1lat\u00e1r\u00f3l, k\u00fcls\u0151 sz\u00f3t\u00e1rakr\u00f3l, Golang driverr\u0151l \u00e9s a ClickHouse verzi\u00f3k friss\u00edt\u00e9s\u00e9r\u0151l. Ez hasznos lehet azok sz\u00e1m\u00e1ra, akik m\u00e1r akt\u00edvan dolgoznak a Yandex DB-vel \u00e9s \u00e9rdeklik annak jelenlegi \u00e9s j\u00f6v\u0151beli lehet\u0151s\u00e9gei. Alap\u00e9rtelmez\u00e9s szerint Alexei Milovidov v\u00e1laszai \u00e9rv\u00e9nyesek, hacsak m\u00e1sk\u00e9pp nem szerepel. <\/p>\n<p><\/p>\n<p>\u00d3vatosan, a v\u00e1g\u00e1s alatt sok sz\u00f6veg tal\u00e1lhat\u00f3. Rem\u00e9lj\u00fck, hogy a k\u00e9rd\u00e9sek tartalma seg\u00edt \u00d6nnek t\u00e1j\u00e9koz\u00f3dni.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse halad\u00f3 felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra k\u00e9rd\u00e9sek \u00e9s v\u00e1laszokban\" src=\"\/wp-content\/uploads\/2020\/05\/242b1d8d002fe115614435c242297fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"soderzhanie\">Tartalom<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"#old-data\">A ClickHouse folyamatosan friss\u00fcl, a mi adataink viszont nem. Mit tegy\u00fcnk ezzel?<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#backup-best-practicies\">Mik a legjobb gyakorlatok jelenleg az adatok ClickHouse-b\u00f3l val\u00f3 biztons\u00e1gi ment\u00e9s\u00e9re?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#replication\">Lehet\u0151s\u00e9g van-e a replik\u00e1k ellen\u0151rz\u00f6tt eltol\u00e1s\u00e1nak megszervez\u00e9s\u00e9re a terhel\u00e9sek alatt?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#soooo-changeable\">Mi a teend\u0151, ha v\u00e1ltozik a t\u00e1bla szerkezete?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#resharding-best-practices\">Mik a legjobb gyakorlatok az adatok \u00fajrahaszn\u00e1lat\u00e1ban?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#clickhouse-copier\">A ClickHouse-ban van egy clickhouse-copier seg\u00e9deszk\u00f6z. Tudna err\u0151l mes\u00e9lni?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#resharding-tool\">Volt egy k\u00eds\u00e9rleti dolog, amit \u00fajrahaszn\u00e1l\u00e1snak h\u00edvtak. Mi van vele?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#move-to-slow-disk\">Lehets\u00e9ges-e az \u00f6sszes adatdarab egybeolvaszt\u00e1sa a lass\u00fa lemezekre t\u00f6rt\u00e9n\u0151 \u00e1thelyez\u00e9s el\u0151tt?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#up-to-date\">Hogyan lehet \u00e1t\u00e1llni az \u00faj ClickHouse verzi\u00f3kra, ha nincs lehet\u0151s\u00e9g a kompatibilit\u00e1s el\u0151zetes ellen\u0151rz\u00e9s\u00e9re?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#kill-query\">A Kill query-nek meg kellene \u00f6lnie a lek\u00e9rdez\u00e9seket, de nem teszi. Mi\u00e9rt?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#reading-time\">Hogyan sz\u00e1m\u00edtsuk ki a v\u00e1laszid\u0151t olvas\u00e1si terhel\u00e9s eset\u00e9n?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#pimp-my-clickhouse\">Mit kell hangolni a ClickHouse-ban, hogy t\u00f6bb adat ker\u00fclj\u00f6n a cache-be?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#storage-configuration\">Hogyan lehet be\u00e1ll\u00edtani a storage_configuration-t a RAM-ban val\u00f3 t\u00e1rol\u00e1shoz?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#low-cardinality\">Meddig hat\u00e9kony a Low Cardinality egyedi \u00e9rt\u00e9kek sz\u00e1m\u00e1nak tekintet\u00e9ben?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#fulltext-search\">Mik a legjobb gyakorlatok az \u00f6tmilli\u00e1rd soros t\u00e1bl\u00e1zat teljes sz\u00f6veg\u0171 keres\u00e9s\u00e9hez?<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#hello-and-welcome\">Hogyan lehet a ClickHouse hozz\u00e1f\u00e9r\u00e9st szervezni nagy sz\u00e1m\u00fa felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra?<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#smorgasbord\">Lehet-e egy k\u00e9rd\u00e9s eredm\u00e9nyeit t\u00edz kliensnek \u00e1tadni?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#asynchronous\">Mi a teend\u0151 az aszinkron m\u0171veletekkel \u00e9s a materializ\u00e1lt n\u00e9zetekkel?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#dashboard\">A ClickHouse-ban sok napl\u00f3 tal\u00e1lhat\u00f3. Hogyan l\u00e1thatom mindazt, ami a szerverrel t\u00f6rt\u00e9nik \u00e9ppen?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#zen\">Hogyan befoly\u00e1solhatom a f\u00fazi\u00f3kat, hogy a szerver ne hib\u00e1zzon el az OOM miatt?<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#go\">Hogyan fog zajlani a Golang driver fejleszt\u00e9se a ClickHouse sz\u00e1m\u00e1ra?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#lazy-load\">Ha a lazy_load be\u00e1ll\u00edt\u00e1ssal \u00fajraind\u00edt\u00e1ssal a k\u00fcls\u0151 sz\u00f3t\u00e1r nem t\u00f6lt\u0151dik be, mit tegy\u00fcnk?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#reload-dictionaries\">Mi a teend\u0151 azzal, hogy a system reload dictionaries nem t\u00f6lti be az \u00f6sszes sz\u00f3t\u00e1rt, ha b\u00e1rmi hiba l\u00e9p fel az egyikn\u00e9l?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#connection\">Van-e m\u00f3d a ClickHouse konfigur\u00e1ci\u00f3s adatait be\u00e1ll\u00edtani an\u00e9lk\u00fcl, hogy azok hiba\u00fczenetek sor\u00e1n megjelenjenek?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#zoom-backgrounds\">B\u00f3nusz: h\u00e1tt\u00e9rk\u00e9pek ZOOM-hoz a tal\u00e1lkoz\u00f3khoz<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p>Ha nem akarod elolvasni a sz\u00f6veget, megtekintheted a tal\u00e1lkoz\u00f3k felv\u00e9tel\u00e9t <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=n1tm4j4W8ZQ&amp;t=8147s\">a YouTube csatorn\u00e1nkon<\/a><\/noindex>. A pontos id\u0151pontok az els\u0151 kommentben tal\u00e1lhat\u00f3k a vide\u00f3 alatt.<\/p><\/blockquote>\n<p><\/p>\n<h2 id=\"anchorold-dataanchorclickhouse-postoyanno-obnovlyaetsya-a-nashi-dannyenbsp-net-chto-snbspetim-delat\"><noindex><a rel=\"nofollow\" name=\"old-data\"><\/a><\/noindex>A ClickHouse folyamatosan friss\u00fcl, de az adataink nem. Mit tegy\u00fcnk ezzel kapcsolatban?<\/h2>\n<p><\/p>\n<blockquote><p>A ClickHouse folyamatosan friss\u00fcl, de az optimaliz\u00e1lt v\u00e9gs\u0151 feldolgoz\u00e1son \u00e1tesett adataink nem friss\u00fclnek \u00e9s csak a biztons\u00e1gi m\u00e1solatban vannak. <\/p>\n<p>Tegy\u00fck fel, hogy valamilyen probl\u00e9ma l\u00e9pett fel, \u00e9s az adatok elvesztek. \u00dajra szeretn\u00e9nk \u00e1llni, \u00e9s kider\u00fcl, hogy az \u0151rz\u00f6tt r\u00e9gi part\u00edci\u00f3k, amelyek a biztons\u00e1gi szervereken tal\u00e1lhat\u00f3k, nagyon elt\u00e9rnek a jelenleg haszn\u00e1lt ClickHouse verzi\u00f3t\u00f3l. Mit tegy\u00fcnk ilyen helyzetben, \u00e9s lehets\u00e9ges-e egy ilyen helyzet?<\/p><\/blockquote>\n<p>Az a helyzet, amikor egy biztons\u00e1gi m\u00e1solatb\u00f3l r\u00e9gi form\u00e1tum\u00fa adatokat \u00e1ll\u00edtanak vissza, \u00e9s az \u00faj verzi\u00f3val nem csatlakozhat\u00f3k, lehetetlen. Figyel\u00fcnk arra, hogy a ClickHouse adatform\u00e1tuma mindig visszafel\u00e9 kompatibilis legyen. Ez sokkal fontosabb, mint a funkcion\u00e1lis visszafel\u00e9 kompatibilit\u00e1s, ha egy ritk\u00e1n haszn\u00e1lt funkci\u00f3 viselked\u00e9s\u00e9ben v\u00e1ltoz\u00e1s t\u00f6rt\u00e9nik. Azok az adatok, amelyek a lemezen t\u00e1rol\u00f3dnak, az \u00faj ClickHouse verzi\u00f3nak mindig k\u00e9pesnek kell lennie olvasni. Ez t\u00f6rv\u00e9ny. <\/p>\n<p><\/p>\n<h2 id=\"anchorbackup-best-practiciesanchorkakie-luchshie-praktiki-est-nanbspdannyy-moment-ponbsprezervnomu-kopirovaniyu-dannyh-iznbspclickhouse\"><noindex><a rel=\"nofollow\" name=\"backup-best-practicies\"><\/a><\/noindex>Mik a legjobb gyakorlatok jelenleg az adatok ClickHouse-b\u00f3l val\u00f3 biztons\u00e1gi ment\u00e9s\u00e9re?<\/h2>\n<p><\/p>\n<blockquote><p>Hogyan k\u00e9sz\u00edts\u00fcnk biztons\u00e1gi m\u00e1solatokat figyelembe v\u00e9ve, hogy vannak optimaliz\u00e1lt v\u00e9gs\u0151 m\u0171veleteink, egy hatalmas adatb\u00e1zisunk terab\u00e1jtokban, \u00e9s az adatok, amelyek az elm\u00falt h\u00e1rom napban friss\u00fcltek, a k\u00e9s\u0151bbiekben semmilyen elj\u00e1r\u00e1son nem mennek kereszt\u00fcl? <\/p>\n<p>K\u00e9sz\u00edthetj\u00fck saj\u00e1t megold\u00e1sunkat, \u00e9s \u00edrhatunk egy bash szkriptet: \u00edgy-\u00edgy \u00e1ll\u00edt\u00e1s figyelj\u00fck a biztons\u00e1gi m\u00e1solatokat. Lehet, hogy nem is kellene megold\u00e1st kre\u00e1lni, mert a biciklit m\u00e1r r\u00e9gen feltal\u00e1lt\u00e1k? <\/p><\/blockquote>\n<p>El\u0151sz\u00f6r is a legjobb gyakorlatokr\u00f3l. A koll\u00e9g\u00e1im mindig azt javasolj\u00e1k, hogy a biztons\u00e1gi ment\u00e9sre vonatkoz\u00f3 k\u00e9rd\u00e9sekre eml\u00e9keztessem a \"Yandex.Cloud\" szolg\u00e1ltat\u00e1st, ahol ezt a feladatot m\u00e1r megoldott\u00e1k. Haszn\u00e1lj\u00e1tok, ha van r\u00e1 lehet\u0151s\u00e9g. <\/p>\n<p><\/p>\n<p>Teljes megold\u00e1s, amely 100%-ban be van \u00e9p\u00edtve a ClickHouse-ba, biztons\u00e1gi ment\u00e9sekhez nem l\u00e9tezik. Vannak bizonyos sablonok, amelyeket fel lehet haszn\u00e1lni. A teljes megold\u00e1s megszerz\u00e9s\u00e9hez vagy egy kicsit manu\u00e1lisan kell dolgozni, vagy script form\u00e1j\u00e1ban burkol\u00f3z\u00e1sokat kell k\u00e9sz\u00edteni.<\/p>\n<p><\/p>\n<p>Kezdem a legegyszer\u0171bb megold\u00e1sokkal, \u00e9s a legbonyolultabbakkal z\u00e1rom, att\u00f3l f\u00fcgg\u0151en, hogy mekkora az adatmennyis\u00e9g \u00e9s a klaszter m\u00e9rete. Min\u00e9l nagyobb a klaszter, ann\u00e1l bonyolultabb\u00e1 v\u00e1lik a megold\u00e1s.<\/p>\n<p><\/p>\n<p>Ha az adatokat tartalmaz\u00f3 t\u00e1bl\u00e1zat csak n\u00e9h\u00e1ny gigab\u00e1jtot foglal el, a biztons\u00e1gi m\u00e1solatot \u00edgy k\u00e9sz\u00edtheti el: <\/p>\n<p><\/p>\n<ol>\n<li>A t\u00e1bl\u00e1k defin\u00edci\u00f3inak, azaz a metaadatoknak a ment\u00e9se - <strong>show create table<\/strong>.<\/li>\n<li>K\u00e9sz\u00edtsen dump-ot a ClickHouse kliens seg\u00edts\u00e9g\u00e9vel \u2014 <strong>select<\/strong> * <strong>from table<\/strong> f\u00e1jlba. Alap\u00e9rtelmez\u00e9s szerint TabSeparated form\u00e1tum\u00fa f\u00e1jlt kap. Ha hat\u00e9konyabban szeretn\u00e9, akkor a Native form\u00e1tumban is k\u00e9sz\u00edtheti. <\/li>\n<\/ol>\n<p><\/p>\n<p>Ha az adatmennyis\u00e9g nagyobb, akkor a biztons\u00e1gi ment\u00e9s tov\u00e1bb tart, \u00e9s sok helyet foglal el. Ezt logikai biztons\u00e1gi ment\u00e9snek nevezik, amely nem k\u00f6t\u0151dik a ClickHouse adatform\u00e1tumhoz. Ha l\u00e9tezik, akkor v\u00e9gs\u0151 esetben egy MySQL-be val\u00f3 vissza\u00e1ll\u00edt\u00e1shoz is haszn\u00e1lhatja a ment\u00e9st. <\/p>\n<p><\/p>\n<p>Halad\u00f3bb esetekre a ClickHouse be\u00e9p\u00edtette a lehet\u0151s\u00e9get, hogy snapshot-ot hozzon l\u00e9tre a part\u00edci\u00f3kr\u00f3l a helyi f\u00e1jlrendszeren. Ez a lehet\u0151s\u00e9g lek\u00e9rdez\u00e9s form\u00e1j\u00e1ban \u00e9rhet\u0151 el. <strong>alter table freeze partition<\/strong>. Vagy egyszer\u0171en <strong>alter table freeze<\/strong> - ez az eg\u00e9sz t\u00e1bla pillanatfelv\u00e9tele. <\/p>\n<p><\/p>\n<p>A snapshot egy t\u00e1bl\u00e1zat sz\u00e1m\u00e1ra konzisztens lesz egy shard-on, teh\u00e1t nem lehets\u00e9ges \u00edgy konzisztens snapshot-ot l\u00e9trehozni az eg\u00e9sz klaszterr\u0151l. De a legt\u00f6bb feladathoz nincs sz\u00fcks\u00e9g erre, \u00e9s elegend\u0151, ha minden shard-on v\u00e9grehajtja a lek\u00e9rdez\u00e9st \u00e9s megkapja a konzisztens snapshot-ot. Ez hardlinkek form\u00e1j\u00e1ban j\u00f6n l\u00e9tre, \u00edgy nem foglal el tov\u00e1bbi helyet. Ezut\u00e1n ezt a snapshot-ot \u00e1tm\u00e1solja egy biztons\u00e1gi ment\u00e9s szerverre vagy az \u00d6n \u00e1ltal haszn\u00e1lt t\u00e1rol\u00f3ba a biztons\u00e1gi ment\u00e9sek sz\u00e1m\u00e1ra.<\/p>\n<p><\/p>\n<p>Egy ilyen biztons\u00e1gi ment\u00e9s vissza\u00e1ll\u00edt\u00e1sa el\u00e9g egyszer\u0171. El\u0151sz\u00f6r is \u2014 l\u00e9tre kell hoznia a t\u00e1bl\u00e1k megl\u00e9v\u0151 defin\u00edci\u00f3i alapj\u00e1n a t\u00e1bl\u00e1kat. Ezut\u00e1n \u00e1tm\u00e1solja a t\u00e1rolt part\u00edci\u00f3k snapshot-jait a megadott t\u00e1bl\u00e1khoz tartoz\u00f3 Directory-Detached mapp\u00e1ba, \u00e9s v\u00e9grehajtja a lek\u00e9rdez\u00e9st. <strong>attach partition<\/strong>. Ez a megold\u00e1s teljesen megfelel\u0151 a legnagyobb adatmennyis\u00e9gekhez is. <\/p>\n<p><\/p>\n<p>N\u00e9ha valami m\u00e9g men\u0151bbre van sz\u00fcks\u00e9g \u2014 olyan esetekben, amikor tucatnyi vagy ak\u00e1r sz\u00e1z terab\u00e1jt van minden szerveren, \u00e9s t\u00f6bb sz\u00e1z szerver van. Itt van egy megold\u00e1s, amelyet a \u201eYandex.Metrica\u201d koll\u00e9g\u00e1it\u00f3l lestem el. Nem javaslom mindenkinek \u2014 olvassa el, \u00e9s d\u00f6ntse el, hogy megfelel\u0151-e \u00d6nnek vagy sem. <\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is l\u00e9tre kell hozni n\u00e9h\u00e1ny szervert nagy diszkeket tartalmaz\u00f3 t\u00e1rol\u00f3kkal. Ezut\u00e1n ezeken a szervereken t\u00f6bb ClickHouse szervert kell telep\u00edteni, \u00e9s \u00fagy kell be\u00e1ll\u00edtani \u0151ket, hogy egy m\u00e1sik replikak\u00e9nt m\u0171k\u00f6djenek a hasonl\u00f3 shardok sz\u00e1m\u00e1ra. Ezt k\u00f6vet\u0151en f\u00e1jlrendszert vagy valamilyen eszk\u00f6zt kell haszn\u00e1lni az \u00e1llapotk\u00e9pek l\u00e9trehoz\u00e1s\u00e1hoz. K\u00e9t lehet\u0151s\u00e9g van erre. Az els\u0151 lehet\u0151s\u00e9g az LVM \u00e1llapotk\u00e9pek, a m\u00e1sodik lehet\u0151s\u00e9g pedig a ZFS Linuxon. <\/p>\n<p><\/p>\n<p>Ezut\u00e1n minden nap \u00e1llapotk\u00e9pet kell l\u00e9trehozni, amely helyet foglal el. Term\u00e9szetesen, ha az adatok megv\u00e1ltoznak, akkor az id\u0151 m\u00fal\u00e1s\u00e1val a helyig\u00e9ny is n\u0151ni fog. Ez az \u00e1llapotk\u00e9p b\u00e1rmikor el\u0151h\u00edvhat\u00f3, \u00e9s az adatok vissza\u00e1ll\u00edthat\u00f3k, ez egy furcsa megold\u00e1s. R\u00e1ad\u00e1sul ezeket a replik\u00e1kat a konfigur\u00e1ci\u00f3ban korl\u00e1tozni kell, hogy ne pr\u00f3b\u00e1ljanak vezet\u0151v\u00e9 v\u00e1lni.<\/p>\n<p><\/p>\n<h2 id=\"anchorreplicationanchormozhno-li-budet-organizovat-kontroliruemoe-otstavanie-replik-vnbspvalah\"><noindex><a rel=\"nofollow\" name=\"replication\"><\/a><\/noindex>Lehet\u0151s\u00e9g van-e a replik\u00e1k ellen\u0151rz\u00f6tt eltol\u00e1s\u00e1nak megszervez\u00e9s\u00e9re a terhel\u00e9sek alatt?<\/h2>\n<p><\/p>\n<blockquote><p>Id\u00e9n szeretn\u00e9nek s\u00e1vokat l\u00e9trehozni a ClickHouse-ban. Lehets\u00e9ges lesz-e kontroll\u00e1lt lemarad\u00e1st l\u00e9trehozni a replik\u00e1k sz\u00e1m\u00e1ra? Szeretn\u00e9nk ezzel megv\u00e9deni magunkat a negat\u00edv forgat\u00f3k\u00f6nyvekt\u0151l, mint a val\u00f3tlan cser\u00e9k \u00e9s egy\u00e9b v\u00e1ltoz\u00e1sok. <\/p>\n<p>Van-e lehet\u0151s\u00e9g rollbackek v\u00e9grehajt\u00e1s\u00e1ra a val\u00f3tlan cser\u00e9k eset\u00e9n? P\u00e9ld\u00e1ul egy l\u00e9tez\u0151 s\u00e1vban mondhatjuk, hogy eddig az id\u0151pontig alkalmazd a v\u00e1ltoztat\u00e1sokat, de ett\u0151l kezdve ne alkalmazd ezeket a v\u00e1ltoztat\u00e1sokat?<\/p>\n<p>Ha a klaszter\u00fcnket egy csapat megzavarja, akkor van egy felt\u00e9telezett replik\u00e1nk, amely egy \u00f3r\u00e1s lemarad\u00e1sban van, ahol azt mondhatjuk, hogy haszn\u00e1ljuk ezt az egyet, de az utols\u00f3 t\u00edz percnyi v\u00e1ltozatot ne alkalmazzuk? <\/p><\/blockquote>\n<p>Kezdj\u00fck a replik\u00e1k kontroll\u00e1lt lemarad\u00e1s\u00e1val. Volt egy ilyen k\u00e9r\u00e9s a felhaszn\u00e1l\u00f3kt\u00f3l, \u00e9s l\u00e9trehoztunk egy probl\u00e9m\u00e1t a GitHub-on a k\u00e9r\u00e9s\u00fcnkkel: \u201eHa valakinek sz\u00fcks\u00e9ge van erre, l\u00e1jkolja, sz\u00edvje meg\u201d. Senki sem l\u00e1jkolta, \u00e9s a probl\u00e9m\u00e1t lez\u00e1rt\u00e1k. Ennek ellen\u00e9re m\u00e1r most is van lehet\u0151s\u00e9g ilyesmire, ha be\u00e1ll\u00edtjuk a ClickHouse-t. Igaz, csak a 20.3-as verzi\u00f3t\u00f3l kezdve.<\/p>\n<p><\/p>\n<p>A ClickHouse folyamatosan a h\u00e1tt\u00e9rben \u00f6sszevonja az adatokat - az \u00fan. merge-t. Amikor az \u00f6sszevon\u00e1s megt\u00f6rt\u00e9nik, egy adott adathalmaz egy nagyobb darabbal helyettes\u00edt\u0151dik. Ek\u00f6zben a kor\u00e1bbi adatdarabok m\u00e9g egy ideig a lemezen maradnak.<\/p>\n<p><\/p>\n<p>El\u0151sz\u00f6r is, ezek addig t\u00e1rol\u00f3dnak, am\u00edg vannak select lek\u00e9rdez\u00e9sek, amelyek haszn\u00e1lj\u00e1k \u0151ket, \u00fagy, hogy biztos\u00edts\u00e1k a nem blokkol\u00f3 m\u0171k\u00f6d\u00e9st. A select lek\u00e9rdez\u00e9sek nyugodtan olvasnak a r\u00e9gi t\u00f6mb\u00f6kb\u0151l.<\/p>\n<p><\/p>\n<p>M\u00e1sodszor, van egy id\u0151korl\u00e1t is - a r\u00e9gi adatok nyolc percig maradnak a lemezen. Ezt a nyolc percet be lehet \u00e1ll\u00edtani, s\u0151t egy napra is \u00e1t lehet alak\u00edtani. Ez azonban helyet foglal a lemezen: az adatok mennyis\u00e9ge az utols\u00f3 nap sor\u00e1n nem csak megdupl\u00e1z\u00f3dik, hanem ak\u00e1r \u00f6tsz\u00f6r is n\u0151het a forgalomt\u00f3l f\u00fcgg\u0151en. De ha komoly probl\u00e9ma mer\u00fcl fel, meg tudja \u00e1ll\u00edtani a ClickHouse szervert \u00e9s mindent rendezni tud.<\/p>\n<p><\/p>\n<p>Most felmer\u00fcl a k\u00e9rd\u00e9s, hogy ez hogyan v\u00e9d az alterek ellen. Itt \u00e9rdemes m\u00e9lyebben megvizsg\u00e1lni, mert a r\u00e9gi ClickHouse verzi\u00f3kban az alter \u00fagy m\u0171k\u00f6d\u00f6tt, hogy k\u00f6zvetlen\u00fcl megv\u00e1ltoztatta a darabokat. Van egy adag adat, amiben f\u00e1jlok vannak, \u00e9s p\u00e9ld\u00e1ul azt csin\u00e1ljuk, <strong>alter drop column<\/strong>. Akkor ez az oszlop fizikailag elt\u00e1vol\u00edt\u00e1sra ker\u00fcl az \u00f6sszes darabb\u00f3l.<\/p>\n<p><\/p>\n<p>De a 20.3 verzi\u00f3t\u00f3l kezdve az alterek mechanizmusa teljesen megv\u00e1ltozott, \u00e9s most a darabok mindig immut\u00e1bilisak. Egy\u00e1ltal\u00e1n nem v\u00e1ltoznak - az alterek most k\u00f6r\u00fclbel\u00fcl \u00fagy m\u0171k\u00f6dnek, mint a merge-ek. Ahelyett, hogy a darabot a hely\u00e9n m\u00f3dos\u00edtan\u00e1nk, \u00faj darabot hozunk l\u00e9tre. Az \u00faj darabban a v\u00e1ltozatlan f\u00e1jlok hardlinkekk\u00e9 v\u00e1lnak, \u00e9s ha elt\u00e1vol\u00edtottunk egy oszlopot, az egyszer\u0171en hi\u00e1nyozni fog az \u00faj darabb\u00f3l. A r\u00e9gi darab alap\u00e9rtelmez\u00e9s szerint nyolc perc m\u00falva t\u00f6rl\u0151dik, \u00e9s itt be lehet \u00e1ll\u00edtani a fent eml\u00edtett be\u00e1ll\u00edt\u00e1sokat. <\/p>\n<p><\/p>\n<p>Ugyanez vonatkozik a mut\u00e1ci\u00f3s t\u00edpus\u00fa alterekre is. Amikor csin\u00e1lja <strong>alter delete<\/strong> vagy <strong>alter update<\/strong>, ez nem v\u00e1ltoztatja meg a darabot, hanem \u00fajat k\u00e9sz\u00edt. Azt\u00e1n elt\u00e1vol\u00edtja a r\u00e9git.<\/p>\n<p><\/p>\n<h2 id=\"anchorsoooo-changeableanchorkak-byt-esli-struktura-tablicy-pomenyalas\"><noindex><a rel=\"nofollow\" name=\"soooo-changeable\"><\/a><\/noindex>Mi a teend\u0151, ha v\u00e1ltozik a t\u00e1bla szerkezete?<\/h2>\n<p><\/p>\n<blockquote><p>Hogyan lehet vissza\u00e1ll\u00edtani egy biztons\u00e1gi m\u00e1solatot, amely a r\u00e9gi s\u00e9ma alapj\u00e1n k\u00e9sz\u00fclt? \u00c9s egy m\u00e1sik k\u00e9rd\u00e9s a snapshotokkal \u00e9s a f\u00e1jlrendszer eszk\u00f6zeivel kapcsolatban. Haszn\u00e1lhat\u00f3-e itt a Btrfs a ZFS helyett a Linux LVM-en?<\/p><\/blockquote>\n<p>Ha csin\u00e1lja <strong>attach partition<\/strong> part\u00edci\u00f3k m\u00e1s strukt\u00far\u00e1val, akkor a ClickHouse azt mondja, hogy ez nem lehets\u00e9ges. A megold\u00e1s az, hogy el\u0151sz\u00f6r l\u00e9trehozunk egy ideiglenes MergeTree t\u00edpus\u00fa t\u00e1bl\u00e1t a r\u00e9gi strukt\u00far\u00e1val, oda csatoljuk az adatokat az attach seg\u00edts\u00e9g\u00e9vel, majd v\u00e9grehajtunk egy alter lek\u00e9rdez\u00e9st. Ezut\u00e1n az adatokat m\u00e1solhatja vagy \u00e1thelyezheti, \u00e9s \u00fajra attach\u00e1lhatja, vagy haszn\u00e1lhatja a lek\u00e9rdez\u00e9st. <strong>alter table move partition<\/strong>.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik k\u00e9rd\u00e9s&nbsp;\u2014 haszn\u00e1lhat\u00f3-e a Btrfs. El\u0151sz\u00f6r is, ha van LVM-je, akkor elegend\u0151ek az LVM pillanatfelv\u00e9telek \u00e9s a f\u00e1jlrendszer lehet ext4 is, ez nem sz\u00e1m\u00edt. A Btrfs eset\u00e9ben minden az \u00d6n tapasztalat\u00e1t\u00f3l f\u00fcgg. Ez egy \u00e9rett f\u00e1jlrendszer, de m\u00e9gis vannak gyan\u00fak a gyakorlati m\u0171k\u00f6d\u00e9s\u00e9vel kapcsolatban egy adott forgat\u00f3k\u00f6nyvben. Nem javaslom a haszn\u00e1lat\u00e1t, ha nincs Btrfs a termel\u00e9sben.<\/p>\n<p><\/p>\n<h2 id=\"anchorresharding-best-practicesanchorkakie-seychas-luchshie-praktiki-vnbspreshardinge-dannyh\"><noindex><a rel=\"nofollow\" name=\"resharding-best-practices\"><\/a><\/noindex>Mik a legjobb gyakorlatok az adatok \u00fajrahaszn\u00e1lat\u00e1ban?<\/h2>\n<p><\/p>\n<p>A helytelen shardol\u00e1sr\u00f3l sz\u00f3l\u00f3 k\u00e9rd\u00e9s bonyolult \u00e9s sokr\u00e9t\u0171. Erre azonnal t\u00f6bbf\u00e9lek\u00e9ppen is lehet v\u00e1laszolni. Az egyik oldalr\u00f3l meg lehet azt mondani, hogy a ClickHouse-ban nincs be\u00e9p\u00edtett \u00e1thelyez\u00e9si lehet\u0151s\u00e9g. De f\u00e9lek, ez a v\u00e1lasz senkit sem fog kiel\u00e9g\u00edteni. Ez\u00e9rt meg lehet k\u00f6zel\u00edteni a m\u00e1sik oldalr\u00f3l is, \u00e9s azt mondani, hogy a ClickHouse-nak sz\u00e1mos m\u00f3dja van az adatok \u00e1thelyez\u00e9s\u00e9re. <\/p>\n<p><\/p>\n<p>Ha a klaszter helye fogyt\u00e1n van, vagy nem b\u00edrja a terhel\u00e9st, \u00faj szervereket kell hozz\u00e1adnia. De ezek a szerverek alap\u00e9rtelmez\u00e9s szerint \u00fcresek, nincsenek rajtuk adatok, terhel\u00e9s sem folyik. Az adatokat \u00e1t kell helyezni, hogy egyenletesen eloszl\u00f3djanak az \u00faj, megn\u00f6velt m\u00e9ret\u0171 klaszteren.<\/p>\n<p><\/p>\n<p>Az els\u0151 m\u00f3dszer, amellyel ezt meg lehet tenni, az, hogy a lek\u00e9rdez\u00e9s seg\u00edts\u00e9g\u00e9vel a part\u00edci\u00f3k egy r\u00e9sz\u00e9t m\u00e1s \u00faj szerverekre m\u00e1soljuk. <strong>alter table fetch partition<\/strong>. P\u00e9ld\u00e1ul, ha a part\u00edci\u00f3k havonta voltak, akkor az els\u0151 h\u00f3napot 2017-b\u0151l \u00e1tveszi egy \u00faj szerverre, majd a harmadik h\u00f3napot egy m\u00e1sik \u00faj szerverre m\u00e1solja. \u00c9s \u00edgy folytatja, am\u00edg a dolog t\u00f6bb\u00e9-kev\u00e9sb\u00e9 egyenletes lesz.<\/p>\n<p><\/p>\n<p>Az \u00e1tvitel csak azokhoz a part\u00edci\u00f3khoz v\u00e9gezhet\u0151, amelyek nem v\u00e1ltoznak \u00edr\u00e1s k\u00f6zben. Az \u00faj part\u00edci\u00f3k eset\u00e9ben az \u00edr\u00e1st le kell \u00e1ll\u00edtani, mert az \u00e1tvitel\u00fck nem atom\u00e1ris. K\u00fcl\u00f6nben duplik\u00e1tumokat vagy hi\u00e1nyokat fog kapni az adatokban. Ennek ellen\u00e9re ez a m\u00f3dszer praktikus \u00e9s el\u00e9g hat\u00e9konyan m\u0171k\u00f6dik. A k\u00e9sz, t\u00f6m\u00f6r\u00edtett part\u00edci\u00f3k m\u00e1r \u00e1tker\u00fclnek a h\u00e1l\u00f3zaton, teh\u00e1t az adatok nem t\u00f6m\u00f6r\u00fclnek \u00fajra \u00e9s nem k\u00f3dol\u00f3dnak \u00e1t.<\/p>\n<p><\/p>\n<p>Ennek a m\u00f3dszernek van egy h\u00e1tr\u00e1nya, amely a shardel\u00e9si s\u00e9m\u00e1t\u00f3l f\u00fcgg, att\u00f3l, hogy ezt a shardel\u00e9si s\u00e9m\u00e1t haszn\u00e1ltad-e, \u00e9s hogy milyen shardel\u00e9si kulcsot v\u00e1lasztott\u00e1l. Az \u00d6n p\u00e9ld\u00e1j\u00e1ban a metrik\u00e1k eset\u00e9n a shardel\u00e9si kulcs a \u00fat hash-e. Amikor a Distributed t\u00e1bl\u00e1ba hajtasz v\u00e9gre select-et, az k\u00f6zvetlen\u00fcl a klaszter \u00f6sszes shardj\u00e1ra megy, \u00e9s onnan hozza vissza az adatokat. <\/p>\n<p><\/p>\n<p>Ez azt jelenti, hogy val\u00f3j\u00e1ban nem sz\u00e1m\u00edt, hogy milyen adatok tal\u00e1lhat\u00f3ak a k\u00fcl\u00f6nb\u00f6z\u0151 shardokon. A legfontosabb az, hogy az egy \u00fat ment\u00e9n l\u00e9v\u0151 adatok egy shardon tal\u00e1lhat\u00f3ak, hogy pontosan melyiken, az nem l\u00e9nyeges. Ebben az esetben a k\u00e9sz part\u00edci\u00f3k \u00e1thelyez\u00e9se t\u00f6k\u00e9letesen megfelel, mert a select lek\u00e9rdez\u00e9sek sor\u00e1n \u00d6n is \u2014 ak\u00e1r a shardel\u00e9s el\u0151tt, ak\u00e1r ut\u00e1n, a s\u00e9ma \u00e9rt\u00e9ke nem l\u00e9nyeges \u2014 teljes adatokat fog kapni.<\/p>\n<p><\/p>\n<p>De vannak bonyolultabb esetek is. Ha az alkalmaz\u00e1s logikai szintj\u00e9n egy speci\u00e1lis shardel\u00e9si s\u00e9ma mellett d\u00f6ntesz, amely szerint ez az \u00fcgyf\u00e9l egy bizonyos shardon tal\u00e1lhat\u00f3, \u00e9s a lek\u00e9rdez\u00e9st k\u00f6zvetlen\u00fcl oda lehet k\u00fcldeni, nem pedig a Distributed t\u00e1bl\u00e1ba. Vagy pedig el\u00e9g \u00faj verzi\u00f3t haszn\u00e1lsz a ClickHouse-b\u00f3l, \u00e9s enged\u00e9lyezted a be\u00e1ll\u00edt\u00e1st. <strong>optimize skip unused shards<\/strong>. Ebben az esetben a select lek\u00e9rdez\u00e9s sor\u00e1n a where szakaszban l\u00e9v\u0151 kifejez\u00e9s elemz\u00e9sre ker\u00fcl, \u00e9s kisz\u00e1m\u00edt\u00e1sra ker\u00fcl, hogy mely shardokhoz sz\u00fcks\u00e9ges eljutni a shardel\u00e9si s\u00e9ma szerint. Ez akkor m\u0171k\u00f6dik, ha az adatok val\u00f3ban megfelelnek ennek a shardel\u00e9si s\u00e9m\u00e1nak. Ha manu\u00e1lisan \u00e1trendezted \u0151ket, a megfelel\u00e9s megv\u00e1ltozhat.<\/p>\n<p><\/p>\n<p>Teh\u00e1t ez az els\u0151 m\u00f3dszer. V\u00e1rom a v\u00e1laszodat, hogy megfelel-e a m\u00f3dszer, vagy menj\u00fcnk tov\u00e1bb.<\/p>\n<p><\/p>\n<p><strong>Vladimir Kolobaev, az Avito vezet\u0151 rendszeradminisztr\u00e1tora<\/strong>: Alexei, az \u00e1ltalad eml\u00edtett m\u00f3dszer nem igaz\u00e1n j\u00f3l alkalmazhat\u00f3, amikor a terhel\u00e9st, bele\u00e9rtve az olvas\u00e1st is, egyenletesen szeretn\u00e9nk elosztani. Felvehetj\u00fck egy havi part\u00edci\u00f3t, \u00e9s \u00e1tvihetj\u00fck az el\u0151z\u0151 h\u00f3napot egy m\u00e1sik csom\u00f3pontba, de amikor a k\u00e9r\u00e9s ezekre az adatokra \u00e9rkezik, csak azt fogjuk terhelni. Pedig szeretn\u00e9nk, ha az eg\u00e9sz klaszter terhelve lenne, mert k\u00fcl\u00f6nben egy ideig az \u00f6sszes olvas\u00e1si terhel\u00e9s k\u00e9t shardon lesz lebonyol\u00edtva.<\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> A v\u00e1lasz furcsa \u2014 igen, rossz, de lehet, hogy m\u0171k\u00f6dik. Elmagyar\u00e1zom, hogyan. \u00c9rdemes megn\u00e9zni a terhel\u00e9si forgat\u00f3k\u00f6nyvet, amely a adataiddal kapcsolatos. Ha ezek monitoroz\u00e1si adatok, akkor szinte biztosan elmondhat\u00f3, hogy a k\u00e9rd\u00e9sek t\u00falnyom\u00f3 t\u00f6bbs\u00e9ge friss adatokra ir\u00e1nyul. <\/p>\n<p><\/p>\n<p>\u00daj szervereket \u00e1ll\u00edtott be, \u00e1thelyezte a r\u00e9gi part\u00edci\u00f3kat, de megv\u00e1ltoztatta azt is, hogy az \u00faj adatok hogyan ker\u00fclnek r\u00f6gz\u00edt\u00e9sre. Az \u00faj adatok el fognak terjedni az&nbsp;eg\u00e9sz klaszteren. \u00cdgy m\u00e1r \u00f6t perc eltelt\u00e9vel az \u00f6t percre vonatkoz\u00f3 lek\u00e9r\u00e9sek egyenletesen terhelni fogj\u00e1k a klasztert, m\u00edg egy nap eltelt\u00e9vel a napi lek\u00e9r\u00e9sek is egyenletesen fogj\u00e1k terhelni a klasztert. Sajnos a megel\u0151z\u0151 h\u00f3napra vonatkoz\u00f3 lek\u00e9r\u00e9sek csak a klaszter egyes szervereire fognak \u00e9rkezni.<\/p>\n<p><\/p>\n<p>De gyakran nem lesznek lek\u00e9r\u00e9seik pontosan 2019 febru\u00e1rj\u00e1ra. Val\u00f3sz\u00edn\u0171bb, hogy ha m\u00e1r 2019-es lek\u00e9r\u00e9sek \u00e9rkeznek, akkor azok az eg\u00e9sz 2019-es \u00e9vre vonatkoznak \u2014 egy nagy id\u0151intervallumra, nem pedig valamif\u00e9le kis tartom\u00e1nyra. Az ilyen lek\u00e9r\u00e9sek is k\u00e9pesek egyenletesen terhelni a klasztert. De \u00f6sszess\u00e9g\u00e9ben a megjegyz\u00e9se teljesen helyt\u00e1ll\u00f3, hogy ez egy ad hoc megold\u00e1s, ami nem osztja el az adatokat teljesen egyenletesen.<\/p>\n<p><\/p>\n<p>Van m\u00e9g n\u00e9h\u00e1ny pontom a k\u00e9rd\u00e9s megv\u00e1laszol\u00e1s\u00e1ra. Az egyik az, hogy hogyan lehet kezdetben olyan sharding s\u00e9m\u00e1t kialak\u00edtani, amely miatt a reshard\u00e1l\u00e1s kevesebb f\u00e1jdalommal j\u00e1r. Ez nem mindig lehets\u00e9ges.<\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul vannak megfigyel\u00e9si adatai. A megfigyel\u00e9si adatok h\u00e1rom okb\u00f3l n\u00f6vekednek. Az els\u0151 \u2014 a t\u00f6rt\u00e9neti adatok felhalmoz\u00f3d\u00e1sa. A m\u00e1sodik \u2014 a forgalom n\u00f6veked\u00e9se. A harmadik \u2014 a megfigyel\u00e9s al\u00e1 es\u0151 dolgok sz\u00e1m\u00e1nak n\u00f6veked\u00e9se. \u00daj mikroszolg\u00e1ltat\u00e1sok \u00e9s metrik\u00e1k jelennek meg, amelyeket meg kell \u0151rizni. <\/p>\n<p><\/p>\n<p>Lehets\u00e9ges, hogy ezek k\u00f6z\u00fcl a legnagyobb n\u00f6veked\u00e9s a harmadik okhoz k\u00f6thet\u0151 \u2014 ez a megfigyel\u00e9si haszn\u00e1lat n\u00f6veked\u00e9se. \u00c9s ebben az esetben \u00e9rdemes megn\u00e9zni a terhel\u00e9s jelleg\u00e9t, hogy mik a f\u0151 select lek\u00e9r\u00e9sek. A f\u0151 select lek\u00e9r\u00e9sek val\u00f3sz\u00edn\u0171leg egy metrik\u00e1k egy bizonyos r\u00e9szhalmaz\u00e1ra vonatkoznak.<\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul a CPU haszn\u00e1lata bizonyos szervereken valamilyen szolg\u00e1ltat\u00e1s \u00e1ltal. Teh\u00e1t van egy bizonyos kulcssorozat, amely alapj\u00e1n ezeket az adatokat leh\u00edvja. \u00c9s a lek\u00e9r\u00e9s ezekhez az adatokhoz val\u00f3sz\u00edn\u0171leg el\u00e9g egyszer\u0171, \u00e9s n\u00e9h\u00e1ny tizedm\u00e1sodperc alatt v\u00e9grehajthat\u00f3. Megfigyel\u00e9si szolg\u00e1ltat\u00e1sokhoz, ir\u00e1ny\u00edt\u00f3pultokhoz haszn\u00e1lj\u00e1k. Rem\u00e9lem, helyesen \u00e9rtem.<\/p>\n<p><\/p>\n<p><strong>Vlagyimir Kolobaev:<\/strong> A l\u00e9nyeg az, hogy nagyon gyakran hivatkozunk a t\u00f6rt\u00e9neti adatokra, mivel val\u00f3s id\u0151ben hasonl\u00edtjuk \u00f6ssze a jelenlegi helyzetet a t\u00f6rt\u00e9netivel. Sz\u00e1munkra fontos, hogy gyors hozz\u00e1f\u00e9r\u00e9s\u00fcnk legyen nagy mennyis\u00e9g\u0171 adatk\u00f6z, \u00e9s a ClickHouse ezt nagyszer\u0171en kezeli.<\/p>\n<p><\/p>\n<p>Teljesen igaza van, a legt\u00f6bb olvas\u00e1si k\u00e9r\u00e9s az utols\u00f3 nap sor\u00e1n mer\u00fcl fel, mint b\u00e1rmelyik monitoroz\u00f3 rendszer eset\u00e9ben. Ennek ellen\u00e9re a t\u00f6rt\u00e9neti adatokra is el\u00e9g nagy a terhel\u00e9s. Ez f\u0151leg az alerting rendszert\u0151l sz\u00e1rmazik, amely harminc m\u00e1sodpercenk\u00e9nt k\u00e9rdezi a ClickHouse-t: \u201eAdd meg nekem az adatokat az utols\u00f3 hat h\u00e9tb\u0151l. Most pedig \u00e9p\u00edts nekem egy mozg\u00f3\u00e1tlagot, \u00e9s hasonl\u00edtsuk \u00f6ssze a jelenlegi \u00e9rt\u00e9ket a t\u00f6rt\u00e9netivel.\u201d <\/p>\n<p><\/p>\n<p>Szeretn\u00e9m mondani, hogy van egy kicsi t\u00e1bl\u00e1zatunk az ilyen nagyon friss k\u00e9rd\u00e9sekhez, amelyben csup\u00e1n k\u00e9t nap adatait t\u00e1roljuk, \u00e9s a f\u0151 k\u00e9rd\u00e9sek ide \u00e9rkeznek. A nagy shardol\u00e1s\u00fa t\u00e1bl\u00e1zatunkba csak nagy t\u00f6rt\u00e9neti lek\u00e9rdez\u00e9sek mennek.<\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> Sajnos a te forgat\u00f3k\u00f6nyvedhez ez nem j\u00f3l alkalmazhat\u00f3, de elmondok k\u00e9t rossz \u00e9s bonyolult shardol\u00e1si s\u00e9m\u00e1t, amelyeket nem szabad haszn\u00e1lni, viszont amelyeket a bar\u00e1taim szolg\u00e1ltat\u00e1s\u00e1ban haszn\u00e1lnak. <\/p>\n<p><\/p>\n<p>Van egy f\u0151 klaszter a \u201eYandex.Metrica\u201d esem\u00e9nyeivel. Az esem\u00e9nyek oldallet\u00f6lt\u00e9sek, kattint\u00e1sok \u00e9s \u00e1tmenetek. A legt\u00f6bb k\u00e9rd\u00e9s egy konkr\u00e9t weboldalra vonatkozik. Megnyitod a \u201eYandex.Metrica\u201d szolg\u00e1ltat\u00e1st, van egy weboldalad - avito.ru, bel\u00e9psz a riporttba, \u00e9s a k\u00e9rd\u00e9s a te weboldaladra ir\u00e1nyul.<\/p>\n<p><\/p>\n<p>De vannak m\u00e1s k\u00e9rd\u00e9sek is - analitikai \u00e9s glob\u00e1lis, amelyeket a bels\u0151 elemz\u0151k v\u00e9geznek. Megjegyzem, hogy a bels\u0151 elemz\u0151k csak a \u201eYandex\u201d szolg\u00e1ltat\u00e1sokra teszik fel a k\u00e9rd\u00e9seiket. Ennek ellen\u00e9re a \u201eYandex\u201d szolg\u00e1ltat\u00e1sok is jelent\u0151s r\u00e9szesed\u00e9st k\u00e9pviselnek az \u00f6sszes adat k\u00f6z\u00f6tt. Ezek nem konkr\u00e9t sz\u00e1ml\u00e1l\u00f3khoz tartoz\u00f3 k\u00e9rd\u00e9sek, hanem sz\u00e9lesebb k\u00f6r\u0171 sz\u0171r\u00e9sr\u0151l van sz\u00f3.<\/p>\n<p><\/p>\n<p>Hogyan lehet \u00fagy megszervezni az adatokat, hogy egy sz\u00e1ml\u00e1l\u00f3 eset\u00e9ben is hat\u00e9konyan m\u0171k\u00f6dj\u00f6n, \u00e9s a glob\u00e1lis k\u00e9rd\u00e9sek is? A neh\u00e9zs\u00e9g abban \u00e1ll, hogy a ClickHouse klaszter\u00e9n a \u201eMetrica\u201d eset\u00e9ben t\u00f6bb ezer k\u00e9rd\u00e9s \u00e9rkezik m\u00e1sodpercenk\u00e9nt. Ek\u00f6zben nem trivialis k\u00e9rd\u00e9seket, p\u00e9ld\u00e1ul t\u00f6bb ezer k\u00e9rd\u00e9st egy ClickHouse szerver nem tud kezelni.<\/p>\n<p><\/p>\n<p>A klaszter m\u00e9rete k\u00f6r\u00fclbel\u00fcl hatsz\u00e1z valah\u00e1ny szerverb\u0151l \u00e1ll. Ha ehhez a klaszterhez egyszer\u0171en r\u00e1h\u00fazunk egy Distributed t\u00e1bl\u00e1t, \u00e9s oda k\u00fcld\u00fcnk p\u00e1r ezer k\u00e9r\u00e9st, akkor m\u00e9g rosszabb lesz, mint egyetlen szerverhez k\u00fcldeni \u0151ket. M\u00e1sr\u00e9szr\u0151l elvetj\u00fck azt a lehet\u0151s\u00e9get, hogy az adatok egyenletesen eloszlanak, \u00e9s mi az \u00f6sszes szervert k\u00e9rdezz\u00fck meg egyszerre.<\/p>\n<p><\/p>\n<p>Van egy diametr\u00e1lisan ellenkez\u0151 lehet\u0151s\u00e9g is. K\u00e9pzelj\u00fck el, hogy az adatokat weboldalak szerint shardoljuk, \u00e9s az egyik weboldalhoz tartoz\u00f3 k\u00e9r\u00e9s egy shardra megy. Most a klaszter sim\u00e1n k\u00e9pes lenne t\u00edzezer k\u00e9r\u00e9st m\u00e1sodpercenk\u00e9nt kezelni, de egyetlen shard eset\u00e9ben valamelyik k\u00e9r\u00e9s t\u00fal lassan fog m\u0171k\u00f6dni. Ez m\u00e1r nem lesz sk\u00e1l\u00e1zhat\u00f3 a s\u00e1vsz\u00e9less\u00e9g szempontj\u00e1b\u00f3l. F\u0151leg, ha ez az avito.ru weboldal. Nem \u00e1rulok el titkot, ha azt mondom, hogy az Avito az egyik legl\u00e1togatottabb weboldal az orosz interneten. Egy shardon kezelni pedig \u0151r\u00fclts\u00e9g lenne.<\/p>\n<p><\/p>\n<p>Ez\u00e9rt a shardol\u00e1si s\u00e9ma okosabb m\u00f3don van megtervezve. Az eg\u00e9sz klaszter egy bizonyos sz\u00e1m\u00fa klaszterre van felosztva, amelyeket r\u00e9tegeknek h\u00edvunk. Minden klaszteren bel\u00fcl t\u00edz \u00e9s t\u00f6bb tucat shard van. \u00d6sszesen harminckilenc ilyen klaszter tal\u00e1lhat\u00f3. <\/p>\n<p><\/p>\n<p>Hogyan sk\u00e1l\u00e1z\u00f3dik ez az eg\u00e9sz? A klaszterek sz\u00e1ma nem v\u00e1ltozik \u2013 ahogy n\u00e9h\u00e1ny \u00e9vvel ezel\u0151tt harminckilenc volt, \u00fagy maradt is. De mindegyikben fokozatosan n\u00f6velj\u00fck a shardok sz\u00e1m\u00e1t az adatok felhalmoz\u00f3d\u00e1s\u00e1val. A shardol\u00e1s s\u00e9m\u00e1ja alapvet\u0151en az, hogy a weboldalak szerint t\u00f6rt\u00e9nik a klaszterekre oszt\u00e1s, \u00e9s ahhoz, hogy meg\u00e9rts\u00fck, melyik weboldal melyik klaszteren helyezkedik el, egy teljesen k\u00fcl\u00f6n MySQL metaadatb\u00e1zist haszn\u00e1lunk. Egy weboldal \u2013 egy klaszteren. \u00c9s bel\u00fcl a shardol\u00e1s a l\u00e1togat\u00f3k azonos\u00edt\u00f3i szerint t\u00f6rt\u00e9nik.<\/p>\n<p><\/p>\n<p>A felv\u00e9tel sor\u00e1n a l\u00e1togat\u00f3k azonos\u00edt\u00f3j\u00e1nak oszt\u00e1si marad\u00e9ka szerint osztjuk sz\u00e9t \u0151ket. Amikor \u00faj shardot adunk hozz\u00e1, a shardol\u00e1si s\u00e9ma megv\u00e1ltozik, folytatjuk az oszt\u00e1st, de egy m\u00e1sik sz\u00e1m oszt\u00e1si marad\u00e9ka szerint. Ez azt jelenti, hogy egy l\u00e1togat\u00f3 m\u00e1r t\u00f6bb szerveren is elhelyezkedik, \u00e9s erre nem lehet \u00e9p\u00edteni. Ezt kiz\u00e1r\u00f3lag az\u00e9rt tett\u00fck, hogy az adatok jobban t\u00f6m\u00f6r\u00fcljenek. K\u00e9r\u00e9s eset\u00e9n a Distributed t\u00e1bl\u00e1hoz fordulunk, amely megvizsg\u00e1lja a klasztert, \u00e9s t\u00f6bb tucat szerverhez fordul. Ez egy ilyen komikus s\u00e9ma.<\/p>\n<p><\/p>\n<p>De a t\u00f6rt\u00e9netem nem lenne teljes, ha nem mondan\u00e1m el, hogy err\u0151l a s\u00e9m\u00e1r\u00f3l lemondtunk. Az \u00faj s\u00e9m\u00e1ban mindent megv\u00e1ltoztattunk, \u00e9s az \u00f6sszes adatot a clickhouse-copier seg\u00edts\u00e9g\u00e9vel \u00e1tm\u00e1soltuk.<\/p>\n<p><\/p>\n<p>Az \u00faj s\u00e9m\u00e1ban az \u00f6sszes webhelyet k\u00e9t kateg\u00f3ri\u00e1ra osztjuk \u2014 nagyokra \u00e9s kicsikre. Nem tudom, hogyan v\u00e1lasztott\u00e1k ki a k\u00fcsz\u00f6b\u00f6t, de az eredm\u00e9ny az, hogy a nagy webhelyek egy klaszterre ker\u00fclnek, ahol 120 shard h\u00e1rom replik\u00e1val minden shardban \u2014 teh\u00e1t \u00f6sszesen 360 szerver. A shardol\u00e1si s\u00e9ma \u00fagy n\u00e9z ki, hogy b\u00e1rmely k\u00e9r\u00e9s az \u00f6sszes shardra egyszerre megy. Ha most a 'Yandex.Metrica'-ban megnyit egy jelent\u00e9st az avito.ru sz\u00e1m\u00e1ra, a k\u00e9r\u00e9s 120 szerverre megy. A nagy webhelyek sz\u00e1ma az orosz neten kicsi. \u00cdgy a k\u00e9r\u00e9sek nemezret sz\u00e1mos, hanem m\u00e9g kevesebb mint sz\u00e1z. Mindezt a Distributed t\u00e1bla nyugodtan feldolgozza, amelyet mindegyik\u00fck 120 szerverrel dolgoz fel.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik klaszter a kicsi webhelyek sz\u00e1m\u00e1ra van. Itt a shardol\u00e1si s\u00e9ma a webhely azonos\u00edt\u00f3ja szerint van, \u00e9s minden k\u00e9r\u00e9s pontosan egy shardra megy.<\/p>\n<p><\/p>\n<h2 id=\"anchorclickhouse-copieranchorv-clickhouse-est-utilita-clickhouse-copier-mozhete-pronbspneyo-rasskazat\"><noindex><a rel=\"nofollow\" name=\"clickhouse-copier\"><\/a><\/noindex>A ClickHouse-ban van egy clickhouse-copier seg\u00e9deszk\u00f6z. Tudna err\u0151l mes\u00e9lni?<\/h2>\n<p><\/p>\n<p>Azonnal elmondom, hogy ez a megold\u00e1s terjedelmesebb \u00e9s kiss\u00e9 kev\u00e9sb\u00e9 hat\u00e9kony. Az el\u0151nye abban rejlik, hogy az adatokat teljesen a megadott s\u00e9ma szerint osztja el. De a seg\u00e9dprogram h\u00e1tr\u00e1nya, hogy nem v\u00e9gez feloszt\u00e1st. Az adatokat az egyik klaszter s\u00e9ma alapj\u00e1n a m\u00e1sik klaszter s\u00e9ma ir\u00e1ny\u00e1ba m\u00e1solja.<\/p>\n<p><\/p>\n<p>Ez azt jelenti, hogy a m\u0171k\u00f6d\u00e9s\u00e9hez k\u00e9t klaszterre van sz\u00fcks\u00e9ge. Ezek elhelyezkedhetnek azonos szervereken, de az adatok nem fognak inkrement\u00e1lisan mozogni, hanem m\u00e1solva lesznek. <\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul n\u00e9gy szerver volt, most nyolc lett. Minden szerveren \u00faj Distributed t\u00e1bl\u00e1t, \u00faj helyi t\u00e1bl\u00e1kat hoz l\u00e9tre, \u00e9s elind\u00edtja a clickhouse-copiert, megadva annak m\u0171k\u00f6d\u00e9si rendj\u00e9t, hogy mit kell olvasnia, hogy elfogadja az \u00faj shardol\u00e1si s\u00e9m\u00e1t \u00e9s \u00e1thelyezze az adatokat. A r\u00e9gi szervereken m\u00e1sf\u00e9l szor annyi helyre lesz sz\u00fcks\u00e9ge, mint amennyije most van, mert a r\u00e9gi adatoknak ott kell maradniuk, \u00e9s ezekhez m\u00e9g j\u00f6n a fel\u00e9re cs\u00f6kkentett r\u00e9gi adatok egy r\u00e9sze is. Ha el\u0151re gondolt arra, hogy az adatokat \u00fajra shardolni kell \u00e9s van hely, akkor ez a megold\u00e1s megfelel\u0151 lesz.<\/p>\n<p><\/p>\n<p>Hogyan m\u0171k\u00f6dik a clickhouse-copier bel\u00fcl? Az \u00f6sszes munk\u00e1t egy adott shard egy t\u00e1bl\u00e1j\u00e1nak egy part\u00edci\u00f3j\u00e1val kapcsolatos feladatok halmaz\u00e1ra bontja. Mindezek a feladatok p\u00e1rhuzamosan v\u00e9gezhet\u0151k el, \u00e9s a clickhouse-copier t\u00f6bb g\u00e9pen, t\u00f6bb p\u00e9ld\u00e1nyban is futtathat\u00f3, de amit egy part\u00edci\u00f3val tesz \u2014 az nem m\u00e1s, mint egy insert select. Az adatok olvas\u00e1sa, kicsomagol\u00e1sa, \u00fajrarendez\u00e9se, majd \u00fajra t\u00f6m\u00f6r\u00edt\u00e9se, valahov\u00e1 val\u00f3 \u00edr\u00e1sa, \u00fajrasorbarendez\u00e9se t\u00f6rt\u00e9nik. Ez egy nehezebb megold\u00e1s.<\/p>\n<p><\/p>\n<h2 id=\"anchorresharding-toolanchoru-vas-byla-pilotnaya-shtuka-kotoraya-nazyvalas-resharding-chto-snbspney\"><noindex><a rel=\"nofollow\" name=\"resharding-tool\"><\/a><\/noindex>Volt egy k\u00eds\u00e9rleti dolog, amit \u00fajrahaszn\u00e1l\u00e1snak h\u00edvtak. Mi van vele?<\/h2>\n<p><\/p>\n<blockquote><p>M\u00e9g 2017-ben volt egy pr\u00f3baverzi\u00f3, amit resharding-nak h\u00edvtak. M\u00e9g egy opci\u00f3 is van a ClickHouse-ban. Azt hiszem, ez nem v\u00e1lt be. El tudod mondani, mi\u00e9rt nem? \u00dagy t\u0171nik, az nagyon aktu\u00e1lis lenne.<\/p><\/blockquote>\n<p>A probl\u00e9ma abban rejlik, hogy az adatok helysz\u00edni \u00fajrashardol\u00e1s\u00e1hoz nagyon bonyolult szinkroniz\u00e1ci\u00f3 sz\u00fcks\u00e9ges, hogy ezt atomikusan meg lehessen oldani. Amikor elkezdt\u00fck megvizsg\u00e1lni, hogyan m\u0171k\u00f6dik ez a szinkroniz\u00e1ci\u00f3, vil\u00e1goss\u00e1 v\u00e1lt, hogy alapvet\u0151 probl\u00e9m\u00e1k vannak. Ezek az alapvet\u0151 probl\u00e9m\u00e1k nemcsak elm\u00e9letiek, hanem azonnal megmutatkoznak a gyakorlatban abban a form\u00e1ban, amit nagyon egyszer\u0171en lehet elmagyar\u00e1zni \u2014 semmi sem m\u0171k\u00f6dik.<\/p>\n<p><\/p>\n<h2 id=\"anchormove-to-slow-diskanchormozhno-li-slivat-vse-chasti-dannyh-voedino-perednbspperemescheniem-nanbspmedlennye-diski\"><noindex><a rel=\"nofollow\" name=\"move-to-slow-disk\"><\/a><\/noindex>Lehets\u00e9ges-e az \u00f6sszes adatdarab egybeolvaszt\u00e1sa a lass\u00fa lemezekre t\u00f6rt\u00e9n\u0151 \u00e1thelyez\u00e9s el\u0151tt?<\/h2>\n<p><\/p>\n<blockquote><p>K\u00e9rd\u00e9s a TTL-r\u0151l a move to slow disk opci\u00f3val a merge-ek kontextus\u00e1ban. Van-e m\u00e1s m\u00f3d, mint a cron, hogy az \u00f6sszes r\u00e9szt egybeolvasztjuk, miel\u0151tt \u00e1thelyezn\u00e9nk \u0151ket a lass\u00fa lemezekre?<\/p><\/blockquote>\n<p>A k\u00e9rd\u00e9sre, hogy lehet-e automatikusan egybeolvasztani az \u00f6sszes darabot az \u00e1thelyez\u00e9s el\u0151tt \u2014 nem. \u00dagy gondolom, hogy erre nincs sz\u00fcks\u00e9g. Nem sz\u00fcks\u00e9ges minden r\u00e9szt egybeolvasztani, csak arra kell sz\u00e1m\u00edtani, hogy automatikusan \u00e1thelyez\u0151dnek a lass\u00fa lemezekre. <\/p>\n<p><\/p>\n<p>K\u00e9t krit\u00e9riumunk van a migr\u00e1l\u00e1s szab\u00e1lyaival kapcsolatban. Az els\u0151 a t\u00e1rol\u00f3 tel\u00edtetts\u00e9ge alapj\u00e1n t\u00f6rt\u00e9nik. Ha az aktu\u00e1lis t\u00e1rol\u00f3 szintj\u00e9n kevesebb, mint valamilyen sz\u00e1zal\u00e9k szabad hely van, akkor v\u00e1lasztunk egy darabot, \u00e9s \u00e1thelyezz\u00fck egy lassabb t\u00e1rol\u00f3ra. Ink\u00e1bb nem lassabbra, hanem a k\u00f6vetkez\u0151re \u2014 ahogyan be\u00e1ll\u00edtja.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik krit\u00e9rium a m\u00e9ret alapj\u00e1n t\u00f6rt\u00e9nik. Ez a nagyobb darabok \u00e1thelyez\u00e9s\u00e9re vonatkozik. Be\u00e1ll\u00edthatja a szabad hely k\u00fcsz\u00f6b\u00e9t a gyors lemezen, \u00e9s az adatok automatikusan \u00e1thelyez\u0151dnek.<\/p>\n<p><\/p>\n<h2 id=\"anchorup-to-dateanchorkak-pereezzhat-nanbspnovye-versii-clickhouse-esli-net-vozmozhnosti-zaranee-proverit-sovmestimost\"><noindex><a rel=\"nofollow\" name=\"up-to-date\"><\/a><\/noindex>Hogyan lehet \u00e1t\u00e1llni az \u00faj ClickHouse verzi\u00f3kra, ha nincs lehet\u0151s\u00e9g a kompatibilit\u00e1s el\u0151zetes ellen\u0151rz\u00e9s\u00e9re?<\/h2>\n<p><\/p>\n<blockquote><p>Ez a t\u00e9ma rendszeresen felmer\u00fcl <noindex><a rel=\"nofollow\" href=\"https:\/\/teleg.run\/clickhouse_ru\">a ClickHouse Telegram-csatj\u00e1ban<\/a><\/noindex> k\u00fcl\u00f6nb\u00f6z\u0151 verzi\u00f3k figyelembev\u00e9tel\u00e9vel, m\u00e9gis. Mennyire biztons\u00e1gos friss\u00edteni a 19.11 verzi\u00f3r\u00f3l a 19.16-ra, \u00e9s p\u00e9ld\u00e1ul a 19.16-r\u00f3l a 20.3-ra? Hogyan \u00e9rdemes \u00e1tt\u00e9rni az \u00faj verzi\u00f3kra an\u00e9lk\u00fcl, hogy el\u0151re ellen\u0151rizhetn\u00e9nk a kompatibilit\u00e1st egy homokoz\u00f3ban?<\/p><\/blockquote>\n<p>Itt van n\u00e9h\u00e1ny \"arany\" szab\u00e1ly. Az els\u0151 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/ClickHouse\/blob\/master\/CHANGELOG.md\">olvassa el a changelogot<\/a><\/noindex>. Nagy, de vannak benne k\u00fcl\u00f6n\u00e1ll\u00f3 pontok a visszafel\u00e9 nem kompatibilis v\u00e1ltoz\u00e1sokr\u00f3l. Ezeket a pontokat ne tekintse piros z\u00e1szl\u00f3nak. \u00c1ltal\u00e1ban apr\u00f3 inkompatibilit\u00e1sokr\u00f3l van sz\u00f3, amelyeket valamilyen sz\u00e9l\u00e9n l\u00e9v\u0151 funkcionalit\u00e1s okoz, amit val\u00f3sz\u00edn\u0171leg nem haszn\u00e1l.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik \u2014 ha nincs lehet\u0151s\u00e9g az kompatibilit\u00e1s ellen\u0151rz\u00e9s\u00e9re egy homokoz\u00f3ban, \u00e9s azonnal friss\u00edteni szeretne a gy\u00e1rt\u00e1si k\u00f6rnyezetben, akkor a javaslat: ne tegye ezt. El\u0151sz\u00f6r hozzon l\u00e9tre egy homokoz\u00f3t \u00e9s ellen\u0151rizze. Ha nincs tesztk\u00f6rnyezet, akkor val\u00f3sz\u00edn\u0171leg nem egy t\u00fal nagy c\u00e9gr\u0151l van sz\u00f3, teh\u00e1t m\u00e1solhat egy r\u00e9sz adatot a laptopj\u00e1ra, \u00e9s ott megbizonyosodhat arr\u00f3l, hogy minden helyesen m\u0171k\u00f6dik. Helyben t\u00f6bb replik\u00e1t is ind\u00edthat a g\u00e9p\u00e9n. Vagy valahol k\u00f6zel emelheti az \u00faj verzi\u00f3t, \u00e9s bet\u00f6lthetik oda az adatok egy r\u00e9sz\u00e9t \u2014 teh\u00e1t improviz\u00e1lt tesztk\u00f6rnyezetet l\u00e9trehozni. <\/p>\n<p><\/p>\n<p>Egy m\u00e1sik szab\u00e1ly \u2014 ne friss\u00edtsen a verzi\u00f3 kiad\u00e1sa ut\u00e1n egy h\u00e9ten bel\u00fcl, mivel hibajav\u00edt\u00e1sokat v\u00e9geznek a gy\u00e1rt\u00e1si k\u00f6rnyezetben, \u00e9s ezt k\u00f6vet\u0151en gyors jav\u00edt\u00e1sokkal. N\u00e9zz\u00fck meg a ClickHouse verzi\u00f3sz\u00e1moz\u00e1s\u00e1t, hogy ne zavarodjunk \u00f6ssze. <\/p>\n<p><\/p>\n<p>A 20.3.4-es verzi\u00f3 \u00e9rkezett. A 20&nbsp;az \u00e9vet jel\u00f6li&nbsp;\u2014 2020-ra. Ez nem sz\u00e1m\u00edt a bels\u0151 m\u0171k\u00f6d\u00e9s szempontj\u00e1b\u00f3l, \u00edgy nem is foglalkozunk ezzel. K\u00f6vetkez\u0151 sz\u00e1m: 20.3. A m\u00e1sodik sz\u00e1mot&nbsp;\u2014 ebben az esetben a 3-at \u2014 minden alkalommal n\u00f6velj\u00fck, amikor \u00faj funkci\u00f3kat adunk ki. Ha egy \u00faj lehet\u0151s\u00e9get szeretn\u00e9nk hozz\u00e1adni a ClickHouse-hoz, ezt a sz\u00e1mot meg kell emeln\u00fcnk. Azaz a 20.4 verzi\u00f3val a ClickHouse m\u00e9g jobb\u00e1 v\u00e1lik. A harmadik sz\u00e1m&nbsp;\u2014 20.3.4. Itt a 4 a patch kiad\u00e1sok sz\u00e1m\u00e1t jelenti, amelyekben \u00faj lehet\u0151s\u00e9geket nem adtunk hozz\u00e1, de hib\u00e1kat jav\u00edtottunk. Teh\u00e1t a 4 azt jelenti, hogy ezt n\u00e9gy alkalommal tett\u00fck.<\/p>\n<p><\/p>\n<p>Ne gondolj\u00e1tok, hogy ez valami borzalmas. \u00c1ltal\u00e1ban a felhaszn\u00e1l\u00f3 telep\u00edti a legfrissebb verzi\u00f3t, \u00e9s az probl\u00e9m\u00e1k n\u00e9lk\u00fcl m\u0171k\u00f6dik egy \u00e9vig. De k\u00e9pzelj\u00e9tek el, hogy egy bitmap feldolgoz\u00e1si funkci\u00f3ban, amit a k\u00ednai koll\u00e9g\u00e1ink adtak hozz\u00e1, a helytelen argumentumok megad\u00e1sa sor\u00e1n a szerver \u00f6sszeomlik. Ezt ki kell jav\u00edtanunk. Ki fogunk adni egy \u00faj patch verzi\u00f3t, \u00e9s a ClickHouse stabilabb\u00e1 v\u00e1lik.<\/p>\n<p><\/p>\n<p>Ha a ClickHouse a termel\u00e9sben fut, \u00e9s \u00faj verzi\u00f3 \u00e9rkezik extra funkci\u00f3kkal \u2014 p\u00e9ld\u00e1ul 20.4.1 \u2014 ne siess azzal, hogy az els\u0151 napon bevezetd a termel\u00e9sbe. Mire is van ez egy\u00e1ltal\u00e1n sz\u00fcks\u00e9g? Ha m\u00e9g nem haszn\u00e1lod a ClickHouse-t, akkor telep\u00edtheted, \u00e9s val\u00f3sz\u00edn\u0171leg minden rendben lesz. De ha a ClickHouse m\u00e1r stabilan fut, figyelj a patch-kiad\u00e1sokra \u00e9s friss\u00edt\u00e9sekre \u2014 mely probl\u00e9m\u00e1kat jav\u00edtunk.<\/p>\n<p><\/p>\n<p><strong>Kirill Shvakov:<\/strong> Szeretn\u00e9k egy kicsit besz\u00e9lni a tesztk\u00f6rnyezetekr\u0151l. Mindenki nagyon f\u00e9l a tesztk\u00f6rnyezetekt\u0151l, \u00e9s valami\u00e9rt azt gondolj\u00e1k, hogy ha nagy clusterrel rendelkezel a ClickHouse-ban, akkor a tesztk\u00f6rnyezetnek sem kisebbnek, vagy legal\u00e1bb t\u00edzszer kisebbnek kell lennie. Ez egy\u00e1ltal\u00e1n nem igaz.<\/p>\n<p><\/p>\n<p>Saj\u00e1t p\u00e9ld\u00e1mb\u00f3l tudok besz\u00e9lni. Van egy projekt\u00fcnk, amiben ClickHouse van. A tesztk\u00f6rnyezet\u00fcnk pontosan ehhez&nbsp;\u2014 egy kis virtu\u00e1lis g\u00e9p a Hetznern\u00e9l h\u00fasz eur\u00f3\u00e9rt, ahol mindent telep\u00edtett\u00fcnk. Ehhez teljes automatiz\u00e1l\u00e1sunk van Ansible-ben, \u00edgy alapvet\u0151en nincs k\u00fcl\u00f6nbs\u00e9g, hogy igazi szerverekre, vagy virtu\u00e1lis g\u00e9pekre telep\u00edt\u00fcnk.<\/p>\n<p><\/p>\n<p>Mit lehet tenni? J\u00f3 lenne, ha a ClickHouse dokument\u00e1ci\u00f3j\u00e1ban lenne egy p\u00e9lda, hogyan lehet saj\u00e1t magunknak egy kis klasztert telep\u00edteni \u2013 Dockerben, LXC-ben, esetleg l\u00e9trehozni egy Ansible playbookot, mert k\u00fcl\u00f6nb\u00f6z\u0151 emberek k\u00fcl\u00f6nb\u00f6z\u0151 telep\u00edt\u00e9sekkel rendelkeznek. Ez sok mindent leegyszer\u0171s\u00edtene. Amikor \u00f6t perc alatt fel tudod \u00e1ll\u00edtani a klasztert, sokkal k\u00f6nnyebb pr\u00f3b\u00e1lkozni valamivel. Sokkal k\u00e9nyelmesebb, mert a termel\u00e9si verzi\u00f3t futtatni, amit nem ellen\u0151rizt\u00e9l \u2013 az a semmibe vezet. N\u00e9ha m\u0171k\u00f6dik, n\u00e9ha pedig nem. Ez\u00e9rt b\u00edzni a sikerben \u2013 rossz dolog.<\/p>\n<p><\/p>\n<p><strong>Maxim Kotyakov, senior backend engineer, Avito:<\/strong> Egy kicsit kieg\u00e9sz\u00edtem a tesztk\u00f6rnyezeteket a nagy c\u00e9gek probl\u00e9m\u00e1ival kapcsolatban. Van egy teljes \u00e9rt\u00e9k\u0171 ClickHouse tesztkakasztunk, amely az adats\u00e9m\u00e1k \u00e9s be\u00e1ll\u00edt\u00e1sok tekintet\u00e9ben pontos m\u00e1sa a termel\u00e9si k\u00f6rnyezetnek. Ez a klaszter el\u00e9gg\u00e9 elavult kont\u00e9nerekben van ki\u00e9p\u00edtve minim\u00e1lis er\u0151forr\u00e1sokkal. Az adatok egy bizonyos sz\u00e1zal\u00e9k\u00e1t \u00edrjuk oda a termel\u00e9si adatokb\u00f3l, h\u00e1la a Kafka folyamat\u00e1nak replik\u00e1l\u00e1si lehet\u0151s\u00e9g\u00e9nek. Ott minden szinkroniz\u00e1lva \u00e9s sk\u00e1l\u00e1zva van \u2013 \u00e9s az er\u0151forr\u00e1sok, valamint a folyamat szempontj\u00e1b\u00f3l elm\u00e9letileg a metrik\u00e1knak termel\u00e9si k\u00f6rnyezetben kell viselkedni\u00fck. Minden potenci\u00e1lisan robban\u00e9kony dolog el\u0151sz\u00f6r ezen a standon fut, ahol n\u00e9h\u00e1ny napig \u00e9rlel\u0151dik a k\u00e9szenl\u00e9tre. De term\u00e9szetesen, ez a megold\u00e1s dr\u00e1ga, neh\u00e9z, \u00e9s nem elhanyagolhat\u00f3 k\u00f6lts\u00e9gekkel j\u00e1r a karbantart\u00e1sra. <\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> Elmondom, mit jelent a tesztk\u00f6rnyezet a bar\u00e1taink sz\u00e1m\u00e1ra a \u201eYandex.Metrica\u201d-n\u00e1l. Az egyik klaszter 600 n\u00e9h\u00e1ny szerverb\u0151l \u00e1llt, a m\u00e1sik 360-b\u00f3l, \u00e9s van m\u00e9g egy harmadik \u00e9s n\u00e9h\u00e1ny klaszter. A tesztk\u00f6rnyezet egy darab sz\u00e1m\u00e1ra \u2013 ez egyszer\u0171en csak k\u00e9t shard k\u00e9t replik\u00e1val mindegyikben. Mi\u00e9rt k\u00e9t shard? Hogy ne csak egy legyen. \u00c9s replik\u00e1k is legyenek. Csak egy minim\u00e1lis mennyis\u00e9g, amit megengedhet\u00fcnk magunknak.<\/p>\n<p><\/p>\n<p>Ez a tesztk\u00f6rnyezet lehet\u0151v\u00e9 teszi a lek\u00e9rdez\u00e9sek m\u0171k\u00f6d\u00e9s\u00e9nek ellen\u0151rz\u00e9s\u00e9t, \u00e9s hogy ne romlott-e el valami jelent\u0151s. De gyakran olyan probl\u00e9m\u00e1k mer\u00fclnek fel, amelyek teljesen m\u00e1s jelleg\u0171ek, amikor minden m\u0171k\u00f6dik, de vannak bizonyos apr\u00f3 v\u00e1ltoz\u00e1sok a terhel\u00e9sben.<\/p>\n<p><\/p>\n<p>Adok egy p\u00e9ld\u00e1t. \u00daj ClickHouse verzi\u00f3t telep\u00edtett\u00fcnk. Ezt a tesztk\u00f6rnyezetbe helyezt\u00fck, elv\u00e9gezt\u00fck az automatikus teszteket a \u00abYandex.Metrica\u00bb-ban, amelyek \u00f6sszehasonl\u00edtj\u00e1k az adatokat a r\u00e9gi \u00e9s az \u00faj verzi\u00f3 k\u00f6z\u00f6tt, v\u00e9gigvezetve az eg\u00e9sz folyamatot. Term\u00e9szetesen az CI z\u00f6ld tesztjeit is elv\u00e9gezt\u00fck. K\u00fcl\u00f6nben ezt a verzi\u00f3t m\u00e9g csak fel sem aj\u00e1nlottuk volna.<\/p>\n<p><\/p>\n<p>Minden t\u00f6k\u00e9letes. Elkezdj\u00fck bevezetni a termel\u00e9sbe. Kapok egy \u00e9rtes\u00edt\u00e9st, hogy a grafikonokon a terhel\u00e9s t\u00f6bbsz\u00f6r\u00f6s\u00e9re n\u0151tt. Visszavonjuk a verzi\u00f3t. N\u00e9zem a grafikont, \u00e9s l\u00e1tom: a terhel\u00e9s val\u00f3ban t\u00f6bbsz\u00f6r\u00f6s\u00e9re n\u0151tt a bevezet\u00e9s idej\u00e9n, \u00e9s visszaesett, amikor visszavontuk. Azt\u00e1n elkezdt\u00fck visszavonni a verzi\u00f3t. A terhel\u00e9s ekkor is ugyan\u00fagy megn\u0151tt, \u00e9s ugyan\u00fagy visszaesett. Teh\u00e1t a k\u00f6vetkeztet\u00e9s az, hogy a terhel\u00e9s megn\u00f6vekedett a kiad\u00e1s miatt, ami nem meglep\u0151.<\/p>\n<p><\/p>\n<p>Nehezen tudtam meggy\u0151zni a koll\u00e9g\u00e1kat, hogy telep\u00edts\u00e9k az \u00faj verzi\u00f3t. Azt mondom: \u201eMinden rendben, vezess\u00e9tek be. Tarts\u00e1tok a szor\u00edt\u00f3t, minden m\u0171k\u00f6dni fog. Jelenleg a grafikonokon megn\u0151tt a terhel\u00e9s, de minden rendben. Kitart\u00e1s.\u201d V\u00e9g\u00fcl ezt megtett\u00fck, \u00e9s minden \u2014 a verzi\u00f3 bevezet\u00e9sre ker\u00fclt a termel\u00e9sbe. De szinte minden bevezet\u00e9sn\u00e9l hasonl\u00f3 probl\u00e9m\u00e1k mer\u00fclnek fel.<\/p>\n<p><\/p>\n<h2 id=\"anchorkill-queryanchorkill-query-dolzhen-ubivat-zaprosy-no-on-etogo-ne-delaet-pochemu\"><noindex><a rel=\"nofollow\" name=\"kill-query\"><\/a><\/noindex>A Kill query-nek meg kellene \u00f6lnie a lek\u00e9rdez\u00e9seket, de nem teszi. Mi\u00e9rt?<\/h2>\n<p><\/p>\n<blockquote><p>J\u00f6tt hozz\u00e1m egy felhaszn\u00e1l\u00f3, valamilyen elemz\u0151, \u00e9s l\u00e9trehozott egy lek\u00e9rdez\u00e9st, ami meg\u00f6lte a ClickHouse klaszteremet. Valamelyik csom\u00f3pontot vagy az eg\u00e9sz klasztert \u2014 att\u00f3l f\u00fcgg, hogy melyik replik\u00e1ba vagy shardba jutott a lek\u00e9rdez\u00e9s. L\u00e1tom, hogy az \u00f6sszes CPU er\u0151forr\u00e1s ezen a szerveren t\u00falterhelt, minden piros. K\u00f6zben a ClickHouse v\u00e1laszol a lek\u00e9rdez\u00e9sekre. \u00cdrom: \u201eMutasd meg nekem k\u00e9rlek a folyamatlist\u00e1t, melyik lek\u00e9rdez\u00e9s okozta ezt az \u0151r\u00fcletet.\u201d<\/p>\n<p>Megtal\u00e1lom ezt a lek\u00e9rdez\u00e9st, \u00e9s \u00edrom neki a kill parancsot. \u00c9s l\u00e1tom, hogy semmi nem t\u00f6rt\u00e9nik. Az \u00e9n szerverem t\u00falterhelt, a ClickHouse tov\u00e1bbra is ad nekem valamilyen parancsokat, mutatja, hogy a szerver \u00e9l, \u00e9s minden rendben van. De minden felhaszn\u00e1l\u00f3i lek\u00e9rdez\u00e9sn\u00e9l roml\u00e1s k\u00f6vetkezik be, elkezd\u0151dik a megroml\u00e1s a ClickHouse-ba val\u00f3 \u00edr\u00e1skor, \u00e9s a kill parancsom nem m\u0171k\u00f6dik. Mi\u00e9rt? Azt gondoltam, hogy a kill parancsnak meg kell \u00f6lnie a lek\u00e9rdez\u00e9seket, de ez nem t\u00f6rt\u00e9nik meg.<\/p><\/blockquote>\n<p>Most egy el\u00e9g furcsa v\u00e1lasz k\u00f6vetkezik. Az a helyzet, hogy a kill parancs nem \u00f6l meg lek\u00e9rdez\u00e9seket. <\/p>\n<p><\/p>\n<p>A Kill query sets a small flag named \"I want this query to be killed.\" The query checks this flag while processing each data block. If it\u2019s set, the query stops working. So, no one is actually killing the query; it has to check and stop by itself. This should work in all cases when the query is in the process of handling data blocks. It will process the next block of data, check the flag, and stop.<\/p>\n<p><\/p>\n<p>This doesn\u2019t work in cases where the query is blocked on some operation. However, it\u2019s likely not your case, because, according to your words, it consumes a lot of server resources. It\u2019s possible that this doesn\u2019t work in case of external sorting and some other details. But overall, it shouldn\u2019t be this way; it\u2019s a bug. The only thing I can advise is to update ClickHouse.<\/p>\n<p><\/p>\n<h2 id=\"anchorreading-timeanchorkak-rasschitat-vremya-otveta-pri-chitayuschey-nagruzke\"><noindex><a rel=\"nofollow\" name=\"reading-time\"><\/a><\/noindex>Hogyan lehet kisz\u00e1m\u00edtani a v\u00e1laszid\u0151t olvas\u00e1si terhel\u00e9s eset\u00e9n?<\/h2>\n<p><\/p>\n<blockquote><p>There is a table that stores aggregates by item \u2014 various counters. The number of rows is about one hundred million. Can we expect a predictable response time if we push 1K RPS for 1K items? <\/p><\/blockquote>\n<p>According to the context, this concerns read load, because there are no issues for writing \u2014 you can insert even a thousand, even a hundred thousand, or sometimes several million rows. <\/p>\n<p><\/p>\n<p>Read queries can vary greatly. In select 1, ClickHouse can perform around tens of thousands of queries per second, so even queries by a single key will require some resources. Such point queries will be more complex than in key-value databases because each read needs to access a data block by index. Our index doesn\u2019t address each record, but each range. This means you have to read the entire range \u2014 that\u2019s 8192 rows by default. And you\u2019ll need to decompress the compressed data block from 64 KB to 1 MB. Typically, such point queries take several milliseconds. But this is the simplest case.<\/p>\n<p><\/p>\n<p>Pr\u00f3b\u00e1ljunk meg egy egyszer\u0171 aritmetik\u00e1t. Ha n\u00e9h\u00e1ny milliszekundumot megszorzunk ezerrel, n\u00e9h\u00e1ny m\u00e1sodpercet kapunk. Mintha ezer k\u00e9r\u00e9st m\u00e1sodpercenk\u00e9nt nem lehetne kezelni, de val\u00f3j\u00e1ban lehets\u00e9ges, mert t\u00f6bb processzormagunk van. Teh\u00e1t alapvet\u0151en a ClickHouse 1000 RPS-t n\u00e9ha elb\u00edr, de r\u00f6vid k\u00e9rd\u00e9sek eset\u00e9n, azaz k\u00f6zvetlen lek\u00e9rdez\u00e9sekn\u00e9l.<\/p>\n<p><\/p>\n<p>Ha a ClickHouse klasztert a sima lek\u00e9rdez\u00e9sek sz\u00e1m\u00e1hoz kell sk\u00e1l\u00e1zni, akkor a legegyszer\u0171bbet javaslom\u2014n\u00f6velni kell a replik\u00e1k sz\u00e1m\u00e1t, \u00e9s a lek\u00e9rdez\u00e9seket v\u00e9letlenszer\u0171 replik\u00e1ra k\u00fcldeni. Ha egy replik\u00e1n 500 k\u00e9r\u00e9st tud kezelni m\u00e1sodpercenk\u00e9nt, ami teljesen re\u00e1lis, akkor h\u00e1rom replika m\u00e1sf\u00e9l ezer k\u00e9r\u00e9st tud kezelni.<\/p>\n<p><\/p>\n<p>N\u00e9ha persze a ClickHouse-t is be lehet \u00e1ll\u00edtani a lehet\u0151 legnagyobb sz\u00e1m\u00fa k\u00f6zvetlen olvas\u00e1sra. Mi sz\u00fcks\u00e9ges ehhez? El\u0151sz\u00f6r is\u2014cs\u00f6kkenteni kell az index finoms\u00e1g\u00e1t. Ezt nem szabad egys\u00e9gnyire cs\u00f6kkenteni, hanem a sz\u00e1m\u00edt\u00e1sb\u00f3l kiindulva, hogy az indexbe felvett rekordok sz\u00e1ma n\u00e9h\u00e1ny milli\u00f3 vagy t\u00edzmilli\u00f3 legyen a szerveren. Ha a t\u00e1bl\u00e1zatban sz\u00e1zmilli\u00f3 sor tal\u00e1lhat\u00f3, akkor a finoms\u00e1got 64-re lehet be\u00e1ll\u00edtani.<\/p>\n<p><\/p>\n<p>Cs\u00f6kkenteni lehet a t\u00f6m\u00f6r\u00edtett blokk m\u00e9ret\u00e9t. Erre vannak be\u00e1ll\u00edt\u00e1sok <strong>min compress block size<\/strong>, <strong>max compress block size<\/strong>. Ezeket lehet cs\u00f6kkenteni, \u00e1t lehet alak\u00edtani az adatokat, \u00e9s akkor a k\u00f6zvetlen lek\u00e9rdez\u00e9sek gyorsabbak lesznek. De a ClickHouse nem key-value adatb\u00e1zis. Nagysz\u00e1m\u00fa kis lek\u00e9rdez\u00e9s\u2014ez terhel\u00e9si antipatern.<\/p>\n<p><\/p>\n<p><strong>Kirill Shvakov:<\/strong> Adok egy tan\u00e1csot, ha ott norm\u00e1l sz\u00e1ml\u00e1l\u00f3k vannak. Ez egy el\u00e9g standard helyzet, amikor a ClickHouse-ban t\u00e1rolnak egy sz\u00e1ml\u00e1l\u00f3t. Van egy felhaszn\u00e1l\u00f3m, \u0151 egy adott orsz\u00e1gb\u00f3l sz\u00e1rmazik, van egy harmadik mez\u0151je, \u00e9s valamit inkrement\u00e1lisan kell n\u00f6velni. Haszn\u00e1lja a MySQL-t, k\u00e9sz\u00edtse el az egyedi kulcsot\u2014ez a MySQL-ban duplik\u00e1lt kulcs, a PostgreSQL-ben pedig konfliktus\u2014\u00e9s pluszban adj hozz\u00e1. Ez sokkal jobban fog m\u0171k\u00f6dni. <\/p>\n<p><\/p>\n<p>Amikor kevesebb adata van, nincs k\u00fcl\u00f6n\u00f6sebb \u00e9rtelme a ClickHouse haszn\u00e1lat\u00e1nak. Vannak norm\u00e1l adatb\u00e1zisok, \u00e9s azok j\u00f3l megbirk\u00f3znak ezzel. <\/p>\n<p><\/p>\n<h2 id=\"anchorpimp-my-clickhouseanchorchto-podtyunit-v-clickhouse-chtoby-bolshe-dannyh-bylo-vnbspkeshe\"><noindex><a rel=\"nofollow\" name=\"pimp-my-clickhouse\"><\/a><\/noindex>Mit lehet optimaliz\u00e1lni a ClickHouse-ban, hogy t\u00f6bb adat legyen a cache-ben?<\/h2>\n<p><\/p>\n<blockquote><p>K\u00e9pzelj\u00fck el a helyzetet\u2014szervereken 256 GB RAM tal\u00e1lhat\u00f3, a napi rutinban a ClickHouse k\u00f6r\u00fclbel\u00fcl 60\u201380 GB-ot haszn\u00e1l, cs\u00facsid\u0151ben pedig ak\u00e1r 130 GB-ot. Mit lehet aktiv\u00e1lni \u00e9s optimaliz\u00e1lni, hogy t\u00f6bb adat legyen a cache-ben, \u00edgy kevesebb lemezm\u0171veletre legyen sz\u00fcks\u00e9g?<\/p><\/blockquote>\n<p>\u00c1ltal\u00e1ban a rendszer oper\u00e1ci\u00f3s rendszer\u00e9nek page cache-je j\u00f3l megbirk\u00f3zik ezzel a feladattal. Ha egyszer\u0171en megnyitja a toplist\u00e1t, \u00e9s megn\u00e9zi, hogy a cached vagy free szerepel-e ott \u2014 ott is fel van t\u00fcntetve, mennyi van cache-elve \u2014 \u00e9szreveheti, hogy az \u00f6sszes szabad mem\u00f3ria a cache-re lett felhaszn\u00e1lva. Ezek az adatok olvas\u00e1skor nem lemezr\u0151l, hanem a RAM-b\u00f3l ker\u00fclnek beolvas\u00e1sra. Ezen fel\u00fcl elmondhatom, hogy a cache hat\u00e9konyan m\u0171k\u00f6dik, mert t\u00e9nyleg t\u00f6m\u00f6r\u00edtett adatokat cache-el.<\/p>\n<p><\/p>\n<p>Mindazon\u00e1ltal, ha szeretn\u00e9 m\u00e9g jobban felgyors\u00edtani egyes egyszer\u0171 lek\u00e9rdez\u00e9seket, lehet\u0151s\u00e9g van a ClickHouse-on bel\u00fcl a t\u00f6m\u00f6r\u00edtetlen adatok cache-el\u00e9s\u00e9nek enged\u00e9lyez\u00e9s\u00e9re. Ez a k\u00f6vetkez\u0151k\u00e9ppen nevezz\u00fck <strong>uncompressed cache<\/strong>. A config.xml konfigur\u00e1ci\u00f3s f\u00e1jlban a sz\u00fcks\u00e9ges uncompressed cache size \u00e9rt\u00e9kre \u00e1ll\u00edtja be \u2014 javaslom, hogy ne legyen t\u00f6bb mint a szabad RAM fele, mert a t\u00f6bbi a page cache-re megy. <\/p>\n<p><\/p>\n<p>Ezen k\u00edv\u00fcl k\u00e9t k\u00e9r\u00e9s szint\u0171 be\u00e1ll\u00edt\u00e1s van. Az els\u0151 be\u00e1ll\u00edt\u00e1s \u2013 <strong>use uncompressed cache<\/strong> \u2014 aktiv\u00e1lja annak haszn\u00e1lat\u00e1t. Aj\u00e1nlott minden lek\u00e9rdez\u00e9shez enged\u00e9lyezni, kiv\u00e9ve a neh\u00e9z lek\u00e9rdez\u00e9seket, amelyek minden adatot beolvashatnak \u00e9s ezzel a cache elt\u00fcntethet\u0151. A m\u00e1sodik be\u00e1ll\u00edt\u00e1s valami olyasmi, mint a cache-hez haszn\u00e1lt maxim\u00e1lis sorok sz\u00e1ma. Automatikusan korl\u00e1tozza a nagy lek\u00e9rdez\u00e9seket, hogy azok ne \u00e9rj\u00e9k el a cache-t.<\/p>\n<p><\/p>\n<h2 id=\"anchorstorage-configurationanchorkak-mozhno-nastroit-storage_configuration-dlya-hraneniya-v-operativke\"><noindex><a rel=\"nofollow\" name=\"storage-configuration\"><\/a><\/noindex>Hogyan lehet be\u00e1ll\u00edtani a storage_configuration-t a RAM-ban val\u00f3 t\u00e1rol\u00e1shoz?<\/h2>\n<p><\/p>\n<blockquote><p>Az \u00faj ClickHouse dokument\u00e1ci\u00f3ban tal\u00e1ltam egy r\u00e9szt, amely <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.tech\/docs\/en\/single\/#table_engine-mergetree-multiple-volumes\">data storage<\/a><\/noindex>. A le\u00edr\u00e1sban van egy p\u00e9lda gyors SSD-vel. <\/p>\n<p>\u00e9rdekes, hogyan lehet konfigur\u00e1lni ugyanezt a volume hot memory-hoz. \u00c9s m\u00e9g egy k\u00e9rd\u00e9s. Hogyan m\u0171k\u00f6dik a select ezzel az adatstrukt\u00far\u00e1val, beolvassa-e az \u00f6sszes k\u00e9szletet, vagy csak azt, ami a lemezen van, \u00e9s a t\u00e1rolt adatok t\u00f6m\u00f6r\u00edtve vannak-e a mem\u00f3ri\u00e1ban? Hogyan m\u0171k\u00f6dik a prewhere szakasz ezzel az adatszervez\u00e9ssel?<\/p><\/blockquote>\n<p>Ez a be\u00e1ll\u00edt\u00e1s befoly\u00e1solja az adategys\u00e9gek t\u00e1rol\u00e1s\u00e1t, \u00e9s a form\u00e1tumuk nem v\u00e1ltozik.<br \/>\nN\u00e9zz\u00fck meg r\u00e9szletesebben. <\/p>\n<p><\/p>\n<p>Be lehet \u00e1ll\u00edtani az adatok t\u00e1rol\u00e1s\u00e1t a RAM-ban. Minden, ami a lemezhez van konfigur\u00e1lva \u2014 az az \u00fatvonal. L\u00e9trehoz egy tmpfs part\u00edci\u00f3t, amely egy megadott \u00fatvonalhoz van csatolva a f\u00e1jlrendszerben. Ezt az \u00fatvonalat adja meg az adatok t\u00e1rol\u00e1s\u00e1ra a legforr\u00f3bb part\u00edci\u00f3 sz\u00e1m\u00e1ra, ahova az adatdarabok eljutnak \u00e9s ahol \u00edr\u00f3dnak, minden rendben van. <\/p>\n<p><\/p>\n<p>De nem aj\u00e1nlom ezt a megold\u00e1st alacsony megb\u00edzhat\u00f3s\u00e1ga miatt, b\u00e1r ha legal\u00e1bb h\u00e1rom replik\u00e1ja van k\u00fcl\u00f6nb\u00f6z\u0151 adatk\u00f6zpontokban, akkor ez m\u0171k\u00f6dhet. Ha valami t\u00f6rt\u00e9nik, az adatok vissza\u00e1ll\u00edthat\u00f3k. K\u00e9pzelj\u00fck el, hogy a szerver hirtelen kikapcsol, majd \u00fajra bekapcsolj\u00e1k. A r\u00e9sz \u00fajra csatlakozik, de \u00fcres a tartalom. A ClickHouse szerver indul\u00e1skor \u00e9szleli, hogy ezek a darabok hi\u00e1nyoznak, b\u00e1r a ZooKeeper metadatok alapj\u00e1n ott kellene lenni\u00fck. Megn\u00e9zi, hogy mely replik\u00e1kon \u00e9rhet\u0151k el, lek\u00e9ri \u0151ket, \u00e9s let\u00f6lti. \u00cdgy az adatok vissza\u00e1ll\u00edt\u00e1sra ker\u00fclnek. <\/p>\n<p><\/p>\n<p>Ebben a tekintetben az adatok t\u00e1rol\u00e1sa a mem\u00f3ri\u00e1ban alapvet\u0151en nem k\u00fcl\u00f6nb\u00f6zik a lemezen t\u00f6rt\u00e9n\u0151 t\u00e1rol\u00e1st\u00f3l, mert amikor az adatokat a lemezre \u00edrj\u00e1k, azok el\u0151sz\u00f6r a page cache-be ker\u00fclnek, \u00e9s fizikailag k\u00e9sleltetve \u00edr\u00f3dnak. Ez a f\u00e1jlrendszer csatol\u00e1si m\u00f3dj\u00e1t\u00f3l f\u00fcgg. De az\u00e9rt mondom, hogy a ClickHouse nem v\u00e9gez fsync m\u0171veletet insert eset\u00e9n.<\/p>\n<p><\/p>\n<p>Az adatok a mem\u00f3ri\u00e1ban pontosan ugyanabban a form\u00e1tumban t\u00e1rol\u00f3dnak, mint a lemezen. A select lek\u00e9rdez\u00e9s pontosan \u00fagy v\u00e1lasztja ki a sz\u00fcks\u00e9ges darabokat, mint a mem\u00f3ri\u00e1ban, kiv\u00e1lasztja a sz\u00fcks\u00e9ges adatintervallumokat a darabokon bel\u00fcl, \u00e9s olvassa azokat. A prewhere teljesen ugyan\u00fagy m\u0171k\u00f6dik, f\u00fcggetlen\u00fcl att\u00f3l, hogy az adatok a mem\u00f3ri\u00e1ban vagy a lemezen voltak.<\/p>\n<p><\/p>\n<h2 id=\"anchorlow-cardinalityanchordo-kakogo-kolichestva-unikalnyh-znacheniy-effektiven-low-cardinality\"><noindex><a rel=\"nofollow\" name=\"low-cardinality\"><\/a><\/noindex>Meddig hat\u00e9kony a Low Cardinality egyedi \u00e9rt\u00e9kek sz\u00e1m\u00e1nak tekintet\u00e9ben?<\/h2>\n<p><\/p>\n<p>A Low Cardinality okosan van megval\u00f3s\u00edtva. Adat-sz\u00f3t\u00e1rakat k\u00e9sz\u00edt, de ezek lok\u00e1lisak. El\u0151sz\u00f6r is, minden darabnak saj\u00e1t sz\u00f3t\u00e1ra van, m\u00e1sodszor pedig ugyanazon darabon bel\u00fcl is elt\u00e9r\u0151ek lehetnek minden tartom\u00e1ny eset\u00e9ben. Amikor az egyedi \u00e9rt\u00e9kek sz\u00e1ma el\u00e9ri a k\u00fcsz\u00f6b\u00e9rt\u00e9ket \u2014 \u00fagy hiszem, ez egymilli\u00f3 \u2014, akkor a sz\u00f3t\u00e1r egyszer\u0171en f\u00e9lre ker\u00fcl, \u00e9s \u00faj k\u00e9sz\u00fcl.<\/p>\n<p><\/p>\n<p>A v\u00e1lasz \u00f6sszess\u00e9g\u00e9ben: minden lok\u00e1lis tartom\u00e1ny sz\u00e1m\u00e1ra \u2014 mondjuk, minden nap \u2014 k\u00f6r\u00fclbel\u00fcl egymilli\u00f3 egyedi \u00e9rt\u00e9kig a Low Cardinality hat\u00e9kony. Ezt k\u00f6vet\u0151en csak fallback lesz, amely sok k\u00fcl\u00f6nb\u00f6z\u0151 sz\u00f3t\u00e1rat haszn\u00e1l majd, nem csup\u00e1n egyet. Hasonl\u00f3an fog m\u0171k\u00f6dni, mint a szok\u00e1sos string t\u00edpus\u00fa oszlop, tal\u00e1n kicsit kev\u00e9sb\u00e9 hat\u00e9konyan, de komoly teljes\u00edtm\u00e9nyroml\u00e1s nem fog bek\u00f6vetkezni. <\/p>\n<p><\/p>\n<h2 id=\"anchorfulltext-searchanchorkakie-luchshie-praktiki-ponbsppolnotekstovomu-poisku-ponbsptablice-snbsppyatyu-milliardami-strok\"><noindex><a rel=\"nofollow\" name=\"fulltext-search\"><\/a><\/noindex>Mik a legjobb gyakorlatok az \u00f6tmilli\u00e1rd soros t\u00e1bl\u00e1zat teljes sz\u00f6veg\u0171 keres\u00e9s\u00e9hez?<\/h2>\n<p><\/p>\n<p>T\u00f6bbf\u00e9le v\u00e1laszlehet\u0151s\u00e9g van. Az els\u0151, hogy a ClickHouse nem a teljes sz\u00f6veges keres\u00e9sre tervezett rendszer. Ehhez speci\u00e1lis rendszerek l\u00e9teznek p\u00e9ld\u00e1ul, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.elastic.co\/enterprise-search\">Elasticsearch<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"http:\/\/sphinxsearch.com\/\">Sphinx<\/a><\/noindex>. Mindazon\u00e1ltal egyre gyakrabban tal\u00e1lkozom emberekkel, akik azt mondj\u00e1k, hogy az Elasticsearch-r\u0151l a ClickHouse-ra v\u00e1ltanak.<\/p>\n<p><\/p>\n<p>Mi\u00e9rt t\u00f6rt\u00e9nik ez? Azzal indokolj\u00e1k, hogy az Elasticsearch bizonyos mennyis\u00e9gek eset\u00e9n k\u00e9ptelenn\u00e9 v\u00e1lik megbirk\u00f3zni a terhel\u00e9ssel, kezdve az indexek \u00f6ssze\u00e1ll\u00edt\u00e1s\u00e1val. Az indexek t\u00fal m\u00e9retesekk\u00e9 v\u00e1lnak, \u00e9s ha egyszer\u0171en \u00e1tvissz\u00fck az adatokat a ClickHouse-ba, kider\u00fcl, hogy ezek t\u00e1rol\u00e1sa sokkal hat\u00e9konyabb a t\u00e9rfogat szempontj\u00e1b\u00f3l. Ezenk\u00edv\u00fcl a keres\u00e9si lek\u00e9rdez\u00e9sek gyakran nem arr\u00f3l sz\u00f3ltak, hogy a teljes adathalmazon bel\u00fcl keress\u00fcnk valamilyen kifejez\u00e9st morfol\u00f3giai szempontb\u00f3l, hanem teljesen m\u00e1sr\u00f3l. P\u00e9ld\u00e1ul, hogy az utols\u00f3 n\u00e9h\u00e1ny \u00f3r\u00e1ban a napl\u00f3kb\u00f3l keress\u00fcnk valamilyen b\u00e1jtut\u00f3sorozatot.<\/p>\n<p><\/p>\n<p>Ebben az esetben a ClickHouse-ban l\u00e9trehoz egy indexet, amelynek els\u0151 mez\u0151je az id\u0151pont. A legnagyobb adatki\u00e1gaz\u00e1s \u00e9ppen a d\u00e1tumtartom\u00e1nyra vonatkozik. A kiv\u00e1lasztott d\u00e1tumtartom\u00e1nyon bel\u00fcl \u00e1ltal\u00e1ban m\u00e1r lehet\u0151s\u00e9g van teljes sz\u00f6veges keres\u00e9sre, ak\u00e1r bruteforce m\u00f3dszerrel is, a like seg\u00edts\u00e9g\u00e9vel. A ClickHouse like oper\u00e1tora a leghat\u00e9konyabb like oper\u00e1tor, amit tal\u00e1lhatsz. Ha tal\u00e1lsz jobbat, k\u00e9rlek, sz\u00f3lj nekem. <\/p>\n<p><\/p>\n<p>\u00c1m a like m\u00e9g mindig full scan. A full scan nemcsak CPU szempontj\u00e1b\u00f3l lehet lass\u00fa, hanem disk szempontj\u00e1b\u00f3l is. Ha egy terab\u00e1jt adatod van naponta, \u00e9s keresel valamilyen sz\u00f3t, akkor \u00e1t kell n\u00e9zned egy terab\u00e1jtot. Val\u00f3sz\u00edn\u0171leg ezek norm\u00e1l merevlemezek, \u00e9s v\u00e9gs\u0151 soron annyira le lesznek terhelve, hogy SSH-n nem tudsz bel\u00e9pni erre a szerverre.<\/p>\n<p><\/p>\n<p>Ebben az esetben k\u00e9sz vagyok javasolni egy \u00fajabb kis tr\u00fckk\u00f6t. Ez az experiment\u00e1lis kateg\u00f3ri\u00e1ba tartozik \u2013 lehet, hogy m\u0171k\u00f6dik, lehet, hogy nem. A ClickHouse-ban vannak teljes sz\u00f6veges indexek trigrams Bloom sz\u0171r\u0151k form\u00e1j\u00e1ban. Az Arenadata c\u00e9g koll\u00e9g\u00e1i m\u00e1r kipr\u00f3b\u00e1lt\u00e1k ezeket az indexeket, \u00e9s gyakran \u00fagy m\u0171k\u00f6dnek, ahogyan azt sz\u00e1nt\u00e1k.<\/p>\n<p><\/p>\n<p>Ahhoz, hogy helyesen haszn\u00e1lhasd \u0151ket, j\u00f3l kell \u00e9rtened, hogyan m\u0171k\u00f6dnek: mit jelent a trigram Bloom sz\u0171r\u0151 \u00e9s hogyan v\u00e1lasszak megfelel\u0151 m\u00e9retet. Azt tudom mondani, hogy seg\u00edteni fognak olyan keres\u00e9sekhez, amelyek valamilyen ritka kifejez\u00e9seket, alkot\u00f3r\u00e9szeket c\u00e9loznak meg, amelyek ritk\u00e1n fordulnak el\u0151 az adatokban. Ebben az esetben az indexeken bel\u00fcl al-tartom\u00e1nyok lesznek kiv\u00e1lasztva, \u00e9s kevesebb adatot olvasnak be.<\/p>\n<p><\/p>\n<p>Nemr\u00e9giben a ClickHouse-ban m\u00e9g fejlettebb funkci\u00f3k jelentek meg a teljes sz\u00f6veg keres\u00e9shez. El\u0151sz\u00f6r is, lehet\u0151s\u00e9g van t\u00f6bb r\u00e9szstring egyidej\u0171 keres\u00e9s\u00e9re egy \u00e1tvitel sor\u00e1n, bele\u00e9rtve a kis- \u00e9s nagybet\u0171k figyelembev\u00e9tel\u00e9t, annak figyelmen k\u00edv\u00fcl hagy\u00e1s\u00e1t, UTF-8 t\u00e1mogat\u00e1ssal vagy csak ASCII karakterek haszn\u00e1lat\u00e1val. V\u00e1lassza a legmegfelel\u0151bb, amelyre sz\u00fcks\u00e9ge van. <\/p>\n<p><\/p>\n<p>Mostant\u00f3l lehets\u00e9ges t\u00f6bb regul\u00e1ris kifejez\u00e9s keres\u00e9se egy \u00e1tvitel sor\u00e1n. Nincs sz\u00fcks\u00e9g arra, hogy X like egy r\u00e9szstring vagy X like egy m\u00e1sik r\u00e9szstring-t \u00edrjon. Csak \u00edrja be azonnal, \u00e9s minden a lehet\u0151 leghat\u00e9konyabban val\u00f3sul meg.<\/p>\n<p><\/p>\n<p>Harmadszor, most m\u00e1r l\u00e9tezik a regul\u00e1ris kifejez\u00e9sek k\u00f6zel\u00edt\u0151 keres\u00e9se \u00e9s a r\u00e9szstringek k\u00f6zel\u00edt\u0151 keres\u00e9se. Ha valaki elg\u00e9pel egy sz\u00f3t, az a legnagyobb megfelel\u00e9s alapj\u00e1n lesz keresve.<\/p>\n<p><\/p>\n<h2 id=\"anchorhello-and-welcomeanchorkak-luchshe-organizovat-dostup-vnbspclickhouse-dlyanbspbolshogo-kolichestva-polzovateley\"><noindex><a rel=\"nofollow\" name=\"hello-and-welcome\"><\/a><\/noindex>Hogyan lehet a ClickHouse hozz\u00e1f\u00e9r\u00e9st szervezni nagy sz\u00e1m\u00fa felhaszn\u00e1l\u00f3 sz\u00e1m\u00e1ra?<\/h2>\n<p><\/p>\n<blockquote><p>Mes\u00e9ljen arr\u00f3l, hogyan lehet a legjobban megszervezni a hozz\u00e1f\u00e9r\u00e9st sok fogyaszt\u00f3 \u00e9s elemz\u0151 sz\u00e1m\u00e1ra. Hogyan lehet sorba \u00e1ll\u00edtani, prioriz\u00e1lni a max p\u00e1rhuzamos lek\u00e9rdez\u00e9seket, \u00e9s milyen eszk\u00f6z\u00f6ket haszn\u00e1ljunk?<\/p><\/blockquote>\n<p>Ha a klaszter el\u00e9g nagy, j\u00f3 \u00f6tlet lehet m\u00e9g k\u00e9t szerver ind\u00edt\u00e1sa, amelyek az elemz\u0151k bel\u00e9p\u00e9si pontj\u00e1v\u00e1 v\u00e1lnak. Ez azt jelenti, hogy nem engedj\u00fck az elemz\u0151ket a klaszter konkr\u00e9t shardjaira, hanem egyszer\u0171en l\u00e9trehozunk k\u00e9t \u00fcres szervert, adat n\u00e9lk\u00fcl, \u00e9s ezeken be\u00e1ll\u00edtjuk a hozz\u00e1f\u00e9r\u00e9si jogokat. Ezen k\u00edv\u00fcl a felhaszn\u00e1l\u00f3i be\u00e1ll\u00edt\u00e1sok a megosztott lek\u00e9rdez\u00e9sek eset\u00e9n \u00e1tker\u00fclnek a t\u00e1voli szerverekre. Teh\u00e1t mindent ezen a k\u00e9t szerveren \u00e1ll\u00edt be, \u00e9s a be\u00e1ll\u00edt\u00e1sok hat\u00e1ssal vannak az eg\u00e9sz klaszterre.<\/p>\n<p><\/p>\n<p>Alapvet\u0151en ezek a szerverek adat n\u00e9lk\u00fcliek, de a RAM m\u00e9rete nagyon fontos a lek\u00e9rdez\u00e9sek teljes\u00edt\u00e9s\u00e9hez. A lemez is haszn\u00e1lhat\u00f3 ideiglenes adatok sz\u00e1m\u00e1ra, ha k\u00fcls\u0151 aggreg\u00e1ci\u00f3 vagy k\u00fcls\u0151 rendez\u00e9s van enged\u00e9lyezve.<\/p>\n<p><\/p>\n<p>Fontos megn\u00e9zni a be\u00e1ll\u00edt\u00e1sokat, amelyek kapcsol\u00f3dnak az \u00f6sszes lehets\u00e9ges korl\u00e1toz\u00e1shoz. Ha most bel\u00e9pek a 'Yandex.Metrics' klaszterbe elemz\u0151k\u00e9nt, \u00e9s lek\u00e9rdez\u00e9st adok meg, <strong>select count from hits<\/strong>, akkor azonnal kapok egy kiv\u00e9telt, miszerint a lek\u00e9rdez\u00e9st nem tudom v\u00e9grehajtani. A maxim\u00e1lis sz\u00e1m\u00fa sor, amelyet \u00e1tkutatok, sz\u00e1z milli\u00e1rd, m\u00edg az eg\u00e9sz klaszterben \u00f6sszesen \u00f6tven trilli\u00f3 van egy t\u00e1bl\u00e1zatban. Ez az els\u0151 korl\u00e1toz\u00e1s. <\/p>\n<p><\/p>\n<p>Tegy\u00fck fel, hogy elt\u00e1vol\u00edtom a sorok sz\u00e1m\u00e1nak korl\u00e1toz\u00e1s\u00e1t, \u00e9s a lek\u00e9rdez\u00e9st \u00fajra v\u00e9grehajtom. Akkor a k\u00f6vetkez\u0151 kiv\u00e9telt fogom l\u00e1tni \u2014 a be\u00e1ll\u00edt\u00e1s akt\u00edv. <strong>force index by date<\/strong>Nem tudom v\u00e9grehajtani a k\u00e9r\u00e9st, ha nem adtam meg a d\u00e1tumtartom\u00e1nyt. Ne sz\u00e1m\u00edtsunk arra, hogy az elemz\u0151k ezt manu\u00e1lisan fogj\u00e1k megadni. Egy tipikus eset, amikor a d\u00e1tumtartom\u00e1nyt \u00fagy \u00edrj\u00e1k, hogy az esem\u00e9ny d\u00e1tuma a h\u00e9t k\u00f6z\u00f6tt van. Azt\u00e1n egyszer\u0171en nem ott \u00edrt\u00e1k be a z\u00e1r\u00f3jelet, \u00e9s az and helyett or lett \u2014 or URL egyez\u00e9s. Ha nincs korl\u00e1toz\u00e1s, akkor v\u00e9gig fogja n\u00e9zni az URL oszlopot, \u00e9s egyszer\u0171en rengeteg er\u0151forr\u00e1st fog elpazarolni.<\/p>\n<p><\/p>\n<p>A ClickHouse-ban k\u00e9t priorit\u00e1sbe\u00e1ll\u00edt\u00e1s is l\u00e9tezik. Sajnos, ezek nagyon primit\u00edvek. Az egyik egyszer\u0171en csak <strong>priority<\/strong>. Ha a priority \u2260 0, \u00e9s v\u00e9grehajt\u00e1s alatt \u00e1llnak olyan lek\u00e9rdez\u00e9sek, amelyeknek valamilyen priorit\u00e1suk van, de ek\u00f6zben v\u00e9grehajt\u00f3dik egy lek\u00e9rdez\u00e9s, amelynek a priorit\u00e1sa alacsonyabb, azaz magasabb priorit\u00e1s\u00fa, akkor a magasabb priorit\u00e1s\u00fa lek\u00e9rdez\u00e9s egyszer\u0171en fel lesz f\u00fcggesztve, \u00e9s egy\u00e1ltal\u00e1n nem fog m\u0171k\u00f6dni ezen id\u0151 alatt.<\/p>\n<p><\/p>\n<p>Ez egy nagyon durva be\u00e1ll\u00edt\u00e1s, \u00e9s nem alkalmas olyan esetekre, amikor a klaszter folyamatos terhel\u00e9ssel rendelkezik. De ha r\u00f6vid, impulz\u00edv lek\u00e9rdez\u00e9sek vannak, amelyek fontosak, \u00e9s a klaszter t\u00f6bbs\u00e9ge egy\u00e9bk\u00e9nt t\u00e9tlen, akkor ez a be\u00e1ll\u00edt\u00e1s megfelel\u0151 lehet.<\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 priorit\u00e1si be\u00e1ll\u00edt\u00e1s <strong>OS sz\u00e1l priorit\u00e1s<\/strong>. Ez egyszer\u0171en be\u00e1ll\u00edtja az \u00f6sszes lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1si sz\u00e1l sz\u00e1m\u00e1ra a nice \u00e9rt\u00e9ket a Linux \u00fctemez\u0151j\u00e9nek. Nem m\u0171k\u00f6dik t\u00fal j\u00f3l, de m\u00e9gis m\u0171k\u00f6dik. Ha a nice legkisebb \u00e9rt\u00e9ke van be\u00e1ll\u00edtva \u2014 ami a legnagyobb nagys\u00e1g\u00fa \u00e9rt\u00e9k, \u00e9s teh\u00e1t a legalacsonyabb priorit\u00e1s \u2014 \u00e9s a magas priorit\u00e1s\u00fa lek\u00e9rdez\u00e9seknek -19-et \u00e1ll\u00edtunk be, akkor a CPU k\u00f6r\u00fclbel\u00fcl n\u00e9gyszer kevesebb alacsony priorit\u00e1s\u00fa lek\u00e9rdez\u00e9st fog fogyasztani, mint magas priorit\u00e1s\u00fat. <\/p>\n<p><\/p>\n<p>Be kell \u00e1ll\u00edtani a lek\u00e9rdez\u00e9sek maxim\u00e1lis fut\u00e1si idej\u00e9t \u2014 mondjuk, \u00f6t percet. A lek\u00e9rdez\u00e9s minim\u00e1lis v\u00e9grehajt\u00e1si sebess\u00e9ge \u2014 ez a legmen\u0151bb. Ez a be\u00e1ll\u00edt\u00e1s m\u00e1r r\u00e9gen l\u00e9tezik, \u00e9s arra van sz\u00fcks\u00e9g, hogy ne csak \u00e1ll\u00edtsuk azt, hogy a ClickHouse nem lass\u00edt, hanem hogy ezt k\u00e9nyszer\u00edts\u00fck.<\/p>\n<p><\/p>\n<p>K\u00e9pzelj\u00fck el, hogy be\u00e1ll\u00edtja: ha egy lek\u00e9rdez\u00e9s m\u00e1sodpercenk\u00e9nt kevesebb mint egymilli\u00f3 sort dolgoz fel \u2014 ezt nem szabad \u00edgy csin\u00e1lni. Ez megsz\u00e9gyen\u00edti a j\u00f3 nev\u00fcnket, a j\u00f3 adatb\u00e1zisunkat. Csak egyszer\u0171en tiltsuk meg ezt. Val\u00f3j\u00e1ban k\u00e9t be\u00e1ll\u00edt\u00e1s l\u00e9tezik. Az egyik neve <strong>min.execution.speed<\/strong> \u2014 m\u00e1sodpercenk\u00e9nt egy sor, a m\u00e1sik a minim\u00e1lis v\u00e9grehajt\u00e1si sebess\u00e9g ellen\u0151rz\u00e9se el\u0151tti id\u0151t\u00fall\u00e9p\u00e9s \u2014 alap\u00e9rtelmez\u00e9s szerint tizen\u00f6t m\u00e1sodperc. Teh\u00e1t tizen\u00f6t m\u00e1sodperc elfogadhat\u00f3, de ha lass\u00fa, akkor egyszer\u0171en dobj egy kiv\u00e9telt \u2014 szak\u00edtsd meg a lek\u00e9rdez\u00e9st.<\/p>\n<p><\/p>\n<p>Tov\u00e1bb\u00e1 be kell \u00e1ll\u00edtanunk a kv\u00f3t\u00e1kat. A ClickHouse be\u00e9p\u00edtett lehet\u0151s\u00e9get biztos\u00edt a kv\u00f3t\u00e1kra, amelyek az er\u0151forr\u00e1spazarl\u00e1st sz\u00e1molj\u00e1k. De sajnos nem a fizikai er\u0151forr\u00e1sokat, mint a CPU \u00e9s a lemezek, hanem a logikaiakat \u2014 az \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, sorok \u00e9s olvasott b\u00e1jtok sz\u00e1m\u00e1t. P\u00e9ld\u00e1ul be\u00e1ll\u00edthatunk maximum sz\u00e1z lek\u00e9rdez\u00e9st \u00f6t perc alatt \u00e9s ezer lek\u00e9rdez\u00e9st \u00f3r\u00e1nk\u00e9nt.<\/p>\n<p><\/p>\n<p>Mi\u00e9rt fontos ez? Mert az elemz\u00e9sek egy r\u00e9sz\u00e9t k\u00e9zzel v\u00e9gzik majd a ClickHouse kliensb\u0151l. \u00c9s minden rendben lesz. De ha a c\u00e9gedben fejlett elemz\u0151k vannak, \u00edrni fognak egy szkriptet, \u00e9s a szkriptben lehet hiba. Ez a hiba pedig ahhoz vezet, hogy a lek\u00e9rdez\u00e9s v\u00e9gtelen ciklusban fut le. Att\u00f3l kell megv\u00e9deni magunkat.<\/p>\n<p><\/p>\n<h2 id=\"anchorsmorgasbordanchormozhno-li-otdat-rezultaty-odnogo-zaprosa-desyati-klientam\"><noindex><a rel=\"nofollow\" name=\"smorgasbord\"><\/a><\/noindex>Lehet-e egy k\u00e9rd\u00e9s eredm\u00e9nyeit t\u00edz kliensnek \u00e1tadni?<\/h2>\n<p><\/p>\n<blockquote><p>T\u00f6bb felhaszn\u00e1l\u00f3nk van, akik szeretnek hatalmas lek\u00e9rdez\u00e9seket beny\u00fajtani egyszerre. A lek\u00e9rdez\u00e9s nagy, alapvet\u0151en gyorsan fut, de mivel sok ilyen lek\u00e9rdez\u00e9s zajlik egyszerre, ez nagyon f\u00e1jdalmasan megnehez\u00edti a dolgunkat. Van lehet\u0151s\u00e9g arra, hogy ugyanazt a lek\u00e9rdez\u00e9st, amely t\u00edzszer \u00e9rkezik, egyszer futtassuk le, \u00e9s az eredm\u00e9ny\u00e9t t\u00edz kliensnek visszaadjuk?<\/p><\/blockquote>\n<p>A probl\u00e9ma az, hogy nincs cache vagy k\u00f6ztes adatok cache-el\u00e9se. Van a rendszer oldal cache-e, amely megakad\u00e1lyozza, hogy az adatokat \u00fajra le kelljen olvasni a lemezr\u0151l, de sajnos az adatok \u00edgy is ki fognak bontakozni, deszerializ\u00e1l\u00f3dni \u00e9s \u00fajra feldolgoz\u00e1sra ker\u00fclni. <\/p>\n<p><\/p>\n<p>Valahogyan szeretn\u00e9nk elker\u00fclni ezt, ak\u00e1r k\u00f6ztes adatok cache-el\u00e9s\u00e9vel, ak\u00e1r hasonl\u00f3 lek\u00e9rdez\u00e9sek sorba \u00e1ll\u00edt\u00e1s\u00e1val \u00e9s az eredm\u00e9nyek cache-el\u00e9s\u00e9vel. Jelenleg van egy pull request a fejleszt\u00e9s alatt, amely a lek\u00e9rdez\u00e9sek cache-el\u00e9s\u00e9t vezeti be, de csak az in \u00e9s join szekci\u00f3k al\u00e1 lek\u00e9rdez\u00e9sek eset\u00e9n \u2014 ez teh\u00e1t nem teljes megold\u00e1s.<\/p>\n<p><\/p>\n<p>Ennek ellen\u00e9re nek\u00fcnk is van ilyen helyzet\u00fcnk. K\u00fcl\u00f6n\u00f6sen kanonikus p\u00e9lda a lapoz\u00e1si lek\u00e9rdez\u00e9sek. Van egy jelent\u00e9s, ami t\u00f6bb oldalt tartalmaz, \u00e9s j\u00f6n a limit 10 k\u00e9rd\u00e9s. Azt\u00e1n ugyanez, de limit 10,10. Majd a k\u00f6vetkez\u0151 oldal. \u00c9s k\u00e9rdezz\u00fck, mi\u00e9rt sz\u00e1moljuk ezt minden alkalommal? Jelenleg nincs megold\u00e1s, \u00e9s ezt nem lehet elker\u00fclni.<\/p>\n<p><\/p>\n<p>Van egy alternat\u00edv megold\u00e1s, amely a ClickHouse mellett fut\u00f3 oldals\u00e1vos megold\u00e1sk\u00e9nt telep\u00edthet\u0151 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/chproxy\">ClickHouse Proxy<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Kirill Shvakov:<\/strong> A ClickHouse Proxy be\u00e9p\u00edtett sebess\u00e9gkorl\u00e1toz\u00f3val \u00e9s be\u00e9p\u00edtett lek\u00e9rdez\u00e9si eredm\u00e9ny cache-el rendelkezik. Rengeteg be\u00e1ll\u00edt\u00e1st k\u00e9sz\u00edtettek, mert hasonl\u00f3 feladatot kellett megoldani. A Proxy lehet\u0151v\u00e9 teszi a lek\u00e9rdez\u00e9sek korl\u00e1toz\u00e1s\u00e1t, sorba \u00e1ll\u00edtva \u0151ket, \u00e9s be\u00e1ll\u00edtva, mennyi ideig \u00e9l a cache. Ha a lek\u00e9rdez\u00e9sek val\u00f3ban azonosak voltak, a Proxy t\u00f6bbsz\u00f6r visszaadja \u0151ket, de a ClickHouse-hoz csak egyszer megy el.<\/p>\n<p><\/p>\n<p>Az Nginxnek is van cache-e az ingyenes verzi\u00f3ban, \u00e9s ez is m\u0171k\u00f6dni fog. Az Nginxn\u00e9l van olyan be\u00e1ll\u00edt\u00e1s is, hogy ha a lek\u00e9rdez\u00e9sek egyszerre \u00e9rkeznek, lelass\u00edtja a t\u00f6bbit, am\u00edg az egyiket v\u00e9gre nem hajtj\u00e1k. De a ClickHouse Proxy be\u00e1ll\u00edt\u00e1sa sokkal jobb. Kifejezetten a ClickHouse-ra k\u00e9sz\u00fclt, ezekre a lek\u00e9rdez\u00e9sekre, ez\u00e9rt jobban illik. R\u00e1ad\u00e1sul egyszer\u0171en telep\u00edthet\u0151. <\/p>\n<p><\/p>\n<h2 id=\"anchorasynchronousanchorkak-byt-snbspasinhronnymi-operaciyami-i-materializovannymi-predstavleniyami\"><noindex><a rel=\"nofollow\" name=\"asynchronous\"><\/a><\/noindex>Mi a teend\u0151 az aszinkron m\u0171veletekkel \u00e9s a materializ\u00e1lt n\u00e9zetekkel?<\/h2>\n<p><\/p>\n<blockquote><p>Egy probl\u00e9ma van, hogy a helyettes\u00edt\u0151 motorral kapcsolatos m\u0171veletek aszinkronok \u2014 el\u0151sz\u00f6r az adatokat r\u00f6gz\u00edtik, majd azok \u00f6sszevon\u00e1sa t\u00f6rt\u00e9nik. Ha egy anyagt\u00e1bl\u00e1zat van a t\u00e1bl\u00e1zat alatt valamilyen aggreg\u00e1tummal, akkor a m\u00e1solatok r\u00f6gz\u00edt\u00e9sre ker\u00fclnek. Ha nincs bonyolult logika, akkor az adatok meg lesznek duplik\u00e1lva. Mit lehet ezzel tenni?<\/p>\n<p>Van egy nyilv\u00e1nval\u00f3 megold\u00e1s \u2014 triggereket kell l\u00e9trehozni egy bizonyos oszt\u00e1ly\u00fa anyagt\u00e1bl\u00e1zathoz az aszinkron \u00f6sszevon\u00e1si m\u0171velet sor\u00e1n. Van valamilyen \u201eez\u00fcstl\u00f6ved\u00e9k\u201d, terv a hasonl\u00f3 funkci\u00f3k megval\u00f3s\u00edt\u00e1s\u00e1ra?<\/p><\/blockquote>\n<p>\u00c9rdemes \u00e1tn\u00e9zni, hogyan m\u0171k\u00f6dik a deduplik\u00e1ci\u00f3. Amit most elmondok, nem kapcsol\u00f3dik a k\u00e9rd\u00e9shez, de minden esetre \u00e9rdemes r\u00e1 eml\u00e9kezni.<\/p>\n<p><\/p>\n<p>A replik\u00e1lt t\u00e1bl\u00e1ba t\u00f6rt\u00e9n\u0151 besz\u00far\u00e1skor teljes m\u00e9rt\u00e9kben deduplik\u00e1l\u00f3dnak a felt\u00f6lt\u00f6tt blokkok. Ha ugyanazt a blokkot ism\u00e9telten beillesztette, amely ugyanannyi azonos sort tartalmaz ugyanebben a sorrendben, akkor az adatok deduplik\u00e1l\u00f3dnak. Az 'Ok' v\u00e1laszt fogja kapni a besz\u00far\u00e1sra, de val\u00f3j\u00e1ban csak egy adathalmoz\u00f3d\u00e1s ker\u00fcl r\u00f6gz\u00edt\u00e9sre, \u00e9s nem duplik\u00e1l\u00f3dik.<\/p>\n<p><\/p>\n<p>Ez a hat\u00e1rozotts\u00e1g \u00e9rdek\u00e9ben sz\u00fcks\u00e9ges. Ha a besz\u00far\u00e1s sor\u00e1n 'Ok' v\u00e1laszt kapott, akkor az adatai be lettek illesztve. Ha a ClickHouse-t\u00f3l hib\u00e1t kapott, akkor azok nem lettek beillesztve, \u00e9s a besz\u00far\u00e1st meg kell ism\u00e9telni. De ha a besz\u00far\u00e1s sor\u00e1n megszakadt a kapcsolat, akkor nem tudja, hogy az adatok be lettek-e illesztve vagy sem. Az egyetlen megold\u00e1s, hogy a besz\u00far\u00e1st \u00fajra megism\u00e9telje. Ha az adatok val\u00f3ban be lettek illesztve, \u00e9s \u00d6n azokat ism\u00e9telten beilleszti, akkor blokkdeduplik\u00e1l\u00e1s t\u00f6rt\u00e9nik. Ez a duplik\u00e1tumok elker\u00fcl\u00e9se \u00e9rdek\u00e9ben sz\u00fcks\u00e9ges. <\/p>\n<p><\/p>\n<p>Fontos, hogy ez hogyan m\u0171k\u00f6dik a materializ\u00e1lt n\u00e9zetek eset\u00e9ben. Ha az adatok deduplik\u00e1l\u00f3dnak a f\u0151 t\u00e1bl\u00e1ba t\u00f6rt\u00e9n\u0151 besz\u00far\u00e1skor, akkor a materializ\u00e1lt n\u00e9zetbe sem ker\u00fclnek \u00e1t.<\/p>\n<p><\/p>\n<p>Most pedig a k\u00e9rd\u00e9sr\u0151l. \u00d6nn\u00e9l bonyolultabb a helyzet, mert \u00d6n a sorok duplik\u00e1ltjait \u00edrja. Teh\u00e1t nem egy teljes blokk duplik\u00e1l\u00f3dik, hanem konkr\u00e9t sorok, amelyek a h\u00e1tt\u00e9rben \u00f6sszeolvadnak. Val\u00f3ban, az adatok az alap t\u00e1bl\u00e1zatban \u00f6ssze fognak olvadni, de a materializ\u00e1lt n\u00e9zetbe nem olvadnak \u00f6ssze, \u00e9s a merge-ek sor\u00e1n a materializ\u00e1lt n\u00e9zetekkel semmi nem fog t\u00f6rt\u00e9nni. Mert a materializ\u00e1lt n\u00e9zet nem m\u00e1s, mint egy trigger a besz\u00far\u00e1sra. M\u00e1s m\u0171veletek eset\u00e9n semmi tov\u00e1bbi nem t\u00f6rt\u00e9nik vele.<\/p>\n<p><\/p>\n<p>Sajn\u00e1lom, de itt nem tudok \u00f6r\u00f6met szerezni. Csak konkr\u00e9t megold\u00e1st kell keresni erre az esetre. P\u00e9ld\u00e1ul lehet-e a materializ\u00e1lt n\u00e9zetben is v\u00e9grehajtani helyettes\u00edt\u00e9st, \u00e9s lehet, hogy a deduplik\u00e1l\u00e1si m\u00f3dszer \u00edgy is m\u0171k\u00f6dni fog. De sajnos, ez nem mindig lehets\u00e9ges. Ha aggreg\u00e1l\u00f3, akkor nem fog m\u0171k\u00f6dni. <\/p>\n<p><\/p>\n<p><strong>Kirill Shvakov:<\/strong> N\u00e1lunk is voltak neh\u00e9zs\u00e9gek a m\u00faltban. Volt egy probl\u00e9ma, hogy vannak hirdet\u00e9sek, \u00e9s vannak bizonyos adatok, amelyeket val\u00f3s id\u0151ben mutathatunk be \u2014 ezek csak megjelen\u00edt\u00e9sek. Ritk\u00e1n ism\u00e9tl\u0151dnek, de ha ez megt\u00f6rt\u00e9nik, akkor is \u00f6sszevonjuk \u0151ket. De voltak olyan dolgok, amelyeket nem lehetett megdupl\u00e1zni \u2014 a kattint\u00e1sok \u00e9s az ehhez hasonl\u00f3 inform\u00e1ci\u00f3k. De azokat is szinte azonnal meg akartuk mutatni.<\/p>\n<p><\/p>\n<p>Hogyan k\u00e9sz\u00fcltek a materializ\u00e1lt n\u00e9zetek? Voltak n\u00e9zetek, ahov\u00e1 k\u00f6zvetlen\u00fcl \u00edrtunk \u2014 bejegyz\u00e9s t\u00f6rt\u00e9nt a nyers adatokba, \u00e9s \u00edrtunk a n\u00e9zetekbe. Ott egy adott pillanatban az adatok nem voltak nagyon pontosak, megdupl\u00e1z\u00f3dtak, \u00e9s \u00edgy tov\u00e1bb. Van egy m\u00e1sik r\u00e9sz a t\u00e1bl\u00e1zatban, ahol teljesen ugyan\u00fagy n\u00e9znek ki, mint a materializ\u00e1lt n\u00e9zetek, teh\u00e1t szerkezetileg teljesen azonosak. Id\u0151nk\u00e9nt \u00fajrasz\u00e1moljuk az adatokat, kisz\u00e1m\u00edtjuk az adatokat duplik\u00e1ci\u00f3k n\u00e9lk\u00fcl, \u00e9s ezekbe a t\u00e1bl\u00e1zatokba \u00edrunk. <\/p>\n<p><\/p>\n<p>API-n kereszt\u00fcl j\u00e1rtunk, mert a ClickHouse k\u00e9zzel nem fog m\u0171k\u00f6dni. Az API arra figyel, hogy amikor van egy d\u00e1tum az utols\u00f3 bejegyz\u00e9shez a t\u00e1bl\u00e1zatban, ahol m\u00e1r garant\u00e1ltan helyes adatok vannak, sz\u00e1molt adatok, akkor k\u00e9rd\u00e9st int\u00e9z egy t\u00e1bl\u00e1zathoz \u00e9s egy m\u00e1sik t\u00e1bl\u00e1zathoz. Az egyik lek\u00e9rdez\u00e9s kiv\u00e1lasztja az adatokat egy bizonyos id\u0151pontig, a m\u00e1sik pedig hozz\u00e1teszi, ami m\u00e9g nem lett megsz\u00e1molva. Ez m\u0171k\u00f6dik, de nem egyed\u00fcl a ClickHouse eszk\u00f6zeivel.<\/p>\n<p><\/p>\n<p>Ha van API-ja \u2014 a elemz\u0151knek, a felhaszn\u00e1l\u00f3knak \u2014 akkor alapvet\u0151en ez egy lehet\u0151s\u00e9g. Mindig \u00fajrasz\u00e1molja, mindig \u00e1t kell sz\u00e1molnia. Ezt meg lehet csin\u00e1lni naponta egyszer, vagy b\u00e1rmikor m\u00e1skor. \u00d6n mag\u00e1nak v\u00e1laszthatja ki a tartom\u00e1nyt, ami nem sz\u00fcks\u00e9ges \u00e9s nem kritikus.<\/p>\n<p><\/p>\n<h2 id=\"anchordashboardanchorv-clickhouse-mnogo-logov-kak-ya-mogu-videt-vsyo-chto-proishodit-s-serverom-vnbspmomente\"><noindex><a rel=\"nofollow\" name=\"dashboard\"><\/a><\/noindex>A ClickHouse-ban sok napl\u00f3 tal\u00e1lhat\u00f3. Hogyan l\u00e1thatom, mi t\u00f6rt\u00e9nik a szerverrel a pillanatban?<\/h2>\n<p><\/p>\n<blockquote><p>A ClickHouse-ban nagyon sokf\u00e9le napl\u00f3 tal\u00e1lhat\u00f3, \u00e9s ez a sz\u00e1m egyre n\u0151. Az \u00faj verzi\u00f3kban ezek k\u00f6z\u00fcl n\u00e9h\u00e1ny alap\u00e9rtelmez\u00e9s szerint be van kapcsolva, a r\u00e9gi verzi\u00f3kban pedig be kell kapcsolni \u0151ket a friss\u00edt\u00e9skor. Ennek ellen\u00e9re egyre t\u00f6bb van bel\u0151l\u00fck. Szeretn\u00e9m l\u00e1tni v\u00e9g\u00fcl, hogy mi t\u00f6rt\u00e9nik most velem a szerverrel, tal\u00e1n egy \u00f6sszefoglal\u00f3 ir\u00e1ny\u00edt\u00f3pulton. <\/p>\n<p>Van valakinek a csapat\u00e1ban ClickHouse, vagy a bar\u00e1tai csapat\u00e1ban, aki t\u00e1mogat valamilyen el\u0151re elk\u00e9sz\u00edtett dashboard funkci\u00f3t, ami ezeket a napl\u00f3kat m\u00e1r k\u00e9sz term\u00e9kk\u00e9nt jelen\u00edti meg? A v\u00e9g\u00e9n, csak \u00fagy n\u00e9zni a napl\u00f3kat a ClickHouse-ban \u2013 ez klassz. De igaz\u00e1n szuper lenne, ha ez m\u00e1r egy k\u00e9sz dashboard form\u00e1j\u00e1ban lenne. Ebb\u0151l nagyon \u00f6r\u00fcln\u00e9k. <\/p><\/blockquote>\n<p>Vannak dashboardok, b\u00e1r nem standardiz\u00e1ltak. A mi c\u00e9g\u00fcnkn\u00e9l k\u00f6r\u00fclbel\u00fcl 60 csapat haszn\u00e1lja a ClickHouse-t, \u00e9s a legfurcs\u00e1bb, hogy sokuknak saj\u00e1t k\u00e9sz\u00edt\u00e9s\u0171 dashboardjaik vannak, \u00e9s egy kicsit m\u00e1sok. N\u00e9h\u00e1ny csapat a Yandex.Cloud bels\u0151 telep\u00edt\u00e9s\u00e9t haszn\u00e1lja. Ott vannak bizonyos k\u00e9sz jelent\u00e9sek, b\u00e1r nem minden sz\u00fcks\u00e9ges. M\u00e1soknak a saj\u00e1t megold\u00e1saik. <\/p>\n<p><\/p>\n<p>A \"Metrika\" koll\u00e9g\u00e1knak van saj\u00e1t dashboardjuk a Grafan\u00e1ban, nekem pedig van saj\u00e1tom az \u0151 klaszter\u00fck\u00f6n. Ott n\u00e9zem a dolgokat, mint p\u00e9ld\u00e1ul a cache hit a m\u00e9retl\u00e9ny elhelyez\u00e9s\u00e9hez. \u00c9s m\u00e9g bonyolultabb a helyzet, hogy k\u00fcl\u00f6nf\u00e9le eszk\u00f6z\u00f6ket haszn\u00e1lunk. A saj\u00e1t dashboardomat egy nagyon r\u00e9gi eszk\u00f6z\u00f6n hoztam l\u00e9tre, ami Graphite-web n\u00e9ven ismert. Teljesen cs\u00fanya. \u00c9s eddig is azt haszn\u00e1lom, b\u00e1r a Grafana val\u00f3sz\u00edn\u0171leg k\u00e9nyelmesebb \u00e9s szebb lenne. <\/p>\n<p><\/p>\n<p>Az alapvet\u0151 dolog a dashboardokban ugyanaz. Ezek a rendszermetrik\u00e1k a klaszterre vonatkoz\u00f3an: CPU, mem\u00f3ria, lemez, h\u00e1l\u00f3zat. M\u00e1sok \u2013 a p\u00e1rhuzamos k\u00e9r\u00e9sek sz\u00e1ma, a p\u00e1rhuzamos merge-ek sz\u00e1ma, a m\u00e1sodpercenk\u00e9nti k\u00e9r\u00e9sek sz\u00e1ma, a MergeTree t\u00e1bl\u00e1k part\u00edci\u00f3ihoz tartoz\u00f3 maxim\u00e1lis darabsz\u00e1m, a replik\u00e1ci\u00f3s k\u00e9sleltet\u00e9s, a replik\u00e1ci\u00f3s sor m\u00e9rete, m\u00e1sodpercenk\u00e9nt besz\u00fart sorok sz\u00e1ma, m\u00e1sodpercenk\u00e9nt besz\u00fart blokkok sz\u00e1ma. Ez mind, ami nem napl\u00f3kb\u00f3l, hanem metrik\u00e1kb\u00f3l sz\u00e1rmazik.<\/p>\n<p><\/p>\n<p><strong>Vlagyimir Kolobaev:<\/strong> Alexey, szeretn\u00e9m egy kicsit pontos\u00edtani. Van Grafana. A Grafan\u00e1nak van egy adatforr\u00e1sa, ami a ClickHouse. Teh\u00e1t a Grafan\u00e1b\u00f3l k\u00f6zvetlen\u00fcl k\u00e9rd\u00e9seket tudok tenni a ClickHouse-ba. A ClickHouse-ban van egy napl\u00f3kat tartalmaz\u00f3 t\u00e1bl\u00e1zat, ami mindenkinek ugyanaz. \u00c9n a Grafan\u00e1ban szeretn\u00e9m megkeresni ezt a napl\u00f3t tartalmaz\u00f3 t\u00e1bl\u00e1t, \u00e9s l\u00e1tni azokat a k\u00e9r\u00e9seket, amelyeket a szerverem \u00e1ll\u00edt el\u0151. J\u00f3 lenne, ha lenne egy ilyen dashboard.<\/p>\n<p><\/p>\n<p>\u00c9n magam hoztam l\u00e9tre. De k\u00e9rd\u00e9sem mer\u00fcl fel \u2013 ha minden standardiz\u00e1lt, \u00e9s a Grafan\u00e1t mindenki haszn\u00e1lja, akkor mi\u00e9rt nincs a Yandexn\u00e9l ilyen hivatalos dashboard?<\/p>\n<p><\/p>\n<p><strong>Kirill Shvakov:<\/strong> Val\u00f3j\u00e1ban az Altinity t\u00e1mogatja a ClickHouse-hoz kapcsol\u00f3d\u00f3 adatforr\u00e1st. Csak szeretn\u00e9m megmutatni, merre \u00e9rdemes kutatni \u00e9s kit kellene keresni. \u00c9rdemes t\u0151l\u00fck k\u00e9rdezni, mert a 'Yandex' v\u00e9g\u00fcl is a ClickHouse-t fejleszti, nem pedig a k\u00f6r\u00fcl\u00f6tte l\u00e9v\u0151 t\u00f6rt\u00e9neteket. Az Altinity a f\u0151 v\u00e1llalat, amely most n\u00e9pszer\u0171s\u00edti a ClickHouse-t. Nem fogj\u00e1k elhagyni, hanem t\u00e1mogatni fogj\u00e1k. Mert alapvet\u0151en, ha egy ir\u00e1ny\u00edt\u00f3pultot szeretn\u00e9nk felt\u00f6lteni a Grafana oldal\u00e1ra, csak regisztr\u00e1lni kell \u00e9s felt\u00f6lteni \u2014 nem jelent k\u00fcl\u00f6n\u00f6sebb probl\u00e9m\u00e1t. <\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> Az elm\u00falt \u00e9vben sok \u00faj lehet\u0151s\u00e9g ker\u00fclt bevezet\u00e9sre a ClickHouse-ban a lek\u00e9rdez\u00e9sek profiloz\u00e1s\u00e1ra. Minden lek\u00e9rdez\u00e9shez vannak mutat\u00f3k az er\u0151forr\u00e1s-haszn\u00e1latr\u00f3l. Nemr\u00e9giben egy m\u00e9g alacsonyabb szint\u0171 lek\u00e9rdez\u00e9sprofiloz\u00f3 is hozz\u00e1 lett adva, amely lehet\u0151v\u00e9 teszi, hogy l\u00e1ssuk, hol t\u00f6lt el minden milliszekundumot a lek\u00e9rdez\u00e9s. De ahhoz, hogy ennek a funkci\u00f3nak \u00e9lvezzem az el\u0151nyeit, meg kell nyitnom a konzolos klienset, \u00e9s be kell \u00edrnom egy lek\u00e9rdez\u00e9st, amelyet folyamatosan elfelejtek. Valahova elmentettem, de \u00e1lland\u00f3an elfelejtem, hova. <\/p>\n<p><\/p>\n<p>Szeretn\u00e9m, ha lenne egy eszk\u00f6z, amelyben egyszer\u0171en szerepelne \u2014 ezek a neh\u00e9z lek\u00e9rdez\u00e9sek, lek\u00e9rdez\u00e9s-t\u00edpusok szerint csoportos\u00edtva. Kattintottam egy ilyen lek\u00e9rdez\u00e9sre, \u00e9s megmondan\u00e1k, hogy ezt mi\u00e9rt tartj\u00e1k neh\u00e9znek. Jelenleg nincs ilyen megold\u00e1s. Val\u00f3ban meglep\u0151, hogy amikor az emberek megk\u00e9rdeznek engem: 'Mondja, van k\u00e9sz ir\u00e1ny\u00edt\u00f3pult Grafana-hoz?', azt mondom: 'N\u00e9zzen be a Grafana weboldal\u00e1ra, ott van a k\u00f6z\u00f6ss\u00e9g \u201cIr\u00e1ny\u00edt\u00f3pultok\u201d, \u00e9s ott van Dima ir\u00e1ny\u00edt\u00f3pultja, van Kosti\u00e1n ir\u00e1ny\u00edt\u00f3pultja. Mi ez, azt nem tudom, \u00e9n magam nem haszn\u00e1ltam.'<\/p>\n<p><\/p>\n<h2 id=\"anchorzenanchorkak-vozdeystvovat-na-merdzhi-chtoby-server-ne-padal-vnbspoom\"><noindex><a rel=\"nofollow\" name=\"zen\"><\/a><\/noindex>Hogyan lehet befoly\u00e1solni a merge m\u0171veleteket, hogy a szerver ne essen OOM-ba?<\/h2>\n<p><\/p>\n<blockquote><p>Van egy t\u00e1bl\u00e1zatom, amelyben csak egy part\u00edci\u00f3 van, \u00e9s az ReplacingMergeTree. N\u00e9gy \u00e9ve \u00edrom bele az adatokat. Kellett volna csin\u00e1lnom benne egy altert, \u00e9s t\u00f6r\u00f6lni n\u00e9h\u00e1ny adatot.<\/p>\n<p>Megcsin\u00e1ltam ezt, \u00e9s a lek\u00e9rdez\u00e9s feldolgoz\u00e1sa sor\u00e1n az \u00f6sszes szerveren elfogyott a mem\u00f3ria, \u00e9s a klaszter \u00f6sszes szervere egyszerre OOM-ba ker\u00fclt. Azt\u00e1n mindannyian \u00fajra f\u00f6l\u00e1lltak, elkezdtek merge-elni ezt a bizonyos m\u0171veletet, ezt az adathalmazt, \u00e9s \u00fajra OOM-ba estek. Azt\u00e1n \u00fajra f\u00f6l\u00e1lltak \u00e9s \u00fajra estek. Ez a helyzet folyamatosan megism\u00e9tl\u0151d\u00f6tt.<\/p>\n<p>Kider\u00fclt, hogy ez val\u00f3j\u00e1ban egy hiba, amit a sr\u00e1cok jav\u00edtottak. Ez nagyszer\u0171, nagyon k\u00f6sz\u00f6n\u00f6m. De a meg\u00e9rz\u00e9s az\u00e9rt megmaradt. \u00c9s most, amikor arra gondolok, hogy egyfajta merge-t kellene csin\u00e1lnom a t\u00e1bl\u00e1zatban, felmer\u00fcl bennem a k\u00e9rd\u00e9s \u2013 mi\u00e9rt nem tudom valahogy befoly\u00e1solni ezeket a merge-eket? P\u00e9ld\u00e1ul korl\u00e1tozni \u0151ket a sz\u00fcks\u00e9ges mem\u00f3riasz\u00e1m alapj\u00e1n, vagy egy\u00e1ltal\u00e1n annak a t\u00e1bl\u00e1zatnak a sz\u00e1m\u00e1t, amelyik konkr\u00e9tan ezt fogja feldolgozni.<\/p>\n<p>Van egy t\u00e1bl\u00e1zatom, ami \"Metri\u00e1k\" n\u00e9ven fut, k\u00e9rlek, dolgozd fel k\u00e9t sz\u00e1lon. Ne csin\u00e1lj t\u00edz vagy \u00f6t merge-t p\u00e1rhuzamosan, csin\u00e1ld k\u00e9tben. Gondolom, hogy kett\u0151h\u00f6z el\u00e9g lesz a mem\u00f3ri\u00e1m, de lehet, hogy a t\u00edz feldolgoz\u00e1s\u00e1hoz m\u00e1r nem. Mi\u00e9rt marad a f\u00e9lelem? Mert a t\u00e1bl\u00e1zat n\u00f6vekszik, \u00e9s egyszer csak szembes\u00fcl\u00f6k azzal a helyzettel, hogy m\u00e1r nem a hiba miatt, hanem az\u00e9rt, mert az adatok olyan nagy mennyis\u00e9gben fognak v\u00e1ltozni, hogy egyszer\u0171en nem lesz el\u00e9g mem\u00f3ria a szerveren. \u00c9s akkor a szerver OOM-ba fog esni a merge sor\u00e1n. A mut\u00e1ci\u00f3t ugyan t\u00f6r\u00f6lhetem, de a merge-et m\u00e1r nem.<\/p><\/blockquote>\n<p>Tudod, a merge-ek sor\u00e1n a szerver nem fog OOM-ba esni, mert a merge sor\u00e1n csak egy kis adatsorhoz sz\u00fcks\u00e9ges mem\u00f3ria ker\u00fcl felhaszn\u00e1l\u00e1sra. Sz\u00f3val minden rendben lesz, f\u00fcggetlen\u00fcl az adatok mennyis\u00e9g\u00e9t\u0151l.<\/p>\n<p><\/p>\n<p><strong>Vlagyimir Kolobaev:<\/strong> Rendben. Itt van egy pont, hogy miut\u00e1n megjav\u00edtott\u00e1k a hib\u00e1t, let\u00f6lt\u00f6ttem az \u00faj verzi\u00f3t, \u00e9s egy m\u00e1sik, kisebb t\u00e1bl\u00e1zaton, ahol sok part\u00edci\u00f3 van, hasonl\u00f3 m\u0171veletet v\u00e9geztem. \u00c9s a merge sor\u00e1n k\u00f6r\u00fclbel\u00fcl 100 GB mem\u00f3ri\u00e1t haszn\u00e1lt a szerver. 150 GB-ot haszn\u00e1ltam, 100 GB-ot elvett, \u00e9s maradt 50 GB-os ablak, \u00edgy nem estem OOM-ba.<\/p>\n<p><\/p>\n<p>Mi v\u00e9d a jelen pillanatban att\u00f3l, hogy ne essek OOM-ba, ha val\u00f3ban 100 GB mem\u00f3ri\u00e1t fogyaszt? Mi a teend\u0151, ha egyszer csak elfogy a mem\u00f3ria a merge-ek sor\u00e1n?<\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> Van egy olyan probl\u00e9ma, hogy a mem\u00f3riak\u00f6lts\u00e9g nem csup\u00e1n a merge-ra korl\u00e1toz\u00f3dik. A m\u00e1sik probl\u00e9ma az, hogy ha egy merge m\u00e1r be van \u00fctemezve, azt v\u00e9gre kell hajtani, mert az be van jegyezve a replik\u00e1ci\u00f3s napl\u00f3ba. A replik\u00e1ci\u00f3s napl\u00f3 azok a m\u0171veletek, amelyek sz\u00fcks\u00e9gesek a replik\u00e1ci\u00f3 k\u00f6vetkezetes \u00e1llapotba hoz\u00e1s\u00e1hoz. Ha nem v\u00e9gz\u00fcnk el k\u00e9zi m\u0171veleteket, amelyek a replik\u00e1ci\u00f3s napl\u00f3t visszaford\u00edtj\u00e1k, a merge-et ak\u00e1rmilyen m\u00f3don v\u00e9gre kell hajtani.<\/p>\n<p><\/p>\n<p>Term\u00e9szetesen nem lenne h\u00e1tr\u00e1ny, ha lenne egy mem\u00f3riahat\u00e1r, amely \u201eesetlegesen\u201d v\u00e9d a OOM ellen. Ez nem seg\u00edtene a merge v\u00e9grehajt\u00e1s\u00e1ban, \u00fajra elindulna, el\u00e9rne egy bizonyos k\u00fcsz\u00f6b\u00f6t, kiv\u00e9telt dobna, majd \u00fajra kezden\u00e9 \u2014 ez semmik\u00e9pp sem lenne j\u00f3 eredm\u00e9ny. De alapvet\u0151en ezt a korl\u00e1toz\u00e1st bevezetni hasznos lenne.<\/p>\n<p><\/p>\n<h2 id=\"anchorgoanchorkak-budet-proishodit-razrabotka-golang-drayvera-dlya-clickhouse\"><noindex><a rel=\"nofollow\" name=\"go\"><\/a><\/noindex>Hogyan fog zajlani a Golang-illeszt\u0151program fejleszt\u00e9se a ClickHouse-hoz?<\/h2>\n<p><\/p>\n<blockquote><p>A Golang-illeszt\u0151programot, amelyet Kirill Shvakov \u00edrt, most hivatalosan \u00fagy t\u0171nik, hogy a ClickHouse csapata t\u00e1mogatja. \u0150 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/clickhouse-go\">a ClickHouse t\u00e1rol\u00f3j\u00e1ban<\/a><\/noindex>, most m\u00e1r nagy \u00e9s igazi.<\/p>\n<p>Egy kis megjegyz\u00e9s. Van egy csod\u00e1latos \u00e9s mindenki \u00e1ltal kedvelt t\u00e1rol\u00f3, amely a v\u00e9gtelen rend norm\u00e1lis form\u00e1it biztos\u00edtja \u2014 ez a Vertica. Van saj\u00e1t hivatalos python-illeszt\u0151j\u00fck is, amelyet a Vertica fejleszt\u0151i t\u00e1mogatnak. \u00c9s volt m\u00e1r olyan eset, amikor a t\u00e1rol\u00f3verzi\u00f3k \u00e9s az illeszt\u0151verzi\u00f3k nagyon elt\u00e9rtek egym\u00e1st\u00f3l, \u00edgy az illeszt\u0151 egy id\u0151 ut\u00e1n le\u00e1llt. A m\u00e1sik dolog pedig, hogy ennek a hivatalos illeszt\u0151nek a t\u00e1mogat\u00e1sa \u00fagy t\u0171nik, a \u201ek\u00f6t\u0151elem\u201d rendszer\u00e9n kereszt\u00fcl t\u00f6rt\u00e9nik \u2014 \u00edrsz nekik egy probl\u00e9m\u00e1t, \u00e9s az \u00f6r\u00f6kk\u00e9 ott l\u00f3g.<\/p>\n<p>K\u00e9t k\u00e9rd\u00e9sem van. Jelenleg Kirill Golang-illeszt\u0151je szinte az alap\u00e9rtelmezett m\u00f3dja a Golang \u00e9s a ClickHouse k\u00f6z\u00f6tti kommunik\u00e1ci\u00f3nak. Csak aki m\u00e9g mindig http interf\u00e9szen kereszt\u00fcl kommunik\u00e1l, mert \u00fagy tetszik neki. Hogyan fog t\u00f6rt\u00e9nni ennek az illeszt\u0151nek a fejleszt\u00e9se? Szinkroniz\u00e1lni fogj\u00e1k-e valamilyen \u00e9les v\u00e1ltoz\u00e1ssal a t\u00e1rol\u00f3n bel\u00fcl? \u00c9s mi a bead\u00e1s menete? <\/p><\/blockquote>\n<p><strong>Kirill Shvakov:<\/strong> Az els\u0151 \u2014 hogyan van ez b\u00fcrokratikusan rendezve. Ezt a k\u00e9rd\u00e9st nem vitattuk meg, \u00edgy nincs v\u00e1laszom.<\/p>\n<p><\/p>\n<p>Ahhoz, hogy v\u00e1laszoljak a k\u00e9rd\u00e9sre a probl\u00e9m\u00e1kkal kapcsolatban, sz\u00fcks\u00e9g van egy r\u00f6vid t\u00f6rt\u00e9netre a driverr\u0151l. Egy olyan c\u00e9gn\u00e9l dolgoztam, ahol sok adat volt. Ez egy rekl\u00e1mforgat\u00f3 volt, \u00f3ri\u00e1si mennyis\u00e9g\u0171 esem\u00e9nnyel, amit valahol t\u00e1rolni kellett. \u00c9s egy ponton megjelent a ClickHouse. R\u00e1\u00f6nt\u00f6tt\u00fck az adatokat, \u00e9s az elej\u00e9n minden rendben volt, azt\u00e1n a ClickHouse le\u00e1llt. Akkor \u00fagy d\u00f6nt\u00f6tt\u00fck, hogy nek\u00fcnk erre nincs sz\u00fcks\u00e9g\u00fcnk. <\/p>\n<p><\/p>\n<p>Egy \u00e9v m\u00falva visszat\u00e9rt\u00fcnk a ClickHouse haszn\u00e1lat\u00e1nak \u00f6tlet\u00e9hez, \u00e9s valahogy adatokat kellett \u00edrni oda. A kiindul\u00f3pont az volt \u2014 a hardver nagyon gyenge volt, kev\u00e9s er\u0151forr\u00e1ssal. De mindig \u00edgy dolgoztunk, ez\u00e9rt a nat\u00edv protokoll ir\u00e1ny\u00e1ba tekintett\u00fcnk.<\/p>\n<p><\/p>\n<p>Mivel Go-n dolgoztunk, vil\u00e1gos volt, hogy sz\u00fcks\u00e9g van egy Go drivere. Ezt gyakorlatilag teljes munkaid\u0151ben csin\u00e1ltam \u2014 ez volt a munkahelyi feladatom. Egy bizonyos pontra eljutottunk, \u00e9s alapvet\u0151en senki sem felt\u00e9telezte, hogy m\u00e1s is haszn\u00e1lni fogja. Azt\u00e1n j\u00f6tt a CloudFlare \u00e9ppen ezzel a probl\u00e9m\u00e1val, \u00e9s egy id\u0151ben nagyon hasonl\u00f3an dolgoztunk vel\u00fck, mert ugyanazokkal a feladatokkal k\u00fczd\u00f6ttek. S\u0151t, ezt a ClickHouse-on \u00e9s a drivern\u00e9l is v\u00e9gezt\u00fck. <\/p>\n<p><\/p>\n<p>Valamikor egyszer\u0171en abbahagytam a ClickHouse-szal val\u00f3 foglalkoz\u00e1st, mert a tev\u00e9kenys\u00e9gem megv\u00e1ltozott. Ez\u00e9rt az issue-k nem z\u00e1rulnak le. Id\u0151nk\u00e9nt olyan emberek commit\u00e1lnak a repository-ba, akiknek saj\u00e1t sz\u00fcks\u00e9gleteik vannak. Akkor megn\u00e9zem a pull request-eket, \u00e9s n\u00e9ha m\u00e9g magam is szerkesztek valamit, de ez ritk\u00e1n fordul el\u0151.<\/p>\n<p><\/p>\n<p>Szeretn\u00e9k visszat\u00e9rni a driverhez. N\u00e9h\u00e1ny \u00e9ve, amikor ez az eg\u00e9sz elkezd\u0151d\u00f6tt, a ClickHouse is m\u00e1s volt \u00e9s m\u00e1s lehet\u0151s\u00e9gekkel rendelkezett. Most m\u00e1r van elk\u00e9pzel\u00e9s arr\u00f3l, hogyan lehetne \u00e1tdolgozni a drivert, hogy jobban m\u0171k\u00f6dj\u00f6n. Ha ez megt\u00f6rt\u00e9nik, a 2-es verzi\u00f3 minden esetben inkompatibilis lesz a felhalmozott hackek miatt. <\/p>\n<p><\/p>\n<p>Nem tudom, hogyan lehetne ezt megszervezni. Magamnak sem sok id\u0151m van. Ha valakik dolgozn\u00e1nak a driveren, akkor tudn\u00e9k seg\u00edteni nekik \u00e9s elmondani, mit kell csin\u00e1lni. De a Yandex akt\u00edv r\u00e9szv\u00e9tele a projekt fejleszt\u00e9s\u00e9ben egyel\u0151re nem ker\u00fclt sz\u00f3ba. <\/p>\n<p><\/p>\n<p><strong>Alexej Milovidov:<\/strong> A val\u00f3s\u00e1gban nincs m\u00e9g semmif\u00e9le b\u00fcrokr\u00e1cia ezekkel a driverekkel kapcsolatban. Az egyetlen dolog, hogy hivatalos szervezethez tartoznak, teh\u00e1t ez a driver hivatalosan elismert megold\u00e1s alap\u00e9rtelmezetten a Go-hoz. Vannak m\u00e1s driverek is, de azok k\u00fcl\u00f6n \u00e1llnak. <\/p>\n<p><\/p>\n<p>Bels\u0151leg nincs fejleszt\u00e9s ezekkel a driverekkel kapcsolatban. A k\u00e9rd\u00e9s az, hogy tudunk-e felvenni egy k\u00fcl\u00f6n embert, aki nem kifejezetten erre a driverre dolgozik, hanem az \u00f6sszes k\u00f6z\u00f6ss\u00e9gi driver fejleszt\u00e9s\u00e9re, vagy tal\u00e1lunk-e valakit k\u00edv\u00fclr\u0151l. <\/p>\n<p><\/p>\n<h2 id=\"anchorlazy-loadanchorvneshniy-slovar-ne-podnimaetsya-posle-perezagruzki-snbspvklyuchennoy-nastroykoy-lazy_load-chto-delat\"><noindex><a rel=\"nofollow\" name=\"lazy-load\"><\/a><\/noindex>A k\u00fcls\u0151 sz\u00f3t\u00e1r nem t\u00f6lt\u0151dik be \u00fajraind\u00edt\u00e1s ut\u00e1n, ha a lazy_load be\u00e1ll\u00edt\u00e1s akt\u00edv. Mit tegy\u00fcnk?<\/h2>\n<p><\/p>\n<blockquote><p>N\u00e1lunk be van kapcsolva a lazy_load be\u00e1ll\u00edt\u00e1s, \u00e9s a szerver \u00fajraind\u00edt\u00e1sa ut\u00e1n a sz\u00f3t\u00e1r nem t\u00f6lt\u0151dik be automatikusan. Csak azut\u00e1n t\u00f6lt\u0151dik be, hogy a felhaszn\u00e1l\u00f3 hozz\u00e1f\u00e9r a sz\u00f3t\u00e1rhoz. Az els\u0151 hozz\u00e1f\u00e9r\u00e9skor viszont hib\u00e1t ad. Lehet valahogy automatikusan bet\u00f6lteni a sz\u00f3t\u00e1rakat a ClickHouse seg\u00edts\u00e9g\u00e9vel, vagy mindig nek\u00fcnk kell ellen\u0151rizni a rendelkez\u00e9sre \u00e1ll\u00e1sukat, hogy a felhaszn\u00e1l\u00f3k ne kapjanak hib\u00e1kat?<\/p>\n<p>Lehet, hogy a ClickHouse-nak egy r\u00e9gi verzi\u00f3ja van, ez\u00e9rt a sz\u00f3t\u00e1r automatikusan nem t\u00f6lt\u0151d\u00f6tt be. Lehets\u00e9ges ez?<\/p><\/blockquote>\n<p>El\u0151sz\u00f6r is, a sz\u00f3t\u00e1rakat k\u00e9nyszer\u00edtett m\u00f3don be lehet t\u00f6lteni egy lek\u00e9rdez\u00e9ssel. <strong>system reload dictionaries<\/strong>M\u00e1sodszor, ami a hib\u00e1t illeti \u2014 ha a sz\u00f3t\u00e1r m\u00e1r be van t\u00f6ltve, akkor a lek\u00e9rdez\u00e9sek azokkal az adatokkal fognak m\u0171k\u00f6dni, amelyeket bet\u00f6lt\u00f6ttek. Ha a sz\u00f3t\u00e1r m\u00e9g nem volt bet\u00f6ltve, akkor a lek\u00e9rdez\u00e9s ideje alatt fog bet\u00f6lt\u0151dni.<\/p>\n<p><\/p>\n<p>Neh\u00e9z sz\u00f3t\u00e1rak eset\u00e9n ez nem t\u00fal praktikus. P\u00e9ld\u00e1ul, ha egy milli\u00f3 sort kell lek\u00e9rdezni a MySQL-b\u0151l. Valaki egyszer\u0171 select-et hajt v\u00e9gre, de ez a select meg fogja v\u00e1rni azt az egy milli\u00f3 sort. Itt k\u00e9t megold\u00e1s van. Az els\u0151 \u2014 kikapcsolni a lazy_load-ot. A m\u00e1sodik \u2014 amikor a szerver elindul, miel\u0151tt terhel\u00e9snek lenne kit\u00e9ve, k\u00e9sz\u00edteni <strong>system reload dictionary<\/strong> vagy egyszer\u0171en v\u00e9grehajtani egy lek\u00e9rdez\u00e9st, ami a sz\u00f3t\u00e1rat haszn\u00e1lja. Akkor a sz\u00f3t\u00e1r bet\u00f6lt\u0151dik. Saj\u00e1t magunknak kell ellen\u0151rizn\u00fcnk a sz\u00f3t\u00e1rak el\u00e9rhet\u0151s\u00e9g\u00e9t a lazy_load be\u00e1ll\u00edt\u00e1ssal, mert a ClickHouse automatikusan nem h\u00fazza be \u0151ket.<\/p>\n<p><\/p>\n<p>Az utols\u00f3 k\u00e9rd\u00e9sre a v\u00e1lasz \u2014 vagy a verzi\u00f3 r\u00e9gi, vagy hibadiagnosztikai l\u00e9p\u00e9sek sz\u00fcks\u00e9gesek. <\/p>\n<p><\/p>\n<h2 id=\"anchorreload-dictionariesanchorkak-byt-snbsptem-chto-system-reload-dictionaries-ne-podgruzhaet-ni-odin-iznbspmnozhestva-slovarey-esli-hotya-by-odin-iznbspnih-padaet-snbsposhibkoy\"><noindex><a rel=\"nofollow\" name=\"reload-dictionaries\"><\/a><\/noindex>Mi a teend\u0151 azzal, hogy a system reload dictionaries nem t\u00f6lti be az \u00f6sszes sz\u00f3t\u00e1rt, ha b\u00e1rmi hiba l\u00e9p fel az egyikn\u00e9l?<\/h2>\n<p><\/p>\n<blockquote><p>Van m\u00e9g egy k\u00e9rd\u00e9s a system reload dictionaries-r\u0151l. K\u00e9t sz\u00f3t\u00e1runk van \u2014 az egyik nem t\u00f6lt\u0151dik be, a m\u00e1sik be t\u00f6lt\u0151dik. A system reload dictionaries ilyen esetben nem t\u00f6lti be egyiket sem, \u00e9s k\u00e9zzel kell bet\u00f6lteni a konkr\u00e9tat a neve alapj\u00e1n a system reload dictionary seg\u00edts\u00e9g\u00e9vel. Ez is a ClickHouse verzi\u00f3j\u00e1val kapcsolatos?<\/p><\/blockquote>\n<p>\u00d6r\u00f6mmel t\u00e1j\u00e9koztatlak. Ez a viselked\u00e9s megv\u00e1ltozott. Teh\u00e1t, ha friss\u00edted a ClickHouse-t, ez is meg fog v\u00e1ltozni. Ha nem el\u00e9gedett a jelenlegi viselked\u00e9ssel <strong>system reload dictionaries<\/strong>, friss\u00edtsen, \u00e9s rem\u00e9lj\u00fck, hogy v\u00e1ltozni fog a jobb ir\u00e1nyba.<\/p>\n<p><\/p>\n<h2 id=\"anchorconnectionanchorest-li-sposob-konfigurirovat-rekvizity-vnbspkonfige-clickhouse-no-ne-svetit-ih-prinbsposhibkah\"><noindex><a rel=\"nofollow\" name=\"connection\"><\/a><\/noindex>Van-e m\u00f3d a ClickHouse konfigur\u00e1ci\u00f3s adatait be\u00e1ll\u00edtani an\u00e9lk\u00fcl, hogy azok hiba\u00fczenetek sor\u00e1n megjelenjenek?<\/h2>\n<p><\/p>\n<blockquote><p>A k\u00f6vetkez\u0151 k\u00e9rd\u00e9s az adatb\u00e1zisban el\u0151fordul\u00f3 sz\u00f3t\u00e1rral kapcsolatos hib\u00e1kra vonatkozik, nevezetesen az azonos\u00edt\u00f3kra. A ClickHouse konfigur\u00e1ci\u00f3s f\u00e1jlban megadtuk a csatlakoz\u00e1si azonos\u00edt\u00f3kat a sz\u00f3t\u00e1rhoz, \u00e9s hiba eset\u00e9n ezeket az azonos\u00edt\u00f3kat \u00e9s a jelsz\u00f3t kapjuk v\u00e1laszul. <\/p>\n<p>Ezt a hib\u00e1t \u00fagy oldottuk meg, hogy az azonos\u00edt\u00f3kat az ODBC illeszt\u0151program konfigur\u00e1ci\u00f3s f\u00e1jlj\u00e1ba vitt\u00fck. Van valamilyen m\u00f3d arra, hogy az azonos\u00edt\u00f3kat a ClickHouse konfigur\u00e1ci\u00f3j\u00e1ban lehessen be\u00e1ll\u00edtani, an\u00e9lk\u00fcl, hogy ezek az azonos\u00edt\u00f3k l\u00e1that\u00f3ak lenn\u00e9nek a hib\u00e1k sor\u00e1n?<\/p><\/blockquote>\n<p>A megold\u00e1s val\u00f3ban az, hogy ezeket a credentials-t az odbc.ini f\u00e1jlban kell megadni, \u00e9s a ClickHouse-ban csak az ODBC Data Source Name-t kell megadni. M\u00e1s forr\u00e1sok eset\u00e9ben, mint p\u00e9ld\u00e1ul a MySQL sz\u00f3t\u00e1r, nem kell l\u00e1tni a jelsz\u00f3t a hiba\u00fczenetben. Az ODBC-val is ut\u00e1nan\u00e9zek \u2014 ha van ilyen, azt egyszer\u0171en el kell t\u00e1vol\u00edtani.<\/p>\n<p><\/p>\n<h2 id=\"anchorzoom-backgroundsanchorbonus-fony-dlya-zuma-snbspposidelok\"><noindex><a rel=\"nofollow\" name=\"zoom-backgrounds\"><\/a><\/noindex>B\u00f3nusz: h\u00e1tt\u00e9rk\u00e9pek ZOOM-hoz a tal\u00e1lkoz\u00f3khoz<\/h2>\n<p><\/p>\n<p>A legkitart\u00f3bb olvas\u00f3k sz\u00e1m\u00e1ra a k\u00e9pre kattintva b\u00f3nusz h\u00e1tterek ny\u00edlnak meg a bar\u00e1ti \u00f6sszej\u00f6vetelekr\u0151l. Elt\u00fcntetj\u00fck a t\u00fczet az Avito technol\u00f3giai maszkottal, megbesz\u00e9lj\u00fck a kolleg\u00e1kkal a rendszergazda szob\u00e1j\u00e1ban vagy a r\u00e9gim\u00f3di sz\u00e1m\u00edt\u00f3g\u00e9pes klubban, \u00e9s napi tal\u00e1lkoz\u00f3t tartunk a h\u00edd alatt graffitivel a h\u00e1tt\u00e9rben.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/amp.gs\/KvUr\"><img decoding=\"async\" alt=\"ClickHouse halad\u00f3 felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra k\u00e9rd\u00e9sek \u00e9s v\u00e1laszokban\" src=\"\/wp-content\/uploads\/2020\/05\/38b2ea076283285d934913c395863eb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/500678\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0430\u043f\u0440\u0435\u043b\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0410\u0432\u0438\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430&nbsp;\u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u043e\u0441\u0438\u0434\u0435\u043b\u043a\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c ClickHouse \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u043c \u041c\u0438\u043b\u043e\u0432\u0438\u0434\u043e\u0432\u044b\u043c \u0438 \u041a\u0438\u0440\u0438\u043b\u043b\u043e\u043c \u0428\u0432\u0430\u043a\u043e\u0432\u044b\u043c, Golang-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u0437&nbsp;\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Integros. \u041e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443&nbsp;\u043d\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442. \u041f\u043e&nbsp;\u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0441&nbsp;\u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u043d\u0430&nbsp;\u043d\u0430\u0448\u0438 \u0438 \u0437\u0440\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e&nbsp;\u0431\u044d\u043a\u0430\u043f\u044b, \u0440\u0435\u0448\u0430\u0440\u0434\u0438\u043d\u0433 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0438, Golang-\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0439 ClickHouse. \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80776,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80775","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=\"description\" content=\"\u0412 \u0430\u043f\u0440\u0435\u043b\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0410\u0432\u0438\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u043e\u0441\u0438\u0434\u0435\u043b\u043a\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c ClickHouse \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u043c \u041c\u0438\u043b\u043e\u0432\u0438\u0434\u043e\u0432\u044b\u043c \u0438 \u041a\u0438\u0440\u0438\u043b\u043b\u043e\u043c \u0428\u0432\u0430\u043a\u043e\u0432\u044b\u043c, Golang-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Integros.\" \/>\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\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah\" \/>\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\udd47ClickHouse \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0430\u043f\u0440\u0435\u043b\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0410\u0432\u0438\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u043e\u0441\u0438\u0434\u0435\u043b\u043a\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c ClickHouse \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u043c \u041c\u0438\u043b\u043e\u0432\u0438\u0434\u043e\u0432\u044b\u043c \u0438 \u041a\u0438\u0440\u0438\u043b\u043b\u043e\u043c \u0428\u0432\u0430\u043a\u043e\u0432\u044b\u043c, Golang-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Integros.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah\" \/>\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-05-08T11:42:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-08T11:42:47+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 halad\u00f3 felhaszn\u00e1l\u00f3knak - k\u00e9rd\u00e9sek \u00e9s v\u00e1laszok | ProHoster","description":"\u00c1prilisban az Avito m\u00e9rn\u00f6kei online tal\u00e1lkoz\u00f3kat terveztek a ClickHouse f\u0151 fejleszt\u0151j\u00e9vel, Alexey Milovidovval \u00e9s a Golang fejleszt\u0151j\u00e9vel, Kirill Shvakovval az Integros c\u00e9gt\u0151l.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah","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\udd47ClickHouse \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 | ProHoster","og:description":"\u0412 \u0430\u043f\u0440\u0435\u043b\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0410\u0432\u0438\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u043e\u0441\u0438\u0434\u0435\u043b\u043a\u0438 \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c ClickHouse \u0410\u043b\u0435\u043a\u0441\u0435\u0435\u043c \u041c\u0438\u043b\u043e\u0432\u0438\u0434\u043e\u0432\u044b\u043c \u0438 \u041a\u0438\u0440\u0438\u043b\u043b\u043e\u043c \u0428\u0432\u0430\u043a\u043e\u0432\u044b\u043c, Golang-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Integros.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/clickhouse-dlya-prodvinutyh-polzovatelej-v-voprosah-i-otvetah","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-05-08T11:42:47+00:00","article:modified_time":"2020-05-08T11:42:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80775","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 16:11:22","updated":"2022-09-28 05:48:13","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\/80775","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=80775"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/80775\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/80776"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=80775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=80775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=80775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}