Primo rilascio stabile di EdgeDB, un DBMS relazionale a grafo

È disponibile la prima versione stabile del database EdgeDB, che rappresenta un'estensione di PostgreSQL con un'implementazione del modello di dati relazionali e grafici e del linguaggio di query EdgeQL, ottimizzati per lavorare con dati gerarchici complessi. Il codice è scritto in Python e Rust e distribuito sotto la licenza Apache 2.0. Le librerie client sono disponibili per i linguaggi Python, Go, Rust e TypeScript/Javascript. Viene fornito un toolkit da riga di comando per la gestione del database e l'esecuzione interattiva delle query (REPL).

Invece di un modello di dati basato su tabelle, EdgeDB utilizza un sistema dichiarativo basato su tipi di oggetti. Invece di chiavi esterne (foreign key) per definire relazioni tra i tipi, si utilizza il collegamento 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 formulazione delle query è supportato sia il linguaggio di query GraphQL che il proprio linguaggio EdgeDB, che rappresenta un adattamento di SQL per dati gerarchici. Invece di elenchi, i risultati della query sono presentati in forma strutturata, e invece di sottoquery e operazioni JOIN è possibile specificare una query EdgeQL come espressione all'interno di un'altra query. Sono supportate transazioni e cicli. select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( select Person filter .name in { 'Keanu Reeves', 'Carrie-Anne Moss', 'Laurence Fishburne' } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

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