Lëshimi i parë i qëndrueshëm i grafikut relacional DBMS EdgeDB

Lëshimi i parë i qëndrueshëm i DBMS EdgeDB është i disponueshëm, i cili është një shtesë për PostgreSQL me zbatimin e modelit të të dhënave të grafikut relacional dhe gjuhën e pyetjeve EdgeQL, e optimizuar për të punuar me të dhëna komplekse hierarkike. Kodi është shkruar në Python dhe Rust dhe shpërndahet nën licencën Apache 2.0. Bibliotekat e klientëve përgatiten për Python, Go, Rust dhe TypeScript/Javascript. Ofron mjete të linjës së komandës për menaxhimin e DBMS dhe ekzekutimin interaktiv të pyetjeve (REPL).

Në vend të një modeli të dhënash të bazuar në tabelë, EdgeDB përdor një sistem deklarativ të bazuar në llojet e objekteve. Në vend të çelësave të huaj, lidhja me referencë përdoret për të përcaktuar marrëdhënien midis llojeve (një objekt mund të përdoret si pronë e një objekti tjetër). tip Person { emri i kërkuar i pronës -> str; } type Movie { titulli i kërkuar i pronës -> str; aktorë me shumë lidhje -> Personi; }

Indekset mund të përdoren për të përshpejtuar përpunimin e pyetjeve. Mbështeten gjithashtu veçori të tilla si shtypja e fortë e pronës, kufizimet e vlerës së pronës, vetitë e llogaritura dhe procedurat e ruajtura. Karakteristikat e skemës së ruajtjes së objekteve EdgeDB, e cila të kujton disi një ORM, përfshijnë aftësinë për të përzier skemat, lidhjen e vetive nga objekte të ndryshme dhe mbështetjen e integruar JSON.

Mjetet e integruara ofrohen për ruajtjen e migrimit të skemës - pas ndryshimit të skemës së specifikuar në një skedar të veçantë esdl, thjesht ekzekutoni komandën "edgedb migration create" dhe DBMS do të analizojë ndryshimet në skemë dhe do të gjenerojë në mënyrë interaktive një skript për migrimin në skema e re. Historia e ndryshimeve të skemës gjurmohet automatikisht.

Për të gjeneruar pyetje, mbështeten si gjuha e pyetjeve GraphQL, ashtu edhe gjuha e pronarit EdgeDB, e cila është një përshtatje e SQL për të dhënat hierarkike. Në vend të listave, rezultatet e pyetjeve formatohen në një mënyrë të strukturuar dhe në vend të nënpyetjeve dhe JOIN-ve, mund të specifikoni një pyetje EdgeQL si shprehje brenda një pyetjeje tjetër. Transaksionet dhe ciklet janë të mbështetura. zgjidhni Filmin {titulli, aktorët: { emri } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", aktorët := ( zgjidhni Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } për numrin në bashkimin {0, 1, 2, 3} ( zgjidhni {numri, numri + 0.5 } );

Burimi: opennet.ru

Shto një koment