Utjefte fan 'e relaasjegrafyk DBMS EdgeDB 2.0

De frijlitting fan 'e EdgeDB 2.0 DBMS wurdt presintearre, dy't it relasjonele grafykgegevensmodel en de EdgeQL-fraachtaal ymplementearret, optimalisearre foar wurkjen mei komplekse hiërargyske gegevens. De koade is skreaun yn Python en Rust (parser en prestaasje-krityske dielen) en wurdt ferspraat ûnder de Apache 2.0-lisinsje. It projekt wurdt ûntwikkele as in add-on foar PostgreSQL. Kliïntbiblioteken wurde taret op Python, Go, Rust en TypeScript/Javascript. Biedt kommandorigelark foar DBMS-behear en ynteraktive query-útfiering (REPL).

Ynstee fan in tabel-basearre gegevensmodel brûkt EdgeDB in deklaratyf systeem basearre op objekttypen. Yn stee fan frjemde kaaien, wurdt keppele troch referinsje brûkt om de relaasje tusken typen te definiearjen (ien objekt kin brûkt wurde as eigendom fan in oar objekt).

type Persoan { fereaske eigendom namme -> str; } type Movie { fereaske eigendom titel -> str; multi-link akteurs -> Persoan; }

Yndeksen kinne brûkt wurde om queryferwurking te fersnellen. Funksjes lykas sterk typen fan eigendom, beheiningen foar eigendomwearde, berekkene eigenskippen, en opsleine prosedueres wurde ek stipe. Skaaimerken fan it EdgeDB-objekt opslachskema, dat wat tinkt oan in ORM, omfetsje de mooglikheid om skema's te mingjen, eigenskippen te keppeljen fan ferskate objekten, en yntegreare JSON-stipe.

Ynboude ark wurde levere foar it opslaan fan skemamigraasje - nei it feroarjen fan it skema spesifisearre yn in apart esdl-bestân, fier gewoan it kommando "edgedb migration create" út en de DBMS sil de ferskillen yn it skema analysearje en ynteraktyf in skript generearje foar migraasje nei de nij skema. De skiednis fan skemawizigingen wurdt automatysk folge.

Om queries te generearjen, wurde sawol de GraphQL-fraachtaal as de proprietêre EdgeDB-taal, dy't in oanpassing is fan SQL foar hiërargyske gegevens, stipe. Yn stee fan listen wurde query-resultaten op in strukturearre manier opmakke, en ynstee fan subqueries en JOIN's, kinne jo ien EdgeQL-query opjaan as in útdrukking binnen in oare query. Transaksjes en syklusen wurde stipe.

selektearje Movie { title, actors: { name } } filter .title = "The Matrix" ynfoegje Movie { title := "The Matrix Resurrections", akteurs := (selektearje Person filter .name yn { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } } foar nûmer yn {0, 1, 2, 3} uny (selektearje { number, number + 0.5 } );

Yn de nije ferzje:

  • In ynboude webynterface is tafoege foar databankbehear, wêrtroch jo gegevens kinne besjen en bewurkje, EdgeQL-fragen útfiere en it brûkte opslachskema analysearje. De ynterface wurdt lansearre troch it kommando "edgedb ui", wêrnei't it beskikber wurdt by tagong ta localhost.
    Utjefte fan 'e relaasjegrafyk DBMS EdgeDB 2.0
  • De "GROUP"-ekspresje is ymplementearre, wêrtroch jo gegevens kinne partitionearje en aggregearje en gegevens groepearje mei willekeurige EdgeQL-útdrukkingen, fergelykber mei groepearjen yn in SELECT-operaasje.
  • Mooglikheid om tagong te kontrolearjen op it objektnivo. Tagongsregels wurde definieare op it nivo fan opslachskema en kinne jo de mooglikheid beheine om in bepaalde set fan objekten te brûken yn operaasjes ophelje, ynfoegje, wiskje en bywurkje. Jo kinne bygelyks in regel tafoegje wêrmei allinich de auteur in publikaasje bywurkje kin.
  • De mooglikheid tafoege om globale fariabelen te brûken yn it opslachskema. In nije globale fariabele current_user is foarsteld om te binen oan de brûker.
  • Stipe tafoege foar typen dy't berik fan wearden definiearje.
  • In offisjele kliïntebibleteek foar de Rusttaal is klearmakke.
  • It EdgeDB-binêre protokol is stabilisearre, wêrtroch it mooglik is om ferskate ferskillende sesjes tagelyk te ferwurkjen binnen deselde netwurkferbining, trochstjoere fia HTTP, mei help fan globale fariabelen en lokale steaten.
  • Stipe tafoege foar socketaktivearring, wêrtroch jo de tsjinnerhanneler net yn it ûnthâld hâlde kinne en it allinich útfiere as jo besykje in ferbining te meitsjen (nuttich foar it bewarjen fan boarnen op ûntwikkelderssystemen).

Boarne: opennet.ru

Add a comment