{"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\/pt\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","title":{"rendered":"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/5a2d19e6fea2a28d8d4aa9220653aefc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sauda\u00e7\u00f5es, habr.<\/p>\n<p><\/p>\n<p>Se algu\u00e9m est\u00e1 explorando o sistema <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/graphite-web\">graphite-web<\/a><\/noindex> e enfrentou problemas de desempenho de armazenamento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">whisper<\/a><\/noindex> (I\/O, espa\u00e7o em disco consumido), a probabilidade de ter considerado ClickHouse como uma substitui\u00e7\u00e3o deve se aproximar de um. Esta afirma\u00e7\u00e3o implica que uma implementa\u00e7\u00e3o de terceiros j\u00e1 est\u00e1 sendo usada como receptor de m\u00e9tricas, como <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grobian\/carbonwriter\">carbonwriter<\/a><\/noindex> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-graphite\/go-carbon\">go-carbon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>ClickHouse resolve bem os problemas descritos. Por exemplo, ap\u00f3s transferir 2TiB de dados do whisper, eles caberam em 300GiB. N\u00e3o vou detalhar a compara\u00e7\u00e3o, h\u00e1 muitos artigos sobre o assunto. Al\u00e9m disso, at\u00e9 recentemente, nosso armazenamento ClickHouse n\u00e3o estava totalmente ideal.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"problemy-s-potreblyaemym-mestom\">Problemas com o espa\u00e7o consumido<\/h3>\n<p><\/p>\n<p>\u00c0 primeira vista, tudo deve funcionar bem. Seguindo <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/table_engines\/graphitemergetree\/#primer-konfiguratsii\">documenta\u00e7\u00e3o<\/a><\/noindex>, criamos a configura\u00e7\u00e3o para o esquema de armazenamento de m\u00e9tricas (daqui em diante <code>retention<\/code>), em seguida, criamos uma tabela de acordo com a recomenda\u00e7\u00e3o do backend escolhido para 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> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/graphouse\">graphouse<\/a><\/noindex>, dependendo da pilha utilizada. E... uma bomba-rel\u00f3gio \u00e9 ativada.<\/p>\n<p><\/p>\n<p>Para entender qual \u00e9, precisamos saber como funcionam as inser\u00e7\u00f5es e o caminho que os dados percorrem nas tabelas dos motores da fam\u00edlia *<em>MergeTree<\/em> ClickHouse (diagramas retirados de <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/PLMSA_gDdyM\">apresenta\u00e7\u00e3o<\/a><\/noindex> Aleksei Zatelepina):<\/p>\n<p><\/p>\n<ul>\n<li>Um <code>bloco<\/code> de dados \u00e9 inserido. No nosso caso, essas s\u00e3o m\u00e9tricas.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/b60d482acca3c8d187d394f58a2d8a16.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Cada bloco \u00e9 ordenado antes de ser gravado no disco, de acordo com a chave <code>FUN\u00c7\u00c3O AGREGADA DEFINIDA PELO USU\u00c1RIO CLR<\/code>, especificada na cria\u00e7\u00e3o da tabela.<\/li>\n<li>Ap\u00f3s a ordena\u00e7\u00e3o, <code>um peda\u00e7o<\/code> (<code>part<\/code>) de dados \u00e9 gravado no disco.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/a54903b8efa0866d24da303fa7a68134.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>O servidor monitora em segundo plano para que n\u00e3o haja muitos desses peda\u00e7os, e inicia <code>fus\u00f5es<\/code> (<code>mesclar<\/code>, ap\u00f3s isso, as merges).<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/151c18c7b73ebc4097493b13a2e26765.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/1921908554981eca0847541f77a15790.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>O servidor para de iniciar merges automaticamente assim que os dados param de ser inseridos ativamente na <code>parti\u00e7\u00e3o<\/code> (<code>partition<\/code>), mas o processo pode ser iniciado manualmente com o comando <code>OPTIMIZE<\/code>.<\/li>\n<li>Se sobrar apenas um peda\u00e7o na parti\u00e7\u00e3o, n\u00e3o ser\u00e1 poss\u00edvel iniciar a merge com um comando normal, sendo necess\u00e1rio usar <code>OPTIMIZE ... FINAL<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Assim, as primeiras m\u00e9tricas chegam. E elas ocupam um certo espa\u00e7o. Os eventos subsequentes podem variar dependendo de muitos fatores:<\/p>\n<p><\/p>\n<ul>\n<li>A chave de particionamento pode ser muito pequena (um dia) ou muito grande (v\u00e1rios meses).<\/li>\n<li>A configura\u00e7\u00e3o de retention pode conter v\u00e1rios limites significativos de agrega\u00e7\u00e3o de dados dentro da parti\u00e7\u00e3o ativa (onde as m\u00e9tricas est\u00e3o sendo gravadas), ou pode n\u00e3o conter.<\/li>\n<li>Se houver muitos dados, os primeiros peda\u00e7os, que devido a fus\u00f5es em segundo plano podem j\u00e1 ser enormes (ao escolher uma chave de parti\u00e7\u00e3o sub\u00f3tima), n\u00e3o ser\u00e3o mais mesclados com os novos peda\u00e7os pequenos.<\/li>\n<\/ul>\n<p><\/p>\n<p>E sempre termina da mesma forma. O espa\u00e7o ocupado pelas m\u00e9tricas no ClickHouse s\u00f3 aumenta se:<\/p>\n<p><\/p>\n<ul>\n<li>n\u00e3o aplicarmos <code>OPTIMIZE ... FINAL<\/code> manualmente ou<\/li>\n<li>n\u00e3o inserirmos dados em todas as parti\u00e7\u00f5es regularmente, para que, cedo ou tarde, uma fus\u00e3o em segundo plano possa ser iniciada.<\/li>\n<\/ul>\n<p><\/p>\n<p>O segundo m\u00e9todo parece o mais simples de implementar e, portanto, \u00e9 o errado, e foi testado em primeiro lugar.<br \/>\nEscrevi um script Python bastante simples que enviava m\u00e9tricas fict\u00edcias para cada dia dos \u00faltimos 4 anos e era executado a cada hora pelo cron.<br \/>\nUma vez que todo o trabalho do ClickHouse DBMS \u00e9 baseado no fato de que este sistema far\u00e1 eventualmente todo o trabalho em segundo plano, mas n\u00e3o se sabe quando, n\u00e3o consegui esperar pelo momento em que os antigos peda\u00e7os enormes decidissem come\u00e7ar a mesclar com os novos peda\u00e7os pequenos. Ficou claro que precisava encontrar uma maneira de automatizar as otimiza\u00e7\u00f5es for\u00e7adas.<\/p>\n<p>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/60b0354cb65dcba6e8402b67261041ff.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3 id=\"informaciya-v-sistemnyh-tablicah-clickhouse\">As informa\u00e7\u00f5es nas tabelas do sistema ClickHouse<\/h3>\n<p><\/p>\n<p>Vamos olhar para a estrutura da tabela <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system_tables-parts\">system.parts<\/a><\/noindex>. Esta \u00e9 uma informa\u00e7\u00e3o abrangente sobre cada peda\u00e7o de todas as tabelas no servidor ClickHouse. Cont\u00e9m, entre outras coisas, as seguintes colunas:<\/p>\n<p><\/p>\n<ul>\n<li>nome do banco de dados (<code>database<\/code>);<\/li>\n<li>nome da tabela (<code>table<\/code>);<\/li>\n<li>nome e ID da parti\u00e7\u00e3o (<code>partition<\/code> &amp; <code>partition_id<\/code>);<\/li>\n<li>quando o peda\u00e7o foi criado (<code>modification_time<\/code>);<\/li>\n<li>data m\u00ednima e m\u00e1xima no peda\u00e7o (a parti\u00e7\u00e3o \u00e9 feita por dias) (<code>min_date<\/code> &amp; <code>max_date<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>H\u00e1 tamb\u00e9m uma tabela <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system-graphite-retentions\">system.graphite_retentions<\/a><\/noindex>, com os seguintes campos interessantes:<\/p>\n<p><\/p>\n<ul>\n<li>nome do banco de dados (<code>Tables.database<\/code>);<\/li>\n<li>nome da tabela (<code>Tables.table<\/code>);<\/li>\n<li>idade da m\u00e9trica, quando a pr\u00f3xima agrega\u00e7\u00e3o deve ser aplicada (<code>age<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Ent\u00e3o:<\/p>\n<p><\/p>\n<ol>\n<li>Temos uma tabela de peda\u00e7os e uma tabela de regras de agrega\u00e7\u00e3o.<\/li>\n<li>Unimos sua interse\u00e7\u00e3o e obtemos todas as tabelas *GraphiteMergeTree.<\/li>\n<li>Estamos procurando todas as parti\u00e7\u00f5es onde:\n<ul>\n<li>h\u00e1 mais de um peda\u00e7o<\/li>\n<li>ou chegou o momento de aplicar a pr\u00f3xima regra de agrega\u00e7\u00e3o, e <code>modification_time<\/code> \u00e9 mais velho que esse momento.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"realizaciya\">Implementa\u00e7\u00e3o<\/h3>\n<p>\n<b class=\"spoiler_title\">Esta consulta<\/b><\/p>\n<pre><code class=\"sql\">SELECIONE\n    concat(p.database, '.', p.table) AS tabela,\n    p.partition_id AS id_parti\u00e7\u00e3o,\n    p.partition AS parti\u00e7\u00e3o,\n    -- A \"regra mais antiga\" que pode ser aplicada a\n    -- parti\u00e7\u00e3o, mas n\u00e3o no futuro, veja (*)\n    max(g.age) AS idade,\n    -- N\u00famero de peda\u00e7os na parti\u00e7\u00e3o\n    countDistinct(p.name) AS partes,\n    -- A m\u00e9trica mais antiga na parti\u00e7\u00e3o \u00e9 considerada 00:00:00 do dia seguinte\n    toDateTime(max(p.max_date + 1)) AS max_tempo,\n    -- Quando a parti\u00e7\u00e3o deve ser otimizada\n    max_tempo + idade AS tempo_rollup,\n    -- Quando o peda\u00e7o mais antigo na parti\u00e7\u00e3o foi atualizado\n    min(p.modification_time) AS atualizado_em\nFROM system.parts AS p\nINNER JOIN\n(\n    -- Todas as regras para todas as tabelas *GraphiteMergeTree\n    SELECIONE\n        Tables.database AS database,\n        Tables.table AS table,\n        idade\n    FROM system.graphite_retentions\n    ARRAY JOIN Tables\n    GRUPAR POR\n        database,\n        table,\n        idade\n) AS g ON\n    (p.table = g.table)\n    AND (p.database = g.database)\nWHERE\n    -- Apenas peda\u00e7os ativos\n    p.active\n    -- (*) E apenas linhas onde as regras de agrega\u00e7\u00e3o j\u00e1 devem ser aplicadas\n    AND ((toDateTime(p.max_date + 1) + g.idade) &lt; now())\nGRUPAR POR\n    tabela,\n    parti\u00e7\u00e3o\nHAVING\n    -- Apenas parti\u00e7\u00f5es que s\u00e3o mais jovens que o momento da otimiza\u00e7\u00e3o\n    (atualizado_em  1)\nORDER BY\n    tabela ASC,\n    parti\u00e7\u00e3o ASC,\n    idade ASC<\/code><\/pre>\n<p><\/p>\n<p>retorna cada uma das parti\u00e7\u00f5es das tabelas *GraphiteMergeTree, cujas mesclagens devem resultar na libera\u00e7\u00e3o de espa\u00e7o em disco. Agora resta apenas passar por todas elas com a consulta <code>OPTIMIZE ... FINAL<\/code>. Na implementa\u00e7\u00e3o final, tamb\u00e9m foi considerado que as parti\u00e7\u00f5es com grava\u00e7\u00e3o ativa n\u00e3o precisam ser tocadas.<\/p>\n<p><\/p>\n<p>\u00c9 exatamente isso que faz o projeto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">graphite-ch-optimizer<\/a><\/noindex>. Antigos colegas do Yandex.Market testaram-no em produ\u00e7\u00e3o, o resultado do trabalho pode ser visto abaixo. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: como reduzir significativamente o espa\u00e7o em disco usado\" src=\"\/wp-content\/uploads\/2019\/12\/858dcbf538135d8d57964a71b2b6ca23.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se voc\u00ea executar o programa em um servidor com ClickHouse, ele come\u00e7ar\u00e1 a funcionar em modo daemon. Uma vez por hora, uma consulta ser\u00e1 executada, verificando se novas parti\u00e7\u00f5es com mais de tr\u00eas dias est\u00e3o dispon\u00edveis para otimiza\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Nos planos mais pr\u00f3ximos est\u00e1 fornecer, pelo menos, pacotes deb e, se poss\u00edvel, tamb\u00e9m rpm.<\/p>\n<p><\/p>\n<h3 id=\"vmesto-zaklyucheniya\">Em conclus\u00e3o<\/h3>\n<p><\/p>\n<p>Nos \u00faltimos 9 meses, passei muito tempo dentro da minha empresa <noindex><a rel=\"nofollow\" href=\"https:\/\/www.innogames.com\/ru\/\">InnoGames<\/a><\/noindex> mergulhando na interse\u00e7\u00e3o entre ClickHouse e graphite-web. Foi uma boa experi\u00eancia, cujo resultado possibilitou a r\u00e1pida transi\u00e7\u00e3o de whisper para ClickHouse como reposit\u00f3rio de m\u00e9tricas. Espero que este artigo seja uma esp\u00e9cie de in\u00edcio de um ciclo sobre as melhorias que fizemos em v\u00e1rias partes deste stack e o que ser\u00e1 feito no futuro.<\/p>\n<p><\/p>\n<p>O desenvolvimento do pedido consumiu alguns litros de cerveja e dias de administra\u00e7\u00e3o em conjunto com <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/v0devil\/\" class=\"user_link\">v0devil<\/a><\/noindex>, pelo que quero expressar minha gratid\u00e3o. E tamb\u00e9m pela revis\u00e3o deste artigo.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">P\u00e1gina do projeto no 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.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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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: como reduzir significativamente o espa\u00e7o consumido em disco | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/53944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=53944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/53944\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=53944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=53944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=53944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}