{"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\/hr\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Razvija\u010di OrioleDB predla\u017eu pobolj\u0161anje API-ja za alternativne PostgreSQL motore","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Razvija\u010di OrioleDB analizirali su trenutno stanje niskonivojskog API-ja koji se koristi za pristup ekstenzijama tablicama i indeksima u PostgreSQL-u (Table\/Index Access Method (AM) API) i predlo\u017eili na\u010dine za njegovo pobolj\u0161anje. Od pojave ovog API-ja u PostgreSQL-u 12, programeri su dobili mogu\u0107nost stvaranja alternativnih mehanizama pohrane podataka. Me\u0111utim, unato\u010d postojanju ovog API-ja i poznatim ograni\u010denjima ugra\u0111enog mehanizma pohrane, jo\u0161 uvijek nisu razvijeni potpuno funkcionalni transakcijski mehanizmi pohrane implementirani isklju\u010divo kao ekstenzije.    <\/p>\n<p>Najtra\u017eenije funkcije za alternativne tabli\u010dne motore PostgreSQL-a su:  <\/p>\n<ul>\n<li class=\"l\"> Alternativne implementacije MVCC, na primjer, pohrane temeljene na UNDO dnevniku.\n<li class=\"l\"> Indeksno-organizirane tablice, gdje indeks nije neobavezan dodatak tablici koji ubrzava upite, nego predstavlja glavnu strukturu podataka u kojoj su pohranjeni podaci tablice.    <\/ul>\n<p>Promjene potrebne u API-ju Table\/Index AM za podr\u0161ku alternativnim implementacijama MVCC razmatraju se s obzirom na ekstenziju OrioleDB, razvijenu za rje\u0161avanje poznatih nedostataka ugra\u0111enog mehanizma pohrane PostgreSQL-a. Problem je u tome \u0161to su za potpunu integraciju OrioleDB-a s PostgreSQL-om potrebne promjene u kodu PostgreSQL-a, \u0161to ote\u017eava integraciju projekta te nagla\u0161ava potrebu za modernizacijom trenutnog API-ja Table AM.    <\/p>\n<p>API Table AM ne name\u0107e izravno na\u010din implementacije MVCC-a. Me\u0111utim, API Table AM i API Index AM donose sljede\u0107i pretpostavak: svaki TID (Tuple\/row Identifier) ili je indeksiran svim indeksima ili uop\u0107e nije indeksiran. \u010cak i ako Index AM ima nekoliko referenci na jedan TID (na primjer, GIN), sve ove reference moraju odgovarati istom indeksiranom vrijednosti.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predla\u017eu pobolj\u0161anje API-ja za alternativne PostgreSQL motore\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Ova na\u010dela su kritizirana zbog pove\u0107anja broja operacija pisanja (\"write amplification\") \u2014 ako se a\u017eurira jedan indeksirani atribut, potrebno je a\u017eurirati svaki indeks u tablici. Da bi se u potpunosti iskoristile prednosti UNDO dnevnika ili izgradili druga\u010diji na\u010din pohrane bez \"poja\u010davanja pisanja\" (na primjer, WARM metoda), potrebno je prekr\u0161iti ovo pretpostavku.  <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predla\u017eu pobolj\u0161anje API-ja za alternativne PostgreSQL motore\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Tablica AM, temeljena na UNDO-u, koja ne\u0107e prekr\u0161iti ovu pretpostavku, podsje\u0107a na postoje\u0107u metodu HOT (Heap-Only Tuples), osim \u0161to se stare verzije redaka \u010duvaju u UNDO dnevniku i ne moraju stajati na istoj stranici. Me\u0111utim, prema autorima, ova prednost nije dovoljna da opravda postojanje odvojene Tablice AM.    <\/p>\n<p>Prakti\u010dna ograni\u010denja postoje\u0107eg API-ja:    <\/p>\n<ul>\n<li class=\"l\"> Tijekom a\u017euriranja reda tablice, indeksi se a\u017euriraju po na\u010delu \"sve ili ni\u0161ta\".\n<li class=\"l\"> Nedostatak API-ja Index AM za to\u010dno brisanje odre\u0111enih tuplea. Trenutno, tuple se mogu masovno brisati iz indeksa putem metoda ambulkdelete i amvacuumcleanup. Poku\u0161aj implementacije to\u010dnog brisanja putem ovog API-ja izazvao bi nisku u\u010dinkovitost, jer ve\u0107ina trenutnih implementacija mora skenirati cijeli indeks. Osim toga, API ne omogu\u0107uje navo\u0111enje koji od tuplea koji se odnose na isti TID treba izbrisati. Mo\u017ee izbrisati samo sve.\n<li class=\"l\"> Indeksi se trenutno odnose na redove tablice prema broju bloka (32 bita) i broju pomaka (16 bita). I samo 11 bita broja pomaka mo\u017ee se sigurno prenijeti iz TID tablice u sve metode pristupa indeksu. U tom slu\u010daju, alternativnim implementacijama MVCC mo\u017ee biti potrebno pohraniti dodatni korisni sadr\u017eaj (payload) zajedno s TID-om. Na primjer, u OrioleDB-u potrebno je jedan ili vi\u0161e bita za implementaciju indeksa za \"oznaku brisanja\" ili potpunih informacija o vidljivosti.      <\/ul>\n<p>Predlo\u017eena su dva na\u010dina za prevladavanje ograni\u010denja u praksi:  <\/p>\n<ul>\n<p>Pristup 1: API Index AM pru\u017ea mogu\u0107nosti za alternativnu implementaciju MVCC.    <\/p>\n<p>Dok Table AM i dalje odgovara za sve komponente MVCC, Index AM pru\u017ea potrebne mogu\u0107nosti za alternativnu implementaciju MVCC, a to su: pohrana korisnog sadr\u017eaja (payload) zajedno s TID-om, metoda to\u010dnog brisanja i \u010dak metoda to\u010dnog a\u017euriranja (ako se TID u indeksu ne mo\u017ee promijeniti, korisni sadr\u017eaj \u2013 mo\u017ee). Osim toga, budu\u0107i da je potrebno dozvoliti vi\u0161e tuplica indeksa da upu\u0107uju na isti TID, metode API-ja koje se primjenjuju prilikom skeniranja indeksa tako\u0111er trebaju a\u017euriranje.    <\/p>\n<p>Pristup 2: Indeksi koji podr\u017eavaju MVCC.    <\/p>\n<p>Alternativa bi bila dozvoliti indeksima podr\u0161ku za MVCC. To jest, \"executor\" (ili, mo\u017eda, Table AM) jednostavno poziva metode insert() i delete() u Index AM-u, dok Index AM omogu\u0107ava skeniranje uzimaju\u0107i u obzir MVCC. To bi znatno pojednostavilo skeniranje koriste\u0107i samo indekse (index-only). \u010cak bi i cijeli Table AM u tom slu\u010daju mogao postati me\u0111usloj koji pohranjuje podatke u indeksu.    <\/p>\n<p>Na dijagramu ispod je prikazan primjer. Vrijednost indeksa 2 a\u017eurira transakcija 11 s vrijednosti &#171;A&#187; na vrijednost &#171;B&#187;. Stoga je vrijednost &#171;A&#187; ozna\u010dena kao xmax == 11, a vrijednost &#171;B&#187; ozna\u010dena kao xmin == 11. Tako se mo\u017ee skenirati indeks 2 i dobiti samo vidljive tuple u skladu s MVCC bez provjera hrpe. Prikupljanje sme\u0107a indeksa 2 tako\u0111er se mo\u017ee izvr\u0161iti bez kori\u0161tenja hrpe.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predla\u017eu pobolj\u0161anje API-ja za alternativne PostgreSQL motore\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Pri implementaciji svih navedenih noviteta u API indeksnih metoda pristupa, malo je vjerojatno da \u0107e se uspjeti istovremeno doraditi svi indeksi za podr\u0161ku svim novim mogu\u0107nostima. Realisti\u010dnije je omogu\u0107iti nekoliko implementacija za jednu indeksnu metodu pristupa. Na primjer, pored uobi\u010dajenog B-stabla, pro\u0161irenje \u0107e mo\u0107i implementirati alternativno B-stablo sa podr\u0161kom za MVCC unutar indeksa i podr\u0161kom za identifikatore zapisa proizvoljne duljine.    <center><img decoding=\"async\" alt=\"Razvija\u010di OrioleDB predla\u017eu pobolj\u0161anje API-ja za alternativne PostgreSQL motore\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Tako se predla\u017ee preispitivanje ne samo API Table AM, ve\u0107 i API Index AM, koji je sa uspjehom slu\u017eio zajednici PostgreSQL dugi niz godina. \u0160tovi\u0161e, predla\u017ee se podjela Index AM-a na logi\u010dki sloj i sloj implementacije. Ova preoblikovana arhitektura omogu\u0107it \u0107e PostgreSQL-u podr\u0161ku za razli\u010dite modele pohrane.<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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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\udd47Razvija\u010di OrioleDB predlo\u017eili su pobolj\u0161anje API-ja za alternativne motore PostgreSQL | ProHoster","description":"Razvija\u010di OrioleDB analizirali su trenutno stanje niskorazinskog API-ja, koji se koristi za pristup ekstenzijama do tablica i indeksa u PostgreSQL-u (Table\/Index Access Method (AM) API), i predlo\u017eili put do njegovog unaprije\u0111enja.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}