{"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\/sl\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne PostgreSQL mehanizme","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Razvijalci OrioleDB so analizirali trenutno stanje nizkovrhnjega API-ja, ki se uporablja za dostop raz\u0161iritev do tabel in indeksov v PostgreSQL (Table\/Index Access Method (AM) API), in predlagali na\u010dine za njegovo izbolj\u0161anje. Od pojava tak\u0161nega API-ja v PostgreSQL 12 so razvijalci dobili mo\u017enost ustvarjanja alternativnih mehanizmov shranjevanja podatkov. Vendar pa kljub obstoju tega API-ja in znanim omejitvam vgrajenega mehanizma shranjevanja do sedaj niso nastali polnofunkcionalni transakcijski motorji shranjevanja, implementirani izklju\u010dno kot raz\u0161iritve.    <\/p>\n<p>Najbolj iskane funkcije za alternativne tabelarne motorje PostgreSQL so:  <\/p>\n<ul>\n<li class=\"l\"> Alternativne implementacije MVCC, na primer, shranjevanja na osnovi dnevnika UNDO.\n<li class=\"l\"> Indeksno organizirane tabele, kjer indeks ni neobvezen dodatek k tabeli, ki pospe\u0161uje poizvedbe, ampak predstavlja osnovno podatkovno strukturo, v kateri so shranjeni podatki tabele.    <\/ul>\n<p>Spremembe, potrebne v API-ju Table\/Index AM za podporo alternativnim implementacijam MVCC, se obravnavajo ob upo\u0161tevanju raz\u0161iritve OrioleDB, razvite za odpravo znanih pomanjkljivosti vgrajenega mehanizma shranjevanja PostgreSQL. Te\u017eava je, da so za popolno integracijo OrioleDB s PostgreSQL potrebne spremembe v kodi PostgreSQL, kar ote\u017euje izvedbo projekta in poudarja potrebo po modernizaciji trenutnega API-ja Table AM.    <\/p>\n<p>API Table AM ne narekuje neposredno na\u010dina izvedbe MVCC. Kljub temu API Table AM in API Index AM delita to domnevo: vsak TID (Tuple\/row Identifier) je bodisi indeksiran z vsemi indeksi bodisi sploh ni indeksiran. Tudi \u010de ima Index AM ve\u010d referenc na en TID (na primer, GIN), morajo vse te reference ustrezati istemu indeksiranemu vrednosti.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne PostgreSQL mehanizme\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Ta na\u010dela so kritizirali zaradi pove\u010danja \u0161tevila zapisov (\u00bbwrite amplification\u00ab) \u2014 \u010de se posodobi en indeksiran atribut, je potrebno posodobiti vsak indeks v tabeli. Da bi v celoti izkoristili prednosti UNDO dnevnika ali razvili drugo metodo shranjevanja brez \u00bbpove\u010danega zapisa\u00ab (na primer metodo WARM), je treba to domnevo kr\u0161iti.  <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne PostgreSQL mehanizme\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Tabela AM, zasnovana na UNDO, ki ne bo kr\u0161ila te predpostavke, spominja na obstoje\u010do metodo HOT (Heap-Only Tuples), s to razliko, da stare razli\u010dice vrstic ostajajo v UNDO logu in ne smejo biti shranjene na isti strani. Vendar pa avtorji menijo, da ta prednost ni dovolj, da bi upravi\u010dila obstoj lo\u010denega Table AM.    <\/p>\n<p>Prakti\u010dne omejitve obstoje\u010dega API-ja:    <\/p>\n<ul>\n<li class=\"l\"> Med posodobitvijo vrstice tabele se indeksi posodabljajo po na\u010delu \u00bbvse ali ni\u010d\u00ab.\n<li class=\"l\"> Pomanjkanje v API-ju Index AM mo\u017enosti to\u010dkovnega brisanja dolo\u010denih tupljev. Trenutno je mogo\u010de bri\u0161eti tuplje iz indeksov masovno s pomo\u010djo metod ambulkdelete in amvacuumcleanup. Poskus implementacije to\u010dkovnega brisanja prek tega API-ja bi privedel do nizke u\u010dinkovitosti, saj bi ve\u010dina trenutnih implementacij morala skenirati celoten indeks. Poleg tega API ne omogo\u010da dolo\u010danja, kateri od tupljev, ki se nana\u0161ajo na isti TID, naj se izbri\u0161ejo. Lahko izbri\u0161e le vse.\n<li class=\"l\"> Indeksi trenutno sklicujejo na vrstice tabele po \u0161tevilu bloka (32 bitov) in \u0161tevilu premika (16 bitov). In le 11 bitov \u0161tevilke premika lahko varno prenesemo iz TID tabele v vse metode dostopa do indeksa. Pri tem lahko alternativne implementacije MVCC zahtevajo shranjevanje dodatne uporabne obremenitve (payload) skupaj s TID. Na primer, v OrioleDB je potrebno enega ali ve\u010d bitov za izvedbo indeksov \u00bbdelete-marking\u00ab ali popolne informacije o vidnosti.      <\/ul>\n<p>Predlagana sta dva na\u010dina za premagovanje omejitev v praksi:  <\/p>\n<ul>\n<p>Pristop 1: API Index AM zagotavlja mo\u017enosti za alternativno implementacijo MVCC.    <\/p>\n<p>Medtem ko Table AM \u0161e naprej odgovarja za vse komponente MVCC, Index AM zagotavlja potrebne funkcionalnosti za alternativno implementacijo MVCC, in sicer: shranjevanje uporabne obremenitve (payload) skupaj s TID, metoda to\u010dkovnega brisanja in celo metoda to\u010dkovnega posodabljanja (\u010de TID v indeksu ne more biti spremenjen, uporabna obremenitev \u2013 lahko). Poleg tega, ker je potrebno dovoljiti ve\u010dim tupljem indeksa, da se sklicujejo na isti TID, zahtevajo tudi API metode, uporabljene pri skeniranju indeksa, posodobitev.    <\/p>\n<p>Pristop 2: Indeksi, ki podpirajo MVCC.    <\/p>\n<p>Alternativa bi bila dovoliti indeksom, da podpirajo MVCC. To pomeni, da \u00bbexecutor\u00ab (ali morda Table AM) preprosto pokli\u010de metode insert() in delete() v Index AM, medtem ko Index AM omogo\u010da skeniranje ob upo\u0161tevanju MVCC. To bi znatno poenostavilo skeniranje z uporabo samo indeksov (index-only). Tudi celoten Table AM bi v tem primeru lahko postal vmesni sloj, ki shranjuje podatke v indeksu.    <\/p>\n<p>Na spodnjem diagramu je prikazan primer. Vrednost indeksa 2 se posodobi s transakcijo 11 z vrednosti &#171;A&#187; na vrednost &#171;B&#187;. Zato je vrednost &#171;A&#187; ozna\u010dena kot xmax == 11, vrednost &#171;B&#187; pa kot xmin == 11. Tako lahko skeniramo indeks 2 in pridobimo le vidne nize v skladu z MVCC brez preverjanja kupov (heap). Tudi zbiranje smeti indeksa 2 se lahko izvede brez uporabe kupa.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne PostgreSQL mehanizme\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Prilikom implementacije svih navedenih inovacija u API indeksnih metoda pristupa, malo je verovatno da \u0107e biti mogu\u0107e istovremeno doraditi sve indekse za podr\u0161ku svim novim mogu\u0107nostima. Realisti\u010dnije je dozvoliti nekoliko implementacija za jednu indeksnu metodu pristupa. Na primer, pored uobi\u010dajenog B-treeda, pro\u0161irenje bi moglo implementirati alternativni B-tree sa podr\u0161kom za MVCC unutar indeksa i podr\u0161kom za identifikatore zapisa proizvoljne du\u017eine.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne PostgreSQL mehanizme\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Stoga se predla\u017ee preispitivanje ne samo API Table AM, ve\u0107 i API Index AM, koji je odavno slu\u017eio zajednici PostgreSQL. \u0160tavi\u0161e, predla\u017ee se podela Index AM na logi\u010dki sloj i sloj implementacije. Ova revidirana arhitektura \u0107e omogu\u0107iti PostgreSQL-u da podr\u017ei razli\u010dite modele skladi\u0161tenja.<br \/>\n<br \/>Izvor: <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.4 - 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\/sl\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Programeri OrioleDB su predlo\u017eili pobolj\u0161anje API-ja za alternativne engine PostgreSQL | ProHoster","description":"Programeri OrioleDB su analizirali trenutno stanje niskonivo API-ja koji se koristi za pristup ekstenzijama tabela i indeksa u PostgreSQL (Table\/Index Access Method (AM) API) i predlo\u017eili na\u010dine za njegovo unapre\u0111enje.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}