Prva stabilna izdaja relacijskega grafa DBMS EdgeDB

Na voljo je prva stabilna izdaja DBMS EdgeDB, ki je dodatek k PostgreSQL z implementacijo podatkovnega modela relacijskih grafov in poizvedovalnega jezika EdgeQL, optimiziranega za delo s kompleksnimi hierarhičnimi podatki. Koda je napisana v Python in Rust in se distribuira pod licenco Apache 2.0. Odjemalske knjižnice so pripravljene za Python, Go, Rust in TypeScript/Javascript. Ponuja orodja ukazne vrstice za upravljanje DBMS in interaktivno izvajanje poizvedb (REPL).

Namesto podatkovnega modela, ki temelji na tabeli, EdgeDB uporablja deklarativni sistem, ki temelji na vrstah objektov. Namesto tujih ključev se za definiranje razmerja med tipi uporablja povezovanje po sklicu (en objekt se lahko uporablja kot lastnost drugega objekta). tip Oseba { zahtevano ime lastnosti -> str; } type Movie { zahtevan naslov lastnosti -> str; igralci z več povezavami -> Oseba; }

Za pospešitev obdelave poizvedb je mogoče uporabiti indekse. Podprte so tudi funkcije, kot so močno tipkanje lastnosti, omejitve vrednosti lastnosti, izračunane lastnosti in shranjene procedure. Značilnosti sheme za shranjevanje objektov EdgeDB, ki nekoliko spominja na ORM, vključujejo možnost mešanja shem, povezovanje lastnosti iz različnih objektov in integrirano podporo JSON.

Na voljo so vgrajena orodja za shranjevanje selitve sheme - po spremembi sheme, podane v ločeni datoteki esdl, samo zaženite ukaz »edgedb migration create« in DBMS bo analiziral razlike v shemi in interaktivno ustvaril skript za selitev na nova shema. Zgodovina sprememb sheme se samodejno spremlja.

Za ustvarjanje poizvedb sta podprta poizvedbeni jezik GraphQL in lastniški jezik EdgeDB, ki je prilagoditev SQL za hierarhične podatke. Namesto seznamov so rezultati poizvedbe oblikovani na strukturiran način in namesto podpoizvedb in JOIN-ov lahko podate eno poizvedbo EdgeQL kot izraz znotraj druge poizvedbe. Transakcije in cikli so podprti. izberite film { naslov, igralci: { ime } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", igralci := ( izberite filter osebe .name v { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } za število v zvezi {0, 1, 2, 3} (izberite {število, število + 0.5 });

Vir: opennet.ru

Dodaj komentar