{"id":369,"date":"2023-11-15T11:30:00","date_gmt":"2023-11-15T10:30:00","guid":{"rendered":"https:\/\/niwadev.com\/?p=369"},"modified":"2025-01-27T14:21:24","modified_gmt":"2025-01-27T13:21:24","slug":"skalierbare-anwendungen-mit-der-richtigen-datenbank-entwickeln-azure-cosmos-db","status":"publish","type":"post","link":"https:\/\/niwadev.com\/de\/blog\/develop-scalable-applications-with-the-right-database-azure-cosmos-db\/","title":{"rendered":"Skalierbare Anwendungen mit der richtigen Datenbank entwickeln: Azure Cosmos DB"},"content":{"rendered":"<p>Cloud-Technologien haben den Entwickleralltag in den letzten Jahren stark ver\u00e4ndert und finden in immer mehr Anwendungen Einsatz. Eine besondere cloudbasierte Datenbanktechnologie, die ich in den letzten Wochen genauer unter die Lupe genommen habe, ist Azure Cosmos DB. In diesem Artikel m\u00f6chte ich die Vorz\u00fcge dieser Technologie vorstellen und zeigen, warum sie f\u00fcr die Entwicklung von Web-Anwendungen besonders gut geeignet ist. Dazu werde ich auf die Funktionsweise eingehen zeigen, wie man die Cosmos DB konfiguriert.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Warum ist Azure Cosmos DB eine gute Wahl f\u00fcr die Entwicklung von Anwendungen?<\/h2>\n\n\n\n<p>Der von Microsoft bereitgestellte Azure Service ist durch seine Architektur sehr gut skalierbar. Die Daten lassen sich somit geografisch m\u00f6glichst nah beim Nutzer speichern, damit der Datenzugriff ohne gro\u00dfe Latenzen m\u00f6glich ist. Bei Azure Cosmos DB handelt es sich um einen managed Service. Das bedeutet f\u00fcr die Nutzung muss kein Server inklusive Betriebssystem betrieben werden. Somit liegt der Fokus auf der Entwicklung mit Cosmos DB und die klassische Administration \nist pass\u00e9. Des Weiteren liegt die <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/introduction#mission-critical-ready\">garantierte Verf\u00fcgbarkeit bei 99,999%<\/a>, wodurch sich die Datenbank hervorragend f\u00fcr den Einsatz in Anwendungen eignet, die auf eine hohe Verf\u00fcgbarkeit ausgelegt sind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist die Azure Cosmos DB und wie unterscheidet sie sich von anderen Datenbanken?<\/h2>\n\n\n\n<p>In den meisten F\u00e4llen wird die Cosmos DB mit der NoSQL-API verwendet. Dadurch werden Entit\u00e4ten in Form von JSON-Dokumenten abgelegt und nicht in tabellarischer Form, wie es beispielsweise bei SQL der Fall ist. Dieser Ansatz bietet die M\u00f6glichkeit die Daten flexibler auf Partitionen abzulegen, welche sich wiederum auf unterschiedlichen Servern befinden k\u00f6nnen. Die Speicherung der Entit\u00e4ten in Form von Dokumenten ist schemalos. Anders gesagt gibt es Datenbank-seitig keine M\u00f6glichkeit festzulegen, welche Eigenschaft ein Eintrag beinhalten muss. Dies ist vor allem dann ungewohnt, wenn Sie vorher viel mit relationalen Datenbanken gearbeitet haben und die Strukturierung der Daten in diesen Umgebungen gew\u00f6hnt sind.<\/p>\n\n\n\n<p>Von relationalen Datenbanksystemen kennt man die Option bei Spalten festzulegen, ob sie indiziert werden sollen. Durch die beschriebene Schemalosigkeit f\u00e4llt diese M\u00f6glichkeit in der Cosmos DB weg. Damit die Abfragen schnell sind, werden <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/index-overview\">alle Eigenschaften eines Dokuments indiziert<\/a>. Kein Kopfzerbrechen mehr \u00fcber prim\u00e4re und sekund\u00e4re Indizes.<\/p>\n\n\n\n<p>Beide Ans\u00e4tze bieten einen gro\u00dfen Vorteil gegen\u00fcber herk\u00f6mmlichen Datenbanksystemen: Flexibilit\u00e4t. Ohne Schema kann ein Objekt beliebig angepasst oder erweitert werden, ohne dass man sich um Datenbankmigrationen k\u00fcmmern muss, um Code und Datenbanktabellen auf gleichen Stand zu bringen. Zudem wird kein OR-Mapper mehr ben\u00f6tigt, da die Objekte direkt als solche in der Datenbank gespeichert sind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Welche Anwendungen profitieren von der Azure Cosmos DB?<\/h2>\n\n\n\n<p>Microsofts cloudbasierter Datenbankservice ist sehr vielseitig und l\u00e4sst sich somit in diversen Anwendungsszenarien nutzen. Egal ob Web-Anwendungen, Apps, Spiele, KI-Software oder IoT Anwendungen - die Liste der Einsatzzwecke ist lang. Besonders profitieren die Anwendungen, welche sehr viele Daten verarbeiten oder die auf globaler Ebene viele Lese- und Schreibzugriffe verzeichnen. Durch die vertikale Skalierung kann sich die Azure Cosmos DB flexibel auf den aktuellen Bedarf anpassen.<\/p>\n\n\n<div class=\"gb-container gb-container-09dc38ee\">\n\n<p>Sie sind daran interessiert, Ihre Anwendung mit Azure Cosmos DB zu entwickeln, haben aber keine Zeit, dies selbst zu tun?<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/niwadev.com\/de\/kontakt\/\" target=\"_blank\" rel=\"noreferrer noopener\">Kontaktieren Sie mich noch heute!<\/a><\/div>\n<\/div>\n\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Wie wird eine Azure Cosmos DB-Datenbank eingerichtet und konfiguriert?<\/h2>\n\n\n\n<p>Wie die zahlreichen anderen Azure Dienste l\u00e4sst sich auch die Cosmos DB \u00fcber das Azure Portal oder die Azure CLI einrichten und konfigurieren. Dabei sollte bei der Erstellung sollte auf einige Optionen geachtet werden, die sich zum Teil im Anschluss nicht mehr \u00e4ndern lassen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Auswahl der API<\/h3>\n\n\n\n<p>Die wohl wichtigste Entscheidung beim Anlegen einer Azure Cosmos DB Instanz ist die der genutzten API. Der Service bietet mehrere Schnitstellen an, \u00fcber die die Daten transferiert und gespeichert werden.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NoSQL:<\/strong> Microsofts eigene Implementierung eines Dokument-basierten Datenbanksystems. Dabei werden die Entit\u00e4ten in Form von JSON-Dokumenten abgelegt. Wenn Sie Daten in Form von JSON-Dokumenten speichern m\u00f6chten und keine starre Struktur ben\u00f6tigen, k\u00f6nnte die NoSQL-API die richtige Wahl sein. Sie eignet sich besonders f\u00fcr Anwendungen, die Flexibilit\u00e4t bei der Datenmodellierung ben\u00f6tigen.<\/li>\n\n\n\n<li><strong>MongoDB:<\/strong> Open-Source Datenbanksystem f\u00fcr nicht relationale Entit\u00e4ten. Legt die Daten im BSON Format ab. Wenn Sie bereits Erfahrung mit MongoDB haben oder eine Anwendung haben, die f\u00fcr diese Datenbank optimiert ist, k\u00f6nnte die MongoDB-API f\u00fcr Sie die beste Wahl sein.<\/li>\n\n\n\n<li><strong>Apache Cassandra:<\/strong> Open-Source System, welches die Daten in einem sogenannten \"wide-column store\" speichert. Wenn Sie vor allem daran interessiert sind, gro\u00dfe Datenmengen zu speichern und schnellen Zugriff darauf zu haben, k\u00f6nnte die Apache Cassandra-API f\u00fcr Sie geeignet sein.<\/li>\n\n\n\n<li><strong>Table:<\/strong> Ein von Microsoft entwickelter Key-Value Store. Die Table-API ist besonders geeignet f\u00fcr Anwendungen, die auf Key-Value-Speicherung ausgelegt sind und schnellen Zugriff auf diese Daten ben\u00f6tigen.<\/li>\n\n\n\n<li><strong>Apache Gremlin:<\/strong> Open Source Graph Datenbank. Basiert auf Apache TinkerPop. Wenn Sie Daten in Form von Graphen speichern und analysieren m\u00f6chten, ist die Apache Gremlin-API die richtige Wahl.<\/li>\n\n\n\n<li><strong>PostgreSQL:<\/strong> relationale Datenbank, die mit Hilfe von \"<a href=\"https:\/\/github.com\/citusdata\/citus\">Citus<\/a>\" verteilte Datenbanktabellen, verteile Abfragen usw. unterst\u00fctzt. Wenn Sie bereits Erfahrung mit PostgreSQL haben oder eine Anwendung haben, die f\u00fcr diese Datenbank optimiert ist, k\u00f6nnte die PostgreSQL-API f\u00fcr Sie die beste Wahl sein. Sie eignet sich besonders f\u00fcr Anwendungen, die feste Datenstrukturen und die M\u00f6glichkeit zur Nutzung von SQL-Abfragen ben\u00f6tigen.<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d782ed35f4c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69d782ed35f4c\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-api-decision-tree.svg\" alt=\"Diagramm, um zu entscheiden, welche Cosmos DB API in welchem Szenario verwendet werden soll.\" class=\"wp-image-412\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Vergr\u00f6\u00dfern\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\"><em>Entscheidungsbaum von Microsoft, welche Cosmos DB API verwendet werden soll<\/em> \u2013 Quelle: <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/choose-api\" target=\"_blank\" rel=\"noopener\" title=\"Microsoft\">Microsoft<\/a><\/figcaption><\/figure>\n\n\n\n<p>Es gibt nicht \"die beste API\". Die Entscheidung h\u00e4ngt von der beabsichtigten Verwendung und der bisher verwendeten Technologie ab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wahl des Capacity Modes<\/h3>\n\n\n\n<p>Bei der Erstellung einer Cosmos DB werden zwei Capacity Modes angeboten, zwischen denen man w\u00e4hlen kann. Ob man sich f\u00fcr Provisioned Throughput oder Serverless entscheidet, wirkt sich am st\u00e4rksten bei der Abrechnung aus. Jeder Modus hat seine Vor- und Nachteile und welcher Modus zu der jeweiligen Anwendung passt, muss im Einzelfall entschieden werden. Dabei k\u00f6nnen folgendende Kriterien helfen:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Kriterium<\/th><th>Serverless<\/th><th>Provisioned Throughput<\/th><\/tr><\/thead><tbody><tr><td>Geeignet f\u00fcr<\/td><td>Anwendungen, deren Nutzungsverhalten unvorhersehbar ist.<\/td><td>Anwendungen mit gleichbleibender, vorhersehbarer Auslastung.<\/td><\/tr><tr><td>Wie es funktioniert<\/td><td>Keine Konfiguration n\u00f6tig; Datenbankabfragen k\u00f6nnen einfach  gegen den Container ausgef\u00fchrt werden.<\/td><td>Pro Container muss der Provisioned Throughput in Form von Request Units  im Voraus festgelegt werden.<\/td><\/tr><tr><td>Speicherplatzbegrenzung<\/td><td>50 GB (zuk\u00fcnftig 1 TB)<\/td><td>Unbegrenzt<\/td><\/tr><tr><td>Bezahlung<\/td><td>Bezahlung pro Stunde; nur die RUs, die genutzt wurden<\/td><td>Bezahlung pro Stunde; alle RUs, die im Voraus bereitgestellt worden sind<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\"><em>Entscheidungsmatrix f\u00fcr die Wahl der richtigen Abrechnungsmethode<\/em><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ausgaben limitieren und Kosten einsparen<\/h3>\n\n\n\n<p>Um die Kosten im Rahmen zu halten, bietet Microsoft beim Anlegen des Azure Services zwei M\u00f6glichkeiten an. Diese Optionen stehen nur im Capacity Mode \"Provisioned throughput\" zur Verf\u00fcgung. Zum Einen bietet Microsoft einen \"Free Tier Discount\" an, der sich einmalig f\u00fcr einen Azure Cosmos DB Account pro Subscription aktivieren l\u00e4sst. Dabei sind die ersten 1000 RU\/s und 25 GB Speicher kostenfrei.<\/p>\n\n\n\n<p>Zum Anderen gibt es die Option \"Limit total account throughput\". Diese ist standardm\u00e4\u00dfig aktiv und unterst\u00fctzt die Kostenkontrolle, indem sie das festgelegte Durchsatzlimit nicht \u00fcberschreitet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Globale Verteilung der Daten<\/h3>\n\n\n\n<p>Je nach Region k\u00f6nnen unterschiedliche Optionen zur Verf\u00fcgung stehen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Geo-Redundanz (nur f\u00fcr Provisioned Throughput): aktiviert die globale Verteilung der Daten, indem zwei Regionen miteinander gekoppelt werden (z. B. Westeuropa mit Nordeuropa)<\/li>\n\n\n\n<li>Multi-Region-Writes (nur f\u00fcr Provisioned Throughput): erm\u00f6glicht das weltweite Schreiben auf die Datenbank<\/li>\n\n\n\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/reliability\/availability-zones-overview#availability-zones\">Availability Zones<\/a>: erh\u00f6ht die Verf\u00fcgbarkeit der Anwendung durch die Verteilung der Datenbank auf mehrere Rechenzentren in der gleichen Region<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking<\/h3>\n\n\n\n<p>Im Netzwerk-Bereich sollte die Einstellung zu den Verbindungsm\u00f6glichkeiten m\u00f6glichst eng gefasst sein. Das bedeutet, dass man auf einen Zugriff aus allen Netzwerken heraus verzichten sollte und mittels Firewall oder den private Endpoints die Zugriffsm\u00f6glichkeiten festlegt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Backup Policy<\/h3>\n\n\n\n<p>In der Azure Cosmos DB kann man sich zwischen zwei m\u00f6glichen Backup-Modi entscheiden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Continuous: kontinuierliche Sicherung der Daten in jeder Region des Cosmos DB Accounts, Wiederherstellung \u00fcber Azure Portal bzw. CLI eigenst\u00e4ndig m\u00f6glich<\/li>\n\n\n\n<li>Periodic: periodische Sicherung bis zu einem Monat, Wiederherstellung durch Kundenservice<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Verschl\u00fcsselung<\/h3>\n\n\n\n<p>Standardm\u00e4\u00dfig werden Daten mit Hilfe eines Service-managed Keys verschl\u00fcsselt. Das bedeutet, dass die Daten, die in der Datenbank liegen ohne diesen Schl\u00fcssel nicht lesbar sind. Dieser Schutz l\u00e4sst sich um eine zus\u00e4tzliche Schicht erweitern, indem man einen <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/how-to-setup-customer-managed-keys?tabs=azure-portal\">Customer-managed Key (CMK) konfiguriert<\/a>. Jedoch hat die Nutzung eines Customer-managed Keys Einfluss auf den <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cosmos-db\/how-to-setup-customer-managed-keys?tabs=azure-portal#how-do-customer-managed-keys-influence-capacity-planning\">Verbrauch von Request Units<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Azure Cosmos DB hilft bei der Entwicklung skalierbarer, global verteilter Anwendungen, da die Technologie genau f\u00fcr dieses Szenario konzipiert wurde. Allerdings k\u00f6nnen die umfangreichen Konfigurationsoptionen anfangs \u00fcberw\u00e4ltigend sein. Bisher habe ich die Cosmos DB mit der SQL-API verwendet und halte den Ansatz, Entit\u00e4ten als JSON-Dokumente zu speichern, f\u00fcr sehr praktisch, wenn Sie programmatisch auf die Daten zugreifen. In diesem Szenario ben\u00f6tigen Sie keine OR-Mapper mehr, um den Datenzugriff zu steuern und die Datenbankmigrationen im Auge zu behalten. Allerdings m\u00fcssen Sie darauf achten, dass Sie bei der Weiterentwicklung der Objekte weiterhin alte Konstellationen verarbeiten k\u00f6nnen, da es auf der Datenbankseite keine Validierung des Schemas gibt.<\/p>","protected":false},"excerpt":{"rendered":"<p>Cloud-Technologien haben den Entwickleralltag in den letzten Jahren stark ver\u00e4ndert und finden in immer mehr Anwendungen Einsatz. Eine besondere cloudbasierte Datenbanktechnologie, die ich in den letzten Wochen genauer unter die Lupe genommen habe, ist Azure Cosmos DB. In diesem Artikel m\u00f6chte ich die Vorz\u00fcge dieser Technologie vorstellen und zeigen, warum sie f\u00fcr die Entwicklung von Web-Anwendungen besonders gut geeignet ist. Dazu werde ich auf die Funktionsweise eingehen zeigen, wie man die Cosmos DB konfiguriert. <a title=\"Skalierbare Anwendungen mit der richtigen Datenbank entwickeln: Azure Cosmos DB\" class=\"read-more\" href=\"https:\/\/niwadev.com\/de\/blog\/develop-scalable-applications-with-the-right-database-azure-cosmos-db\/\" aria-label=\"Mehr Informationen \u00fcber Develop Scalable Applications with the Right Database: Azure Cosmos DB\">Weiterlesen &#8230;<\/a><\/p>","protected":false},"author":2,"featured_media":384,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[1],"tags":[18,21,32],"class_list":["post-369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-azure","tag-cloud","tag-cosmos-db"],"aioseo_notices":[],"uagb_featured_image_src":{"full":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud.webp",1200,400,false],"thumbnail":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud-150x150.webp",150,150,true],"medium":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud-300x100.webp",300,100,true],"medium_large":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud-768x256.webp",768,256,true],"large":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud-1024x341.webp",1024,341,true],"1536x1536":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud.webp",1200,400,false],"2048x2048":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud.webp",1200,400,false],"trp-custom-language-flag":["https:\/\/niwadev.com\/wp-content\/uploads\/2023\/11\/cosmos-db-in-azure-cloud-18x6.webp",18,6,true]},"uagb_author_info":{"display_name":"Nicolas Wazulek","author_link":"https:\/\/niwadev.com\/de\/blog\/author\/u_auth_niwa\/"},"uagb_comment_info":0,"uagb_excerpt":"Cloud technologies have changed the everyday life of developers in recent years and are being used in more and more applications. One particular cloud-based database technology that I have taken a closer look at in recent weeks is Azure Cosmos DB. In this article, I would like to present the advantages of this technology and&hellip;","_links":{"self":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/posts\/369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/comments?post=369"}],"version-history":[{"count":1,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/posts\/369\/revisions"}],"predecessor-version":[{"id":957,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/posts\/369\/revisions\/957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media\/384"}],"wp:attachment":[{"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/media?parent=369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/categories?post=369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niwadev.com\/de\/wp-json\/wp\/v2\/tags?post=369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}