Izdanje relacionog grafa DBMS EdgeDB 2.0

Predstavljeno je izdanje EdgeDB 2.0 DBMS, koji implementira model podataka relacionog grafa i jezik upita EdgeQL, optimizovan za rad sa složenim hijerarhijskim podacima. Kod je napisan na Python-u i Rust-u (parser i dijelovi koji su kritični za performanse) i distribuira se pod licencom Apache 2.0. Projekat se razvija kao dodatak za PostgreSQL. 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 navesti 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 } );

U novoj verziji:

  • Dodan je ugrađeni web interfejs za administraciju baze podataka, koji vam omogućava da pregledate i uređujete podatke, pokrenete EdgeQL upite i analizirate korišćenu šemu skladištenja. Interfejs se pokreće naredbom “edgedb ui”, nakon čega postaje dostupan kada se pristupa lokalnom hostu.
    Izdanje relacionog grafa DBMS EdgeDB 2.0
  • Implementiran je izraz “GROUP” koji vam omogućava da particionirate i agregirate podatke i grupišete podatke koristeći proizvoljne EdgeQL izraze, slično grupisanju u operaciji SELECT.
  • Mogućnost kontrole pristupa na nivou objekta. Pravila pristupa su definisana na nivou šeme skladištenja i omogućavaju vam da ograničite mogućnost korišćenja određenog skupa objekata u operacijama preuzimanja, umetanja, brisanja i ažuriranja. Na primjer, možete dodati pravilo koje dozvoljava samo autoru da ažurira publikaciju.
  • Dodata mogućnost korištenja globalnih varijabli u šemi pohrane. Predložena je nova globalna varijabla current_user da se veže za korisnika.
  • Dodata podrška za tipove koji definiraju raspon vrijednosti.
  • Pripremljena je zvanična klijentska biblioteka za Rust jezik.
  • Binarni protokol EdgeDB je stabiliziran, što omogućava obradu nekoliko različitih sesija istovremeno unutar iste mrežne veze, prosljeđivanje putem HTTP-a, korištenjem globalnih varijabli i lokalnih stanja.
  • Dodata podrška za aktivaciju utičnice, koja vam omogućava da ne držite server za rukovanje u memoriji i da ga pokrenete samo kada pokušavate da uspostavite vezu (korisno za uštedu resursa na sistemima za programere).

izvor: opennet.ru

Dodajte komentar