{"id":36632,"date":"2019-10-31T22:12:47","date_gmt":"2019-10-31T19:12:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\/"},"modified":"2019-10-31T22:12:47","modified_gmt":"2019-10-31T19:12:47","slug":"globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","title":{"rendered":"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/ac6eefbfb9d7cc28c3f2ca85c7d1adb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>In den vorherigen Teilen (<noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/263791\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/264173\/\">2<\/a><\/noindex>) haben wir Globals als B\u00e4ume betrachtet, in diesem Teil betrachten wir Globals als sp\u00e4rliche Arrays.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D0%B7%D1%80%D0%B5%D0%B6%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2\">Sp\u00e4rliches Array<\/a><\/noindex> ist eine Form von Array, bei der die meisten Werte gleich sind.<\/p>\n<p>In der Praxis sind oft so gro\u00dfe sp\u00e4rliche Arrays anzutreffen, dass es keinen Sinn macht, Speicher mit identischen Elementen zu belegen. Daher ist es sinnvoll, sp\u00e4rliche Arrays so zu realisieren, dass Speicher nicht f\u00fcr die Speicherung identischer Werte verwendet wird.<br \/>\nIn einigen Programmiersprachen sind sp\u00e4rliche Arrays Teil der Sprache, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.jsoftware.com\/help\/dictionary\/d211.htm\">zum Beispiel in J<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.mathworks.com\/help\/matlab\/ref\/sparse.html\">MATLAB<\/a><\/noindex>. In anderen Programmiersprachen gibt es spezielle Bibliotheken, die deren Implementierung erm\u00f6glichen. F\u00fcr C++ - <noindex><a rel=\"nofollow\" href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/GettingStarted.html\">Eigen<\/a><\/noindex> usw. <\/p>\n<p>Globals sind gute Kandidaten f\u00fcr die Implementierung sp\u00e4rlicher Arrays, weil:<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ol>\n<li>Sie Werte nur von bestimmten Knoten speichern und keine Werte von unbestimmten speichern;<\/li>\n<li>Die Schnittstelle zum Zugriff auf den Wert eines Knotens \u00e4hnelt stark dem, wie in vielen Programmiersprachen der Zugriff auf ein Element eines mehrdimensionalen Arrays realisiert ist.\n<pre><code class=\"bash\">Set ^a(1, 2, 3)=5\nWrite ^a(1, 2, 3)<\/code><\/pre>\n<p>\n<\/li>\n<li>Globals sind eine eher niedrigschwellige Struktur zur Datenspeicherung und bieten daher hervorragende Geschwindigkeitsmerkmale (von Hunderttausenden bis zu Millionen von Transaktionen pro Sekunde, abh\u00e4ngig von der Hardware, siehe auch. <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/257501\/\">1<\/a><\/noindex>)<\/li>\n<\/ol>\n<p><\/p>\n<blockquote><p>Da Globals persistente Strukturen sind, ist es sinnvoll, sp\u00e4rliche Arrays nur dann zu verwenden, wenn von vornherein feststeht, dass der verf\u00fcgbare Arbeitsspeicher nicht ausreicht.<\/p><\/blockquote>\n<p>\nEines der Merkmale der Implementierungen sp\u00e4rlicher Arrays ist die R\u00fcckgabe eines Standardwerts, wenn auf eine nicht definierte Zelle zugegriffen wird.<\/p>\n<p>Dies kann durch die Verwendung der Funktion <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex> in COS realisiert werden. In diesem Beispiel betrachten wir ein dreidimensionales Array.<\/p>\n<pre><code>SET a = $GET(^a(x,y,z), defValue)<\/code><\/pre>\n<p>\nIn welchen Situationen werden sp\u00e4rliche Arrays ben\u00f6tigt, und wie k\u00f6nnen Globals helfen?<\/p>\n<h2>Die Adjazenzmatrix (Verbindungsmatrix)<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81%D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">Solche Matrizen<\/a><\/noindex> werden zur Darstellung von Graphen verwendet:<\/p>\n<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/a580c451610bcacbef154c161ef63939.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs ist offensichtlich, dass je gr\u00f6\u00dfer der Graph ist, desto mehr Nullen in der Matrix vorkommen werden. Wenn man beispielsweise ein Netzwerkgraph einer sozialen Plattform nimmt und diesen in Form einer solchen Matrix darstellt, besteht er fast vollst\u00e4ndig aus Nullen, d.h. er wird zu einem sp\u00e4rlichen Array.<\/p>\n<pre><code class=\"bash\">Set ^m(id1, id2) = 1 \nSet ^m(id1, id3) = 1 \nSet ^m(id1, id4) = 1 \nSet ^m(id1) = 3 \nSet ^m(id2, id4) = 1 \nSet ^m(id2, id5) = 1 \nSet ^m(id2) = 2\n....\n<\/code><\/pre>\n<p>\nIn diesem Beispiel speichern wir global <strong>^m<\/strong> die Nachbarmatrix sowie die Anzahl der Kanten f\u00fcr jeden Knoten (wer mit wem befreundet ist und die Anzahl der Freunde).<\/p>\n<p>Wenn die Anzahl der Elemente im Graphen nicht mehr als 29 Millionen betr\u00e4gt (diese Zahl ergibt sich aus dem Produkt von 8 * <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache201512\/csp\/docbook\/DocBook.UI.Page.cls?KEY=GORIENT_appx_limits_long_string\">maximale Zeilenl\u00e4nge<\/a><\/noindex>), gibt es einen noch wirtschaftlicheren Weg zur Speicherung solcher Matrizen \u2013 Bit-Strings, da hier gro\u00dfe L\u00fccken auf spezielle Weise optimiert werden.<\/p>\n<p>Manipulationen mit Bit-Strings werden durch die Funktion <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fbit\">$BIT<\/a><\/noindex>. <\/p>\n<pre><code class=\"bash\">; Bit setzen\nSET $BIT(rowID, positionID) = 1\n; Bit abfragen\nWrite $BIT(rowID, positionID)\n<\/code><\/pre>\n<p><\/p>\n<h2>\u00dcbergangstabelle des endlichen Automaten<\/h2>\n<p>\nDa der \u00dcbergangsgraph eines endlichen Automaten ein gew\u00f6hnlicher Graph ist, ist auch die \u00dcbergangstabelle des endlichen Automaten dieselbe Nachbarmatrix, die oben erw\u00e4hnt wurde.<\/p>\n<h2>Zellulare Automaten<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/b9fedb51cd1c8fced79ca221a925349c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer bekannteste zellulare Automat ist <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%96%D0%B8%D0%B7%D0%BD%D1%8C_(%D0%B8%D0%B3%D1%80%D0%B0)\">das Spiel 'Life'<\/a><\/noindex>, das aufgrund seiner Regeln (wenn eine Zelle viele Nachbarn hat, stirbt sie) ein sp\u00e4rliches Array darstellt.<\/p>\n<p>Stephen Wolfram ist der Meinung, dass zellulare Automaten ein <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/A_New_Kind_of_Science\">neues Wissenschaftsgebiet darstellen.<\/a><\/noindex>. Im Jahr 2002 ver\u00f6ffentlicht er das 1280-seitige Buch \u201eA New Kind of Science\u201c, in dem er umfassend argumentiert, dass Fortschritte im Bereich der zellul\u00e4ren Automaten nicht isoliert sind, sondern sehr stabil und von gro\u00dfer Bedeutung f\u00fcr alle wissenschaftlichen Disziplinen.<\/p>\n<p>Es hat sich gezeigt, dass jeder auf einem Computer ausf\u00fchrbare Algorithmus durch einen zellul\u00e4ren Automaten realisiert werden kann. Zellul\u00e4re Automaten werden verwendet, um dynamische Umgebungen und Systeme zu modellieren, algorithmische Probleme zu l\u00f6sen und andere Zwecke zu verfolgen.<\/p>\n<p>Wenn wir ein riesiges Feld haben und alle Zwischenzust\u00e4nde des zellul\u00e4ren Automaten aufzeichnen m\u00fcssen, ist es durchaus sinnvoll, globale Variablen zu verwenden.<\/p>\n<h2>Kartographie<\/h2>\n<p>\nDas Erste, was mir in den Sinn kommt, wenn es um die Verwendung von sp\u00e4rlichen Arrays geht, sind kartographische Aufgaben.<\/p>\n<p>Auf Karten gibt es normalerweise sehr viel leeren Raum. Wenn man eine Karte als gro\u00dfe Pixel darstellt, w\u00e4ren 71 % der Pixel der Erde vom Ozean belegt. Ein sp\u00e4rliches Array. Und wenn man nur von menschlicher Hand geschaffene Werke eintr\u00e4gt, bleibt mehr als 95 % leerer Raum.<\/p>\n<p>Nat\u00fcrlich werden Karten nicht als Rasterdaten gespeichert, sondern in einer vektoriellen Darstellung.<br \/>\nAber was sind vektorbasierte Karten? Sie bestehen aus Linienz\u00fcgen und Polygonen, die aus Punkten bestehen.<br \/>\nIm Grunde genommen handelt es sich um eine Datenbank von Punkten und den Verbindungen zwischen ihnen.<\/p>\n<p>Eine der ehrgeizigsten Aufgaben der Kartierung ist die Mission zur Kartierung unserer Galaxie mit dem Gaia-Teleskop. Bildlich gesprochen \u00e4hnelt unsere Galaxie, wie das gesamte Universum, einem durchgehenden, d\u00fcnnen Array: gewaltige R\u00e4ume der Leere, in denen es seltene kleine Punkte gibt \u2014 Sterne. Der leere Raum macht 99,999999\u2026%. F\u00fcr die Speicherung der Karte unserer Galaxie wurde eine Datenbank auf Globalen \u2014 Cach\u00e9 \u2014 ausgew\u00e4hlt.<\/p>\n<p>Ich kenne die genaue Struktur der Globals in diesem Projekt nicht, ich kann mir aber vorstellen, dass sie \u00e4hnlich wie folgt aussieht:<\/p>\n<pre><code class=\"bash\">Set ^galaxy(b, l, d) = 1; Die Nummer des Sterns im Katalog, falls vorhanden\nSet ^galaxy(b, l, d, \"name\") = \"Sonne\"\nSet ^galaxy(b, l, d, \"type\") = \"normal\"; Optionen sind blackhole, quazar, red_dwarf usw.\nSet ^galaxy(b, l, d, \"weight\") = 14E50\nSet ^galaxy(b, l, d, \"planetes\") = 7\nSet ^galaxy(b, l, d, \"planetes\", 1) = \"Merkur\"\nSet ^galaxy(b, l, d, \"planetes\", 1, weight) = 1E20\n...\n<\/code><\/pre>\n<p>\n<i>Wo b, l, d - das sind <noindex><a rel=\"nofollow\" href=\"https:\/\/de.wiki2.org\/wiki\/Galaktisches_Koordinatensystem\">galaktische Koordinaten: Breite, L\u00e4nge<\/a><\/noindex> und der Abstand zur Sonne.<\/i><\/p>\n<p>Die flexible Struktur der Globals erm\u00f6glicht es, alle ben\u00f6tigten Eigenschaften von Sternen und Planeten zu speichern, da die Datenbanken auf den Globals schemalos sind.<\/p>\n<p>F\u00fcr die Speicherung der Karte unseres Universums wurde Cach\u00e9 nicht nur wegen ihrer Flexibilit\u00e4t ausgew\u00e4hlt, sondern auch wegen der F\u00e4higkeit, Datenstr\u00f6me sehr schnell zu speichern, w\u00e4hrend gleichzeitig indexierte Globals f\u00fcr eine schnelle Suche erstellt werden.<\/p>\n<p>Wenn wir zur Erde zur\u00fcckkehren, wurden auf den Globals kartografische Projekte erstellt. <noindex><a rel=\"nofollow\" href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Xapi\">OpenStreetMap XAPI<\/a><\/noindex> und ein Fork von OpenStreetMap \u2014 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.fosm.org\/\">FOSM<\/a><\/noindex>.<\/p>\n<p>K\u00fcrzlich beim <noindex><a rel=\"nofollow\" href=\"http:\/\/habrahabr.ru\/company\/intersystems\/blog\/267459\/\">Hackathon Cach\u00e9<\/a><\/noindex> wurden geospatial Indizes umgesetzt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-ru\/spatialindex\">Geospatial<\/a><\/noindex>. Wir erwarten von den Autoren des Artikels Details zur Implementierung.<\/p>\n<h3>Die Implementierung von r\u00e4umlichen Indizes auf dem Global in OpenStreetMap XAPI<\/h3>\n<p>\nDie Bilder stammen von <noindex><a rel=\"nofollow\" href=\"http:\/\/www.slideshare.net\/george.james\/fosdem-2010-gtm-and-openstreetmap\">dieser Pr\u00e4sentation<\/a><\/noindex>.<\/p>\n<p>Der gesamte Erdball wird in Quadrate unterteilt, dann in Unterquadrate, und die Unterquadrate in weitere Unterquadrate usw. Insgesamt erhalten wir eine hierarchische Struktur, f\u00fcr deren Speicherung Globals geschaffen wurden.<\/p>\n<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/239c54c201b8013f1897ecf1ccadcc9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZu jedem Zeitpunkt k\u00f6nnen wir fast sofort das ben\u00f6tigte Quadrat anfordern oder es l\u00f6schen, wobei alle Unterquadrate ebenfalls zur\u00fcckgegeben oder gel\u00f6scht werden.<\/p>\n<p>Ein \u00e4hnliches Schema auf den Globals kann auf verschiedene Weise umgesetzt werden.<\/p>\n<p>Variante 1:<\/p>\n<pre><code class=\"bash\">Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idErsterPunkt\nSet ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idZweiterPunkt\n...<\/code><\/pre>\n<p>\nVariante 2:<\/p>\n<pre><code class=\"bash\">Set ^m('abacdabcdabacdabcda', 1) = idErsterPunkt\nSet ^m('abacdabcdabacdabcda', 2) = idZweiterPunkt\n...<\/code><\/pre>\n<p>\nIn beiden F\u00e4llen ist es einfach, auf COS\/M Punkte zu fordern, die sich in einem Quadrat beliebigen Niveaus befinden. Es wird etwas einfacher sein, quadratische Raumst\u00fccke beliebigen Niveaus im ersten Fall zu bereinigen, aber das ist selten notwendig.<\/p>\n<p>Beispiel eines der kleineren Quadrate:<\/p>\n<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/1fba7eb9253c6af9206cb168c6d43f2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHier sind einige Globals aus dem Projekt XAPI: Darstellung des Indexes in Globals:<\/p>\n<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/3a80dd4c3fb23d0f2d3094703966f74b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGlobal <strong>^way<\/strong> wird zur Speicherung von Punkten verwendet <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Polygonal_chain\">Polyline<\/a><\/noindex> (Stra\u00dfen, kleine Fl\u00fcsse usw.) und Polygonen (geschlossene Bereiche: Geb\u00e4ude, W\u00e4lder usw.).<\/p>\n<h2>Grobe Klassifizierung der Nutzung von sp\u00e4rlichen Arrays in Globals.<\/h2>\n<p><\/p>\n<ol>\n<li>Wir speichern die Koordinaten bestimmter Objekte und deren Zustand (Mapping, zellulare Automaten)<\/li>\n<li>Wir speichern sp\u00e4rliche Matrizen.<\/li>\n<\/ol>\n<p>\nF\u00fcr den Fall 2) bei der Abfrage einer bestimmten Koordinate, wo dem Element kein Wert zugewiesen ist, m\u00fcssen wir den Standardwert des Elements des sp\u00e4rlichen Arrays erhalten.<\/p>\n<h2>Vorteile, die wir erhalten, wenn wir mehrdimensionale Matrizen in Globals speichern.<\/h2>\n<p>\n<b>Schnelles Entfernen und\/oder Abfragen von Raumabschnitten, die Vielfache von Zeilen, Ebenen, W\u00fcrfeln usw. sind.<\/b> F\u00fcr F\u00e4lle, in denen Ganzzahlindizes verwendet werden, kann es n\u00fctzlich sein, die M\u00f6glichkeit des schnellen Entfernens und\/oder Abfragens von Raumabschnitten, die Vielfache von Zeilen, Ebenen, W\u00fcrfeln usw. sind, zu haben.<\/p>\n<p>Mit dem Befehl <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_ckill\">Beenden<\/a><\/noindex> Wir k\u00f6nnen sowohl ein einzelnes Element als auch eine Zeile und sogar eine ganze Ebene entfernen. Dank der Eigenschaften der Globalen geschieht dies sehr schnell \u2013 Tausende Male schneller als elementweises Entfernen.<\/p>\n<p>Die Abbildung zeigt ein dreidimensionales Array in einer Globalen <strong>^a<\/strong> und verschiedene Arten des Entfernens.<\/p>\n<p><img decoding=\"async\" alt=\"Globale \u2014 Speichermedien f\u00fcr Daten. Sparse Arrays. Teil 3\" src=\"\/wp-content\/uploads\/2019\/07\/cc85ee59d42595df0d72480d3e533a12.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr das Abfragen von Raumabschnitten anhand bekannter Indizes kann der Befehl verwendet werden <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_cmerge\">Zusammenf\u00fchren<\/a><\/noindex>.<\/p>\n<p>Abfrage einer Spalte der Matrix in die Variable Column:<\/p>\n<pre><code class=\"bash\">; Wir definieren ein dreidimensionales sp\u00e4rliches Array 3x3x3\nSet ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1\nMerge Column = ^a(2,2)\n; Lassen Sie uns die Variable Column ausgeben\nZwrite Column\n<\/code><\/pre>\n<p>\nFazit:<\/p>\n<pre><code class=\"bash\">Column(0)=1\nColumn(2)=1\n<\/code><\/pre>\n<p>\nInteressanterweise ist die Variable Column ebenfalls ein sp\u00e4rliches Array, auf das ebenfalls \u00fcber zugreifen werden muss <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_fget\">$GET<\/a><\/noindex>, da die Standardwerte nicht darin gespeichert sind.<\/p>\n<p>Das Abfragen von Raumabschnitten kann auch durch ein kleines Programm unter Verwendung der Funktion erfolgen <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.intersystems.com\/cache20152\/csp\/docbook\/DocBook.UI.Page.cls?KEY=RCOS_forder\">$Order<\/a><\/noindex>. Dies ist insbesondere praktisch in Bereichen, deren Indizes nicht quantifiziert sind (Kartografie).<\/p>\n<h2>Fazit<\/h2>\n<p>\nDie heutigen Zeiten stellen neue, ehrgeizige Herausforderungen. Graphen k\u00f6nnen aus Milliarden von Knoten bestehen, Karten aus Milliarden von Punkten, und es gibt sogar Personen, die ihre eigene Universum auf zellul\u00e4ren Automaten starten m\u00f6chten (<noindex><a rel=\"nofollow\" href=\"http:\/\/lenta.ru\/news\/2009\/08\/28\/universe\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.worldscientific.com\/worldscibooks\/10.1142\/4702\">2<\/a><\/noindex>).<\/p>\n<p>Wenn das Volumen von sparse Arrays nicht mehr im Arbeitsspeicher untergebracht werden kann und dennoch damit gearbeitet werden muss, lohnt es sich, die M\u00f6glichkeit zu pr\u00fcfen, solche Projekte auf Globals und COS zu realisieren.<\/p>\n<p>Vielen Dank f\u00fcr Ihre Aufmerksamkeit! Wir freuen uns auf Ihre Fragen und Anregungen in den Kommentaren.<\/p>\n<p><b>Haftungsausschluss<\/b>: <i>Dieser Artikel und meine Kommentare dazu spiegeln meine pers\u00f6nliche Meinung wider und stehen nicht im Zusammenhang mit der offiziellen Position der InterSystems Corporation.<\/i><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/268465\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 (1, 2) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445, \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27432,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36632","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=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 (1, 2) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445, \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\" \/>\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\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\" \/>\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\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c 3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 (1, 2) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445, \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3\" \/>\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-10-31T19:12:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:47+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\udd47Globals \u2013 die Sch\u00e4tze zur Datenspeicherung. Sp\u00e4rliche Arrays. Teil 3 | ProHoster","description":"In den vorherigen Teilen (1, 2) haben wir Globals als B\u00e4ume betrachtet, in diesem Teil werden wir Globals als sp\u00e4rliche Arrays betrachten. Ein sp\u00e4rliches Array ist eine Art von Array, bei dem die meisten Werte den gleichen Wert annehmen. In der Praxis gibt es oft derart gro\u00dfe sp\u00e4rliche Arrays, dass es keinen Sinn macht, Speicher mit identischen Elementen zu belegen. Daher ist es sinnvoll, sp\u00e4rliche Arrays zu implementieren.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","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\u0413\u043b\u043e\u0431\u0430\u043b\u044b \u2014 \u043c\u0435\u0447\u0438-\u043a\u043b\u0430\u0434\u0435\u043d\u0446\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0427\u0430\u0441\u0442\u044c 3 | ProHoster","og:description":"\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 (1, 2) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0433\u043b\u043e\u0431\u0430\u043b\u0430\u0445 \u043a\u0430\u043a \u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u0445, \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0420\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0447\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/globaly-mechi-kladentsy-dlya-hraneniya-dannyh-razrezhennye-massivy-chast-3","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-10-31T19:12:47+00:00","article:modified_time":"2019-10-31T19:12:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36632","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-22 04:12:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:41:52","updated":"2026-01-22 04:12:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36632","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=36632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27432"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}