Liberazione di u graficu relazionale DBMS EdgeDB 2.0

A liberazione di u DBMS EdgeDB 2.0 hè presentata, chì implementa u mudellu di dati di gràficu relazionale è a lingua di dumanda EdgeQL, ottimizzata per travaglià cù dati gerarchici cumplessi. U codice hè scrittu in Python è Rust (parser and performance-critical parts) è hè distribuitu sottu a licenza Apache 2.0. U prughjettu hè sviluppatu cum'è un add-on per PostgreSQL. I biblioteche di i clienti sò preparati per Python, Go, Rust è TypeScript/Javascript. Fornisce strumenti di linea di cumanda per a gestione DBMS è l'esekzione interattiva di query (REPL).

Invece di un mudellu di dati basatu in tavulinu, EdgeDB usa un sistema dichjarazione basatu nantu à i tipi d'ughjettu. Invece di chjavi straneri, ligami per riferimentu hè utilizatu per definisce a relazione trà i tipi (un ughjettu pò esse usatu cum'è una pruprietà di un altru ughjettu).

type Person { nome di pruprietà necessariu -> str; } type Movie { titulu di pruprietà necessariu -> str; attori multi link -> Persona; }

L'indici ponu esse aduprati per accelerà u processu di e dumande. Funzioni cum'è una forte tipografia di pruprietà, restrizioni di u valore di a pruprietà, proprietà calculate è prucedure almacenate sò ancu supportate. E caratteristiche di u schema di almacenamentu di l'ughjettu EdgeDB, chì ricorda un pocu di un ORM, includenu l'abilità di mischjà schemi, ligami proprietà da diversi oggetti, è supportu JSON integratu.

Strumenti integrati sò furniti per almacenà a migrazione di schema - dopu avè cambiatu u schema specificatu in un schedariu esdl separatu, basta à eseguisce u cumandimu "edgedb migration create" è u DBMS analizà e differenze in u schema è generà interattivamente un script per a migrazione à u novu schema. A storia di i cambiamenti di schema hè tracciata automaticamente.

Per generà dumande, sia a lingua di query GraphQL sia a lingua proprietaria EdgeDB, chì hè una adattazione di SQL per i dati gerarchici, sò supportati. Invece di listi, i risultati di e dumande sò furmati in modu strutturatu, è invece di sottoquestioni è JOIN, pudete specificà una dumanda EdgeQL cum'è espressione in una altra dumanda. E transacciones è ciculi sò supportati.

selezziunà Movie { title, attori: { name } } filter .title = "The Matrix" inserisci Movie { title := "The Matrix Resurrections", attori := (select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne'}) } per u numeru in {0, 1, 2, 3} unione (selezziunà { numeru, numeru + 0.5 });

In a nova versione:

  • Una interfaccia web integrata hè stata aghjunta per l'amministrazione di basa di dati, chì vi permette di vede è edità dati, eseguite dumande EdgeQL è analizà u schema di almacenamento utilizatu. L'interfaccia hè lanciata da u cumandimu "edgedb ui", dopu chì diventa dispunibule quandu accede à u localhost.
    Liberazione di u graficu relazionale DBMS EdgeDB 2.0
  • L'espressione "GROUP" hè stata implementata, chì vi permette di particionà è aggregate dati è dati di gruppu utilizendu espressioni EdgeQL arbitrarie, simili à raggruppamenti in una operazione SELECT.
  • Capacità di cuntrullà l'accessu à u livellu di l'ughjettu. E regule d'accessu sò definite à u nivellu di schema di almacenamento è permettenu di limità a capacità di utilizà un certu settore d'uggetti in l'operazione di fetch, inserisce, sguassate è aghjurnà. Per esempiu, pudete aghjunghje una regula chì permette solu l'autore per aghjurnà una publicazione.
  • Aggiunta l'abilità di utilizà variabili globale in u schema di almacenamento. Una nova variabile globale current_user hè stata pruposta per ligà à l'utilizatore.
  • Aghjunghje supportu per i tipi chì definiscenu intervalli di valori.
  • Una biblioteca ufficiale di u cliente per a lingua Rust hè stata preparata.
  • U protokollu binariu EdgeDB hè statu stabilizatu, facendu pussibule di processà parechje sessioni diverse simultaneamente in a listessa cunnessione di a rete, trasmettendu via HTTP, utilizendu variabili globali è stati lucali.
  • Aghjunghje supportu per l'attivazione di socket, chì permette di ùn mantene micca u gestore di u servitore in memoria è eseguite solu quandu pruvate di stabilisce una cunnessione (utile per salvà risorse in sistemi di sviluppatore).

Source: opennet.ru

Add a comment