{"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\/ro\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dezvoltatorii OrioleDB au analizat starea actual\u0103 a API-ului de nivel sc\u0103zut utilizat pentru accesul extensiilor la tabele \u0219i indec\u0219i \u00een PostgreSQL (metoda de acces la tabel\u0103\/indice AM) \u0219i au propus modalit\u0103\u021bi de \u00eembun\u0103t\u0103\u021bire. Din momentul apari\u021biei acestui API \u00een PostgreSQL 12, dezvoltatorii au avut posibilitatea de a crea mecanisme alternative de stocare a datelor. Cu toate acestea, \u00een ciuda existen\u021bei acestui API \u0219i a limit\u0103rilor cunoscute ale mecanismului de stocare \u00eencorporat, nu au ap\u0103rut p\u00e2n\u0103 acum motoare de stocare tranzac\u021bionale complet func\u021bionale implementate exclusiv sub form\u0103 de extensii.    <\/p>\n<p>Cele mai solicitate func\u021bii pentru motoarele alternative de tabele PostgreSQL sunt:  <\/p>\n<ul>\n<li class=\"l\"> Implement\u0103ri alternative ale MVCC, de exemplu, stoc\u0103ri bazate pe jurnal UNDO.\n<li class=\"l\"> Tabele organizate pe indici, unde indicele nu este o ad\u0103ugare op\u021bional\u0103 la tabel care accelereaz\u0103 interog\u0103rile, ci reprezint\u0103 structura principal\u0103 de date \u00een care sunt stocate datele tabelului.    <\/ul>\n<p>Schimb\u0103rile necesare \u00een API-ul Table\/Index AM pentru a sprijini implement\u0103rile alternative ale MVCC sunt discutate av\u00e2nd \u00een vedere extensia OrioleDB, dezvoltat\u0103 pentru a elimina deficien\u021bele cunoscute ale mecanismului de stocare \u00eencorporat PostgreSQL. Problema este c\u0103 pentru integrarea complet\u0103 a OrioleDB cu PostgreSQL sunt necesare modific\u0103ri ale codului PostgreSQL, ceea ce complic\u0103 implementarea proiectului \u0219i subliniaz\u0103 necesitatea moderniz\u0103rii actualului API Table AM.    <\/p>\n<p>API-ul Table AM nu impune direct o modalitate de implementare a MVCC. Cu toate acestea, API-ul Table AM \u0219i API-ul Index AM fac urm\u0103toarea presupunere: fiecare TID (Identificator de Tuplu\/r\u00e2nd) este ori indexat de toate indec\u0219ii, ori nu este indexat deloc. Chiar dac\u0103 Index AM are mai multe referin\u021be la un TID (de exemplu, GIN), toate aceste referin\u021be trebuie s\u0103 corespund\u0103 acelea\u0219i valori indexate.    <center><img decoding=\"async\" alt=\"Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Acest principiu a fost criticat pentru cre\u0219terea num\u0103rului de opera\u021biuni de scriere (\u201ewrite amplification\u201d) \u2014 dac\u0103 un atribut indexat este actualizat, este necesar s\u0103 actualiz\u0103m fiecare index din tabel. Pentru a beneficia pe deplin de jurnalul UNDO sau pentru a construi o alt\u0103 metod\u0103 de stocare f\u0103r\u0103 \u201eamplificarea scrierii\u201d (de exemplu, metoda WARM), trebuie s\u0103 \u00eenc\u0103lc\u0103m aceast\u0103 presupunere.  <center><img decoding=\"async\" alt=\"Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>Tabela AM bazat\u0103 pe UNDO, care nu va \u00eenc\u0103lca aceast\u0103 presupunere, se aseam\u0103n\u0103 cu metoda existent\u0103 HOT (Heap-Only Tuples), cu excep\u021bia faptului c\u0103 versiunile vechi ale r\u00e2ndurilor sunt p\u0103strate \u00een jurnalul UNDO \u0219i nu trebuie s\u0103 \u00eencap\u0103 \u00een aceea\u0219i pagin\u0103. Totu\u0219i, autorii consider\u0103 c\u0103 acest avantaj nu este suficient pentru a justifica existen\u021ba unei Tabele AM separate.    <\/p>\n<p>Limit\u0103rile practice ale API-ului existent:    <\/p>\n<ul>\n<li class=\"l\"> \u00cen timpul actualiz\u0103rii r\u00e2ndului din tabel, indexurile sunt actualizate conform principiului \u201etotul sau nimic\u201d.\n<li class=\"l\"> Lipsa \u00een API-ul Index AM a posibilit\u0103\u021bii de a \u0219terge punctual anumite tupluri. \u00cen prezent, este posibil s\u0103 \u0219tergi tupluri din indexuri \u00een mod masiv prin metodele ambulkdelete \u0219i amvacuumcleanup. \u00cencercarea de a implementa \u0219tergeri punctuale prin acest API ar conduce la o eficien\u021b\u0103 sc\u0103zut\u0103, deoarece majoritatea implement\u0103rilor curente trebuie s\u0103 scaneze \u00eentregul index. \u00cen plus, API-ul nu permite specificarea care dintre tupluri, referitoare la acela\u0219i TID, ar trebui s\u0103 fie \u0219terse. Acesta poate \u0219terge doar pe toate.\n<li class=\"l\"> Indexurile \u00een prezent se refer\u0103 la r\u00e2ndurile din tabel prin num\u0103rul blocului (32 de bi\u021bi) \u0219i num\u0103rul de deplasare (16 bi\u021bi). \u0218i doar 11 bi\u021bi din num\u0103rul de deplasare pot fi transfera\u021bi \u00een siguran\u021b\u0103 din TID-ul tabelului \u00een toate metodele de acces la index. \u00cen acest context, implement\u0103rile alternative ale MVCC pot necesita stocarea unei sarcini utile (payload) suplimentare \u00eempreun\u0103 cu TID-ul. De exemplu, \u00een OrioleDB este necesar un sau mai mul\u021bi bi\u021bi pentru a implementa indexurile \u201edelete-marking\u201d sau informa\u021biile complete despre vizibilitate.      <\/ul>\n<p>Au fost propuse dou\u0103 modalit\u0103\u021bi de a dep\u0103\u0219i limit\u0103rile \u00een practic\u0103:  <\/p>\n<ul>\n<p>Abordarea 1: API-ul Index AM ofer\u0103 func\u021bionalit\u0103\u021bi pentru o implementare alternativ\u0103 MVCC.    <\/p>\n<p>\u00cen timp ce Table AM continu\u0103 s\u0103 r\u0103spund\u0103 pentru toate componentele MVCC, Index AM ofer\u0103 capacit\u0103\u021bile necesare pentru o implementare alternativ\u0103 a MVCC, \u0219i anume: stocarea sarcinii utile (payload) personalizate \u00eempreun\u0103 cu TID-ul, metoda de \u0219tergere punctual\u0103 \u0219i chiar metoda de actualizare punctual\u0103 (dac\u0103 TID-ul din index nu poate fi modificat, sarcina util\u0103 personalizat\u0103 \u2013 poate). \u00cen plus, deoarece este necesar s\u0103 se permit\u0103 mai multor tupluri din index s\u0103 se refere la acela\u0219i TID, metodele API utilizate \u00een timpul scan\u0103rii indexului trebuie, de asemenea, actualizate.    <\/p>\n<p>Abordarea 2: Indexuri care suport\u0103 MVCC.    <\/p>\n<p>O alternativ\u0103 ar fi s\u0103 se permit\u0103 indexuri care s\u0103 sus\u021bin\u0103 MVCC. Asta \u00eenseamn\u0103 c\u0103 \u201eexecutorul\u201d (sau, posibil, Table AM) pur \u0219i simplu apeleaz\u0103 metodele insert() \u0219i delete() \u00een Index AM, \u00een timp ce Index AM ofer\u0103 posibilitatea de scanare av\u00e2nd \u00een vedere MVCC. Acest lucru ar simplifica semnificativ scanarea utiliz\u00e2nd doar indexuri (index-only). Chiar \u0219i \u00eentregul Table AM \u00een acest caz ar putea deveni un strat intermediar, stoc\u00e2nd datele \u00een index.    <\/p>\n<p>Diagrama de mai jos prezint\u0103 un exemplu. Valoarea indexului 2 este actualizat\u0103 de tranzac\u021bia 11 de la valoarea &#171;A&#187; la valoarea &#171;B&#187;. De aceea, valoarea &#171;A&#187; este marcat\u0103 ca xmax == 11, iar valoarea &#171;B&#187; este marcat\u0103 ca xmin == 11. Astfel, se poate scana indexul 2 \u0219i ob\u021bine doar tuplele vizibile conform MVCC, f\u0103r\u0103 verific\u0103ri de heap. Colectarea de\u0219eurilor pentru indexul 2 poate fi, de asemenea, efectuat\u0103 f\u0103r\u0103 utilizarea heap-ului.    <center><img decoding=\"async\" alt=\"Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>\u00cen cadrul implement\u0103rii tuturor inova\u021biilor enumerate \u00een API-ul metodelor de acces pentru indec\u0219i, este pu\u021bin probabil s\u0103 se reu\u0219easc\u0103 s\u0103 se finalizeze toate indec\u0219ii pentru a suporta toate noile capacit\u0103\u021bi \u00een acela\u0219i timp. Este mai realist s\u0103 se permit\u0103 mai multe implement\u0103ri pentru o metod\u0103 de acces index. De exemplu, pe l\u00e2ng\u0103 B-tree-ul obi\u0219nuit, extensia ar putea implementa un B-tree alternativ cu suport pentru MVCC \u00een interiorul indexului \u0219i suport pentru identificatori de \u00eenregistr\u0103ri de lungime arbitrar\u0103.    <center><img decoding=\"async\" alt=\"Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Astfel, se propune revizuirea nu doar a API-ului Table AM, ci \u0219i a API-ului Index AM, care a servit comunitatea PostgreSQL cu fidelitate de-a lungul anilor. Mai mult, se sugereaz\u0103 \u00eemp\u0103r\u021birea Index AM \u00een strat logic \u0219i strat de implementare. Aceast\u0103 arhitectur\u0103 reimaginat\u0103 ar permite PostgreSQL s\u0103 suporte diferite modele de stocare.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=62991\">opennet.ro<\/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.2.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\/ro\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Dezvoltatorii OrioleDB au propus \u00eembun\u0103t\u0103\u021birea API-ului pentru motoare alternative PostgreSQL | ProHoster","description":"Dezvoltatorii OrioleDB au analizat starea actual\u0103 a API-ului de nivel sc\u0103zut, folosit pentru accesul extensiilor la tabele \u0219i indec\u0219i \u00een PostgreSQL (Table\/Index Access Method (AM) API) \u0219i au propus c\u0103i de \u00eembun\u0103t\u0103\u021bire.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}