{"id":104730,"date":"2022-07-29T15:37:11","date_gmt":"2022-07-29T13:37:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0"},"modified":"2022-07-29T15:37:11","modified_gmt":"2022-07-29T13:37:12","slug":"vypusk-relyaczionno-grafovoj-subd-edgedb-2-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0","title":{"rendered":"La sortie de la base de donn\u00e9es relationnelle-graphique EdgeDB 2.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le lancement de la base de donn\u00e9es EdgeDB 2.0 a \u00e9t\u00e9 annonc\u00e9, mettant en \u0153uvre un mod\u00e8le de donn\u00e9es relationnel et graphique ainsi qu'un langage de requ\u00eates EdgeQL, optimis\u00e9s pour travailler avec des donn\u00e9es hi\u00e9rarchiques complexes. Le code est \u00e9crit en Python et Rust (pour le parser et les parties critiques en mati\u00e8re de performance) et est distribu\u00e9 sous la licence Apache 2.0. Le projet \u00e9volue sous la forme d'une extension de PostgreSQL. Des biblioth\u00e8ques clientes sont disponibles pour les langages Python, Go, Rust et TypeScript\/Javascript. Un outil de ligne de commande est fourni pour g\u00e9rer la base de donn\u00e9es et ex\u00e9cuter des requ\u00eates de mani\u00e8re interactive (REPL).      <\/p>\n<p>EdgeDB utilise une approche d\u00e9clarative bas\u00e9e sur des types d'objets plut\u00f4t qu'un mod\u00e8le de donn\u00e9es bas\u00e9 sur des tableaux. Au lieu de cl\u00e9s \u00e9trang\u00e8res (foreign key) pour d\u00e9finir les relations entre les types, un syst\u00e8me de liaison par r\u00e9f\u00e9rences est utilis\u00e9 (un objet peut \u00eatre employ\u00e9 comme propri\u00e9t\u00e9 d'un autre objet).   <\/p>\n<p>     type Person {       required property name -&gt; str;     }     type Movie {       required property title -&gt; str;       multi link actors -&gt; Person;     }      <\/p>\n<p>Pour acc\u00e9l\u00e9rer le traitement des requ\u00eates, des index peuvent \u00eatre utilis\u00e9s. Des fonctionnalit\u00e9s telles que la typage strict des propri\u00e9t\u00e9s, les contraintes de valeurs des propri\u00e9t\u00e9s, les propri\u00e9t\u00e9s calcul\u00e9es et les proc\u00e9dures stock\u00e9es sont \u00e9galement support\u00e9es. Parmi les caract\u00e9ristiques du sch\u00e9ma de stockage orient\u00e9 objet d'EdgeDB, qui rappelle quelque peu les ORM, on note la possibilit\u00e9 de m\u00e9langer les sch\u00e9mas, de lier des propri\u00e9t\u00e9s provenant de diff\u00e9rents objets et le support int\u00e9gr\u00e9 de JSON.     <\/p>\n<p>Des outils int\u00e9gr\u00e9s pour la migration de sch\u00e9mas de stockage sont fournis : apr\u00e8s une modification du sch\u00e9ma d\u00e9fini dans un fichier esdl s\u00e9par\u00e9, il suffit d'ex\u00e9cuter la commande \u00ab edgedb migration create \u00bb et le SGBD analysera les diff\u00e9rences de sch\u00e9ma et g\u00e9n\u00e9rera un script pour effectuer la transition vers le nouveau sch\u00e9ma en mode interactif. L'historique des modifications de sch\u00e9ma est automatiquement suivi.    <\/p>\n<p>Pour la cr\u00e9ation de requ\u00eates, le langage de requ\u00eate GraphQL ainsi que le langage propre \u00e0 EdgeDB, qui est une adaptation de SQL pour les donn\u00e9es hi\u00e9rarchiques, sont support\u00e9s. Au lieu de listes, les r\u00e9sultats de la requ\u00eate sont format\u00e9s de mani\u00e8re structur\u00e9e, et au lieu de sous-requ\u00eates et d'op\u00e9rations JOIN, il est possible d'indiquer une requ\u00eate EdgeQL en tant qu'expression au sein d'une autre requ\u00eate. Les transactions et les boucles sont pris en charge.    <\/p>\n<p>     select Movie {       title,       actors: {         name       }     }     filter .title = \u00abThe Matrix\u00bb       insert Movie {       title := \u00abThe Matrix Resurrections\u00bb,       actors := (         select Person         filter .name in {           \u2018Keanu Reeves\u2019,           \u2018Carrie-Anne Moss\u2019,           \u2018Laurence Fishburne\u2019         }       )     }       for number in {0, 1, 2, 3}     union (       select { number, number + 0.5 }     );      <\/p>\n<p>Dans la nouvelle version :  <\/p>\n<ul>\n<li class=\"l\"> Une interface web int\u00e9gr\u00e9e a \u00e9t\u00e9 ajout\u00e9e pour l'administration de la base de donn\u00e9es, permettant de visualiser et de modifier des donn\u00e9es, d'ex\u00e9cuter des requ\u00eates EdgeQL et d'analyser le sch\u00e9ma de stockage appliqu\u00e9. L'interface se lance avec la commande \u00abedgedb ui\u00bb, apr\u00e8s quoi elle est accessible en se rendant sur localhost.  <center><img decoding=\"async\" alt=\"La sortie de la base de donn\u00e9es relationnelle-graphique EdgeDB 2.0\" src=\"\/wp-content\/uploads\/2022\/07\/7568d457e9559e7aafe10f7b526f8cac.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>\n<li class=\"l\"> L'expression \u00abGROUP\u00bb a \u00e9t\u00e9 mise en \u0153uvre, permettant de sectionner et d'agr\u00e9ger des donn\u00e9es et d'effectuer un regroupement de donn\u00e9es selon des expressions EdgeQL arbitraires, similaire \u00e0 la regroupement dans l'op\u00e9ration SELECT.\n<li class=\"l\"> Gestion des acc\u00e8s au niveau des objets. Les r\u00e8gles d'acc\u00e8s sont d\u00e9finies au niveau du sch\u00e9ma de stockage et permettent de limiter l'utilisation d'un ensemble sp\u00e9cifique d'objets dans les op\u00e9rations de s\u00e9lection, d'insertion, de suppression et de mise \u00e0 jour. Par exemple, une r\u00e8gle peut autoriser la mise \u00e0 jour d'un article uniquement par son auteur.\n<li class=\"l\"> Ajout de la possibilit\u00e9 d'utiliser des variables globales dans le sch\u00e9ma de stockage. Une nouvelle variable globale current_user a \u00e9t\u00e9 propos\u00e9e pour lier \u00e0 l'utilisateur.\n<li class=\"l\"> Ajout de la prise en charge des types d\u00e9finissant des plages de valeurs (range).\n<li class=\"l\"> Une biblioth\u00e8que cliente officielle pour le langage Rust a \u00e9t\u00e9 pr\u00e9par\u00e9e.\n<li class=\"l\"> Le protocole binaire EdgeDB a \u00e9t\u00e9 stabilis\u00e9, permettant la gestion simultan\u00e9e de plusieurs sessions diff\u00e9rentes au sein d'une seule connexion r\u00e9seau, le passage via HTTP, l'utilisation de variables globales et d'\u00e9tats locaux.\n<li class=\"l\"> Ajout du support de l'activation par socket, permettant de ne pas garder le traitement du serveur en m\u00e9moire et de ne l'ex\u00e9cuter que lors de la tentative d'\u00e9tablissement d'une connexion (utile pour \u00e9conomiser des ressources sur les syst\u00e8mes des d\u00e9veloppeurs).          <\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=57572\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 2.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 EdgeQL, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 Python \u0438 Rust (\u043f\u0430\u0440\u0441\u0435\u0440 \u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0435 \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u0438) \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0435 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0434 PostgreSQL. \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 Python, Go, Rust \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":104731,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-104730","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=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 2.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 EdgeQL, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.\" \/>\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\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0\" \/>\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\u0412\u044b\u043f\u0443\u0441\u043a \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u043e\u0439 \u0421\u0423\u0411\u0414 EdgeDB 2.0 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 2.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 EdgeQL, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0\" \/>\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=\"2022-07-29T13:37:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-07-29T13:37:12+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\udd47Lancement de la base de donn\u00e9es relationnelle-graphique EdgeDB 2.0 | ProHoster","description":"Publication de la base de donn\u00e9es EdgeDB 2.0, qui impl\u00e9mente un mod\u00e8le de donn\u00e9es relationnel-graphique et un langage de requ\u00eates EdgeQL, optimis\u00e9s pour le traitement de donn\u00e9es hi\u00e9rarchiques complexes.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0","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\u0412\u044b\u043f\u0443\u0441\u043a \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u043e\u0439 \u0421\u0423\u0411\u0414 EdgeDB 2.0 | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 2.0, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e-\u0433\u0440\u0430\u0444\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044f\u0437\u044b\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 EdgeQL, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-2-0","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":"2022-07-29T13:37:12+00:00","article:modified_time":"2022-07-29T13:37:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"104730","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2022-07-29 13:38:13","updated":"2022-10-02 04:59:55","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\/104730","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=104730"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/104730\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/104731"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=104730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=104730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=104730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}