{"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\/fr\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","title":{"rendered":"Les d\u00e9veloppeurs d'OrioleDB ont propos\u00e9 d'am\u00e9liorer l'API pour les moteurs alternatifs PostgreSQL.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Les d\u00e9veloppeurs d'OrioleDB ont analys\u00e9 l'\u00e9tat actuel de l'API de bas niveau utilis\u00e9e pour l'acc\u00e8s des extensions aux tables et aux index dans PostgreSQL (API Table\/Index Access Method (AM)) et ont propos\u00e9 des pistes d'am\u00e9lioration. Depuis l'introduction de cette API dans PostgreSQL 12, les d\u00e9veloppeurs ont pu cr\u00e9er des m\u00e9canismes de stockage alternatifs. Cependant, malgr\u00e9 l'existence de cette API et les limitations connues du m\u00e9canisme de stockage int\u00e9gr\u00e9, aucun moteur de stockage transactionnel complet, impl\u00e9ment\u00e9 uniquement sous forme d'extensions, n'a encore \u00e9t\u00e9 d\u00e9velopp\u00e9.    <\/p>\n<p>Les fonctionnalit\u00e9s les plus demand\u00e9es pour les moteurs de tables alternatifs de PostgreSQL sont :  <\/p>\n<ul>\n<li class=\"l\"> Des impl\u00e9mentations MVCC alternatives, par exemple, des syst\u00e8mes de stockage bas\u00e9s sur un journal UNDO.\n<li class=\"l\"> Des tables organis\u00e9es par index, o\u00f9 l'index n'est pas un compl\u00e9ment facultatif \u00e0 la table qui acc\u00e9l\u00e8re les requ\u00eates, mais constitue la structure de donn\u00e9es principale dans laquelle les donn\u00e9es de la table sont stock\u00e9es.    <\/ul>\n<p>Les changements n\u00e9cessaires dans l'API Table\/Index AM pour prendre en charge des impl\u00e9mentations MVCC alternatives sont examin\u00e9s en tenant compte de l'extension OrioleDB, con\u00e7ue pour corriger les d\u00e9fauts connus du m\u00e9canisme de stockage int\u00e9gr\u00e9 de PostgreSQL. Le probl\u00e8me est que pour une int\u00e9gration compl\u00e8te d'OrioleDB avec PostgreSQL, des modifications du code de PostgreSQL sont n\u00e9cessaires, ce qui complique la mise en \u0153uvre du projet et souligne la n\u00e9cessit\u00e9 de moderniser l'API Table AM actuelle.    <\/p>\n<p>L'API Table AM n'impose pas directement une m\u00e9thode d'impl\u00e9mentation du MVCC. Cependant, les API Table AM et Index AM font l'hypoth\u00e8se suivante : chaque TID (Tuple\/row Identifier) est soit index\u00e9 par tous les index, soit pas du tout. M\u00eame si l'Index AM a plusieurs r\u00e9f\u00e9rences \u00e0 un m\u00eame TID (par exemple, GIN), toutes ces r\u00e9f\u00e9rences doivent correspondre \u00e0 la m\u00eame valeur index\u00e9e.    <center><img decoding=\"async\" alt=\"Les d\u00e9veloppeurs d&#039;OrioleDB ont propos\u00e9 d&#039;am\u00e9liorer l&#039;API pour les moteurs alternatifs PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/a2082618f49d887e6987a73c65091c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Ce principe a \u00e9t\u00e9 critiqu\u00e9 pour l'augmentation du nombre d'op\u00e9rations d'\u00e9criture (\u00ab write amplification \u00bb) \u2014 si un attribut index\u00e9 est mis \u00e0 jour, il est n\u00e9cessaire de mettre \u00e0 jour chaque index dans la table. Pour tirer pleinement parti du journal UNDO ou construire une autre m\u00e9thode de stockage sans \u00ab amplification d'\u00e9criture \u00bb (par exemple, la m\u00e9thode WARM), il faut remettre en question cette hypoth\u00e8se.  <center><img decoding=\"async\" alt=\"Les d\u00e9veloppeurs d&#039;OrioleDB ont propos\u00e9 d&#039;am\u00e9liorer l&#039;API pour les moteurs alternatifs PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/da5adbec63e0b4c139733c5775b317b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>        <\/p>\n<p>La Table AM, fond\u00e9e sur UNDO, qui ne violera pas cette hypoth\u00e8se, ressemble \u00e0 la m\u00e9thode existante HOT (Heap-Only Tuples), \u00e0 l'exception que les anciennes versions des lignes sont conserv\u00e9es dans le journal UNDO et ne doivent pas tenir sur la m\u00eame page. Cependant, selon les auteurs, cet avantage n'est pas suffisant pour justifier l'existence d'une Table AM s\u00e9par\u00e9e.    <\/p>\n<p>Limitations pratiques de l'API existante :    <\/p>\n<ul>\n<li class=\"l\"> Lors de la mise \u00e0 jour d'une ligne de table, les index sont mis \u00e0 jour selon le principe \u00ab tout ou rien \u00bb.\n<li class=\"l\"> L'API Index AM ne permet pas la suppression cibl\u00e9e de certains tuples. Actuellement, les tuples peuvent \u00eatre supprim\u00e9s en masse des index \u00e0 l'aide des m\u00e9thodes ambulkdelete et amvacuumcleanup. Tenter de mettre en \u0153uvre la suppression cibl\u00e9e via cette API entra\u00eenerait une faible efficacit\u00e9, car la plupart des impl\u00e9mentations actuelles doivent scanner l'ensemble de l'index. De plus, l'API ne permet pas de sp\u00e9cifier quels tuples, se r\u00e9f\u00e9rant au m\u00eame TID, doivent \u00eatre supprim\u00e9s. Elle peut seulement les supprimer tous.\n<li class=\"l\"> Les index r\u00e9f\u00e9rencent actuellement les lignes de la table par num\u00e9ro de bloc (32 bits) et num\u00e9ro de d\u00e9calage (16 bits). Et seuls 11 bits du num\u00e9ro de d\u00e9calage peuvent \u00eatre transmis en toute s\u00e9curit\u00e9 du TID de la table vers toutes les m\u00e9thodes d'acc\u00e8s \u00e0 l'index. Dans ce contexte, des impl\u00e9mentations alternatives de MVCC peuvent n\u00e9cessiter le stockage d'une charge utile suppl\u00e9mentaire (payload) avec le TID. Par exemple, dans OrioleDB, un ou plusieurs bits sont n\u00e9cessaires pour impl\u00e9menter des index \u00ab delete-marking \u00bb ou des informations compl\u00e8tes sur la visibilit\u00e9.      <\/ul>\n<p>Deux approches ont \u00e9t\u00e9 propos\u00e9es pour surmonter ces limitations en pratique :  <\/p>\n<ul>\n<p>Approche 1 : L'API Index AM offre des possibilit\u00e9s pour une impl\u00e9mentation alternative de MVCC.    <\/p>\n<p>Alors que Table AM continue d'\u00eatre responsable de tous les composants MVCC, Index AM fournit les capacit\u00e9s n\u00e9cessaires pour une impl\u00e9mentation alternative de MVCC, \u00e0 savoir : le stockage de charges utiles utilisateur (payload) avec le TID, la m\u00e9thode de suppression pr\u00e9cise et m\u00eame la m\u00e9thode de mise \u00e0 jour pr\u00e9cise (si le TID dans l'index ne peut pas \u00eatre modifi\u00e9, la charge utile utilisateur peut l'\u00eatre). En outre, \u00e9tant donn\u00e9 qu'il est n\u00e9cessaire de permettre \u00e0 plusieurs tuples de l'index de r\u00e9f\u00e9rencer le m\u00eame TID, les m\u00e9thodes API utilis\u00e9es lors du scan de l'index doivent \u00e9galement \u00eatre mises \u00e0 jour.    <\/p>\n<p>Approche 2 : Index prenant en charge le MVCC.    <\/p>\n<p>Une alternative serait de permettre aux index de prendre en charge le MVCC. Autrement dit, l'\u00ab executor \u00bb (ou, peut-\u00eatre, Table AM) appelle simplement les m\u00e9thodes insert() et delete() dans Index AM, tandis qu'Index AM fournit la possibilit\u00e9 de scan en tenant compte du MVCC. Cela simplifierait consid\u00e9rablement le scan en utilisant uniquement des index (index-only). M\u00eame tout le Table AM pourrait dans ce cas devenir une couche interm\u00e9diaire, stockant des donn\u00e9es dans l'index.    <\/p>\n<p>Le diagramme ci-dessous pr\u00e9sente un exemple. La valeur de l'index 2 est mise \u00e0 jour par la transaction 11, passant de la valeur \u00ab A \u00bb \u00e0 la valeur \u00ab B \u00bb. Ainsi, la valeur \u00ab A \u00bb est marqu\u00e9e comme xmax == 11, tandis que la valeur \u00ab B \u00bb est marqu\u00e9e comme xmin == 11. Par cons\u00e9quent, on peut scanner l'index 2 et obtenir uniquement des tuples visibles selon le MVCC sans v\u00e9rifications de tas (heap). La collecte des d\u00e9chets de l'index 2 peut \u00e9galement \u00eatre effectu\u00e9e sans utiliser de tas.    <center><img decoding=\"async\" alt=\"Les d\u00e9veloppeurs d&#039;OrioleDB ont propos\u00e9 d&#039;am\u00e9liorer l&#039;API pour les moteurs alternatifs PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/9103127cc51f83c824c6cdc22135b470.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/p>\n<p>Lors de l'int\u00e9gration de toutes les innovations mentionn\u00e9es dans l'API des m\u00e9thodes d'acc\u00e8s aux index, il est peu probable que toutes les index puissent \u00eatre adapt\u00e9es en m\u00eame temps pour prendre en charge toutes les nouvelles fonctionnalit\u00e9s. Il est plus r\u00e9aliste de permettre plusieurs impl\u00e9mentations pour une m\u00e9thode d'acc\u00e8s d'index. Par exemple, en plus de l'arbre B ordinaire, l'extension pourrait mettre en \u0153uvre un arbre B alternatif avec prise en charge du MVCC \u00e0 l'int\u00e9rieur de l'index et prise en charge des identifiants d'enregistrement de longueur variable.    <center><img decoding=\"async\" alt=\"Les d\u00e9veloppeurs d&#039;OrioleDB ont propos\u00e9 d&#039;am\u00e9liorer l&#039;API pour les moteurs alternatifs PostgreSQL.\" src=\"\/wp-content\/uploads\/2025\/04\/57e1c15ecdd08f7b8095f464b59523b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Ainsi, il est propos\u00e9 de r\u00e9viser non seulement l'API Table AM, mais aussi l'API Index AM, qui a fid\u00e8lement servi la communaut\u00e9 PostgreSQL pendant de nombreuses ann\u00e9es. De plus, il est propos\u00e9 de diviser Index AM en une couche logique et une couche de mise en \u0153uvre. Cette architecture repens\u00e9e permettra \u00e0 PostgreSQL de prendre en charge divers mod\u00e8les de stockage.<br \/>\n<br \/>Source : <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.2 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Les d\u00e9veloppeurs d'OrioleDB ont propos\u00e9 d'am\u00e9liorer l'API pour des moteurs alternatifs de PostgreSQL | ProHoster","description":"Les d\u00e9veloppeurs d'OrioleDB ont analys\u00e9 l'\u00e9tat actuel de l'API de bas niveau utilis\u00e9e pour l'acc\u00e8s des extensions aux tables et aux index dans PostgreSQL (Table\/Index Access Method (AM) API) et ont propos\u00e9 des voies \u00e0 suivre.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/razrabotchiki-orioledb-predlozhili-uluchshit-api-dlya-alternativnyh-dvizhkov-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/123245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=123245"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/123245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/123246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=123245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=123245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=123245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}