Die eerste stabiele vrystelling van die relasionele grafiek DBMS EdgeDB

Die eerste stabiele vrystelling van die EdgeDB DBMS is beskikbaar, wat 'n byvoeging tot PostgreSQL is met die implementering van die relasionele grafiekdatamodel en die EdgeQL-navraagtaal, geoptimaliseer om met komplekse hiërargiese data te werk. Die kode is in Python en Rust geskryf en word onder die Apache 2.0-lisensie versprei. Kliëntbiblioteke word voorberei vir Python, Go, Rust en TypeScript/Javascript. Verskaf opdragreëlgereedskap vir DBMS-bestuur en interaktiewe navraaguitvoering (REPL).

In plaas van 'n tabelgebaseerde datamodel, gebruik EdgeDB 'n verklarende stelsel gebaseer op objektipes. In plaas van vreemde sleutels, word koppeling deur verwysing gebruik om die verhouding tussen tipes te definieer (een voorwerp kan as 'n eienskap van 'n ander voorwerp gebruik word). tik Persoon { vereiste eiendomnaam -> str; } tik Movie { required property title -> str; multi skakel akteurs -> Persoon; }

Indekse kan gebruik word om navraagverwerking te bespoedig. Kenmerke soos sterk eiendomtik, eiendomswaardebeperkings, berekende eienskappe en gestoorde prosedures word ook ondersteun. Kenmerke van die EdgeDB-objekbergingskema, wat ietwat aan 'n ORM herinner, sluit in die vermoë om skemas te meng, eienskappe van verskillende voorwerpe te koppel en geïntegreerde JSON-ondersteuning.

Ingeboude gereedskap word voorsien vir die stoor van skemamigrasie - nadat die skema wat in 'n aparte esdl-lêer gespesifiseer is verander is, voer net die "edgedb migration create"-opdrag uit en die DBMS sal die verskille in die skema ontleed en interaktief 'n skrip genereer vir migreer na die nuwe skema. Die geskiedenis van skemaveranderings word outomaties opgespoor.

Om navrae te genereer, word beide die GraphQL-navraagtaal en die eie EdgeDB-taal, wat 'n aanpassing van SQL vir hiërargiese data is, ondersteun. In plaas van lyste, word navraagresultate op 'n gestruktureerde manier geformateer, en in plaas van subnavrae en JOIN's, kan jy een EdgeQL-navraag as 'n uitdrukking binne 'n ander navraag spesifiseer. Transaksies en siklusse word ondersteun. kies Movie { title, actors: { name } } filter .title = "The Matrix" voeg in Movie { title := "The Matrix Resurrections", akteurs := (kies Persoonfilter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } vir nommer in {0, 1, 2, 3} unie (kies { number, number + 0.5 } );

Bron: opennet.ru

Voeg 'n opmerking