{"id":81936,"date":"2020-05-18T01:42:37","date_gmt":"2020-05-17T23:42:37","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera"},"modified":"2020-05-18T01:42:37","modified_gmt":"2020-05-17T23:42:37","slug":"szhatie-dannyh-v-apache-ignite-opyt-sbera","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","title":{"rendered":"Datenkompression in Apache Ignite. Erfahrungen von Sberbank","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Datenkompression in Apache Ignite. Erfahrungen von Sberbank\" src=\"\/wp-content\/uploads\/2020\/05\/0e26c686b1f29e88e6be4b8df81ab668.jpg\" style=\"display:block;margin: 0 auto;\" \/>Beim Arbeiten mit gro\u00dfen Datenmengen kann das Problem des Platzmangels auf den Festplatten akut werden. Eine der L\u00f6sungen f\u00fcr dieses Problem ist die Kompression, durch die es m\u00f6glich wird, den Speicherplatz auf der gleichen Hardware zu erweitern. In diesem Artikel werden wir untersuchen, wie die Datenkompression in Apache Ignite funktioniert. Es werden nur die im Produkt implementierten Methoden zur Kompression auf der Festplatte beschrieben. Andere Methoden zur Datenkompression (\u00fcber das Netzwerk, im Speicher), ob implementiert oder nicht, bleiben unber\u00fccksichtigt.<\/p>\n<p>Wenn der Persistenzmodus aktiviert ist, beginnt Ignite infolge von \u00c4nderungen der Daten in den Caches, diese auf die Festplatte zu schreiben:<\/p>\n<ol>\n<li>Inhalte der Caches<\/li>\n<li>Proaktive Aufzeichnung (Write Ahead Log, kurz WAL)<\/li>\n<\/ol>\n<p>\nF\u00fcr die Kompression des WAL existiert bereits seit geraumer Zeit ein Mechanismus, der WAL-Compaction genannt wird. In der neu ver\u00f6ffentlichten Version Apache Ignite 2.8 wurden zwei weitere Mechanismen eingef\u00fchrt, um Daten auf der Festplatte zu komprimieren: die Disk Page Compression zur Komprimierung der Inhalte der Caches und die WAL Page Snapshot Compression zur Komprimierung bestimmter WAL-Eintr\u00e4ge. Im Folgenden finden Sie detaillierte Informationen zu diesen drei Mechanismen.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Disk Page Compression<\/h3>\n<p><\/p>\n<h4>Wie es funktioniert<\/h4>\n<p>\nLassen Sie uns zun\u00e4chst kurz darauf eingehen, wie Ignite Daten speichert. F\u00fcr die Speicherung wird seitenbasiertes Ged\u00e4chtnis verwendet. Die Gr\u00f6\u00dfe der Seiten wird beim Start des Knotens festgelegt und kann in sp\u00e4teren Phasen nicht mehr ver\u00e4ndert werden; sie muss zudem eine Potenz von zwei sein und ein Vielfaches der Blockgr\u00f6\u00dfe des Dateisystems darstellen. Seiten werden bei Bedarf aus dem Speicher geladen, wobei die Daten auf der Festplatte den zugewiesenen RAM \u00fcberschreiten k\u00f6nnen. Wenn der RAM nicht ausreicht, um eine Seite von der Festplatte zu laden, werden alte, nicht mehr ben\u00f6tigte Seiten aus dem RAM verdr\u00e4ngt.<\/p>\n<p>Auf der Festplatte werden die Daten wie folgt gespeichert: F\u00fcr jede Partition jeder Cache-Gruppe wird eine separate Datei erstellt, in der die Seiten der Reihe nach in aufsteigender Indexreihenfolge gespeichert werden. Der vollst\u00e4ndige Seitenidentifikator enth\u00e4lt die Kennung der Cache-Gruppe, die Nummer der Partition und den Index der Seite in der Datei. Somit k\u00f6nnen wir anhand des vollst\u00e4ndigen Seitenidentifikators die Datei und den Offset in der Datei f\u00fcr jede Seite eindeutig bestimmen. Detaillierte Informationen zur Struktur des seitenbasierten Ged\u00e4chtnisses finden Sie im Artikel auf der Apache Ignite Wiki: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 unter der Haube<\/a><\/noindex>.<\/p>\n<p>Der Mechanismus der Seitenkompression f\u00fcr Festplatten funktioniert, wie der Name schon sagt, auf Seitenebene. Bei Aktivierung dieses Mechanismus erfolgt der Umgang mit Daten im RAM ohne Kompression, aber beim Speichern der Seiten von RAM auf die Festplatte wird eine Kompression durchgef\u00fchrt.<\/p>\n<p>Das separate Komprimieren jeder Seite allein l\u00f6st das Problem jedoch nicht. Es ist notwendig, die Gr\u00f6\u00dfe der endg\u00fcltigen Datendateien zu reduzieren. Wenn die Gr\u00f6\u00dfe einer Seite nicht mehr festgelegt ist, k\u00f6nnen wir die Seiten nicht der Reihe nach in die Datei schreiben, da dies eine Reihe von Problemen verursachen kann:<\/p>\n<ul>\n<li>Wir k\u00f6nnen nicht mit Hilfe des Seitenindex den Offset berechnen, an dem sie in der Datei gespeichert ist.<\/li>\n<li>Es ist unklar, was mit Seiten zu tun ist, die sich nicht am Ende der Datei befinden und deren Gr\u00f6\u00dfe sich \u00e4ndert. Wenn die Gr\u00f6\u00dfe einer Seite verringert wird, geht der Platz, den sie freigibt, verloren. Wenn die Gr\u00f6\u00dfe einer Seite zunimmt, muss ein neuer Platz in der Datei f\u00fcr sie gefunden werden.<\/li>\n<li>Wenn eine Seite um eine Anzahl von Bytes verschoben wird, die nicht ein Vielfaches der Blockgr\u00f6\u00dfe des Dateisystems ist, muss beim Lesen oder Schreiben ein zus\u00e4tzlicher Dateisystemblock angesprochen werden, was zu einer Verschlechterung der Leistung f\u00fchren kann.<\/li>\n<\/ul>\n<p>\nUm solche Probleme nicht selbst auf Ihrer Ebene l\u00f6sen zu m\u00fcssen, verwendet die Disk Page Compression in Apache Ignite einen Mechanismus des Dateisystems, der als Sparse-Dateien bezeichnet wird. Eine Sparse-Datei ist eine Datei, bei der bestimmte, mit Nullen gef\u00fcllte Bereiche als 'L\u00f6cher' markiert werden k\u00f6nnen. Dadurch werden keine Dateisystembl\u00f6cke zur Speicherung dieser L\u00f6cher reserviert, was zu einer Einsparung von Speicherplatz auf der Festplatte f\u00fchrt.<\/p>\n<p>Es ist logisch, dass der Freigabebereich der Dateisystembl\u00f6cke mindestens so gro\u00df sein muss wie der Dateisystemblock selbst, was eine zus\u00e4tzliche Einschr\u00e4nkung f\u00fcr die Seitengr\u00f6\u00dfe in Apache Ignite darstellt: Damit die Kompression irgendeinen Effekt hat, muss die Seitengr\u00f6\u00dfe unbedingt gr\u00f6\u00dfer als die Blockgr\u00f6\u00dfe sein. Wenn die Seitengr\u00f6\u00dfe der Blockgr\u00f6\u00dfe entspricht, k\u00f6nnen wir keinen einzigen Block freigeben, da die komprimierte Seite 0 Byte einnehmen m\u00fcsste, um genau einen Block freizugeben. Wenn die Seitengr\u00f6\u00dfe jedoch der Gr\u00f6\u00dfe von 2 oder 4 Bl\u00f6cken entspricht, k\u00f6nnen wir mindestens einen Block freigeben, wenn unsere Seite mindestens auf 50 % oder 75 % komprimiert wird.<\/p>\n<p>Somit ergibt sich folgende Zusammenfassung der Arbeitsweise des Mechanismus: Beim Schreiben einer Seite auf die Festplatte wird versucht, die Seite zu komprimieren. Wenn die Gr\u00f6\u00dfe der komprimierten Seite es erm\u00f6glicht, einen oder mehrere Dateisystembl\u00f6cke freizugeben, wird die Seite in komprimierter Form gespeichert, und an der Stelle der freigegebenen Bl\u00f6cke wird ein \u00abLoch\u00bb erstellt (ein Systemaufruf wird ausgef\u00fchrt). <code>fallocate()<\/code> mit dem \u201ePunch Hole\u201c-Symbol). Wenn die Gr\u00f6\u00dfe der komprimierten Seite nicht ausreicht, um Bl\u00f6cke freizugeben, bleibt die Seite unver\u00e4ndert im unkomprimierten Zustand. Alle Seitenoffsets werden wie bei der Kompression auch berechnet, indem der Seitenindex mit der Seitengr\u00f6\u00dfe multipliziert wird. Eine manuelle Relokation der Seiten ist nicht erforderlich. Seitenoffsets fallen, genau wie ohne Kompression, an die Grenzen der Blocks im Dateisystem.<\/p>\n<p><img decoding=\"async\" alt=\"Datenkompression in Apache Ignite. Erfahrungen von Sberbank\" src=\"\/wp-content\/uploads\/2020\/05\/6a6c6ad83d3b8591f76b9343ff067746.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nIn der aktuellen Implementierung kann Ignite nur mit Sparse-Dateien unter Linux arbeiten, daher kann die Seitenkompression nur aktiviert werden, wenn Ignite auf diesem Betriebssystem verwendet wird.<\/p>\n<p>Die f\u00fcr die Seitenkompression verwendbaren Algorithmen sind: ZSTD, LZ4, Snappy. Dar\u00fcber hinaus gibt es einen Betriebsmodus (SKIP_GARBAGE), bei dem nur der ungenutzte Platz in der Seite ohne Anwendung von Kompression auf den verbleibenden Daten entfernt wird, was die CPU-Belastung im Vergleich zu den zuvor genannten Algorithmen reduziert.<\/p>\n<h4>Einfluss auf die Leistungsf\u00e4higkeit <\/h4>\n<p>\nLeider habe ich keine tats\u00e4chlichen Leistungsbenchmarks auf realen St\u00e4nden durchgef\u00fchrt, da wir nicht planen, diesen Mechanismus in der Produktion zu verwenden. Theoretisch k\u00f6nnen wir jedoch \u00fcber die m\u00f6glichen Verluste und Gewinne nachdenken.<\/p>\n<p>Daf\u00fcr m\u00fcssen wir uns erinnern, wie das Lesen und Schreiben von Seiten beim Zugriff auf diese erfolgt:<\/p>\n<ul>\n<li>Bei einer Leseoperation wird zun\u00e4chst in den RAM gesucht. Wenn die Suche erfolglos ist, wird die Seite im selben Thread von der Festplatte in den RAM geladen, der die Leseoperation durchf\u00fchrt.<\/li>\n<li>Bei einer Schreiboperation wird die Seite im RAM als schmutzig markiert, wobei die physische Speicherung der Seite auf der Festplatte nicht sofort im Thread erfolgt, der die Schreiboperation durchf\u00fchrt. Alle schmutzigen Seiten werden sp\u00e4ter w\u00e4hrend des Checkpoints von separaten Threads auf die Festplatte gespeichert.<\/li>\n<\/ul>\n<p>\nSomit hat es Einfluss auf Leseoperationen:<\/p>\n<ul>\n<li>Positiv (disk IO), aufgrund der Verringerung der Anzahl der gelesenen Bl\u00f6cke im Dateisystem.<\/li>\n<li>Negativ (CPU), aufgrund der zus\u00e4tzlichen Belastung, die das Betriebssystem ben\u00f6tigt, um mit Sparse-Dateien zu arbeiten. M\u00f6glicherweise treten hier auch implizit zus\u00e4tzliche IO-Operationen auf, um die komplexere Struktur der Sparse-Datei zu speichern (leider bin ich mit allen Details der Funktionsweise von Sparse-Dateien nicht vertraut).<\/li>\n<li>Negativ (CPU), wegen der Notwendigkeit, Seiten zu dekomprimieren.<\/li>\n<li>Es gibt keine Auswirkungen auf Schreiboperationen.<\/li>\n<li>Einfluss auf den Checkpoint-Prozess (hier gilt das gleiche wie bei Leseoperationen):<\/li>\n<li>Positiv (Disk IO), da die Anzahl der geschriebenen Bl\u00f6cke des Dateisystems verringert wird.<\/li>\n<li>Negativ (CPU, m\u00f6glicherweise Disk IO), aufgrund der Arbeit mit Sparse-Dateien.<\/li>\n<li>Negativ (CPU), wegen der Notwendigkeit, Seiten zu komprimieren.<\/li>\n<\/ul>\n<p>\nWelche Seite wird \u00fcberwiegen? Das h\u00e4ngt stark von der Umgebung ab, aber ich tendiere dazu, dass die Disk-Seitenkompression eher zu einer Leistungsminderung in den meisten Systemen f\u00fchrt. Zumal Tests mit anderen DBMS, die einen \u00e4hnlichen Ansatz mit Sparse-Dateien verwenden, einen Leistungsabfall bei aktivierter Komprimierung zeigen.<\/p>\n<h4>Wie man es aktiviert und konfiguriert<\/h4>\n<p>\nWie bereits erw\u00e4hnt, ist die minimale Version von Apache Ignite, die die Kompression von Festplattenseiten unterst\u00fctzt, 2.8 und wird ausschlie\u00dflich von dem Betriebssystem Linux unterst\u00fctzt. Die Aktivierung und Konfiguration erfolgen wie folgt:<\/p>\n<ul>\n<li>Im class-path muss das Modul ignite-compression vorhanden sein. Standardm\u00e4\u00dfig befindet es sich im Apache Ignite-Distribution im Verzeichnis libs\/optional und ist nicht im class-path enthalten. Sie k\u00f6nnen es einfach ein Level h\u00f6her in libs verschieben, und dann wird es beim Start \u00fcber ignite.sh automatisch eingebunden.<\/li>\n<li>Die Persistenz muss aktiviert sein (Aktivierung erfolgt \u00fcber <code>DataRegionConfiguration.setPersistenceEnabled(true))<\/code>.<\/li>\n<li>Die Seitengr\u00f6\u00dfe muss gr\u00f6\u00dfer sein als die Blockgr\u00f6\u00dfe des Dateisystems (verstellbar \u00fcber <code>DataStorageConfiguration.setPageSize()<\/code> ).<\/li>\n<li>F\u00fcr jeden Cache, dessen Daten komprimiert werden sollen, m\u00fcssen in der Konfiguration die Komprimierungsmethode und (optional) das Komprimierungsniveau eingestellt werden (Methoden <code>CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h3>WAL-Komprimierung<\/h3>\n<p><\/p>\n<h4>Wie es funktioniert<\/h4>\n<p>\nWas ist WAL und warum ist es wichtig? Kurz gesagt: Es handelt sich um ein Protokoll, in dem alle Ereignisse erfasst werden, die letztendlich das Seitenlager beeinflussen. Es ist in erster Linie f\u00fcr die Wiederherstellung im Falle eines Ausfalls erforderlich. Jede Operation muss, bevor sie die Kontrolle an den Benutzer zur\u00fcckgibt, ein Ereignis im WAL protokollieren, damit im Falle eines Ausfalls die Protokolle wieder abgespielt werden k\u00f6nnen und alle Operationen, f\u00fcr die der Benutzer eine erfolgreiche Antwort erhalten hat, wiederhergestellt werden, selbst wenn diese Operationen noch nicht im Seitenlager auf der Festplatte festgehalten wurden (wie bereits erw\u00e4hnt, erfolgt die tats\u00e4chliche Speicherung im Seitenlager im Rahmen eines Prozesses, der als \u201eCheckpoint\u201c bezeichnet wird, mit einer gewissen Verz\u00f6gerung durch separate Threads).<\/p>\n<p>WAL-Eintr\u00e4ge werden in logische und physische Aufzeichnungen unterteilt. Logische Aufzeichnungen sind die Schl\u00fcssel und Werte selbst. Physische Aufzeichnungen spiegeln die \u00c4nderungen der Seiten im Seiten-Speicher wider. W\u00e4hrend logische Aufzeichnungen in anderen Situationen n\u00fctzlich sein k\u00f6nnen, sind physische Aufzeichnungen nur f\u00fcr die Wiederherstellung im Falle eines Ausfalls erforderlich und beinhalten nur Aufzeichnungen seit dem letzten erfolgreichen Checkpoint. Hier werden wir nicht ins Detail gehen und erkl\u00e4ren, warum das so funktioniert, aber Interessierte k\u00f6nnen sich an den bereits erw\u00e4hnten Artikel im Apache Ignite Wiki wenden: <noindex><a rel=\"nofollow\" href=\"https:\/\/cwiki.apache.org\/confluence\/display\/IGNITE\/Ignite+Persistent+Store+-+under+the+hood\">Ignite Persistent Store \u2014 unter der Haube<\/a><\/noindex>.<\/p>\n<p>Auf einen logischen Datensatz entfallen oft mehrere physische Datens\u00e4tze. Das hei\u00dft, zum Beispiel betrifft eine Put-Operation im Cache mehrere Seiten im Seiten-Speicher (die Seite mit den eigentlichen Daten, Seiten mit Indizes, Seiten mit Free-Lists). Bei einigen synthetischen Tests ist es mir gelungen, dass physische Datens\u00e4tze bis zu 90 % des Volumens der WAL-Datei einnahmen. Diese sind jedoch nur f\u00fcr eine sehr kurze Zeit notwendig (standardm\u00e4\u00dfig betr\u00e4gt das Intervall zwischen den Checkpoints 3 Minuten). Es w\u00e4re logisch, diese Daten nach dem Verlust ihrer Relevanz zu entfernen. Genau das wird durch den WAL-Compaction-Mechanismus erledigt, der physische Datens\u00e4tze entfernt und die verbleibenden logischen Datens\u00e4tze mit zip komprimiert, dabei wird die Dateigr\u00f6\u00dfe erheblich reduziert (manchmal um das Zehnfache).<\/p>\n<p>Die physische WAL besteht aus mehreren Segmenten (standardm\u00e4\u00dfig 10) von fester Gr\u00f6\u00dfe (standardm\u00e4\u00dfig 64 MB), die im Rundlauf \u00fcberschrieben werden. Sobald das aktuelle Segment voll ist, wird das n\u00e4chste Segment zugewiesen, und das ausgef\u00fcllte Segment wird in einem separaten Stream archiviert. Die WAL-Komprimierung funktioniert bereits mit archivierten Segmenten. Au\u00dferdem \u00fcberwacht sie in einem separaten Stream die Ausf\u00fchrung von Checkpoints und beginnt die Komprimierung f\u00fcr archivierte Segmente, deren physische Aufzeichnungen nicht mehr ben\u00f6tigt werden.<\/p>\n<p><img decoding=\"async\" alt=\"Datenkompression in Apache Ignite. Erfahrungen von Sberbank\" src=\"\/wp-content\/uploads\/2020\/05\/ca8690ba7a350df9530f2ccf01c90975.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h4>Einfluss auf die Leistungsf\u00e4higkeit<\/h4>\n<p>\nDa die WAL-Komprimierung in einem separaten Thread funktioniert, sollte sie keine direkten Auswirkungen auf die ausgef\u00fchrten Operationen haben. Dennoch verursacht sie eine zus\u00e4tzliche Hintergrundlast auf der CPU (Komprimierung) und der Festplatte (Lesen jedes WAL-Segments aus dem Archiv und Schreiben der komprimierten Segmente). Daher kann es bei einer Systemauslastung an der Leistungsgrenze ebenfalls zu einer Verschlechterung der Performance kommen.<\/p>\n<h4>Wie man es aktiviert und konfiguriert<\/h4>\n<p>\nDie WAL-Komprimierung kann durch die Eigenschaft <code>WalCompactionEnabled<\/code> in <code>DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)<\/code>). Au\u00dferdem l\u00e4sst sich der Komprimierungsgrad mit der Methode DataStorageConfiguration.setWalCompactionLevel() anpassen, falls der Standardwert (BEST_SPEED) nicht zufriedenstellend ist.<\/p>\n<h3>WAL-Seiten-Snapshot-Komprimierung<\/h3>\n<p><\/p>\n<h4>Wie es funktioniert<\/h4>\n<p>\nEs wurde bereits festgestellt, dass WAL-Aufzeichnungen in logische und physische unterteilt sind. F\u00fcr jede \u00c4nderung jeder Seite im Seiten-Speicher wird ein physischer WAL-Eintrag erstellt. Physische Eintr\u00e4ge werden wiederum in zwei Unterkategorien unterteilt: Page Snapshot Record und Delta Record. Jedes Mal, wenn wir etwas auf einer Seite \u00e4ndern und sie von einem sauberen Zustand in einen schmutzigen versetzen, wird eine vollst\u00e4ndige Kopie dieser Seite im WAL gespeichert (Page Snapshot Record \u2013 Snapshot der Seite). Selbst wenn wir nur ein einziges Byte \u00e4ndern, wird im WAL ein Eintrag gespeichert, der etwas mehr als die Gr\u00f6\u00dfe der Seite betr\u00e4gt. Wenn wir jedoch etwas auf einer bereits schmutzigen Seite \u00e4ndern, wird im WAL ein Delta Record erstellt, der nur die \u00c4nderungen im Vergleich zum vorherigen Zustand der Seite widerspiegelt, aber nicht die gesamte Seite. Da der Wechsel des Seitenzustands von schmutzig zu sauber im Rahmen eines Checkpoints erfolgt, bestehen zu Beginn des Checkpoints praktisch alle physischen Eintr\u00e4ge nur aus Snapshots der Seiten (da alle Seiten direkt nach Beginn des Checkpoints sauber sind). Mit dem Fortschreiten hin zum n\u00e4chsten Checkpoint beginnt der Anteil der Delta Records zu steigen und wird zu Beginn des n\u00e4chsten Checkpoints erneut zur\u00fcckgesetzt. Messungen in einigen synthetischen Tests haben gezeigt, dass der Anteil der Snapshots der Seiten im Gesamtvolumen der physischen Eintr\u00e4ge bis zu 90 % erreichen kann.<\/p>\n<p>Die Idee der WAL-Seiten-Snapshot-Kompression besteht darin, Snapshots von Seiten mit bereits bestehenden Werkzeugen zur Seitenkompression zu komprimieren (siehe Disk-Seitenkompression). Dabei werden die WAL-Eintr\u00e4ge sequentiell im Append-Only-Modus gespeichert, und es ist keine Bindung der Eintr\u00e4ge an die Grenzen der Dateisystembl\u00f6cke erforderlich. Daher ben\u00f6tigen wir, im Gegensatz zum Mechanismus der Disk-Seitenkompression, hier keine sparse Dateien, sodass dieser Mechanismus nicht nur unter Linux funktioniert. Au\u00dferdem ist es uns nicht mehr wichtig, wie stark wir die Seite komprimiert haben. Selbst wenn wir nur 1 Byte freigeben, ist das bereits ein positives Ergebnis, und wir k\u00f6nnen komprimierte Daten im WAL speichern, im Gegensatz zur Disk-Seitenkompression, bei der wir die komprimierte Seite nur speichern, wenn wir mehr als 1 Block des Dateisystems freigegeben haben.<\/p>\n<p>Seiten sind gut komprimierbare Daten, wobei ihr Anteil am gesamten WAL-Volumen sehr hoch ist. Indem wir das Format der WAL-Datei nicht \u00e4ndern, k\u00f6nnen wir eine erhebliche Reduzierung ihrer Gr\u00f6\u00dfe erzielen. Eine Komprimierung der logischen Aufzeichnungen w\u00fcrde hingegen eine \u00c4nderung des Formats erfordern und zu einem Verlust der Kompatibilit\u00e4t f\u00fchren, insbesondere f\u00fcr externe Benutzer, die m\u00f6glicherweise an logischen Aufzeichnungen interessiert sind, ohne dabei eine signifikante Verringerung des Datei-Volumens zu erzielen.<\/p>\n<p>Wie bei der Disk-Seitenkompression k\u00f6nnen auch f\u00fcr die WAL-Seiten-Snapshot-Kompression die Kompressionsalgorithmen ZSTD, LZ4, Snappy sowie der SKIP_GARBAGE-Modus verwendet werden.<\/p>\n<h4>Einfluss auf die Leistungsf\u00e4higkeit<\/h4>\n<p>\nWie leicht zu erkennen ist, wirkt sich die direkte Aktivierung der WAL-Seiten-Snapshot-Kompression nur auf die Threads aus, die Daten in den Seitenspeicher schreiben, also auf die Threads, die Daten in den Caches \u00e4ndern. Das Lesen von physischen WAL-Aufzeichnungen erfolgt nur einmalig, wenn der Knoten nach einem Absturz wieder hochgefahren wird (und nur im Fall eines Absturzes w\u00e4hrend des Checkpoints).<\/p>\n<p>Die Auswirkungen auf daten\u00e4ndernde Streams sind wie folgt: Wir erfahren eine negative Auswirkung (CPU) aufgrund der Notwendigkeit, die Seite vor der Speicherung auf der Festplatte jedes Mal zu komprimieren, und eine positive Auswirkung (Disk IO) durch die Verringerung der zu schreibenden Daten. Daher ist es einfach: Wenn die Systemleistung an der CPU liegt, haben wir eine geringe Verschlechterung, wenn an der Festplattenein-\/ausgabe, haben wir einen Anstieg.<\/p>\n<p>Indirekt beeinflusst die Verringerung der WAL-Gr\u00f6\u00dfe auch (positiv) die Streams, die WAL-Segmente in das Archiv verschieben, und die WAL-Kompaktierung.<\/p>\n<p>Echte Leistungstests in unserer Umgebung mit synthetischen Daten zeigten einen leichten Anstieg (der Durchsatz stieg um 10%-15%, die Latenz verringerte sich um 10%-15%).<\/p>\n<h4>Wie man es aktiviert und konfiguriert<\/h4>\n<p>\nMinimale Version von Apache Ignite: 2.8. Die Aktivierung und Konfiguration erfolgt wie folgt:<\/p>\n<ul>\n<li>Im class-path muss das Modul ignite-compression vorhanden sein. Standardm\u00e4\u00dfig befindet es sich im Apache Ignite-Distribution im Verzeichnis libs\/optional und ist nicht im class-path enthalten. Sie k\u00f6nnen es einfach ein Level h\u00f6her in libs verschieben, und dann wird es beim Start \u00fcber ignite.sh automatisch eingebunden.<\/li>\n<li>Die Persistenz muss aktiviert sein (Aktivierung erfolgt \u00fcber <code>DataRegionConfiguration.setPersistenceEnabled(true)<\/code>).<\/li>\n<li>Der Komprimierungsmodus muss mit der Methode angegeben werden <code>DataStorageConfiguration.setWalPageCompression()<\/code>, standardm\u00e4\u00dfig ist die Komprimierung deaktiviert (MODUS DISABLED).<\/li>\n<li>Optional kann der Komprimierungsgrad mit der Methode angegeben werden <code>DataStorageConfiguration.setWalPageCompression()<\/code>, zul\u00e4ssige Werte f\u00fcr jeden der Modi finden Sie in der Javadoc zu dieser Methode.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Fazit<\/h3>\n<p>\nDie in Apache Ignite behandelten Datenkomprimierungsmechanismen k\u00f6nnen unabh\u00e4ngig voneinander verwendet werden, aber auch beliebige Kombinationen sind zul\u00e4ssig. Das Verst\u00e4ndnis der Funktionsprinzipien hilft dabei zu bestimmen, wie gut sie zu Ihren Aufgaben in Ihrer Umgebung passen und welche Kompromisse dabei eingegangen werden m\u00fcssen. Die Disk-Seitenspeicherkompression ist f\u00fcr die Komprimierung des prim\u00e4ren Speichers gedacht und kann eine mittlere Kompressionsrate erzielen. Die WAL-Seitenspeichersnapshot-Kompression erzielt ebenfalls eine mittlere Kompressionsrate f\u00fcr die WAL-Dateien, was wahrscheinlich sogar die Leistung steigert. Die WAL-Komprimierung hat jedoch keinen positiven Einfluss auf die Leistung, reduziert aber die Gr\u00f6\u00dfe der WAL-Dateien erheblich, indem physische Aufzeichnungen entfernt werden.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/502136\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81936","post","type-post","status-publish","format-standard","has-post-thumbnail","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 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\" \/>\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\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\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\udd47\u0421\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u041e\u043f\u044b\u0442 \u0421\u0431\u0435\u0440\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera\" \/>\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=\"2020-05-17T23:42:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T23:42:37+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\udd47Datenkompression in Apache Ignite. Erfahrungen von Sber | ProHoster","description":"Beim Arbeiten mit gro\u00dfen Datenmengen kann das Problem des fehlenden Speicherplatzes auf den Festplatten pl\u00f6tzlich akut werden. Eine M\u00f6glichkeit, dieses Problem zu l\u00f6sen, ist die Komprimierung, dank derer man auf der gleichen Hardware den Speicherplatz vergr\u00f6\u00dfern kann. In diesem Artikel werden wir uns anschauen, wie die Datenkomprimierung in Apache Ignite funktioniert. Es werden nur die innerhalb des Produkts realisierten Funktionen beschrieben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","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\udd47\u0421\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u041e\u043f\u044b\u0442 \u0421\u0431\u0435\u0440\u0430 | ProHoster","og:description":"\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043c\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0440\u043e \u0432\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0436\u0430\u0442\u0438\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443, \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Apache Ignite. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/szhatie-dannyh-v-apache-ignite-opyt-sbera","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":"2020-05-17T23:42:37+00:00","article:modified_time":"2020-05-17T23:42:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81936","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:47:30","updated":"2022-10-02 17:21:32"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81936","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=81936"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81936\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/81937"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=81936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=81936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=81936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}