Prvo stabilno izdanje relacionog grafa DBMS EdgeDB

Dostupno je prvo stabilno izdanje EdgeDB DBMS-a, koji je dodatak za PostgreSQL sa implementacijom modela podataka relacionog grafa i jezika upita EdgeQL, optimizovanog za rad sa složenim hijerarhijskim podacima. Kod je napisan na Python-u i Rust-u i distribuira se pod licencom Apache 2.0. Klijentske biblioteke su pripremljene za Python, Go, Rust i TypeScript/Javascript. Pruža alate komandne linije za upravljanje DBMS-om i interaktivno izvršavanje upita (REPL).

Umjesto modela podataka zasnovanog na tabeli, EdgeDB koristi deklarativni sistem zasnovan na tipovima objekata. Umjesto stranih ključeva, povezivanje prema referenci koristi se za definiranje odnosa između tipova (jedan objekt se može koristiti kao svojstvo drugog objekta). tip Osoba { potrebno ime svojstva -> str; } type Movie { naslov traženog svojstva -> str; multilink akteri -> Osoba; }

Indeksi se mogu koristiti za ubrzanje obrade upita. Podržane su i funkcije kao što su jako kucanje svojstava, ograničenja vrijednosti svojstva, izračunata svojstva i pohranjene procedure. Karakteristike sheme skladištenja objekata EdgeDB, koja donekle podsjeća na ORM, uključuju mogućnost miješanja šema, povezivanja svojstava različitih objekata i integriranu podršku za JSON.

Obezbeđeni su ugrađeni alati za skladištenje migracije šeme - nakon promene šeme navedene u posebnoj esdl datoteci, samo pokrenite naredbu “edgedb migration create” i DBMS će analizirati razlike u šemi i interaktivno generisati skriptu za migraciju na nova šema. Istorija promjena šeme se automatski prati.

Za generiranje upita podržani su i GraphQL jezik upita i vlasnički EdgeDB jezik, koji je adaptacija SQL-a za hijerarhijske podatke. Umjesto lista, rezultati upita su formatirani na strukturiran način, a umjesto potupita i JOIN-ova, možete specificirati jedan EdgeQL upit kao izraz unutar drugog upita. Podržane su transakcije i ciklusi. odaberite Film { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( odaberite Person filter .name u { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } za broj u {0, 1, 2, 3} uniji ( odaberite { broj, broj + 0.5 } );

izvor: opennet.ru

Dodajte komentar