De eerste stabiele release van de relationele grafiek DBMS EdgeDB

De eerste stabiele release van EdgeDB DBMS is beschikbaar, een add-on voor PostgreSQL met de implementatie van het relationele grafiekdatamodel en de EdgeQL-querytaal, geoptimaliseerd voor het werken met complexe hiërarchische gegevens. De code is geschreven in Python en Rust en wordt gedistribueerd onder de Apache 2.0-licentie. Clientbibliotheken zijn voorbereid voor Python, Go, Rust en TypeScript/Javascript. Biedt opdrachtregelhulpmiddelen voor DBMS-beheer en interactieve query-uitvoering (REPL).

In plaats van een op tabellen gebaseerd gegevensmodel gebruikt EdgeDB een declaratief systeem op basis van objecttypen. In plaats van externe sleutels wordt linking by reference gebruikt om de relatie tussen typen te definiëren (het ene object kan worden gebruikt als eigenschap van een ander object). type Persoon { vereiste eigenschapsnaam -> str; } type Film { vereiste eigenschapstitel -> str; multi-link actoren -> Persoon; }

Indexen kunnen worden gebruikt om de verwerking van zoekopdrachten te versnellen. Functies zoals sterke eigenschapstypering, beperkingen voor de waarde van eigendommen, berekende eigenschappen en opgeslagen procedures worden ook ondersteund. Kenmerken van het EdgeDB-objectopslagschema, dat enigszins doet denken aan een ORM, omvatten de mogelijkheid om schema's te combineren, eigenschappen van verschillende objecten te koppelen en geïntegreerde JSON-ondersteuning.

Er zijn ingebouwde tools beschikbaar voor het opslaan van schemamigratie - na het wijzigen van het schema dat is opgegeven in een afzonderlijk esdl-bestand, voert u gewoon de opdracht "edgedb migratie create" uit en het DBMS analyseert de verschillen in het schema en genereert interactief een script voor migratie naar het nieuw schema. De geschiedenis van schemawijzigingen wordt automatisch bijgehouden.

Om queries te genereren worden zowel de GraphQL-querytaal als de eigen EdgeDB-taal, een aanpassing van SQL voor hiërarchische gegevens, ondersteund. In plaats van lijsten worden de queryresultaten op een gestructureerde manier opgemaakt, en in plaats van subquery's en JOIN's kunt u één EdgeQL-query opgeven als expressie binnen een andere query. Transacties en cycli worden ondersteund. selecteer film { titel, acteurs: { naam } } filter .title = "The Matrix" voeg film in { title := "The Matrix Resurrections", acteurs := ( selecteer persoonsfilter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } voor getal in {0, 1, 2, 3} unie (selecteer { getal, getal + 0.5 });

Bron: opennet.ru

Voeg een reactie