{"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\/sv\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Utvecklarna av OrioleDB har f\u00f6reslagit f\u00f6rb\u00e4ttringar av API:n f\u00f6r alternativa PostgreSQL-motorer.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Utvecklarna av OrioleDB har analyserat det aktuella tillst\u00e5ndet f\u00f6r det l\u00e5gniv\u00e5-API som anv\u00e4nds f\u00f6r att ge tillg\u00e5ng till ut\u00f6kningar av tabeller och index i PostgreSQL (Table\/Index Access Method (AM) API) och f\u00f6reslagit s\u00e4tt att f\u00f6rb\u00e4ttra det. Sedan detta API introducerades i PostgreSQL 12 har utvecklarna haft m\u00f6jlighet att skapa alternativa datalagringsmekanismer. Trots detta har det inte blivit n\u00e5gra fullt fungerande transaktionella lagringsmotorer, som uteslutande implementeras som ut\u00f6kningar.    <\/p>\n<p>De mest efterfr\u00e5gade funktionerna f\u00f6r alternativa tabellmotorer i PostgreSQL \u00e4r:  <\/p>\n<ul>\n<li class=\"l\"> Alternativa implementeringar av MVCC, till exempel lagring baserad p\u00e5 UNDO-loggar.\n<li class=\"l\"> Indexorganiserade tabeller d\u00e4r index inte \u00e4r ett valfritt till\u00e4gg till tabellen, vilket p\u00e5skyndar fr\u00e5gorna, utan fungerar som den prim\u00e4ra datalagringsstrukturen d\u00e4r tabellens data lagras.    <\/ul>\n<p>De f\u00f6r\u00e4ndringar som kr\u00e4vs i API Table\/Index AM f\u00f6r att st\u00f6dja alternativa implementeringar av MVCC \u00f6verv\u00e4gs med h\u00e4nsyn till OrioleDB-utvidgningen, som utvecklats f\u00f6r att \u00e5tg\u00e4rda k\u00e4nda brister i den inbyggda lagringsmekanismen i PostgreSQL. Problemet \u00e4r att fullst\u00e4ndig integration av OrioleDB med PostgreSQL kr\u00e4ver \u00e4ndringar i PostgreSQL-koden, vilket komplicerar projektets genomf\u00f6rande och understryker behovet av att modernisera det nuvarande API:et f\u00f6r Table AM.    <\/p>\n<p>API Table AM p\u00e5tvingar inte direkt hur MVCC ska implementeras. \u00c4nd\u00e5 g\u00f6r API Table AM och API Index AM f\u00f6ljande antagande: varje TID (Tuple\/row Identifier) antingen indexeras av alla index eller inte indexeras alls. \u00c4ven om Index AM har flera referenser till en TID (till exempel GIN), m\u00e5ste alla dessa referenser \u00f6verensst\u00e4mma med samma indexerade v\u00e4rde.    <center><img decoding=\"async\" alt=\"Utvecklarna av OrioleDB har f\u00f6reslagit f\u00f6rb\u00e4ttringar av API:n f\u00f6r alternativa PostgreSQL-motorer.\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Denna princip har kritiserats f\u00f6r att \u00f6ka antalet skrivoperationer (\"write amplification\") \u2014 om en indexerad attribut uppdateras m\u00e5ste varje index i tabellen uppdateras. F\u00f6r att kunna utnyttja f\u00f6rdelarna med UNDO-loggen fullt ut eller bygga en annan lagringsmetod utan \"skrivf\u00f6rst\u00e4rkning\" (till exempel WARM-metoden) kr\u00e4vs det att denna f\u00f6ruts\u00e4ttning bryts.  <center><img decoding=\"async\" alt=\"Utvecklarna av OrioleDB har f\u00f6reslagit f\u00f6rb\u00e4ttringar av API:n f\u00f6r alternativa PostgreSQL-motorer.\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Tabell AM, baserad p\u00e5 UNDO, kommer inte att bryta mot denna f\u00f6ruts\u00e4ttning och liknar den befintliga metoden HOT (Heap-Only Tuples), f\u00f6rutom att gamla versioner av rader sparas i UNDO-loggen och inte beh\u00f6ver f\u00e5 plats p\u00e5 samma sida. Men enligt f\u00f6rfattarna \u00e4r denna f\u00f6rdel inte tillr\u00e4cklig f\u00f6r att r\u00e4ttf\u00e4rdiga existensen av en separat Table AM.    <\/p>\n<p>Praktiska begr\u00e4nsningar med det befintliga API:et:    <\/p>\n<ul>\n<li class=\"l\"> Vid uppdatering av rader i tabellen uppdateras indexen enligt principen \"allt eller inget\".\n<li class=\"l\"> Avsaknad av API Index AM f\u00f6r m\u00f6jligheten att punktligt ta bort specifika tuples. F\u00f6r n\u00e4rvarande kan tuples tas bort fr\u00e5n index massivt med metoderna ambulkdelete och amvacuumcleanup. Att f\u00f6rs\u00f6ka implementera punktvis borttagning genom detta API skulle leda till l\u00e5g effektivitet, eftersom de flesta nuvarande implementationer m\u00e5ste skanna hela indexet. Dessutom till\u00e5ter API:et inte att ange vilka av de tuples som refererar till samma TID som ska tas bort. Det kan endast ta bort dem alla.\n<li class=\"l\"> Indexen refererar f\u00f6r n\u00e4rvarande till rader i tabellen med blocknummer (32 bitar) och offset-nummer (16 bitar). Endast 11 bitar av offset-numret kan s\u00e4kert \u00f6verf\u00f6ras fr\u00e5n TID-tabellen till alla index\u00e5tkomstmetoder. Detta kan kr\u00e4va att alternativa implementationer av MVCC lagrar extra nyttolast (payload) tillsammans med TID. Till exempel kr\u00e4ver OrioleDB en eller flera bitar f\u00f6r att implementera index med \"delete-marking\" eller fullst\u00e4ndig synlighetsinformation.      <\/ul>\n<p>Tv\u00e5 s\u00e4tt har f\u00f6reslagits f\u00f6r att \u00f6vervinna begr\u00e4nsningarna i praktiken:  <\/p>\n<ul>\n<p>Tillv\u00e4gag\u00e5ngss\u00e4tt 1: API Index AM tillhandah\u00e5ller m\u00f6jligheter f\u00f6r alternativ MVCC-implementering.    <\/p>\n<p>Medan Table AM forts\u00e4tter att ansvara f\u00f6r alla komponenter av MVCC, erbjuder Index AM n\u00f6dv\u00e4ndiga funktioner f\u00f6r alternativ implementation av MVCC, n\u00e4mligen: lagring av anv\u00e4ndarnyttolast (payload) tillsammans med TID, punktborttagningsmetod och till och med punktuppdateringsmetod (om TID i indexet inte kan \u00e4ndras, kan nyttolasten \u00e4ndras). Dessutom, eftersom flera tuple i indexet m\u00e5ste referera till samma TID, beh\u00f6ver API-metoderna som anv\u00e4nds vid indexskanning ocks\u00e5 uppdateras.    <\/p>\n<p>Tillv\u00e4gag\u00e5ngss\u00e4tt 2: Index som st\u00f6djer MVCC.    <\/p>\n<p>Ett alternativ skulle vara att till\u00e5ta index som st\u00f6djer MVCC. Det vill s\u00e4ga att \"executor\" (eller kanske Table AM) helt enkelt anropar metoderna insert() och delete() i Index AM, medan Index AM erbjuder m\u00f6jligheten att skanna med h\u00e4nsyn till MVCC. Detta skulle avsev\u00e4rt f\u00f6renkla skanning med endast index (index-only). Till och med hela Table AM skulle i s\u00e5dana fall kunna fungera som ett mellanlager som lagrar data i indexet.    <\/p>\n<p>I diagrammet nedan visas ett exempel. Indexv\u00e4rdet 2 uppdateras av transaktionen 11 fr\u00e5n v\u00e4rdet &#171;A&#187; till v\u00e4rdet &#171;B&#187;. D\u00e4rf\u00f6r \u00e4r v\u00e4rdet &#171;A&#187; markerat som xmax == 11, och v\u00e4rdet &#171;B&#187; \u00e4r markerat som xmin == 11. P\u00e5 s\u00e5 s\u00e4tt kan index 2 skannas och endast synliga tuples h\u00e4mtas i enlighet med MVCC utan att beh\u00f6va kontrollera heapen. Skr\u00e4pplockning av index 2 kan ocks\u00e5 utf\u00f6ras utan att anv\u00e4nda heapen.    <center><img decoding=\"async\" alt=\"Utvecklarna av OrioleDB har f\u00f6reslagit f\u00f6rb\u00e4ttringar av API:n f\u00f6r alternativa PostgreSQL-motorer.\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Vid implementeringen av alla de n\u00e4mnda nyheterna i API:et f\u00f6r indexmetoder \u00e4r det osannolikt att det g\u00e5r att samtidigt revidera alla index f\u00f6r att st\u00f6dja alla nya funktioner. Det \u00e4r mer realistiskt att till\u00e5ta flera implementationer f\u00f6r en indexmetod. Till exempel, ut\u00f6ver den vanliga B-tree, kan utvidgningen implementera en alternativ B-tree med st\u00f6d f\u00f6r MVCC inuti indexet och st\u00f6d f\u00f6r postidentifierare av godtycklig l\u00e4ngd.    <center><img decoding=\"async\" alt=\"Utvecklarna av OrioleDB har f\u00f6reslagit f\u00f6rb\u00e4ttringar av API:n f\u00f6r alternativa PostgreSQL-motorer.\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>S\u00e5ledes f\u00f6resl\u00e5s det att inte bara revidera API:et f\u00f6r Table AM, utan ocks\u00e5 API:et f\u00f6r Index AM, som har tj\u00e4nat PostgreSQL-gemenskapen troget under m\u00e5nga \u00e5r. Dessutom f\u00f6resl\u00e5s det att dela upp Index AM i ett logiskt lager och ett implementationslager. Denna omdefinierade arkitektur kommer att m\u00f6jligg\u00f6ra f\u00f6r PostgreSQL att st\u00f6dja olika lagringsmodeller.<br \/>\n<br \/>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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\udd47Utvecklarna av OrioleDB har f\u00f6reslagit att f\u00f6rb\u00e4ttra API:et f\u00f6r alternativa motorer i PostgreSQL | ProHoster","description":"Utvecklarna av OrioleDB har analyserat det nuvarande tillst\u00e5ndet av l\u00e5g-niv\u00e5 API:et som anv\u00e4nds f\u00f6r tillg\u00e5ng av till\u00e4gg till tabeller och index i PostgreSQL (Table\/Index Access Method (AM) API) och f\u00f6reslagit v\u00e4gar f\u00f6r dess f\u00f6rb\u00e4ttring.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}