La prima versione stabile del grafico relazionale DBMS EdgeDB

È disponibile la prima versione stabile del DBMS EdgeDB, che è un componente aggiuntivo di PostgreSQL con l'implementazione del modello di dati del grafico relazionale e del linguaggio di query EdgeQL, ottimizzato per lavorare con dati gerarchici complessi. Il codice è scritto in Python e Rust ed è distribuito sotto la licenza Apache 2.0. Le librerie client sono preparate per Python, Go, Rust e TypeScript/Javascript. Fornisce strumenti da riga di comando per la gestione DBMS e l'esecuzione di query interattive (REPL).

Invece di un modello dati basato su tabelle, EdgeDB utilizza un sistema dichiarativo basato sui tipi di oggetto. Invece delle chiavi esterne, viene utilizzato il collegamento per riferimento per definire la relazione tra i tipi (un oggetto può essere utilizzato come proprietà di un altro oggetto). type Persona { nome della proprietà richiesta -> str; } tipo Film { titolo della proprietà richiesta -> str; attori multi-link -> Persona; }

Gli indici possono essere utilizzati per velocizzare l'elaborazione delle query. Sono supportate anche funzionalità come la tipizzazione avanzata delle proprietà, le restrizioni sui valori delle proprietà, le proprietà calcolate e le procedure memorizzate. Le caratteristiche dello schema di archiviazione degli oggetti EdgeDB, che ricorda in qualche modo un ORM, includono la possibilità di combinare schemi, collegare proprietà di oggetti diversi e supporto JSON integrato.

Vengono forniti strumenti integrati per archiviare la migrazione dello schema: dopo aver modificato lo schema specificato in un file esdl separato, è sufficiente eseguire il comando "edgedb migrazione create" e il DBMS analizzerà le differenze nello schema e genererà in modo interattivo uno script per la migrazione allo schema nuovo schema. La cronologia delle modifiche allo schema viene tracciata automaticamente.

Per generare query, sono supportati sia il linguaggio di query GraphQL che il linguaggio proprietario EdgeDB, che è un adattamento di SQL per i dati gerarchici. Invece di elenchi, i risultati delle query vengono formattati in modo strutturato e invece di sottoquery e JOIN, puoi specificare una query EdgeQL come espressione all'interno di un'altra query. Sono supportate transazioni e cicli. select Film { titolo, attori: { nome } } filter .title = "The Matrix" insert Film { titolo := "The Matrix Resurrections", attori := ( select Persona filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } per il numero nell'unione {0, 1, 2, 3} ( seleziona { numero, numero + 0.5 } );

Fonte: opennet.ru

Aggiungi un commento