{"id":123245,"date":"2025-04-02T21:05:07","date_gmt":"2025-04-02T19:05:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql"},"modified":"2025-04-02T21:05:07","modified_gmt":"2025-04-02T19:05:09","slug":"razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Udviklerne af OrioleDB har foresl\u00e5et at forbedre API'et til alternative PostgreSQL-motorer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Udviklerne af OrioleDB har analyseret den nuv\u00e6rende tilstand af det lavniveau API, der anvendes til adgangen til udvidelsers tabeller og indekser i PostgreSQL (Table\/Index Access Method (AM) API), og har foresl\u00e5et m\u00e5der til forbedring. Siden fremkomsten af dette API i PostgreSQL 12 har udviklerne haft mulighed for at skabe alternative datalagringsmekanismer. Dog, p\u00e5 trods af tilg\u00e6ngeligheden af dette API og de kendte begr\u00e6nsninger ved den indbyggede lagermekanisme, er der endnu ikke blevet udviklet fuldt funktionelle transaktionelle lagermotorer udelukkende implementeret som udvidelser.    <\/p>\n<p>De mest efterspurgte funktioner for alternative tabelmotorer i PostgreSQL er:  <\/p>\n<ul>\n<li class=\"l\"> Alternative implementeringer af MVCC, s\u00e5som lagre baseret p\u00e5 UNDO-loggen.\n<li class=\"l\"> Indeksorganiserede tabeller, hvor indekset ikke er et valgfrit supplement til tabellen, som accelererer foresp\u00f8rgsler, men derimod repr\u00e6senterer den prim\u00e6re datastruktur, hvori tabeldataene opbevares.    <\/ul>\n<p>\u00c6ndringerne, der er n\u00f8dvendige i API Table\/Index AM for at st\u00f8tte alternative implementeringer af MVCC, overvejes med henblik p\u00e5 OrioleDB-udvidelsen, der er udviklet for at im\u00f8deg\u00e5 de kendte mangler ved PostgreSQLs indbyggede lagermekanisme. Problemet er, at fuld integration af OrioleDB med PostgreSQL kr\u00e6ver \u00e6ndringer i PostgreSQL-koden, hvilket komplicerer projektets implementering og understreger behovet for modernisering af det nuv\u00e6rende API Table AM.    <\/p>\n<p>API Table AM p\u00e5l\u00e6gger ikke direkte, hvordan MVCC skal implementeres. Ikke desto mindre antager API Table AM og API Index AM f\u00f8lgende: hver TID (Tuple\/row Identifier) er enten indekseret af alle indekser eller slet ikke indekseret. Selv hvis Index AM har flere referencer til en enkelt TID (f.eks. GIN), skal alle disse referencer matche den samme indekserede v\u00e6rdi.    <center><img decoding=\"async\" alt=\"Udviklerne af OrioleDB har foresl\u00e5et at forbedre API&#039;et til alternative PostgreSQL-motorer\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Denne princip er blevet kritiseret for at \u00f8ge antallet af skriveoperationer (\u00bbwrite amplification\u00ab) \u2014 hvis \u00e9n indekseret attribut opdateres, skal hver index i tabellen opdateres. For fuldt ud at kunne udnytte fordelene ved en UNDO-log eller bygge en anden opbevaringsmetode uden \u00bbskriveforst\u00e6rkning\u00ab (for eksempel WARM-metoden) er det n\u00f8dvendigt at bryde dette antagelse.  <center><img decoding=\"async\" alt=\"Udviklerne af OrioleDB har foresl\u00e5et at forbedre API&#039;et til alternative PostgreSQL-motorer\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Table AM, der er baseret p\u00e5 UNDO, som ikke vil overtr\u00e6de denne antagelse, minder om den eksisterende metode HOT (Heap-Only Tuples), bortset fra at gamle versioner af r\u00e6kker gemmes i UNDO-loggen og ikke skal v\u00e6re p\u00e5 samme side. Men if\u00f8lge forfatterne er dette fordele ikke tilstr\u00e6kkelige til at berettige eksistensen af en separat Table AM.    <\/p>\n<p>Praktiske begr\u00e6nsninger i den eksisterende API:    <\/p>\n<ul>\n<li class=\"l\"> Under opdateringen af en tabelr\u00e6kkes indekser opdateres efter princippet \u00bbalt eller intet\u00ab.\n<li class=\"l\"> Mangel p\u00e5 mulighed for punktvis sletning af bestemte tupler i API Index AM. I \u00f8jeblikket kan tupler kun slettes fra indekser massivt ved hj\u00e6lp af metoderne ambulkdelete og amvacuumcleanup. At fors\u00f8ge at implementere punktvis sletning via denne API ville f\u00f8re til lav effektivitet, da de fleste nuv\u00e6rende implementeringer skal scanne hele indekset. Desuden tillader API'et ikke at angive, hvilke af tuplerne, der refererer til den samme TID, der skal slettes. Det kan kun slette dem alle.\n<li class=\"l\"> Indekser refererer i \u00f8jeblikket til tabelr\u00e6kker ved bloknummer (32 bit) og forskydningsnummer (16 bit). Og kun 11 bit af forskydningsnummeret kan sikkert overf\u00f8res fra tabel TID til alle indeksadgangsmetoder. Dette kan medf\u00f8re, at alternative MVCC-implementeringer skal opbevare ekstra nyttelast (payload) sammen med TID. For eksempel kr\u00e6ver OrioleDB en eller flere bit til implementering af \u00bbdelete-marking\u00ab indekser eller fuld synlighedsinformation.      <\/ul>\n<p>To metoder er foresl\u00e5et til at overvinde begr\u00e6nsningerne i praksis:  <\/p>\n<ul>\n<p>Tilgang 1: API Index AM giver muligheder for alternativ implementering af MVCC.    <\/p>\n<p>Mens Table AM fortsat er ansvarlig for alle MVCC-komponenter, tilbyder Index AM de n\u00f8dvendige funktioner til alternativ MVCC-implementering, nemlig: opbevaring af brugerens nyttelast (payload) sammen med TID, metode til punktfjerning og endda metode til punktopdatering (hvis TID i indekset ikke kan \u00e6ndres, kan brugerens nyttelast). Desuden, da det er n\u00f8dvendigt at tillade, at flere tuple i indekset refererer til samme TID, skal de anvendte API-metoder under indeksscan ogs\u00e5 opdateres.    <\/p>\n<p>Tilgang 2: Indekser, der underst\u00f8tter MVCC.    <\/p>\n<p>Et alternativ kunne v\u00e6re at tillade indekser, der underst\u00f8tter MVCC. Det vil sige, at \u00bbexecutor\u00ab (eller muligvis Table AM) simpelthen kalder metoderne insert() og delete() i Index AM, mens Index AM giver mulighed for scanning under hensyntagen til MVCC. Dette ville i h\u00f8j grad forsimple scanningen ved kun at bruge indekser (index-only). Selv hele Table AM i s\u00e5 fald kunne blive et mellemled, der opbevarer data i indekset.    <\/p>\n<p>I diagrammet nedenfor er der et eksempel. Indeksv\u00e6rdien 2 opdateres af transaktionen 11 fra v\u00e6rdien &laquo;A&raquo; til v\u00e6rdien &laquo;B&raquo;. Derfor er v\u00e6rdien &laquo;A&raquo; markeret som xmax == 11, og v\u00e6rdien &laquo;B&raquo; er markeret som xmin == 11. P\u00e5 denne m\u00e5de kan man scanne indeks 2 og f\u00e5 kun synlige tuples i overensstemmelse med MVCC uden at skulle kontrollere heapen. Affaldssamlingen af indeks 2 kan ogs\u00e5 udf\u00f8res uden brug af heapen.    <center><img decoding=\"async\" alt=\"Udviklerne af OrioleDB har foresl\u00e5et at forbedre API&#039;et til alternative PostgreSQL-motorer\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Ved implementeringen af alle de n\u00e6vnte innovationer i API'et for indeksmetoder til adgang, er det usandsynligt, at det er muligt at opdatere alle indekser samtidig for at underst\u00f8tte alle nye funktioner. Det er mere realistisk at tillade flere implementeringer for en tilgangsmetode til indeks. For eksempel, ud over den normale B-tree, vil udvidelsen kunne implementere en alternativ B-tree med st\u00f8tte for MVCC inden for indekset og st\u00f8tte for post-id'er af vilk\u00e5rlig l\u00e6ngde.    <center><img decoding=\"async\" alt=\"Udviklerne af OrioleDB har foresl\u00e5et at forbedre API&#039;et til alternative PostgreSQL-motorer\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Derfor foresl\u00e5s det at revurdere ikke kun API'et for Table AM, men ogs\u00e5 API'et for Index AM, som har fungeret godt for PostgreSQL-samfundet i mange \u00e5r. Desuden foresl\u00e5s det at opdele Index AM i et logisk lag og et implementationslag. Denne genovervejede arkitektur vil give PostgreSQL mulighed for at underst\u00f8tte forskellige opbevaringsmodeller.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=62991\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f. \u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 PostgreSQL 12 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e API \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0442\u043e\u0433\u043e API \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":123246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-123245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.\" \/>\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\/da\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c API \u0434\u043b\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\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=\"2025-04-02T19:05:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-04-02T19:05:09+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\udd47Udviklerne af OrioleDB har foresl\u00e5et at forbedre API'et for alternative PostgreSQL-motorer | ProHoster","description":"Udviklerne af OrioleDB har analyseret den nuv\u00e6rende tilstand af lavniveau API'et, der anvendes til at give udvidelser adgang til tabeller og indekser i PostgreSQL (Table\/Index Access Method (AM) API) og foresl\u00e5et m\u00e5der at forbedre det.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c API \u0434\u043b\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 PostgreSQL | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 OrioleDB \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e API, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0432 PostgreSQL (Table\/Index Access Method (AM) API), \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u0443\u0442\u0438 \u0435\u0433\u043e.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","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":"2025-04-02T19:05:09+00:00","article:modified_time":"2025-04-02T19:05:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"123245","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":"default","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-23 11:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 11:48:19","updated":"2026-01-23 11:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}