Eerste stabiele release van de relationeel-grafische DBMS EdgeDB

De eerste stabiele release van de database EdgeDB is beschikbaar. Deze vormt een uitbreiding op PostgreSQL en implementeert een relationeel-grafisch datamodel en de querytaal EdgeQL, geoptimaliseerd voor complexe hiƫrarchische gegevens. De code is geschreven in de programmeertalen Python en Rust en wordt verspreid onder de Apache 2.0-licentie. Klantbibliotheken zijn voorbereid voor de talen Python, Go, Rust en TypeScript/Javascript. Er is een command-line toolkit beschikbaar voor het beheren van de database en voor interactieve uitvoering van queries (REPL).

In plaats van een tabelgebaseerd datamodel gebruikt EdgeDB een declaratief systeem op basis van objecttypes. In plaats van vreemde sleutels (foreign key) om relaties tussen types te definiƫren, wordt er gewerkt met links (ƩƩn object kan worden gebruikt als eigenschap van een ander object). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Voor het versnellen van het verwerken van aanvragen kunnen indexen worden gebruikt. Ook worden functionaliteiten ondersteund zoals strikte typering van eigenschappen, waarde-beperkingen voor eigenschappen, berekende eigenschappen en opgeslagen procedures. Een van de kenmerken van het opslagobjectmodel van EdgeDB, dat enige gelijkenis vertoont met ORM, is de mogelijkheid tot het mengen van schema's, het koppelen van eigenschappen van verschillende objecten en de geĆÆntegreerde ondersteuning voor JSON.

Er zijn ingebouwde tools beschikbaar voor het migreren van het opslagchema — na een wijziging in het schema, zoals opgegeven in een afzonderlijk esdl-bestand, is het voldoende om het commando 'edgedb migration create' uit te voeren, waarna de database de verschillen in het schema analyseert en interactief een script genereert voor de overgang naar het nieuwe schema. De geschiedenis van schemawijzigingen wordt automatisch bijgehouden.

Voor het formuleren van queries worden zowel de querytaal GraphQL als de eigen EdgeDB-taal ondersteund, een aanpassing van SQL voor hiƫrarchische gegevens. In plaats van lijsten worden de resultaten van de query in een gestructureerde vorm gepresenteerd, en in plaats van subqueries en JOIN-operaties is het mogelijk om ƩƩn EdgeQL-query als een expressie binnen een andere query op te geven. Transacties en lussen worden ondersteund. 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 } );

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster