{"id":115237,"date":"2024-04-22T14:30:04","date_gmt":"2024-04-22T12:30:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0"},"modified":"2024-04-22T14:30:04","modified_gmt":"2024-04-22T12:30:04","slug":"vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","title":{"rendered":"Rilascio del DBMS relazionale a grafo EdgeDB 5.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00c8 disponibile il rilascio del DBMS EdgeDB 5.0, che implementa un modello di dati relazionale e grafico e un linguaggio di query EdgeQL, ottimizzati per la gestione di dati gerarchici complessi. Il progetto si sviluppa come un'estensione di PostgreSQL, il cui codice \u00e8 scritto in Python e Rust (parser e parti critiche per le prestazioni), ed \u00e8 distribuito con licenza Apache 2.0. Le librerie client sono disponibili per i linguaggi Python, Go, Rust, .NET, Elixir e TypeScript\/Javascript. \u00c8 fornito un set di strumenti da riga di comando per gestire il DBMS e per eseguire interattivamente le query (REPL).    <\/p>\n<p>In EdgeDB viene utilizzato un sistema dichiarativo basato su tipi di oggetti anzich\u00e9 un modello di dati basato su tabelle. Invece delle chiavi esterne (foreign key) per definire le relazioni tra i tipi, vengono utilizzate associazioni tramite riferimenti (un oggetto pu\u00f2 essere utilizzato come propriet\u00e0 di un altro oggetto).   <\/p>\n<p>     type Person {       required name: str;     }     type Movie {       required title: str;       multi actors: Person;     }      <\/p>\n<p>Sono supportate funzionalit\u00e0 come la tipizzazione rigorosa delle propriet\u00e0, i vincoli sui valori delle propriet\u00e0, le propriet\u00e0 calcolate e le procedure memorizzate. Tra le peculiarit\u00e0 dello schema di archiviazione oggettuale di EdgeDB, che in qualche modo ricorda un ORM, si segnala la possibilit\u00e0 di mescolare schemi, legare propriet\u00e0 da oggetti diversi e un supporto integrato per JSON. Per accelerare l'elaborazione delle query possono essere utilizzati indici.     <\/p>\n<p>Sono forniti strumenti integrati per la migrazione dello schema di archiviazione \u2014 dopo aver modificato lo schema definito in un file esdl separato, \u00e8 sufficiente eseguire il comando \u00abedgedb migration create\u00bb e il database analizzer\u00e0 le differenze nello schema generando interattivamente uno script per la transizione al nuovo schema. Viene monitorata automaticamente la cronologia delle modifiche dello schema.    <\/p>\n<p>Per la creazione delle query \u00e8 supportato il linguaggio di query GraphQL e il linguaggio proprietario di EdgeDB, che rappresenta un adattamento di SQL per dati gerarchici. Invece di elenchi, i risultati delle query sono presentati in forma strutturata, mentre al posto di sottoparole e operazioni JOIN \u00e8 prevista la possibilit\u00e0 di specificare una query EdgeQL come espressione all'interno di un'altra query. Sono supportate transazioni e cicli.    <\/p>\n<p>     seleziona Movie {       titolo,       attori: {         nome       }     }     filtra .title = 'The Matrix'       inserisci Movie {       titolo := 'The Matrix Resurrections',       attori := (         seleziona Person         filtra .name in {           'Keanu Reeves',           'Carrie-Anne Moss',           'Laurence Fishburne'         }       )     }      <\/p>\n<p>Nella nuova versione:  <\/p>\n<ul>\n<li class=\"l\">\u00c8 stata aggiunta la supporto per il branching, che consente l'utilizzo del concetto di rami durante il lavoro con dati e schemi, come nelle sistemi di controllo versione. Nel nuovo rilascio il termine 'database' \u00e8 stato sostituito dal concetto di 'branch', e i comandi 'create database' e 'drop database' sono stati deprecati, sostituiti dai nuovi comandi 'create empty branch' e 'drop branch'. Oltre ai rami vuoti, \u00e8 possibile creare ramificazioni da rami e database esistenti utilizzando i comandi 'create schema branch' e 'create data branch', copiando da essi la schema e i dati.\n<p>Dal punto di vista pratico, il supporto dei rami consente di sincronizzare i dati con il codice utilizzato per l'elaborazione, mantenendo cos\u00ec la compatibilit\u00e0 con il codice legacy. Ad esempio, dopo l'aggiornamento del codice, \u00e8 possibile collegare un nuovo ramo di dati che tenga conto delle modifiche apportate allo schema di memorizzazione. Questa funzionalit\u00e0 \u00e8 particolarmente utile per semplificare lo sviluppo e il testing di nuove versioni del software, dopo di che \u00e8 sufficiente passare al ramo gi\u00e0 testato.      <\/p>\n<li class=\"l\"> Nel modulo pgvector, utilizzato per la memorizzazione e la richiesta efficiente di vettori, \u00e8 stato aggiunto un nuovo tipo di indici HNSW (Hierarchical Navigable Small Worlds), che, analogamente all'indice IVFFlat, \u00e8 disponibile in tre varianti: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip e ext::pgvector::hnsw_cosine. Inoltre, pgvector ha ampliato le possibilit\u00e0 di configurazione fine degli indici attraverso l'oggetto ext::pgvector::Config.\n<li class=\"l\"> Sono state aggiunte ulteriori opzioni di autenticazione. Nel modulo auth \u00e8 stata implementata la supporto per schemi di autenticazione senza password WebAuthn (Passkeys) e 'magic links' (basati su email). \u00c8 stata inoltre aggiunta la supporto per l'utilizzo delle piattaforme Slack e Discord come fornitori OAuth.\n<li class=\"l\"> Sono state apportate ottimizzazioni delle prestazioni. Nella realizzazione della cache con i risultati della compilazione delle query \u00e8 stato garantito il salvataggio dello stato tra i riavvii e aggiunta la ricompilazione automatica dopo la migrazione. \u00c8 stata aumentata la velocit\u00e0 di lavoro con grandi schemi di memorizzazione.\n<li class=\"l\"> Nel linguaggio delle query EdgeQL, nell'espressione 'for' \u00e8 ora consentito non specificare la parola chiave 'union' nelle query di base che utilizzano le espressioni insert, update o delete.\n<li class=\"l\"> \u00c8 stato aggiunto il comando vacuum() per la pulizia, ottimizzazione e impacchettamento del contenuto del database.\n<li class=\"l\"> \u00c8 stata autorizzata la conversione dei dati tra il tipo bytes e i tipi int16, int32, int64 e uuid, utilizzando le funzioni to_bytes(), to_uuid() e to_int*().\n<li class=\"l\"> \u00c8 stata aggiunta la possibilit\u00e0 di chiudere tutte le connessioni al database dopo l'esecuzione dell'operazione 'drop database'.                  <\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=61041\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 5.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. \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, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \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. \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. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-115237","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 5.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\/it\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 5.0 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 5.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\/it\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-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=\"2024-04-22T12:30:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-04-22T12:30:04+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\udd47Uscita del DBMS relazionale-grafico EdgeDB 5.0 | ProHoster","description":"\u00c8 disponibile il rilascio del DBMS EdgeDB 5.0, che implementa un modello dati relazionale-grafico e un linguaggio di query EdgeQL, ottimizzati per lavorare con dati gerarchici complessi.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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 5.0 | ProHoster","og:description":"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0440\u0435\u043b\u0438\u0437 \u0421\u0423\u0411\u0414 EdgeDB 5.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\/it\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-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":"2024-04-22T12:30:04+00:00","article:modified_time":"2024-04-22T12:30:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"115237","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-22 22:53:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-22 22:53:19","updated":"2026-01-22 22:53:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/115237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=115237"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/115237\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=115237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=115237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=115237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}