{"id":53944,"date":"2019-12-13T00:00:00","date_gmt":"2019-12-12T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah"},"modified":"2020-02-18T14:01:53","modified_gmt":"2020-02-18T11:01:53","slug":"clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","title":{"rendered":"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/5a2d19e6fea2a28d8d4aa9220653aefc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>V\u00edt\u00e1m v\u00e1s, habr.<\/p>\n<p><\/p>\n<p>Pokud n\u011bkdo vyu\u017e\u00edv\u00e1 syst\u00e9m <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/graphite-web\">graphite-web<\/a><\/noindex> a narazil na probl\u00e9m s v\u00fdkonem \u00falo\u017ei\u0161t\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">whisper<\/a><\/noindex> (I\/O, spot\u0159ebovan\u00e9 diskov\u00e9 m\u00edsto), pak by pravd\u011bpodobnost, \u017ee se pod\u00edval na ClickHouse jako alternativu, m\u011bla sm\u011b\u0159ovat k jedn\u00e9. Tato tvrzen\u00ed p\u0159edpokl\u00e1daj\u00ed, \u017ee se ji\u017e pou\u017e\u00edv\u00e1 extern\u00ed implementace pro p\u0159ij\u00edm\u00e1n\u00ed metrik, nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grobian\/carbonwriter\">carbonwriter<\/a><\/noindex> nebo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-graphite\/go-carbon\">go-carbon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>ClickHouse dob\u0159e \u0159e\u0161\u00ed v\u00fd\u0161e popsan\u00e9 probl\u00e9my. Nap\u0159\u00edklad po p\u0159etlaku 2TiB dat z whisper se vejdou do 300GiB. Podrobn\u011b se t\u00edmto srovn\u00e1n\u00edm zab\u00fdvat nebudu, \u010dl\u00e1nk\u016f na toto t\u00e9ma je dost. Krom\u011b toho, do ned\u00e1vn\u00e9 doby to s na\u0161\u00edm ClickHouse \u00falo\u017ei\u0161t\u011bm nebylo \u00fapln\u011b ide\u00e1ln\u00ed.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"problemy-s-potreblyaemym-mestom\">Probl\u00e9my se spot\u0159ebovan\u00fdm m\u00edstem<\/h3>\n<p><\/p>\n<p>Na prvn\u00ed pohled by to m\u011blo fungovat dob\u0159e. N\u00e1sledujeme <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/table_engines\/graphitemergetree\/#primer-konfiguratsii\">dokumentaci<\/a><\/noindex>, vytvo\u0159\u00edme konfiguraci pro sch\u00e9ma ukl\u00e1d\u00e1n\u00ed metrik (d\u00e1le <code>retention<\/code>), pak vytvo\u0159\u00edme tabulku podle doporu\u010den\u00ed vybran\u00e9ho backendu pro graphite-web: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lomik\/carbon-clickhouse\">carbon-clickhouse<\/a><\/noindex>+<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/lomik\/graphite-clickhouse\">graphite-clickhouse<\/a><\/noindex> nebo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/graphouse\">graphouse<\/a><\/noindex>, v z\u00e1vislosti na tom, jak\u00fd stack se pou\u017e\u00edv\u00e1. A... spou\u0161t\u00ed se bomba se zpo\u017ed\u011bn\u00edm.<\/p>\n<p><\/p>\n<p>Abychom pochopili, jak\u00e1, mus\u00edme v\u011bd\u011bt, jak funguj\u00ed vkl\u00e1d\u00e1n\u00ed a dal\u0161\u00ed \u017eivotn\u00ed cyklus dat v tabulk\u00e1ch motor\u016f rodiny *<em>MergeTree<\/em> ClickHouse (diagramy p\u0159evzaty od <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/PLMSA_gDdyM\">prezentaci<\/a><\/noindex> Alexeje Zatelepin):<\/p>\n<p><\/p>\n<ul>\n<li>Vkl\u00e1d\u00e1 se <code>blok<\/code> dat. V na\u0161em p\u0159\u00edpad\u011b to byly p\u0159ijat\u00e9 metriky.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/b60d482acca3c8d187d394f58a2d8a16.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Ka\u017ed\u00fd takov\u00fd blok je p\u0159ed zaps\u00e1n\u00edm na disk se\u0159azen podle kl\u00ed\u010de <code>ORDER BY<\/code>, uveden\u00e9ho p\u0159i vytv\u00e1\u0159en\u00ed tabulky.<\/li>\n<li>Po se\u0159azen\u00ed, <code>kousek<\/code> (<code>part<\/code>) dat se zap\u00ed\u0161e na disk.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/a54903b8efa0866d24da303fa7a68134.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Server na pozad\u00ed sleduje, aby takov\u00fdch kousk\u016f nebylo mnoho, a spou\u0161t\u00ed pozad\u00ed <code>slou\u010den\u00ed<\/code> (<code>slou\u010dit<\/code>, d\u00e1le mergen).<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/151c18c7b73ebc4097493b13a2e26765.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/1921908554981eca0847541f77a15790.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Server p\u0159est\u00e1v\u00e1 spou\u0161t\u011bt mergen automaticky, jakmile data p\u0159est\u00e1vaj\u00ed aktivn\u011b p\u0159ich\u00e1zet do <code>partice<\/code> (<code>partition<\/code>), ale proces lze spustit ru\u010dn\u011b p\u0159\u00edkazem <code>OPTIMIZE<\/code>.<\/li>\n<li>Pokud v partici z\u016fstal pouze jeden kousek, pak nelze spustit mergen b\u011b\u017en\u00fdm p\u0159\u00edkazem, je nutn\u00e9 pou\u017e\u00edt <code>OPTIMIZE ... FINAL<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>A tak, p\u0159ich\u00e1zej\u00ed prvn\u00ed metriky. A ty zab\u00edraj\u00ed ur\u010dit\u00e9 m\u00edsto. N\u00e1sleduj\u00edc\u00ed ud\u00e1losti se mohou m\u00edrn\u011b li\u0161it v z\u00e1vislosti na mnoha faktorech:<\/p>\n<p><\/p>\n<ul>\n<li>Kl\u00ed\u010d pro partitioning m\u016f\u017ee b\u00fdt bu\u010f velmi mal\u00fd (den), nebo velmi velk\u00fd (n\u011bkolik m\u011bs\u00edc\u016f).<\/li>\n<li>Konfigurace retention m\u016f\u017ee obsahovat n\u011bkolik v\u00fdznamn\u00fdch prah\u016f agregace dat uvnit\u0159 aktivn\u00ed partice (kam se zapisuj\u00ed metriky), nebo tak\u00e9 nemus\u00ed.<\/li>\n<li>Pokud je dat p\u0159\u00edli\u0161 mnoho, pak nejstar\u0161\u00ed kusy, kter\u00e9 d\u00edky pozad\u00ed slu\u010dov\u00e1n\u00ed mohou b\u00fdt u\u017e obrovsk\u00e9 (p\u0159i volb\u011b neoptim\u00e1ln\u00edho kl\u00ed\u010de pro partitioning), se nebudou slu\u010dovat samy s nov\u00fdmi mal\u00fdmi kusy.<\/li>\n<\/ul>\n<p><\/p>\n<p>A v\u017edy to kon\u010d\u00ed stejn\u011b. M\u00edsto, kter\u00e9 zab\u00edraj\u00ed metriky v ClickHouse, pouze roste, pokud:<\/p>\n<p><\/p>\n<ul>\n<li>se neaplikuje <code>OPTIMIZE ... FINAL<\/code> ru\u010dn\u011b nebo<\/li>\n<li>se ned\u00e1vaj\u00ed data do v\u0161ech parti\u00ed na trval\u00e9m z\u00e1klad\u011b, aby d\u0159\u00edve \u010di pozd\u011bji spu\u0161t\u011bla pozad\u00ed slu\u010dov\u00e1n\u00ed.<\/li>\n<\/ul>\n<p><\/p>\n<p>Druh\u00fd zp\u016fsob se zd\u00e1 b\u00fdt nejjednodu\u0161\u0161\u00ed na realizaci, a proto je \u0161patn\u00fd a byl vyzkou\u0161en jako prvn\u00ed.<br \/>\nNapsal jsem dost jednoduch\u00fd skript v pythonu, kter\u00fd odes\u00edlal fiktivn\u00ed metriky za ka\u017ed\u00fd den za posledn\u00ed 4 roky a spou\u0161t\u011bl se ka\u017edou hodinu pomoc\u00ed cron.<br \/>\nJeliko\u017e ve\u0161ker\u00e1 pr\u00e1ce ClickHouse DBMS je postavena na tom, \u017ee tento syst\u00e9m d\u0159\u00edve nebo pozd\u011bji ud\u011bl\u00e1 ve\u0161kerou pozad\u00ed pr\u00e1ci, ale nen\u00ed zn\u00e1mo kdy, nedok\u00e1zal jsem se do\u010dkat okam\u017eiku, kdy se star\u00e9 obrovsk\u00e9 kusy ur\u00e1\u010d\u00ed za\u010d\u00edt slu\u010dov\u00e1n\u00ed s nov\u00fdmi mal\u00fdmi. Bylo jasn\u00e9, \u017ee je pot\u0159eba hledat zp\u016fsob, jak automatizovat nucen\u00e9 optimalizace.<\/p>\n<p>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/60b0354cb65dcba6e8402b67261041ff.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3 id=\"informaciya-v-sistemnyh-tablicah-clickhouse\">Informace v syst\u00e9mov\u00fdch tabulk\u00e1ch ClickHouse<\/h3>\n<p><\/p>\n<p>Pod\u00edvejme se na strukturu tabulky <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system_tables-parts\">system.parts<\/a><\/noindex>. To je vy\u010derp\u00e1vaj\u00edc\u00ed informace o ka\u017ed\u00e9m kusu v\u0161ech tabulek na serveru ClickHouse. Obsahuje mimo jin\u00e9 n\u00e1sleduj\u00edc\u00ed sloupce:<\/p>\n<p><\/p>\n<ul>\n<li>n\u00e1zev DB (<code>database<\/code>);<\/li>\n<li>n\u00e1zev tabulky (<code>table<\/code>);<\/li>\n<li>n\u00e1zev a ID parti\u010dn\u00ed (<code>partition<\/code> &amp;&amp; <code>partition_id<\/code>);<\/li>\n<li>kdy byl kus vytvo\u0159en (<code>modification_time<\/code>);<\/li>\n<li>minim\u00e1ln\u00ed a maxim\u00e1ln\u00ed datum v kuse (partitioning jde podle dn\u00ed) (<code>min_date<\/code> &amp;&amp; <code>max_date<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Existuje tak\u00e9 tabulka <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system-graphite-retentions\">system.graphite_retentions<\/a><\/noindex>, s n\u00e1sleduj\u00edc\u00edmi zaj\u00edmav\u00fdmi poli:<\/p>\n<p><\/p>\n<ul>\n<li>n\u00e1zev DB (<code>Tables.database<\/code>);<\/li>\n<li>n\u00e1zev tabulky (<code>Tables.table<\/code>);<\/li>\n<li>v\u011bk metriky, kdy by m\u011bla b\u00fdt aplikov\u00e1na dal\u0161\u00ed agregace (<code>age<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Tak\u017ee:<\/p>\n<p><\/p>\n<ol>\n<li>M\u00e1me tabulku kus\u016f a tabulku pravidel agregace.<\/li>\n<li>Slu\u010dujeme jejich pr\u016fse\u010d\u00edk a z\u00edsk\u00e1v\u00e1me v\u0161echny tabulky *GraphiteMergeTree.<\/li>\n<li>Hled\u00e1me v\u0161echny partie, ve kter\u00fdch:\n<ul>\n<li>je v\u00edce ne\u017e jeden kus<\/li>\n<li>nebo nastal okam\u017eik aplikovat dal\u0161\u00ed pravidlo agregace, a <code>modification_time<\/code> je star\u0161\u00ed ne\u017e tento okam\u017eik.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"realizaciya\">Implementace<\/h3>\n<p>\n<b class=\"spoiler_title\">Tento dotaz<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE\n    concat(p.database, '.', p.table) AS table,\n    p.partition_id AS partition_id,\n    p.partition AS partition,\n    -- Nejstar\u0161\u00ed pravidlo, kter\u00e9 m\u016f\u017ee b\u00fdt aplikov\u00e1no na\n    -- partition, ale ne v budoucnu, viz (*)\n    max(g.age) AS age,\n    -- Po\u010det \u010d\u00e1st\u00ed v partition\n    countDistinct(p.name) AS parts,\n    -- Nejstar\u0161\u00ed metrika v partition se pova\u017euje za 00:00:00 n\u00e1sleduj\u00edc\u00edho dne\n    toDateTime(max(p.max_date + 1)) AS max_time,\n    -- Kdy by m\u011bla b\u00fdt partition optimalizov\u00e1na\n    max_time + age AS rollup_time,\n    -- Kdy byla nejstar\u0161\u00ed \u010d\u00e1st v partition aktualizov\u00e1na\n    min(p.modification_time) AS modified_at\nZ system.parts AS p\nINNER JOIN\n(\n    -- V\u0161echna pravidla pro v\u0161echny tabulky *GraphiteMergeTree\n    VYBERTE\n        Tables.database AS database,\n        Tables.table AS table,\n        age\n    Z system.graphite_retentions\n    ARRAY JOIN Tables\n    GROUP BY\n        database,\n        table,\n        age\n) AS g ON\n    (p.table = g.table)\n    A (p.database = g.database)\nKDE\n    -- Pouze aktivn\u00ed \u010d\u00e1sti\n    p.active\n    -- (*) A pouze \u0159\u00e1dky, kde ji\u017e m\u011bla b\u00fdt aplikov\u00e1na pravidla agregace\n    A ((toDateTime(p.max_date + 1) + g.age) &lt; now())\nGROUP BY\n    table,\n    partition\nHAVING\n    -- Pouze partition, kter\u00e9 jsou mlad\u0161\u00ed ne\u017e \u010das optimalizace\n    (modified_at  1)\nORDINUJTE PODLE\n    table ASC,\n    partition ASC,\n    age ASC<\/code><\/pre>\n<p><\/p>\n<p>vrac\u00ed ka\u017edou z partition tabulek *GraphiteMergeTree, jejich\u017e slou\u010den\u00ed by m\u011blo v\u00e9st k uvoln\u011bn\u00ed diskov\u00e9ho prostoru. Zb\u00fdv\u00e1 jen mal\u00fd detail: proj\u00edt je v\u0161echny dotazem <code>OPTIMIZE ... FINAL<\/code>. V kone\u010dn\u00e9 realizaci byl tak\u00e9 zohledn\u011bn fakt, \u017ee partition s aktivn\u00edm z\u00e1pisem nen\u00ed t\u0159eba se dot\u00fdkat.<\/p>\n<p><\/p>\n<p>Pr\u00e1v\u011b to d\u011bl\u00e1 projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">graphite-ch-optimizer<\/a><\/noindex>. B\u00fdval\u00ed kolegov\u00e9 z Yandex.Market ho vyzkou\u0161eli v produkci, v\u00fdsledek pr\u00e1ce m\u016f\u017eete vid\u011bt n\u00ed\u017ee. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch\" src=\"\/wp-content\/uploads\/2019\/12\/858dcbf538135d8d57964a71b2b6ca23.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokud spust\u00edte program na serveru s ClickHouse, za\u010dne jednodu\u0161e fungovat v re\u017eimu d\u00e9mona. Ka\u017edou hodinu bude prov\u00e1d\u011bt dotaz, aby zkontroloval, zda se neobjevily nov\u00e9 partition star\u0161\u00ed t\u0159\u00ed dn\u016f, kter\u00e9 lze optimalizovat.<\/p>\n<p><\/p>\n<p>V nejbli\u017e\u0161\u00edch pl\u00e1nech je poskytnout alespo\u0148 deb bal\u00ed\u010dky, a pokud to bude mo\u017en\u00e9, i rpm.<\/p>\n<p><\/p>\n<h3 id=\"vmesto-zaklyucheniya\">Na z\u00e1v\u011br<\/h3>\n<p><\/p>\n<p>V uplynul\u00fdch 9 m\u011bs\u00edc\u00edch jsem ve sv\u00e9 spole\u010dnosti <noindex><a rel=\"nofollow\" href=\"https:\/\/www.innogames.com\/ru\/\">InnoGames<\/a><\/noindex> str\u00e1vil hodn\u011b \u010dasu, varu na pomez\u00ed ClickHouse a graphite-web. Byla to dobr\u00e1 zku\u0161enost, jej\u00edm\u017e v\u00fdsledkem byl mo\u017en\u00fd rychl\u00fd p\u0159echod z whisper na ClickHouse jako \u00falo\u017ei\u0161t\u011b metrik. Douf\u00e1m, \u017ee tento \u010dl\u00e1nek je jak\u00fdmsi za\u010d\u00e1tkem cyklu o tom, jak\u00e1 zlep\u0161en\u00ed jsme zavedli do r\u016fzn\u00fdch \u010d\u00e1st\u00ed tohoto stacku, a co bude ud\u011bl\u00e1no v budoucnu.<\/p>\n<p><\/p>\n<p>Na v\u00fdvoj dotazu bylo spot\u0159ebov\u00e1no n\u011bkolik litr\u016f piva a administrativn\u00edch dn\u016f spole\u010dn\u011b s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/v0devil\/\" class=\"user_link\">v0devil<\/a><\/noindex>, za co\u017e chci vyj\u00e1d\u0159it svou vd\u011b\u010dnost. Tak\u00e9 za recenzov\u00e1n\u00ed tohoto \u010dl\u00e1nku.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">Str\u00e1nka projektu na githubu<\/a><\/noindex><\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/479564\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e, habr. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 graphite-web \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 whisper (IO, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u043e\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e), \u0442\u043e \u0448\u0430\u043d\u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b\u043b \u0431\u0440\u043e\u0448\u0435\u043d \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 ClickHouse \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043c\u0435\u043d\u044b, \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435. \u0414\u0430\u043d\u043d\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u0435\u043c\u043e\u043d\u0430 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 carbonwriter \u0438\u043b\u0438 go-carbon. ClickHouse \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0435\u0448\u0430\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53944","post","type-post","status-publish","format-standard","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=\".\" \/>\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\/cs\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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 + Graphite: \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\".\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah\" \/>\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=\"2019-12-12T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:53+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 + Graphite: jak v\u00fdrazn\u011b sn\u00ed\u017eit spot\u0159ebovan\u00e9 m\u00edsto na disc\u00edch | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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 + Graphite: \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445 | ProHoster","og:description":".","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","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":"2019-12-12T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53944","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":"2026-01-24 09:26:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:15:54","updated":"2026-01-24 09:26:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/53944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=53944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/53944\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=53944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=53944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=53944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}