Prima versiune stabilă a graficului relațional DBMS EdgeDB

Este disponibilă prima versiune stabilă a SGBD EdgeDB, care este un add-on la PostgreSQL cu implementarea modelului de date graf relațional și a limbajului de interogare EdgeQL, optimizat pentru lucrul cu date ierarhice complexe. Codul este scris în Python și Rust și este distribuit sub licența Apache 2.0. Bibliotecile client sunt pregătite pentru Python, Go, Rust și TypeScript/Javascript. Oferă instrumente de linie de comandă pentru gestionarea DBMS și execuția interogării interogări (REPL).

În loc de un model de date bazat pe tabel, EdgeDB utilizează un sistem declarativ bazat pe tipuri de obiecte. În loc de chei străine, legarea prin referință este folosită pentru a defini relația dintre tipuri (un obiect poate fi folosit ca proprietate a altui obiect). tip Persoana { numele proprietatii cerute -> str; } tip Film { titlu de proprietate obligatoriu -> str; actori multi link -> Persoana; }

Indecșii pot fi utilizați pentru a accelera procesarea interogărilor. Sunt acceptate și caracteristici precum tiparea puternică a proprietăților, restricțiile privind valoarea proprietății, proprietățile calculate și procedurile stocate. Caracteristicile schemei de stocare a obiectelor EdgeDB, care amintește oarecum de un ORM, includ capacitatea de a amesteca scheme, de a lega proprietăți de la diferite obiecte și suport JSON integrat.

Sunt furnizate instrumente încorporate pentru stocarea migrării schemei - după modificarea schemei specificate într-un fișier esdl separat, trebuie doar să rulați comanda „edgedb migration create” și DBMS va analiza diferențele dintre schemă și va genera interactiv un script pentru migrarea la schema noua. Istoricul modificărilor schemei este urmărit automat.

Pentru a genera interogări, sunt acceptate atât limbajul de interogare GraphQL, cât și limbajul proprietar EdgeDB, care este o adaptare a SQL pentru date ierarhice. În loc de liste, rezultatele interogării sunt formatate într-un mod structurat și, în loc de subinterogări și JOIN-uri, puteți specifica o interogare EdgeQL ca expresie în cadrul unei alte interogări. Tranzacțiile și ciclurile sunt acceptate. 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' } ) } pentru numărul din uniunea {0, 1, 2, 3} (selectați { număr, număr + 0.5 } );

Sursa: opennet.ru

Adauga un comentariu