{"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\/es\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","title":{"rendered":"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/5a2d19e6fea2a28d8d4aa9220653aefc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Saludos, habr.<\/p>\n<p><\/p>\n<p>Si alguien est\u00e1 explotando el sistema <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/graphite-web\">graphite-web<\/a><\/noindex> y se ha encontrado con problemas de rendimiento del almacenamiento <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">whisper<\/a><\/noindex> (IO, espacio en disco consumido), entonces la posibilidad de que se haya considerado ClickHouse como un reemplazo debe tender a uno. Esta afirmaci\u00f3n implica que ya se est\u00e1 utilizando una implementaci\u00f3n de terceros como el demonio receptor de m\u00e9tricas, por ejemplo <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 aborda bien los problemas descritos. Por ejemplo, despu\u00e9s de transferir 2TiB de datos de whisper, los datos se comprimieron en 300GiB. No entrar\u00e9 en detalles de la comparaci\u00f3n, hay suficientes art\u00edculos sobre este tema. Adem\u00e1s, hasta hace poco, nuestra base de datos ClickHouse no era del todo perfecta.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"problemy-s-potreblyaemym-mestom\">Problemas con el espacio consumido<\/h3>\n<p><\/p>\n<p>A primera vista, todo deber\u00eda funcionar bien. Siguiendo <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/table_engines\/graphitemergetree\/#primer-konfiguratsii\">la documentaci\u00f3n<\/a><\/noindex>, creamos la configuraci\u00f3n para el esquema de almacenamiento de m\u00e9tricas (en adelante <code>retention<\/code>), luego creamos la tabla de acuerdo a las recomendaciones del backend elegido 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> o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/graphouse\">graphouse<\/a><\/noindex>, dependiendo de qu\u00e9 stack se utiliza. Y... se activa una bomba de tiempo.<\/p>\n<p><\/p>\n<p>Para entender cu\u00e1l, es necesario saber c\u00f3mo funcionan las inserciones y la trayectoria subsiguiente de los datos en las tablas de motores del tipo *<em>MergeTree<\/em> ClickHouse (los diagramas fueron tomados de <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/PLMSA_gDdyM\">presentaci\u00f3n<\/a><\/noindex> Aleksey Zatelepin):<\/p>\n<p><\/p>\n<ul>\n<li>Se inserta <code>un bloque<\/code> de datos. En nuestro caso, estas son las m\u00e9tricas que llegaron.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/b60d482acca3c8d187d394f58a2d8a16.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Cada bloque se ordena antes de ser escrito en disco de acuerdo con la clave <code>ORDER BY<\/code>, especificada al crear la tabla.<\/li>\n<li>Despu\u00e9s de la ordenaci\u00f3n, <code>un trozo<\/code> (<code>part<\/code>) de datos se escribe en disco.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/a54903b8efa0866d24da303fa7a68134.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>El servidor vigila en segundo plano para que no haya muchos de estos trozos, y comienza las <code>fusiones<\/code> (<code>merge<\/code>, o merges.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/151c18c7b73ebc4097493b13a2e26765.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/1921908554981eca0847541f77a15790.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>El servidor deja de ejecutar merges autom\u00e1ticamente una vez que los datos dejan de llegar activamente a la <code>partici\u00f3n<\/code> (<code>partition<\/code>), pero se puede iniciar manualmente el proceso con el comando <code>OPTIMIZE<\/code>.<\/li>\n<li>Si en la partici\u00f3n solo queda un trozo, no se podr\u00e1 iniciar un merge con el comando habitual, debe utilizarse <code>OPTIMIZE ... FINAL<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>As\u00ed, llegan las primeras m\u00e9tricas. Y ocupan un cierto espacio. Los eventos posteriores pueden variar ligeramente dependiendo de muchos factores:<\/p>\n<p><\/p>\n<ul>\n<li>La clave de partici\u00f3n puede ser tan peque\u00f1a (un d\u00eda) como muy grande (varios meses).<\/li>\n<li>La configuraci\u00f3n de retenci\u00f3n puede albergar varios umbrales significativos de agregaci\u00f3n de datos dentro de la partici\u00f3n activa (a donde se graban las m\u00e9tricas), o puede que no.<\/li>\n<li>Si hay muchos datos, entonces las porciones m\u00e1s antiguas, que debido a las fusiones en segundo plano pueden ser ya enormes (al elegir una clave de particionamiento sub\u00f3ptima), no se fusionar\u00e1n con las porciones nuevas y peque\u00f1as.<\/li>\n<\/ul>\n<p><\/p>\n<p>Y siempre termina igual. El espacio ocupado por m\u00e9tricas en ClickHouse solo crece si:<\/p>\n<p><\/p>\n<ul>\n<li>no se aplica <code>OPTIMIZE ... FINAL<\/code> manualmente o<\/li>\n<li>no se insertan datos en todas las particiones de manera constante, para que tarde o temprano se inicie una fusi\u00f3n en segundo plano.<\/li>\n<\/ul>\n<p><\/p>\n<p>El segundo m\u00e9todo parece el m\u00e1s f\u00e1cil de implementar y, por lo tanto, es incorrecto y se ha probado primero.<br \/>\nEscrib\u00ed un script bastante sencillo en Python que enviaba m\u00e9tricas ficticias para cada d\u00eda durante los \u00faltimos 4 a\u00f1os y se ejecutaba cada hora mediante cron.<br \/>\nDado que todo el trabajo de ClickHouse DBMS se basa en que este sistema har\u00e1 todo el trabajo de fondo en alg\u00fan momento, pero no se sabe cu\u00e1ndo, no logr\u00e9 esperar el momento en que las porciones antiguas y enormes comenzaron a fusionarse con las nuevas y peque\u00f1as. Se hizo evidente que deb\u00eda buscar una forma de automatizar optimizaciones forzadas.<\/p>\n<p>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/60b0354cb65dcba6e8402b67261041ff.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3 id=\"informaciya-v-sistemnyh-tablicah-clickhouse\">La informaci\u00f3n en las tablas del sistema de ClickHouse<\/h3>\n<p><\/p>\n<p>Veamos la estructura de la tabla <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system_tables-parts\">system.parts<\/a><\/noindex>. Esta es informaci\u00f3n exhaustiva sobre cada porci\u00f3n de todas las tablas en el servidor ClickHouse. Contiene, entre otras, las siguientes columnas:<\/p>\n<p><\/p>\n<ul>\n<li>nombre de la base de datos (<code>database<\/code>);<\/li>\n<li>nombre de la tabla (<code>tabla<\/code>);<\/li>\n<li>nombre e ID de la partici\u00f3n (<code>partition<\/code> &amp; <code>partition_id<\/code>);<\/li>\n<li>cu\u00e1ndo se cre\u00f3 la porci\u00f3n (<code>modification_time<\/code>);<\/li>\n<li>fecha m\u00ednima y m\u00e1xima en la porci\u00f3n (la particionamiento se realiza por d\u00edas) (<code>min_date<\/code> &amp; <code>max_date<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Tambi\u00e9n hay una tabla <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system-graphite-retentions\">system.graphite_retentions<\/a><\/noindex>, con los siguientes campos interesantes:<\/p>\n<p><\/p>\n<ul>\n<li>nombre de la base de datos (<code>Tables.database<\/code>);<\/li>\n<li>nombre de la tabla (<code>Tables.table<\/code>);<\/li>\n<li>la edad de la m\u00e9trica, cuando debe aplicarse la siguiente agregaci\u00f3n (<code>edad<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>As\u00ed que:<\/p>\n<p><\/p>\n<ol>\n<li>Tenemos una tabla de porciones y una tabla de reglas de agregaci\u00f3n.<\/li>\n<li>Unimos su intersecci\u00f3n y obtenemos todas las tablas *GraphiteMergeTree.<\/li>\n<li>Buscamos todas las particiones en las que:\n<ul>\n<li>hay m\u00e1s de una porci\u00f3n<\/li>\n<li>o ha llegado el momento de aplicar la siguiente regla de agregaci\u00f3n, y <code>modification_time<\/code> es m\u00e1s antigua que este momento.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"realizaciya\">Implementaci\u00f3n<\/h3>\n<p>\n<b class=\"spoiler_title\">Esta consulta<\/b><\/p>\n<pre><code class=\"sql\">SELECCIONAR\n    concat(p.database, '.', p.table) AS table,\n    p.partition_id AS partition_id,\n    p.partition AS partition,\n    -- La regla \"m\u00e1s antigua\" que se puede aplicar a\n    -- la partici\u00f3n, pero no en el futuro, ver (*)\n    max(g.age) AS age,\n    -- N\u00famero de piezas en la partici\u00f3n\n    countDistinct(p.name) AS parts,\n    -- La m\u00e9trica m\u00e1s antigua de la partici\u00f3n se considera 00:00:00 del d\u00eda siguiente\n    toDateTime(max(p.max_date + 1)) AS max_time,\n    -- Cu\u00e1ndo debe ser optimizada la partici\u00f3n\n    max_time + age AS rollup_time,\n    -- Cu\u00e1ndo se actualiz\u00f3 la pieza m\u00e1s antigua en la partici\u00f3n\n    min(p.modification_time) AS modified_at\nFROM system.parts AS p\nINNER JOIN\n(\n    -- Todas las reglas para todas las tablas *GraphiteMergeTree\n    SELECCIONAR\n        Tables.database AS database,\n        Tables.table AS table,\n        age\n    FROM 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    Y (p.database = g.database)\nDONDE\n    -- Solo piezas activas\n    p.active\n    -- (*) Y solo filas donde las reglas de agregaci\u00f3n ya deber\u00edan haberse aplicado\n    Y ((toDateTime(p.max_date + 1) + g.age) &lt; now())\nGROUP BY\n    table,\n    partition\nHAVING\n    -- Solo particiones que son m\u00e1s j\u00f3venes que el momento de optimizaci\u00f3n\n    (modified_at  1)\nORDER BY\n    table ASC,\n    partition ASC,\n    age ASC<\/code><\/pre>\n<p><\/p>\n<p>devuelve cada una de las particiones de las tablas *GraphiteMergeTree, cuyos merges deber\u00edan liberar espacio en disco. Solo queda un peque\u00f1o paso: recorrerlas todas con la consulta <code>OPTIMIZE ... FINAL<\/code>. En la implementaci\u00f3n final, tambi\u00e9n se tuvo en cuenta que no es necesario tocar las particiones con escritura activa.<\/p>\n<p><\/p>\n<p>Esto es exactamente lo que hace el proyecto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">graphite-ch-optimizer<\/a><\/noindex>. Antiguos colegas de Yandex.Market lo probaron en producci\u00f3n, el resultado del trabajo se puede ver a continuaci\u00f3n. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: c\u00f3mo reducir significativamente el espacio en disco consumido\" src=\"\/wp-content\/uploads\/2019\/12\/858dcbf538135d8d57964a71b2b6ca23.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si ejecutas el programa en un servidor con ClickHouse, simplemente comenzar\u00e1 a funcionar en modo demonio. Una vez por hora se ejecutar\u00e1 la consulta, comprobando si hay nuevas particiones de m\u00e1s de tres d\u00edas que se pueden optimizar.<\/p>\n<p><\/p>\n<p>En los pr\u00f3ximos planes est\u00e1 proporcionar, al menos, paquetes deb, y si es posible, tambi\u00e9n rpm.<\/p>\n<p><\/p>\n<h3 id=\"vmesto-zaklyucheniya\">En conclusi\u00f3n<\/h3>\n<p><\/p>\n<p>En los m\u00e1s de 9 meses pasados, he estado dentro de mi empresa <noindex><a rel=\"nofollow\" href=\"https:\/\/www.innogames.com\/ru\/\">InnoGames<\/a><\/noindex> pasando mucho tiempo, sumergido en la interfaz entre ClickHouse y graphite-web. Ha sido una buena experiencia, cuyo resultado ha hecho posible una r\u00e1pida transici\u00f3n de whisper a ClickHouse como almacenamiento de m\u00e9tricas. Espero que este art\u00edculo sea algo as\u00ed como el inicio de un ciclo sobre las mejoras que hemos realizado en varias partes de este stack, y lo que se har\u00e1 en el futuro.<\/p>\n<p><\/p>\n<p>Se gastaron varios litros de cerveza y d\u00edas de administrador en desarrollar esta solicitud junto con <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/v0devil\/\" class=\"user_link\">v0devil<\/a><\/noindex>, por lo cual quiero expresar mi agradecimiento. Tambi\u00e9n por la revisi\u00f3n de este art\u00edculo.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">P\u00e1gina del proyecto en github<\/a><\/noindex><\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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: c\u00f3mo reducir significativamente el espacio utilizado en discos | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/53944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=53944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/53944\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=53944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=53944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=53944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}