{"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\/sv\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","title":{"rendered":"Lansering av den relationella-grafdatabashanteraren EdgeDB 5.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>EdgeDB 5.0 har sl\u00e4ppts och implementerar en relations-grafdatamodell samt fr\u00e5gespr\u00e5ket EdgeQL, optimerat f\u00f6r arbete med komplexa hierarkiska data. Projektet utvecklas som en utbyggnad \u00f6ver PostgreSQL, d\u00e4r koden \u00e4r skriven i Python och Rust (parser och prestandakritiska delar), och distribueras under Apache 2.0-licensen. Klientbiblioteken har f\u00f6rberetts f\u00f6r spr\u00e5ken Python, Go, Rust, .NET, Elixir och TypeScript\/Javascript. En kommandoradsverktyg tillhandah\u00e5lls f\u00f6r att hantera databasen och f\u00f6r interaktiv exekvering av fr\u00e5gor (REPL).    <\/p>\n<p>Ist\u00e4llet f\u00f6r en tabellbaserad datamodell anv\u00e4nder EdgeDB ett deklarativt system baserat p\u00e5 objekttyper. Ist\u00e4llet f\u00f6r prim\u00e4rnycklar (foreign key) f\u00f6r att definiera relationen mellan typer, anv\u00e4nds l\u00e4nkbindningar (en objekt kan anv\u00e4ndas som en egenskap av ett annat objekt).   <\/p>\n<p>     type Person {       required name: str;     }     type Movie {       required title: str;       multi actors: Person;     }      <\/p>\n<p>Funktioner som strikt typning av egenskaper, begr\u00e4nsningar av egenskapsv\u00e4rden, ber\u00e4knade egenskaper och lagrade procedurer st\u00f6ds. Bland de s\u00e4rskilda funktionerna i EdgeDB:s objektlagringsschema, som p\u00e5minner om ORM, noteras m\u00f6jligheten att blanda scheman, binda egenskaper fr\u00e5n olika objekt och integrerat st\u00f6d f\u00f6r JSON. F\u00f6r att p\u00e5skynda fr\u00e5ga bearbetningen kan index anv\u00e4ndas.     <\/p>\n<p>Inbyggda verktyg f\u00f6r migrering av lagringsscheman tillhandah\u00e5lls \u2014 efter att ha \u00e4ndrat schemat som anges i en separat esdl-fil, r\u00e4cker det med att k\u00f6ra kommandot \u00abedgedb migration create\u00bb s\u00e5 analyserar databasen skillnaderna i schemat och interaktivt genererar en skript f\u00f6r att \u00f6verg\u00e5 till det nya schemat. Historiken f\u00f6r f\u00f6r\u00e4ndringar av schemat sp\u00e5ras automatiskt.    <\/p>\n<p>Fr\u00e5gespr\u00e5ket GraphQL och det egna spr\u00e5ket EdgeDB, som \u00e4r en anpassning av SQL f\u00f6r hierarkiska data, st\u00f6ds f\u00f6r att formulera fr\u00e5gor. Ist\u00e4llet f\u00f6r listor visas fr\u00e5geresultaten i strukturerad form, och ist\u00e4llet f\u00f6r underfr\u00e5gor och JOIN-operationer ges m\u00f6jligheten att ange en EdgeQL-fr\u00e5ga som ett uttryck inom en annan fr\u00e5ga. Transaktioner och loopar st\u00f6ds.    <\/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         }       )     }      <\/p>\n<p>I den nya versionen:  <\/p>\n<ul>\n<li class=\"l\">St\u00f6d f\u00f6r branching har lagts till, vilket g\u00f6r det m\u00f6jligt att anv\u00e4nda konceptet grenar i arbetet med data och scheman, till\u00e4mpat i versionshanteringssystem. Ist\u00e4llet f\u00f6r termen \u00abdatabas\u00bb introduceras begreppet \u00abgren\u00bb (branch) i denna version, och kommandona \u00abcreate database\u00bb och \u00abdrop database\u00bb har blivit f\u00f6r\u00e5ldrade, och ist\u00e4llet rekommenderas att anv\u00e4nda de nya kommandona \u00abcreate empty branch\u00bb och \u00abdrop branch\u00bb. F\u00f6rutom tomma grenar kan man med hj\u00e4lp av kommandona \u00abcreate schema branch\u00bb och \u00abcreate data branch\u00bb skapa avgreningar fr\u00e5n befintliga grenar och databaser genom att kopiera deras lagringsschema och data.\n<p>Fr\u00e5n ett praktiskt perspektiv m\u00f6jligg\u00f6r st\u00f6det f\u00f6r grenar att synkronisera data med den kod som anv\u00e4nds f\u00f6r att bearbeta dem, samtidigt som kompatibiliteten med gammal kod bibeh\u00e5lls. Till exempel, efter att ha uppdaterat koden kan en ny datagren kopplas till den och ta h\u00e4nsyn till de \u00e4ndringar som gjorts i lagringsschemat. Denna funktionalitet \u00e4r praktisk f\u00f6r att f\u00f6renkla utveckling och testning av nya programvaruversioner, d\u00e4r det efter att de \u00e4r redo r\u00e4cker med att v\u00e4xla till den redan testade grenen.      <\/p>\n<li class=\"l\"> I till\u00e4gget pgvector, som anv\u00e4nds f\u00f6r effektiv lagring och f\u00f6rfr\u00e5gning av vektorer, har en ny typ av index, HNSW (Hierarchical Navigable Small Worlds), lagts till. Denna \u00e4r, likt indexet IVFFlat, tillg\u00e4nglig i tre varianter: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip och ext::pgvector::hnsw_cosine. Dessutom har m\u00f6jligheterna f\u00f6r finjustering av indexen ut\u00f6kats genom objektet ext::pgvector::Config.\n<li class=\"l\"> Ytterligare autentiseringsm\u00f6jligheter har lagts till. I autentiseringstill\u00e4gget implementeras st\u00f6d f\u00f6r l\u00f6senordsfria autentiseringsscheman via WebAuthn (Passkeys) och \u00abmagic links\u00bb (baserat p\u00e5 e-post). St\u00f6d f\u00f6r anv\u00e4ndning av plattformarna Slack och Discord som OAuth-leverant\u00f6rer har ocks\u00e5 lagts till.\n<li class=\"l\"> Prestandaoptimeringar har genomf\u00f6rts. I implementeringen av cacheminnet med resultaten av kompilering av f\u00f6rfr\u00e5gningar har tillst\u00e5ndet bevarats mellan omstarter, och automatisk rekompilering efter migration har lagts till. Hastigheten f\u00f6r stora lagringsscheman har f\u00f6rb\u00e4ttrats.\n<li class=\"l\"> I spelspr\u00e5ket EdgeQL \u00e4r det till\u00e5tet att utel\u00e4mna nyckelordet \u00abunion\u00bb i grundl\u00e4ggande f\u00f6rfr\u00e5gningar d\u00e4r uttrycken insert, update eller delete anv\u00e4nds.\n<li class=\"l\"> Kommandot vacuum() har lagts till f\u00f6r att rensa, optimera och packa databasens inneh\u00e5ll.\n<li class=\"l\"> Det \u00e4r till\u00e5tet att konvertera data mellan datatypen bytes och typerna int16, int32, int64 och uuid, med hj\u00e4lp av funktionerna to_bytes(), to_uuid() och to_int*().\n<li class=\"l\"> M\u00f6jligheten att st\u00e4nga alla anslutningar till databasen efter att operationen \u00abdrop database\u00bb har utf\u00f6rts har lagts till.                  <\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0\" \/>\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\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\/sv\/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\udd47Utgivning av relationell-grafdatabashanterare EdgeDB 5.0 | ProHoster","description":"Release av databashanteraren EdgeDB 5.0 \u00e4r tillg\u00e4nglig, vilket implementerar en relationell-grafmodell och fr\u00e5gespr\u00e5ket EdgeQL, optimerat f\u00f6r att hantera komplexa hierarkiska data.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","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\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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/115237","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=115237"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/115237\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=115237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=115237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=115237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}