{"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\/it\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","title":{"rendered":"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/5a2d19e6fea2a28d8d4aa9220653aefc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Salve, habr.<\/p>\n<p><\/p>\n<p>Se qualcuno utilizza il sistema <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/graphite-web\">graphite-web<\/a><\/noindex> e ha riscontrato problemi di prestazioni dello storage <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">whisper<\/a><\/noindex> (I\/O, spazio su disco consumato), allora la possibilit\u00e0 che sia stata presa in considerazione ClickHouse come sostituto dovrebbe tendere all'unit\u00e0. Questa affermazione implica che un'implementazione di terze parti \u00e8 gi\u00e0 utilizzata come demone ricevuto delle metriche, ad esempio <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grobian\/carbonwriter\">carbonwriter<\/a><\/noindex> o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-graphite\/go-carbon\">go-carbon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>ClickHouse risolve bene i problemi descritti. Ad esempio, dopo aver trasferito 2TiB di dati da whisper, sono stati ridotti a 300GiB. Non mi soffermer\u00f2 sul confronto, ci sono abbastanza articoli su questo argomento. Inoltre, fino a poco tempo fa, il nostro storage ClickHouse non era perfetto.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"problemy-s-potreblyaemym-mestom\">Problemi con lo spazio consumato<\/h3>\n<p><\/p>\n<p>A prima vista, tutto dovrebbe funzionare bene. Seguendo <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/table_engines\/graphitemergetree\/#primer-konfiguratsii\">documentazione<\/a><\/noindex>, creiamo la configurazione per lo schema di archiviazione delle metriche (in seguito <code>retention<\/code>), quindi creiamo una tabella secondo le raccomandazioni del backend scelto per 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> o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/graphouse\">graphouse<\/a><\/noindex>, a seconda dello stack utilizzato. E\u2026 si attiva una bomba a orologeria.<\/p>\n<p><\/p>\n<p>Per capire quale sia, bisogna sapere come funzionano le inserzioni e il ciclo di vita dei dati nelle tabelle dei motori della famiglia *<em>MergeTree<\/em> ClickHouse (diagrammi estratti da <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/PLMSA_gDdyM\">presentazione<\/a><\/noindex> Aleksej Zatelepin):<\/p>\n<p><\/p>\n<ul>\n<li>Viene inserito <code>un blocco<\/code> di dati. Nel nostro caso, sono arrivate le metriche.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/b60d482acca3c8d187d394f58a2d8a16.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Ogni blocco di questo tipo viene ordinato in base alla chiave <code>ORDER BY<\/code>, specificata al momento della creazione della tabella.<\/li>\n<li>Dopo l'ordinamento, <code>un pezzo<\/code> (<code>part<\/code>) di dati viene scritto su disco.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/a54903b8efa0866d24da303fa7a68134.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Il server monitora in background, per assicurarsi che non ci siano troppi pezzi, e avvia fusioni in background <code>, quindi merging).<\/code> (<code>merge<\/code>Il server smette di avviare fusioni autonomamente, non appena i dati smettono di arrivare attivamente nella<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/151c18c7b73ebc4097493b13a2e26765.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/1921908554981eca0847541f77a15790.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>partizione <code>partition<\/code> (<code>), ma \u00e8 possibile avviare il processo manualmente con il comando<\/code>OPTIMIZE <code>Se nella partizione \u00e8 rimasto solo un pezzo, non si pu\u00f2 avviare la fusione con il comando normale, \u00e8 necessario utilizzare<\/code>.<\/li>\n<li>OPTIMIZE ... FINAL <code>E cos\u00ec, arrivano le prime metriche. E occupano uno spazio.<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Gli eventi successivi possono variare a seconda di molti fattori:<\/p>\n<p><\/p>\n<ul>\n<li>La chiave di partizionamento pu\u00f2 essere sia molto piccola (un giorno) sia molto grande (alcuni mesi).<\/li>\n<li>La configurazione di retention pu\u00f2 contenere pi\u00f9 soglie di aggregazione dei dati all'interno della partizione attiva (dove vengono scritti i metrici), oppure no.<\/li>\n<li>Se ci sono molti dati, i pezzi pi\u00f9 antichi, che a causa delle fusioni in background potrebbero essere gi\u00e0 enormi (se viene scelto un chiave di partizionamento non ottimale), non si fonderanno mai con i nuovi pezzi piccoli.<\/li>\n<\/ul>\n<p><\/p>\n<p>E alla fine finisce sempre allo stesso modo. Lo spazio occupato dai metrici in ClickHouse cresce solo se:<\/p>\n<p><\/p>\n<ul>\n<li>non si applica <code>E cos\u00ec, arrivano le prime metriche. E occupano uno spazio.<\/code> manualmente oppure<\/li>\n<li>non si inseriscono dati in tutte le partizioni su base continua, per avviare prima o poi una fusione in background.<\/li>\n<\/ul>\n<p><\/p>\n<p>Il secondo modo sembra il pi\u00f9 semplice da implementare e, quindi, \u00e8 sbagliato ed \u00e8 stato testato per primo.<br \/>\nHo scritto uno script piuttosto semplice in python, che inviava metriche fittizie per ogni giorno degli ultimi 4 anni e veniva eseguito ogni ora tramite cron.<br \/>\nPoich\u00e9 tutto il lavoro di ClickHouse DBMS si basa sul fatto che questo sistema prima o poi far\u00e0 tutto il lavoro in background, ma non si sa quando, non sono stato in grado di aspettare il momento in cui i vecchi grandi pezzi si degnassero di iniziare a fondersi con i nuovi pezzi piccoli. \u00c8 diventato chiaro che era necessario trovare un modo per automatizzare le ottimizzazioni forzate.<\/p>\n<p>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/60b0354cb65dcba6e8402b67261041ff.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3 id=\"informaciya-v-sistemnyh-tablicah-clickhouse\">Informazioni nelle tabelle di sistema di ClickHouse<\/h3>\n<p><\/p>\n<p>Diamo un'occhiata alla struttura della tabella <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system_tables-parts\">system.parts<\/a><\/noindex>. Queste sono informazioni complete su ogni pezzo di tutte le tabelle sul server ClickHouse. Contiene, tra l'altro, le seguenti colonne:<\/p>\n<p><\/p>\n<ul>\n<li>nome del database (<code>database<\/code>);<\/li>\n<li>nome della tabella (<code>table<\/code>);<\/li>\n<li>nome e ID della partizione (<code>), ma \u00e8 possibile avviare il processo manualmente con il comando<\/code> &amp; <code>partition_id<\/code>);<\/li>\n<li>quando \u00e8 stato creato il pezzo (<code>modification_time<\/code>);<\/li>\n<li>data minima e massima nel pezzo (la partizione avviene per giorno) (<code>min_date<\/code> &amp; <code>max_date<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>C'\u00e8 anche la tabella <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system-graphite-retentions\">system.graphite_retentions<\/a><\/noindex>, con i seguenti campi interessanti:<\/p>\n<p><\/p>\n<ul>\n<li>nome del database (<code>Tables.database<\/code>);<\/li>\n<li>nome della tabella (<code>Tables.table<\/code>);<\/li>\n<li>et\u00e0 del metric, quando deve essere applicata la successiva aggregazione (<code>age<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Ecco:<\/p>\n<p><\/p>\n<ol>\n<li>Abbiamo una tabella dei pezzi e una tabella delle regole di aggregazione.<\/li>\n<li>Uniamo la loro intersezione e otteniamo tutte le tabelle *GraphiteMergeTree.<\/li>\n<li>Cerchiamo tutte le partizioni in cui:\n<ul>\n<li>c'\u00e8 pi\u00f9 di un pezzo<\/li>\n<li>oppure \u00e8 giunto il momento di applicare la seguente regola di aggregazione, e <code>modification_time<\/code> \u00e8 pi\u00f9vecchio di questo momento.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"realizaciya\">Implementazione<\/h3>\n<p>\n<b class=\"spoiler_title\">Questa richiesta<\/b><\/p>\n<pre><code class=\"sql\">SELEZIONA\n    concat(p.database, '.', p.table) AS tabella,\n    p.partition_id AS partition_id,\n    p.partition AS partizione,\n    -- La \"regola\" pi\u00f9 \"antica\" che pu\u00f2 essere applicata a\n    -- una partizione, ma non in futuro, vedi (*)\n    max(g.age) AS et\u00e0,\n    -- Numero di pezzi nella partizione\n    countDistinct(p.name) AS parti,\n    -- La metrica pi\u00f9 vecchia nella partizione \u00e8 considerata 00:00:00 del giorno successivo\n    toDateTime(max(p.max_date + 1)) AS max_time,\n    -- Quando la partizione deve essere ottimizzata\n    max_time + et\u00e0 AS rollup_time,\n    -- Quando il pezzo pi\u00f9 vecchio nella partizione \u00e8 stato aggiornato\n    min(p.modification_time) AS modificato_il\nDA system.parts AS p\nINNER JOIN\n(\n    -- Tutte le regole per tutte le tabelle *GraphiteMergeTree\n    SELEZIONA\n        Tables.database AS database,\n        Tables.table AS tabella,\n        et\u00e0\n    DA system.graphite_retentions\n    ARRAY JOIN Tables\n    GROUP BY\n        database,\n        tabella,\n        et\u00e0\n) AS g ON\n    (p.table = g.table)\n    E (p.database = g.database)\nDOVE\n    -- Solo pezzi attivi\n    p.active\n    -- (*) E solo righe in cui le regole di aggregazione devono gi\u00e0 essere state applicate\n    E ((toDateTime(p.max_date + 1) + g.age) &lt; now())\nGROUP BY\n    tabella,\n    partizione\nHAVING\n    -- Solo partizioni pi\u00f9 giovani del momento di ottimizzazione\n    (modificato_il  1)\nORDINA PER\n    tabella ASC,\n    partizione ASC,\n    et\u00e0 ASC<\/code><\/pre>\n<p><\/p>\n<p>restituisce ciascuna delle partizioni delle tabelle *GraphiteMergeTree, la cui fusione dovrebbe portare al recupero di spazio su disco. Resta solo da fare una cosa: eseguire una query su di esse. <code>E cos\u00ec, arrivano le prime metriche. E occupano uno spazio.<\/code>. Nella realizzazione finale \u00e8 stato considerato anche il fatto che non \u00e8 necessario toccare le partizioni con scrittura attiva.<\/p>\n<p><\/p>\n<p>\u00c8 proprio questo che fa il progetto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">graphite-ch-optimizer<\/a><\/noindex>. I precedenti colleghi di Yandex.Market lo hanno testato in produzione, il risultato del lavoro \u00e8 visibile qui sotto. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: come ridurre significativamente lo spazio su disco\" src=\"\/wp-content\/uploads\/2019\/12\/858dcbf538135d8d57964a71b2b6ca23.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se si avvia il programma su un server con ClickHouse, questo inizier\u00e0 a funzionare in modalit\u00e0 demone. Una volta all'ora verr\u00e0 eseguita una query per controllare se sono apparse nuove partizioni pi\u00f9 vecchie di tre giorni che possono essere ottimizzate.<\/p>\n<p><\/p>\n<p>Nei prossimi piani c'\u00e8 l'intenzione di fornire, almeno, pacchetti deb e, se possibile, anche rpm.<\/p>\n<p><\/p>\n<h3 id=\"vmesto-zaklyucheniya\">In conclusione<\/h3>\n<p><\/p>\n<p>Negli oltre 9 mesi trascorsi, ho trascorso molto tempo all'interno della mia azienda <noindex><a rel=\"nofollow\" href=\"https:\/\/www.innogames.com\/ru\/\">InnoGames<\/a><\/noindex> nel confronto tra ClickHouse e graphite-web. \u00c8 stata una buona esperienza, il risultato della quale ha reso possibile un rapido passaggio da whisper a ClickHouse come archivio per le metriche. Spero che questo articolo sia una sorta di inizio di un ciclo su quali miglioramenti sono stati apportati da noi in diverse parti di questo stack e cosa sar\u00e0 fatto in futuro.<\/p>\n<p><\/p>\n<p>Per lo sviluppo della richiesta sono stati spesi diversi litri di birra e giorni di lavoro insieme a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/v0devil\/\" class=\"user_link\">v0devil<\/a><\/noindex>, per cui desidero esprimergli la mia gratitudine. E anche per la revisione di questo articolo.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">Pagina del progetto su github<\/a><\/noindex><\/p>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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: come ridurre significativamente lo spazio utilizzato sui dischi | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/53944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=53944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/53944\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=53944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=53944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=53944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}