{"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\/pt\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","title":{"rendered":"Lan\u00e7amento do SGBD relacional e gr\u00e1fico EdgeDB 5.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Est\u00e1 dispon\u00edvel a vers\u00e3o do SGBD EdgeDB 5.0, que implementa um modelo de dados relacional e gr\u00e1fico e uma linguagem de consulta EdgeQL, otimizados para lidar com dados hier\u00e1rquicos complexos. O projeto se desenvolve como uma extens\u00e3o do PostgreSQL, cujo c\u00f3digo \u00e9 escrito em Python e Rust (analisador e partes cr\u00edticas para desempenho), e \u00e9 distribu\u00eddo sob a licen\u00e7a Apache 2.0. Bibliotecas cliente est\u00e3o preparadas para as linguagens Python, Go, Rust, .NET, Elixir e TypeScript\/Javascript. Ferramentas de linha de comando est\u00e3o dispon\u00edveis para gerenciar o SGBD e executar consultas interativamente (REPL).    <\/p>\n<p>Em vez de um modelo de dados baseado em tabelas, o EdgeDB utiliza um sistema declarativo baseado em tipos de objetos. Em vez de chaves externas (foreign key) para definir relacionamentos entre tipos, s\u00e3o utilizadas refer\u00eancias de liga\u00e7\u00e3o (um objeto pode ser usado como propriedade de outro objeto).   <\/p>\n<p>     type Person {       required name: str;     }     type Movie {       required title: str;       multi actors: Person;     }      <\/p>\n<p>Recursos como tipagem forte de propriedades, restri\u00e7\u00f5es de valores de propriedades, propriedades calculadas e procedimentos armazenados s\u00e3o suportados. Entre as caracter\u00edsticas do esquema de armazenamento de objetos do EdgeDB, que se assemelha a ORM, destaca-se a possibilidade de mesclar esquemas, vincular propriedades de diferentes objetos e suporte integrado a JSON. Para acelerar o processamento de consultas, \u00edndices podem ser aplicados.     <\/p>\n<p>S\u00e3o fornecidas ferramentas integradas para migra\u00e7\u00e3o de esquema de armazenamento \u2014 ap\u00f3s alterar o esquema definido em um arquivo esdl separado, basta executar o comando \u00abedgedb migration create\u00bb e o SGBD analisar\u00e1 as diferen\u00e7as no esquema e gerar\u00e1 interativamente um script para a transi\u00e7\u00e3o para o novo esquema. A hist\u00f3ria de altera\u00e7\u00f5es do esquema \u00e9 rastreada automaticamente.    <\/p>\n<p>Para formar consultas, a linguagem de consulta GraphQL e a pr\u00f3pria linguagem EdgeDB s\u00e3o suportadas, representando uma adapta\u00e7\u00e3o do SQL para dados hier\u00e1rquicos. Em vez de listas, os resultados da consulta s\u00e3o apresentados de forma estruturada, e em vez de subconsultas e opera\u00e7\u00f5es JOIN, \u00e9 poss\u00edvel especificar uma consulta EdgeQL como uma express\u00e3o dentro de outra consulta. Transa\u00e7\u00f5es e loops s\u00e3o suportados.    <\/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>Na nova vers\u00e3o:  <\/p>\n<ul>\n<li class=\"l\">Adicionada a suporte a ramifica\u00e7\u00f5es (\u00abbranching\u00bb), permitindo o uso do conceito de ramifica\u00e7\u00f5es na manipula\u00e7\u00e3o de dados e esquemas, semelhante ao que \u00e9 utilizado em sistemas de controle de vers\u00e3o. No novo lan\u00e7amento, em vez do termo \u00abbanco de dados\u00bb, foi sugerido o conceito de \u00abramifica\u00e7\u00e3o\u00bb (branch), e os comandos \u00abcreate database\u00bb e \u00abdrop database\u00bb foram marcados como obsoletos, recomendando o uso dos novos comandos \u00abcreate empty branch\u00bb e \u00abdrop branch\u00bb em seu lugar. Al\u00e9m de ramifica\u00e7\u00f5es vazias, s\u00e3o poss\u00edveis novos comandos \u00abcreate schema branch\u00bb e \u00abcreate data branch\u00bb para criar ramifica\u00e7\u00f5es a partir de ramifica\u00e7\u00f5es e bancos de dados existentes, copiando seus esquemas de armazenamento e dados.\n<p>Do ponto de vista pr\u00e1tico, o suporte a ramos permite sincronizar dados com o c\u00f3digo usado para process\u00e1-los, mantendo a compatibilidade com c\u00f3digos antigos. Por exemplo, ap\u00f3s uma atualiza\u00e7\u00e3o de c\u00f3digo, \u00e9 poss\u00edvel vincular a ele um novo ramo de dados que considere as altera\u00e7\u00f5es no esquema de armazenamento. Essa funcionalidade \u00e9 \u00fatil para simplificar o desenvolvimento e o teste de novas vers\u00f5es de software, ap\u00f3s as quais basta alternar para um ramo j\u00e1 testado.      <\/p>\n<li class=\"l\"> No m\u00f3dulo pgvector, utilizado para o armazenamento e consulta eficaz de vetores, foi adicionado um novo tipo de \u00edndices HNSW (Hierarchical Navigable Small Worlds), que, assim como o \u00edndice IVFFlat, est\u00e1 dispon\u00edvel em tr\u00eas variantes: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip e ext::pgvector::hnsw_cosine. Al\u00e9m disso, no pgvector, foram ampliadas as op\u00e7\u00f5es para ajuste fino dos \u00edndices atrav\u00e9s do objeto ext::pgvector::Config.\n<li class=\"l\"> Novos recursos de autentica\u00e7\u00e3o foram adicionados. Na extens\u00e3o auth, foi implementado suporte para esquemas de autentica\u00e7\u00e3o sem senha WebAuthn (Passkeys) e \u00abmagic links\u00bb (baseados em email). O uso das plataformas Slack e Discord como provedores de OAuth tamb\u00e9m foi adicionado.\n<li class=\"l\"> Otimiza\u00e7\u00f5es de desempenho foram feitas. Na implementa\u00e7\u00e3o do cache com resultados da compila\u00e7\u00e3o de consultas, garantiu-se a preserva\u00e7\u00e3o do estado entre reinicializa\u00e7\u00f5es e foi adicionada a recompila\u00e7\u00e3o autom\u00e1tica ap\u00f3s migra\u00e7\u00f5es. A velocidade de opera\u00e7\u00e3o com grandes esquemas de armazenamento foi aumentada.\n<li class=\"l\"> Na linguagem de consulta EdgeQL, na express\u00e3o \u00abfor\u00bb, \u00e9 permitido n\u00e3o especificar a palavra-chave \u00abunion\u00bb em consultas b\u00e1sicas que utilizam express\u00f5es insert, update ou delete.\n<li class=\"l\"> Adicionada a comando vacuum() para limpar, otimizar e empacotar o conte\u00fado do banco de dados.\n<li class=\"l\"> \u00c9 permitido converter dados entre o tipo bytes e os tipos int16, int32, int64 e uuid, utilizando as fun\u00e7\u00f5es to_bytes(), to_uuid() e to_int*().\n<li class=\"l\"> Adicionada a possibilidade de fechar todas as conex\u00f5es ao banco de dados ap\u00f3s a execu\u00e7\u00e3o da opera\u00e7\u00e3o \u00abdrop database\u00bb.                  <\/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.3 - 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\/pt\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Lan\u00e7amento do SGBD relacional-gr\u00e1fico EdgeDB 5.0 | ProHoster","description":"Est\u00e1 dispon\u00edvel o lan\u00e7amento do SGBD EdgeDB 5.0, que implementa o modelo de dados relacional-gr\u00e1fico e a linguagem de consultas EdgeQL, otimizados para trabalhar com dados hier\u00e1rquicos complexos.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/vypusk-relyaczionno-grafovoj-subd-edgedb-5-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/115237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=115237"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/115237\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=115237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=115237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=115237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}