{"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\/nl\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"De ontwikkelaars van OrioleDB hebben voorgesteld de API voor alternatieve PostgreSQL-motoren te verbeteren.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>De ontwikkelaars van OrioleDB hebben de huidige staat van de low-level API geanalyseerd, die wordt gebruikt voor de toegang van extensies tot tabellen en indexen in PostgreSQL (Table\/Index Access Method (AM) API), en hebben verbeteringsmogelijkheden voorgesteld. Sinds de introductie van deze API in PostgreSQL 12 hebben ontwikkelaars de mogelijkheid gekregen om alternatieve databasemechanismen te cre\u00ebren. Ondanks het bestaan van deze API en de bekende beperkingen van de ingebouwde opslagmechanisme, zijn er tot nu toe geen volledig functionele transactionele opslag-engines verschenen die uitsluitend als extensies zijn gerealiseerd.    <\/p>\n<p>De meest gevraagde functies voor alternatieve tabelengines in PostgreSQL zijn:  <\/p>\n<ul>\n<li class=\"l\"> Alternatieve implementaties van MVCC, bijvoorbeeld opslag op basis van een UNDO-log.\n<li class=\"l\"> Index-organized tables, waarbij de index geen optionele aanvulling op de tabel is die de zoekopdrachten versnelt, maar de primaire datastructuur is waarin de gegevens van de tabel worden opgeslagen.    <\/ul>\n<p>De benodigde wijzigingen in de API Table\/Index AM voor de ondersteuning van alternatieve implementaties van MVCC worden besproken met het oog op de OrioleDB-extensie, die is ontwikkeld om de bekende tekortkomingen van de ingebouwde opslagmechanisme van PostgreSQL te verhelpen. Het probleem is dat voor een volledige integratie van OrioleDB met PostgreSQL aanpassingen aan de PostgreSQL-code vereist zijn, wat de implementatie van het project bemoeilijkt en de noodzaak benadrukt voor een modernisering van de huidige API Table AM.    <\/p>\n<p>De API Table AM legt niet rechtstreeks een implementatiewijze van MVCC op. De API Table AM en de API Index AM maken echter de volgende veronderstelling: elk TID (Tuple\/row Identifier) is ofwel door alle indexen ge\u00efndexeerd, of helemaal niet ge\u00efndexeerd. Zelfs als de Index AM meerdere verwijzingen naar \u00e9\u00e9n TID heeft (bijvoorbeeld GIN), moeten al deze verwijzingen overeenkomen met dezelfde ge\u00efndexeerde waarde.    <center><img decoding=\"async\" alt=\"De ontwikkelaars van OrioleDB hebben voorgesteld de API voor alternatieve PostgreSQL-motoren te verbeteren.\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Dit principe is bekritiseerd vanwege de toename van schrijfoperaties (\u2018write amplification\u2019) \u2014 als een ge\u00efndexeerde eigenschap wordt bijgewerkt, moet elke index in de tabel worden bijgewerkt. Om volledig gebruik te maken van de voordelen van het UNDO-log of een andere opslagmethode zonder \u2018schrijfuitleg\u2019 (bijvoorbeeld de WARM-methode), moet deze aanname worden geschonden.  <center><img decoding=\"async\" alt=\"De ontwikkelaars van OrioleDB hebben voorgesteld de API voor alternatieve PostgreSQL-motoren te verbeteren.\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>De Table AM, gebaseerd op UNDO, die deze veronderstelling niet zal schenden, lijkt op de bestaande HOT-methode (Heap-Only Tuples), met als enige verschil dat oude versies van rijen worden opgeslagen in het UNDO-logboek en niet op dezelfde pagina hoeven te passen. Doch, volgens de auteurs, is dit voordeel niet genoeg om het bestaan van een aparte Table AM te rechtvaardigen.    <\/p>\n<p>Praktische beperkingen van de bestaande API:    <\/p>\n<ul>\n<li class=\"l\"> Tijdens het bijwerken van een tabelrij worden de indexen bijgewerkt volgens het principe \u2018alles of niets\u2019.\n<li class=\"l\"> Het ontbreken van de mogelijkheid tot gerichte verwijdering van bepaalde tuples in de API Index AM. Momenteel kunnen tuples massaal uit indexen worden verwijderd met behulp van de methodes ambulkdelete en amvacuumcleanup. Pogingen om gerichte verwijdering via deze API te implementeren zouden leiden tot lage effici\u00ebntie, aangezien de meeste huidige implementaties de hele index moeten doorzoeken. Bovendien staat de API niet toe om aan te geven welke van de tuples, die naar dezelfde TID verwijzen, moeten worden verwijderd. Het kan alleen ze allemaal verwijderen.\n<li class=\"l\"> Indexen verwijzen momenteel naar tabelrijen op basis van het bloknummer (32 bits) en het offsetnummer (16 bits). Van het offsetnummer kunnen slechts 11 bits veilig worden overgedragen van de tabel TID naar alle indextoegangsmethoden. Alternatieve MVCC-implementaties kunnen echter extra payload samen met de TID moeten opslaan. Bijvoorbeeld, in OrioleDB zijn \u00e9\u00e9n of meerdere bits vereist voor de implementatie van \u2018delete-marking\u2019 indexen of volledige zichtbaarheidinformatie.      <\/ul>\n<p>Twee manieren zijn voorgesteld om de beperkingen in de praktijk te overwinnen:  <\/p>\n<ul>\n<p>Aanpak 1: API Index AM biedt mogelijkheden voor alternatieve implementatie van MVCC.    <\/p>\n<p>Terwijl Table AM verantwoordelijk blijft voor alle componenten van MVCC, biedt Index AM de noodzakelijke mogelijkheden voor alternatieve MVCC-implementaties, namelijk: het opslaan van aangepaste payload samen met TID, een methode voor puntverwijdering en zelfs een methode voor puntbijwerking (indien TID in de index niet kan worden gewijzigd, kan de aangepaste payload dat wel). Bovendien, omdat het nodig is dat meerdere tuples van de index naar dezelfde TID verwijzen, moeten ook de API-methoden die worden toegepast tijdens het indexscannen worden bijgewerkt.    <\/p>\n<p>Aanpak 2: Indexen die MVCC ondersteunen.    <\/p>\n<p>Een alternatief zou zijn om indexen toe te staan die MVCC ondersteunen. Dat wil zeggen, de \u2018executor\u2019 (of mogelijk Table AM) roept eenvoudigweg de insert() en delete() methoden aan in Index AM, terwijl Index AM de mogelijkheid biedt om te scannen met MVCC in gedachten. Dit zou het scannen met alleen indexen aanzienlijk eenvoudiger maken. Zelfs de hele Table AM zou in dit geval een tussenlaag kunnen worden die gegevens in de index opslaat.    <\/p>\n<p>In de onderstaande diagram is een voorbeeld weergegeven. De waarde van index 2 wordt bijgewerkt door transactie 11 van waarde &#171;A&#187; naar waarde &#171;B&#187;. Daarom wordt waarde &#171;A&#187; gemarkeerd als xmax == 11, en waarde &#171;B&#187; als xmin == 11. Op deze manier kan index 2 gescand worden om alleen zichtbare tuples te verkrijgen volgens MVCC zonder heap-controles. Het opruimen van index 2 kan ook worden uitgevoerd zonder gebruik te maken van de heap.    <center><img decoding=\"async\" alt=\"De ontwikkelaars van OrioleDB hebben voorgesteld de API voor alternatieve PostgreSQL-motoren te verbeteren.\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Bij het implementeren van alle genoemde vernieuwingen in de API van index-accessmethoden, is het onwaarschijnlijk dat het mogelijk zal zijn om alle indexen gelijktijdig aan te passen om alle nieuwe mogelijkheden te ondersteunen. Het is realistischer om verschillende implementaties voor \u00e9\u00e9n index-accessmethode toe te staan. Bijvoorbeeld, naast de gebruikelijke B-tree, kan de extensie een alternatieve B-tree implementeren met ondersteuning voor MVCC binnen de index en ondersteuning voor record-identificatoren van variabele lengte.    <center><img decoding=\"async\" alt=\"De ontwikkelaars van OrioleDB hebben voorgesteld de API voor alternatieve PostgreSQL-motoren te verbeteren.\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Daarom wordt voorgesteld om niet alleen de API van Table AM te herzien, maar ook de API van Index AM, die jarenlang trouw heeft gediend voor de PostgreSQL-gemeenschap. Bovendien wordt voorgesteld om Index AM op te splitsen in een logische laag en een implementatielaag. Deze heroverwogen architectuur zal PostgreSQL in staat stellen om verschillende opslagnmodellen te ondersteunen.<br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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\udd47De ontwikkelaars van OrioleDB hebben voorgesteld om de API voor alternatieve engines van PostgreSQL te verbeteren | ProHoster","description":"De ontwikkelaars van OrioleDB hebben de huidige staat van de low-level API geanalyseerd, die wordt gebruikt voor de toegang van extensies tot tabellen en indexen in PostgreSQL (Table\/Index Access Method (AM) API), en hebben verbeterpunten voorgesteld.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}