Uscita del DBMS relazionale e grafico EdgeDB 2.0

È stato presentato il rilascio del DBMS EdgeDB 2.0, che implementa un modello di dati relazionali-grafici e un linguaggio di query EdgeQL, ottimizzati per lavorare con dati gerarchici complessi. Il codice è scritto in Python e Rust (parser e parti critiche per le prestazioni) e viene distribuito con licenza Apache 2.0. Il progetto si sviluppa come un'estensione di PostgreSQL. Le librerie client sono disponibili per i linguaggi Python, Go, Rust e TypeScript/Javascript. È fornito uno strumento da riga di comando per la gestione del DBMS e l'esecuzione interattiva delle query (REPL).

In EdgeDB viene utilizzato un sistema dichiarativo basato su tipi di oggetti anziché 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ò essere utilizzato come proprietà di un altro oggetto).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Per accelerare l'elaborazione delle query possono essere utilizzati gli indici. Sono supportate anche funzionalità come la tipizzazione rigorosa delle proprietà, le limitazioni dei valori delle proprietà, le proprietà calcolate e le procedure memorizzate. Tra le caratteristiche del modello di archiviazione a oggetti di EdgeDB, simile a un ORM, si segnala la possibilità di mescolare schemi, associare proprietà di oggetti diversi e il supporto integrato per JSON.

Sono forniti strumenti integrati per la migrazione dello schema di archiviazione: dopo aver modificato lo schema definito in un file esdl separato, è sufficiente eseguire il comando "edgedb migration create" e il DBMS analizzerà le differenze nel modello e genererà interattivamente uno script per l'aggiornamento del modello. La cronologia delle modifiche allo schema viene tracciata automaticamente.

Per la formazione delle query, sono supportati sia il linguaggio di query GraphQL che il proprio linguaggio EdgeDB, che è un'adattamento di SQL per dati gerarchici. Invece di elenchi, i risultati della query vengono presentati in forma strutturata, e invece di sottoquery e operazioni JOIN, viene fornita la possibilità di indicare una query EdgeQL come espressione all'interno di un'altra query. Sono supportate transazioni e cicli.

seleziona Film { titolo, attori: { nome } } filtra .titolo = «The Matrix» inserisci Film { titolo := «The Matrix Resurrections», attori := ( seleziona Persona filtra .nome in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) } per numero in {0, 1, 2, 3} unisci ( seleziona { numero, numero + 0.5 } );

Nella nuova versione:

  • È stata aggiunta un'interfaccia web integrata per l'amministrazione del database, che consente di visualizzare e modificare i dati, eseguire query EdgeQL e analizzare lo schema di archiviazione applicato. L'interfaccia viene avviata con il comando «edgedb ui», dopo il quale è accessibile tramite localhost.
    Uscita del DBMS relazionale e grafico EdgeDB 2.0
  • È stata implementata l'espressione «GROUP», che consente di sezionare e aggregare dati e di effettuare raggruppamenti in base a espressioni EdgeQL arbitrari analoghi ai raggruppamenti nell'operazione SELECT.
  • Possibilità di gestione degli accessi a livello di oggetti. Le regole di accesso sono definite a livello di schema di archiviazione e permettono di limitare la possibilità di utilizzare un certo insieme di oggetti nelle operazioni di selezione, inserimento, eliminazione e aggiornamento. Ad esempio, è possibile aggiungere una regola che consente l'aggiornamento della pubblicazione solo all'autore.
  • È stata aggiunta la possibilità di utilizzare variabili globali nello schema di archiviazione. È stata proposta una nuova variabile globale current_user per associare l'utente.
  • È stato aggiunto il supporto per i tipi che definiscono intervalli di valori (range).
  • È stata preparata una libreria client ufficiale per il linguaggio Rust.
  • È stato stabilizzato il protocollo binario EdgeDB, che ora permette di gestire simultaneamente più sessioni diverse all'interno di una singola connessione di rete, passando tramite HTTP, utilizzando variabili globali e stati locali.
  • È stato aggiunto il supporto per l'attivazione tramite socket, che permette di non tenere il gestore del server in memoria e di avviarlo solo quando si tenta di stabilire una connessione (utile per il risparmio di risorse nei sistemi degli sviluppatori).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster