Izdaja relacijskega grafa DBMS EdgeDB 2.0

Predstavljena je izdaja DBMS EdgeDB 2.0, ki implementira podatkovni model relacijskega grafa in poizvedovalni jezik EdgeQL, optimiziran za delo s kompleksnimi hierarhičnimi podatki. Koda je napisana v Pythonu in Rustu (razčlenjevalnik in deli, kritični za zmogljivost) in se distribuira pod licenco Apache 2.0. Projekt se razvija kot dodatek za PostgreSQL. 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 določite 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 });

V novi različici:

  • Dodan je bil vgrajen spletni vmesnik za administracijo baze podatkov, ki vam omogoča ogled in urejanje podatkov, izvajanje poizvedb EdgeQL in analizo uporabljene sheme shranjevanja. Vmesnik se zažene z ukazom “edgedb ui”, nato pa postane na voljo pri dostopu do lokalnega gostitelja.
    Izdaja relacijskega grafa DBMS EdgeDB 2.0
  • Implementiran je bil izraz »GROUP«, ki vam omogoča razdeljevanje in združevanje podatkov ter združevanje podatkov z uporabo poljubnih izrazov EdgeQL, podobno združevanju v skupine v operaciji SELECT.
  • Možnost nadzora dostopa na ravni objekta. Pravila dostopa so definirana na ravni sheme pomnilnika in vam omogočajo, da omejite možnost uporabe določenega nabora objektov v operacijah pridobivanja, vstavljanja, brisanja in posodabljanja. Dodate lahko na primer pravilo, ki samo avtorju dovoljuje posodobitev publikacije.
  • Dodana možnost uporabe globalnih spremenljivk v shemi shranjevanja. Predlagana je bila nova globalna spremenljivka current_user za povezovanje z uporabnikom.
  • Dodana podpora za vrste, ki definirajo obsege vrednosti.
  • Pripravljena je uradna odjemalska knjižnica za jezik Rust.
  • Binarni protokol EdgeDB je bil stabiliziran, kar omogoča obdelavo več različnih sej hkrati znotraj iste omrežne povezave, posredovanje prek HTTP, uporabo globalnih spremenljivk in lokalnih stanj.
  • Dodana podpora za aktivacijo vtičnice, ki vam omogoča, da upravljalnika strežnika ne hranite v pomnilniku in ga zaženete le, ko poskušate vzpostaviti povezavo (uporabno za varčevanje z viri v sistemih za razvijalce).

Vir: opennet.ru

Dodaj komentar