Disponohet versione e parë stabile e DBMS EdgeDB, e cila përbën një shtresë mbi PostgreSQL me implementimin e një modeli relacional-grafik të të dhënave dhe gjuhës së kërkesave EdgeQL, të optimizuar për punë me të dhëna komplekse hierarkike. Kodi është shkruar në gjuhët Python dhe Rust dhe shpërndahet nën licencën Apache 2.0. Bibliotekat e klientëve janë përgatitur për gjuhët Python, Go, Rust dhe TypeScript/Javascript. Ofron një instrument për komandën e linjës për administrimin e DBMS dhe për ekzekutimin interaktiv të kërkesave (REPL).
Në vend të modelit të të dhënave të bazuara në tabela, në EdgeDB përdoret një sistem deklarativ i bazuar në tipe objektesh. Në vend të çelësave të jashtëm (foreign key) për të përcaktuar lidhjen midis tipeve, përdoret lidhja me referenca (një objekt mund të përdoret si pronë e një obekti tjetër). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }
Për të përshpejtuar përpunimin e pyetjeve, mund të përdoren indekse. Nga këto mundësi, mbështeten gjithashtu tipizimi strikt i pronave, kufizimet e vlerave të pronave, pronat e llogaritura dhe procedurat e ruajtura. Një tipar i veçantë i skemës objektuale të ruajtjes në EdgeDB, e cila përshtatet me ORM-në, është mundësia për të përzier skema, lidhjen e pronave nga objekte të ndryshme dhe mbështetje e integruar për JSON.
Ofron mjete të integruara për migrimin e skemës së ruajtjes - pas ndryshimit të skemës, të përcaktuar në një skedar të veçantë esdl, mjafton të ekzekutoni komandën "edgedb migration create" dhe SGBD analizojnë diferencialet në skemë dhe në mënyrë interaktive gjeneron një skript për kalimin në skemën e re. Historia e ndryshimit të skemës ndiqet automatikisht.
PĂ«r formimin e kĂ«rkesave, mbĂ«shtetet si gjuha e kĂ«rkesave GraphQL, ashtu edhe gjuha e saj EdgeDB, e cila pĂ«rbĂ«n njĂ« adaptim tĂ« SQL pĂ«r tĂ« dhĂ«na hierarkike. NĂ« vend tĂ« listave, rezultatet e kĂ«rkesĂ«s paraqiten nĂ« njĂ« format tĂ« strukturuar, dhe nĂ« vend tĂ« nĂ«nkĂ«rkesave dhe operacioneve JOIN, ofrohet mundĂ«sia e specifikimit tĂ« njĂ« kĂ«rkese EdgeQL si njĂ« shprehje brenda njĂ« kĂ«rkese tjetĂ«r. MbĂ«shteten transaksionet dhe ciklet. 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 } );
Burimi: opennet.ru
