{"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\/de\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","title":{"rendered":"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/5a2d19e6fea2a28d8d4aa9220653aefc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hallo, habr.<\/p>\n<p><\/p>\n<p>Wenn jemand das System <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/graphite-web\">graphite-web<\/a><\/noindex> und auf ein Speicherproblem gesto\u00dfen ist, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/graphite-project\/whisper\">whisper<\/a><\/noindex> (IO, genutzter Speicherplatz), dann ist die Wahrscheinlichkeit, dass ClickHouse als Alternative in Betracht gezogen wurde, nahezu sicher. Dies setzt voraus, dass bereits eine Drittanbieterimplementierung als Metriken-Daemon verwendet wird, zum Beispiel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grobian\/carbonwriter\">carbonwriter<\/a><\/noindex> oder <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/go-graphite\/go-carbon\">go-carbon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>ClickHouse l\u00f6st die beschriebenen Probleme gut. Nach der Migration von 2TiB Daten aus whisper waren diese in 300GiB untergebracht. Ich werde nicht n\u00e4her auf den Vergleich eingehen, es gibt ausreichend Artikel zu diesem Thema. Zudem war unser ClickHouse-Speicher bis vor Kurzem nicht ganz perfekt.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"problemy-s-potreblyaemym-mestom\">Probleme mit dem ben\u00f6tigten Speicherplatz<\/h3>\n<p><\/p>\n<p>Auf den ersten Blick sollte alles einwandfrei funktionieren. Indem wir <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/table_engines\/graphitemergetree\/#primer-konfiguratsii\">Dokumentation.<\/a><\/noindex>, erstellen wir eine Konfiguration f\u00fcr das Metriken-Speichermodell (im Folgenden <code>retention<\/code>), dann erstellen wir eine Tabelle gem\u00e4\u00df der Empfehlung des gew\u00e4hlten Backends f\u00fcr 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> oder <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse\/graphouse\">graphouse<\/a><\/noindex>, abh\u00e4ngig davon, welcher Stack verwendet wird. Und\u2026 aktiviert sich die Zeitbombe.<\/p>\n<p><\/p>\n<p>Um zu verstehen, welches relevant ist, muss man wissen, wie Inserts und der anschlie\u00dfende Lebenszyklus von Daten in den Tabellen der Engine-Familie funktionieren.<em>MergeTree<\/em> ClickHouse (Diagramme stammen aus <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/PLMSA_gDdyM\">der Pr\u00e4sentation<\/a><\/noindex> von Alexey Zatelepin):<\/p>\n<p><\/p>\n<ul>\n<li>Es wird <code>ein Block<\/code> von Daten eingef\u00fcgt. In unserem Fall handelt es sich um die eingehenden Metriken.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/b60d482acca3c8d187d394f58a2d8a16.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Jeder solche Block wird vor dem Schreiben auf die Festplatte nach dem Schl\u00fcssel sortiert, <code>ORDER BY<\/code>, der bei der Erstellung der Tabelle angegeben wurde.<\/li>\n<li>Nach der Sortierung wird <code>ein St\u00fcck<\/code> (<code>part<\/code>) von Daten auf die Festplatte geschrieben.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/a54903b8efa0866d24da303fa7a68134.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Der Server \u00fcberwacht im Hintergrund, dass nicht zu viele solcher St\u00fccke entstehen, und startet im Hintergrund <code>Zusammenf\u00fchrungen<\/code> (<code>Zusammenf\u00fchren<\/code>, also Merges.)<br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/151c18c7b73ebc4097493b13a2e26765.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/1921908554981eca0847541f77a15790.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Der Server h\u00f6rt auf, die Merges automatisch zu starten, sobald die Daten nicht mehr aktiv in die <code>Partition<\/code> (<code>partition<\/code>), aber der Prozess kann manuell mit dem Befehl <code>OPTIMIZE<\/code>.<\/li>\n<li>gestart werden. Wenn in der Partition nur noch ein St\u00fcck verbleibt, ist es nicht m\u00f6glich, einen Merge mit dem \u00fcblichen Befehl durchzuf\u00fchren, stattdessen muss man <code>OPTIMIZE ... FINAL<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>verwenden. Zun\u00e4chst kommen die ersten Metriken an. Diese beanspruchen einen gewissen Speicherplatz. Die folgenden Ereignisse k\u00f6nnen in Abh\u00e4ngigkeit von vielen Faktoren variieren:<\/p>\n<p><\/p>\n<ul>\n<li>Der Partitionierungsschl\u00fcssel kann sowohl sehr klein (einen Tag) als auch sehr gro\u00df (mehrere Monate) sein.<\/li>\n<li>Die Konfiguration der Retention kann mehrere bedeutende Aggregationsschwellen innerhalb der aktiven Partition (wo die Metriken geschrieben werden) enthalten oder auch nicht.<\/li>\n<li>Wenn es sehr viele Daten gibt, werden die fr\u00fchesten Teile, die durch Hintergrundfusionen bereits riesig sein k\u00f6nnen (bei der Wahl eines suboptimalen Partitionierungsschl\u00fcssels), nicht selbst mit den neuen, kleinen Teilen zusammengef\u00fchrt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Und am Ende l\u00e4uft es immer gleich ab. Der Platz, den die Metriken in ClickHouse einnehmen, w\u00e4chst nur, wenn:<\/p>\n<p><\/p>\n<ul>\n<li>nicht angewendet wird <code>OPTIMIZE ... FINAL<\/code> manuell oder<\/li>\n<li>die Daten nicht dauerhaft in alle Partitionen eingef\u00fcgt werden, um irgendwann eine Hintergrundfusion zu starten.<\/li>\n<\/ul>\n<p><\/p>\n<p>Der zweite Weg scheint am einfachsten umzusetzen zu sein, und das macht ihn falsch; er wurde zun\u00e4chst getestet.<br \/>\nIch habe ein recht einfaches Skript in Python geschrieben, das fiktive Metriken f\u00fcr jeden Tag der letzten 4 Jahre gesendet hat und jede Stunde \u00fcber Cron ausgef\u00fchrt wurde.<br \/>\nDa die gesamte Arbeit von ClickHouse DBMS darauf basiert, dass dieses System irgendwann die gesamte Hintergrundarbeit erledigt, jedoch unklar ist, wann das geschehen wird, konnte ich den Moment nicht abwarten, in dem die alten, gro\u00dfen Teile sich entschlie\u00dfen w\u00fcrden, mit den neuen, kleinen zu verschmelzen. Es wurde klar, dass ich einen Weg finden musste, um die zwingenden Optimierungen zu automatisieren.<\/p>\n<p>\n<img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/60b0354cb65dcba6e8402b67261041ff.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3 id=\"informaciya-v-sistemnyh-tablicah-clickhouse\">Informationen in den Systemtabellen von ClickHouse<\/h3>\n<p><\/p>\n<p>Schauen wir uns die Struktur der Tabelle an <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system_tables-parts\">system.parts<\/a><\/noindex>. Diese enth\u00e4lt umfassende Informationen zu jedem St\u00fcck aller Tabellen auf dem ClickHouse-Server. Sie enth\u00e4lt unter anderem folgende Spalten:<\/p>\n<p><\/p>\n<ul>\n<li>Datenbankname (<code>database<\/code>);<\/li>\n<li>Tabellenname (<code>Tabelle<\/code>);<\/li>\n<li>Name und ID der Partition (<code>partition<\/code> &amp; <code>partition_id<\/code>);<\/li>\n<li>Wann das St\u00fcck erstellt wurde (<code>modification_time<\/code>);<\/li>\n<li>Fr\u00fchestes und sp\u00e4testes Datum im St\u00fcck (Partitionierung erfolgt nach Tagen) (<code>min_date<\/code> &amp; <code>max_date<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Es gibt auch eine Tabelle <noindex><a rel=\"nofollow\" href=\"https:\/\/clickhouse.yandex\/docs\/ru\/operations\/system_tables\/#system-graphite-retentions\">system.graphite_retentions<\/a><\/noindex>, mit den folgenden interessanten Feldern:<\/p>\n<p><\/p>\n<ul>\n<li>Datenbankname (<code>Tables.database<\/code>);<\/li>\n<li>Tabellenname (<code>Tables.table<\/code>);<\/li>\n<li>Alter der Metrik, wann die n\u00e4chste Aggregation angewendet werden soll (<code>age<\/code>);<\/li>\n<\/ul>\n<p><\/p>\n<p>Also:<\/p>\n<p><\/p>\n<ol>\n<li>Wir haben eine Tabelle mit St\u00fccke und eine Tabelle mit Aggregationsregeln.<\/li>\n<li>Wir kombinieren deren Schnittmenge und erhalten alle Tabellen *GraphiteMergeTree.<\/li>\n<li>Wir suchen alle Partitionen, in denen:\n<ul>\n<li>mehr als ein St\u00fcck<\/li>\n<li>oder es an der Zeit ist, die n\u00e4chste Aggregationsregel anzuwenden, und <code>modification_time<\/code> \u00e4lter als dieser Zeitpunkt.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"realizaciya\">Implementierung<\/h3>\n<p>\n<b class=\"spoiler_title\">Diese Abfrage<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN\n    concat(p.database, '.', p.table) AS table,\n    p.partition_id AS partition_id,\n    p.partition AS partition,\n    -- Die \"\u00e4lteste\" Regel, die auf\n    -- die Partition angewendet werden kann, aber nicht f\u00fcr die Zukunft, siehe (*)\n    max(g.age) AS age,\n    -- Anzahl der Teile in der Partition\n    countDistinct(p.name) AS parts,\n    -- Die \u00e4lteste Metrik in der Partition wird als 00:00:00 des n\u00e4chsten Tages betrachtet\n    toDateTime(max(p.max_date + 1)) AS max_time,\n    -- Wann die Partition optimiert werden sollte\n    max_time + age AS rollup_time,\n    -- Wann das \u00e4lteste St\u00fcck in der Partition aktualisiert wurde\n    min(p.modification_time) AS modified_at\nFROM system.parts AS p\nINNER JOIN\n(\n    -- Alle Regeln f\u00fcr alle Tabellen *GraphiteMergeTree\n    W\u00c4HLEN\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    AND (p.database = g.database)\nWHERE\n    -- Nur aktive St\u00fccke\n    p.active\n    -- (*) Und nur Zeilen, in denen die Aggregationsregeln bereits angewendet werden sollten\n    AND ((toDateTime(p.max_date + 1) + g.age) &lt; now())\nGROUP BY\n    table,\n    partition\nHAVING\n    -- Nur Partitionen, die j\u00fcnger sind als der Optimierungszeitpunkt\n    (modified_at  1)\nORDER BY\n    table ASC,\n    partition ASC,\n    age ASC<\/code><\/pre>\n<p><\/p>\n<p>gibt jede der Partitionen der Tabellen *GraphiteMergeTree zur\u00fcck, deren Zusammenf\u00fchrung dazu f\u00fchren sollte, dass Speicherplatz freigegeben wird. Es bleibt nur noch die Aufgabe, sie alle mit einer Abfrage zu durchlaufen. <code>OPTIMIZE ... FINAL<\/code>. In der finalen Umsetzung wurde auch ber\u00fccksichtigt, dass aktive Schreibpartitionen nicht angefasst werden m\u00fcssen.<\/p>\n<p><\/p>\n<p>Genau das macht das Projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">graphite-ch-optimizer<\/a><\/noindex>. Ehemalige Kollegen von Yandex.Market haben es in der Produktion getestet, die Ergebnisse sind unten zu sehen. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse + Graphite: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert.\" src=\"\/wp-content\/uploads\/2019\/12\/858dcbf538135d8d57964a71b2b6ca23.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wenn das Programm auf einem Server mit ClickHouse gestartet wird, l\u00e4uft es einfach im Daemon-Modus. Einmal pro Stunde wird eine Abfrage ausgef\u00fchrt, um zu \u00fcberpr\u00fcfen, ob neue Partitionen \u00e4lter als drei Tage optimiert werden k\u00f6nnen.<\/p>\n<p><\/p>\n<p>In naher Zukunft planen wir, mindestens deb-Pakete anzubieten und wenn m\u00f6glich auch rpm-Pakete.<\/p>\n<p><\/p>\n<h3 id=\"vmesto-zaklyucheniya\">Abschlie\u00dfend<\/h3>\n<p><\/p>\n<p>In den letzten 9 Monaten habe ich innerhalb meines Unternehmens <noindex><a rel=\"nofollow\" href=\"https:\/\/www.innogames.com\/ru\/\">InnoGames<\/a><\/noindex> Ich habe viel Zeit damit verbracht, an der Schnittstelle zwischen ClickHouse und graphite-web zu arbeiten. Es war eine gute Erfahrung, die es uns erm\u00f6glicht hat, bald von Whisper auf ClickHouse als Metrik-Speicher umzusteigen. Ich hoffe, dass dieser Artikel eine Art Anfang eines Zyklus darstellt, in dem wir die Verbesserungen, die wir in verschiedene Teile dieses Stacks eingebracht haben, sowie zuk\u00fcnftige Vorhaben beleuchten.<\/p>\n<p><\/p>\n<p>F\u00fcr die Entwicklung der Anfrage wurden mehrere Liter Bier und einige Admin-Tage zusammen mit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/v0devil\/\" class=\"user_link\">v0devil<\/a><\/noindex>, wof\u00fcr ich ihm meinen Dank aussprechen m\u00f6chte. Auch f\u00fcr das Lektorat dieses Artikels.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/innogames\/graphite-ch-optimizer\">Projektseite auf GitHub<\/a><\/noindex><\/p>\n<p>Quelle: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/de\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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: Wie man den ben\u00f6tigten Speicherplatz auf Festplatten erheblich reduziert | ProHoster","description":"Hallo Habr. Wenn jemand das System graphite-web nutzt und auf Leistungsprobleme mit dem Whisper-Speicher (I\/O, ben\u00f6tigter Speicherplatz) gesto\u00dfen ist, sollte die Wahrscheinlichkeit, dass ClickHouse als Alternative in Betracht gezogen wurde, nahe bei eins liegen. Diese Aussage setzt voraus, dass bereits eine Drittanbieterl\u00f6sung als Metrik-Daemon verwendet wird, zum Beispiel carbonwriter oder go-carbon. ClickHouse ist gut geeignet, um","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/clickhouse-graphite-kak-znachitelno-umenshit-potreblyaemoe-mesto-na-diskah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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":"\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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/53944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=53944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/53944\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=53944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=53944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=53944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}