Prvo stabilno izdanje relacijskog grafa DBMS EdgeDB

Dostupno je prvo stabilno izdanje EdgeDB DBMS-a, koji je dodatak PostgreSQL-u s implementacijom modela podataka relacijskih grafova i EdgeQL upitnog jezika, optimiziran za rad sa složenim hijerarhijskim podacima. Kod je napisan u Pythonu i Rustu i distribuira se pod licencom Apache 2.0. Klijentske biblioteke pripremljene su za Python, Go, Rust i TypeScript/Javascript. Omogućuje alate naredbenog retka za upravljanje DBMS-om i interaktivno izvođenje upita (REPL).

Umjesto podatkovnog modela temeljenog na tablici, EdgeDB koristi deklarativni sustav temeljen na tipovima objekata. Umjesto stranih ključeva, za definiranje odnosa između tipova koristi se povezivanje po referenci (jedan objekt se može koristiti kao svojstvo drugog objekta). type Osoba { potrebno ime svojstva -> str; } type Film { potreban naziv svojstva -> str; glumci s više veza -> Osoba; }

Indeksi se mogu koristiti za ubrzavanje obrade upita. Podržane su i značajke kao što su snažno upisivanje svojstava, ograničenja vrijednosti svojstava, izračunata svojstva i pohranjene procedure. Značajke sheme za pohranu objekata EdgeDB, koja donekle podsjeća na ORM, uključuju mogućnost miješanja shema, povezivanje svojstava iz različitih objekata i integriranu JSON podršku.

Ugrađeni alati osigurani su za pohranjivanje migracije sheme - nakon promjene sheme navedene u zasebnoj esdl datoteci, samo pokrenite naredbu “edgedb migration create” i DBMS će analizirati razlike u shemi i interaktivno generirati skriptu za migraciju na nova shema. Povijest promjena sheme automatski se prati.

Za generiranje upita podržani su jezik upita GraphQL i vlasnički jezik EdgeDB, koji je prilagodba SQL-a za hijerarhijske podatke. Umjesto popisa, rezultati upita oblikovani su na strukturiran način, a umjesto podupita i JOIN-ova, možete navesti jedan EdgeQL upit kao izraz unutar drugog upita. Transakcije i ciklusi su podržani. odaberite film { naslov, glumci: { ime } } filter .title = "The Matrix" umetnite film { naslov := "Uskrsnuća Matrixa", glumci := ( odaberite filter osobe .ime 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