{"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\/it\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Gli sviluppatori di OrioleDB hanno proposto di migliorare l'API per motori alternativi di PostgreSQL.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Gli sviluppatori di OrioleDB hanno analizzato lo stato attuale dell'API di basso livello utilizzata per l'accesso alle estensioni a tabelle e indici in PostgreSQL (API Table\/Index Access Method (AM)) e hanno proposto modi per migliorarlo. Dalla sua introduzione in PostgreSQL 12, questo API ha offerto agli sviluppatori la possibilit\u00e0 di creare meccanismi di archiviazione dei dati alternativi. Tuttavia, nonostante la presenza di questo API e le note limitazioni del meccanismo di archiviazione integrato, non sono ancora apparsi motori di archiviazione transazionali completamente funzionali implementati esclusivamente come estensioni.    <\/p>\n<p>Le funzionalit\u00e0 pi\u00f9 richieste per i motori di tabella alternativi a PostgreSQL sono:  <\/p>\n<ul>\n<li class=\"l\"> Implementazioni MVCC alternative, ad esempio archivi basati su log UNDO.\n<li class=\"l\"> Tabelle organizzate per indice, dove l'indice non \u00e8 un'aggiunta facoltativa alla tabella che accelera le query, ma rappresenta la struttura dati principale in cui sono memorizzati i dati della tabella.    <\/ul>\n<p>Le modifiche necessarie all'API Table\/Index AM per supportare implementazioni alternative di MVCC vengono esaminate alla luce dell'estensione OrioleDB, sviluppata per risolvere i noti difetti del meccanismo di archiviazione integrato di PostgreSQL. Il problema \u00e8 che per una completa integrazione di OrioleDB con PostgreSQL \u00e8 necessario apportare modifiche al codice di PostgreSQL, il che complica l'implementazione del progetto e sottolinea la necessit\u00e0 di modernizzare l'attuale API Table AM.    <\/p>\n<p>L'API Table AM non impone direttamente un metodo di implementazione del MVCC. Tuttavia, l'API Table AM e l'API Index AM fanno la seguente assunzione: ogni TID (Tuple\/row Identifier) \u00e8 o indicizzato da tutti gli indici, o non \u00e8 indicizzato affatto. Anche se l'Index AM ha pi\u00f9 riferimenti a un singolo TID (ad esempio, GIN), tutti questi riferimenti devono corrispondere a lo stesso valore indicizzato.    <center><img decoding=\"async\" alt=\"Gli sviluppatori di OrioleDB hanno proposto di migliorare l&#039;API per motori alternativi di PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Questo principio \u00e8 stato criticato per l'aumento del numero di operazioni di scrittura (\u00abwrite amplification\u00bb) \u2014 se un attributo indicizzato viene aggiornato, \u00e8 necessario aggiornare ogni indice nella tabella. Per sfruttare appieno i vantaggi del journal UNDO o costruire un altro metodo di archiviazione senza \u00abamplificazione della scrittura\u00bb (ad esempio, il metodo WARM), \u00e8 necessario infrangere questa assunzione.  <center><img decoding=\"async\" alt=\"Gli sviluppatori di OrioleDB hanno proposto di migliorare l&#039;API per motori alternativi di PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>La Tabella AM basata su UNDO, che non viola questa assunzione, ricorda il metodo esistente HOT (Heap-Only Tuples), eccetto per il fatto che le versioni precedenti delle righe vengono conservate nel registro UNDO e non devono essere contenute nella stessa pagina. Tuttavia, gli autori ritengono che questo vantaggio non sia sufficiente a giustificare l'esistenza di una Tabella AM separata.    <\/p>\n<p>Limitazioni pratiche dell'API esistente:    <\/p>\n<ul>\n<li class=\"l\"> Durante l'aggiornamento di una riga della tabella, gli indici vengono aggiornati secondo il principio \u00abtutto o nulla\u00bb.\n<li class=\"l\"> Mancanza nell'API Index AM della possibilit\u00e0 di eliminazione puntuale di specifici tuple. Attualmente \u00e8 possibile eliminare tuple dagli indici in modo massiccio tramite i metodi ambulkdelete e amvacuumcleanup. Tentare di implementare un'eliminazione puntuale tramite questa API porterebbe a una bassa efficienza, poich\u00e9 la maggior parte delle implementazioni attuali deve eseguire una scansione dell'intero indice. Inoltre, l'API non consente di specificare quali delle tuple, che fanno riferimento allo stesso TID, debbano essere eliminate. Pu\u00f2 rimuovere solo tutte.\n<li class=\"l\"> Gli indici attualmente fanno riferimento alle righe della tabella tramite il numero di blocco (32 bit) e il numero di offset (16 bit). Solo 11 bit del numero di offset possono essere trasferiti in sicurezza dal TID della tabella a tutti i metodi di accesso all'indice. Le implementazioni alternative di MVCC potrebbero richiedere il salvataggio di un payload aggiuntivo insieme al TID. Ad esempio, in OrioleDB \u00e8 necessario uno o pi\u00f9 bit per implementare indici \u00abdelete-marking\u00bb o informazioni complete sulla visibilit\u00e0.      <\/ul>\n<p>Sono stati proposti due modi per superare le limitazioni nella pratica:  <\/p>\n<ul>\n<p>Approccio 1: L'API Index AM fornisce funzionalit\u00e0 per un'implementazione alternativa di MVCC.    <\/p>\n<p>Mentre il Table AM continua a rispondere a tutti i componenti di MVCC, l'Index AM fornisce le funzionalit\u00e0 necessarie per una implementazione alternativa di MVCC, cio\u00e8: archiviazione di payload personalizzati insieme al TID, metodo di cancellazione punto per punto e persino metodo di aggiornamento punto per punto (se il TID nell'indice non pu\u00f2 essere modificato, il payload personalizzato pu\u00f2). Inoltre, poich\u00e9 \u00e8 necessario permettere a pi\u00f9 tuple dell'indice di fare riferimento allo stesso TID, i metodi API utilizzati durante la scansione dell'indice necessitano anch'essi di un aggiornamento.    <\/p>\n<p>Approccio 2: Indici che supportano MVCC.    <\/p>\n<p>Un'alternativa sarebbe consentire agli indici di supportare MVCC. Cio\u00e8, l'\u00abexecutor\u00bb (o, possibilmente, il Table AM) chiama semplicemente i metodi insert() e delete() nell'Index AM, mentre l'Index AM fornisce la possibilit\u00e0 di scansione tenendo conto di MVCC. Questo semplificherebbe notevolmente la scansione usando solo indici (index-only). Anche tutto il Table AM in tal caso potrebbe diventare uno strato intermedio che memorizza i dati nell'indice.    <\/p>\n<p>Nel diagramma qui sotto \u00e8 riportato un esempio. Il valore dell'indice 2 viene aggiornato dalla transazione 11 da \"A\" a \"B\". Pertanto, il valore \"A\" \u00e8 contrassegnato come xmax == 11, mentre il valore \"B\" \u00e8 contrassegnato come xmin == 11. In questo modo \u00e8 possibile scansionare l'indice 2 e ottenere solo tuple visibili secondo MVCC senza controlli dell'heap. Anche la raccolta dei rifiuti dell'indice 2 pu\u00f2 essere eseguita senza utilizzare l'heap.    <center><img decoding=\"async\" alt=\"Gli sviluppatori di OrioleDB hanno proposto di migliorare l&#039;API per motori alternativi di PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Con l'introduzione di tutte le innovazioni elencate nell'API dei metodi di accesso agli indici, \u00e8 poco probabile che si riesca a rifinire contemporaneamente tutti gli indici per supportare tutte le nuove funzionalit\u00e0. \u00c8 pi\u00f9 realistico consentire diverse implementazioni per un metodo di accesso all'indice. Ad esempio, oltre al normale B-tree, l'estensione potrebbe implementare un B-tree alternativo con supporto MVCC all'interno dell'indice e supporto per identificatori di record di lunghezza arbitraria.    <center><img decoding=\"async\" alt=\"Gli sviluppatori di OrioleDB hanno proposto di migliorare l&#039;API per motori alternativi di PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Pertanto, si propone di rivedere non solo l'API del Table AM, ma anche l'API dell'Index AM, che ha servito fedelmente la comunit\u00e0 PostgreSQL per molti anni. Inoltre, si propone di separare l'Index AM in un livello logico e un livello di implementazione. Questa architettura riconsiderata consentir\u00e0 a PostgreSQL di supportare diversi modelli di archiviazione.<br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Gli sviluppatori di OrioleDB hanno proposto di migliorare l'API per motori alternativi di PostgreSQL | ProHoster","description":"Gli sviluppatori di OrioleDB hanno analizzato lo stato attuale dell'API a basso livello, utilizzata per l'accesso delle estensioni a tabelle e indici in PostgreSQL (Table\/Index Access Method (AM) API), e hanno proposto delle vie per il suo miglioramento.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}