Izdanje relacijskog grafa DBMS EdgeDB 2.0

Predstavljeno je izdanje EdgeDB 2.0 DBMS-a, koji implementira podatkovni model relacijskih grafova i upitni jezik EdgeQL, optimiziran za rad sa složenim hijerarhijskim podacima. Kod je napisan u Pythonu i Rustu (parser i dijelovi kritični za performanse) i distribuira se pod licencom Apache 2.0. Projekt se razvija kao dodatak za PostgreSQL. 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 } );

U novoj verziji:

  • Dodano je ugrađeno web sučelje za administraciju baze podataka, koje vam omogućuje pregled i uređivanje podataka, pokretanje EdgeQL upita i analizu korištene sheme pohrane. Sučelje se pokreće naredbom “edgedb ui”, nakon čega postaje dostupno prilikom pristupa localhostu.
    Izdanje relacijskog grafa DBMS EdgeDB 2.0
  • Implementiran je izraz "GROUP", koji vam omogućuje particioniranje i agregiranje podataka i grupiranje podataka pomoću proizvoljnih EdgeQL izraza, slično grupiranju u operaciji SELECT.
  • Mogućnost kontrole pristupa na razini objekta. Pravila pristupa definirana su na razini sheme pohrane i omogućuju vam da ograničite mogućnost korištenja određenog skupa objekata u operacijama dohvaćanja, umetanja, brisanja i ažuriranja. Na primjer, možete dodati pravilo koje samo autoru dopušta ažuriranje publikacije.
  • Dodana je mogućnost korištenja globalnih varijabli u shemi pohrane. Predložena je nova globalna varijabla current_user za vezanje na korisnika.
  • Dodana podrška za tipove koji definiraju raspone vrijednosti.
  • Pripremljena je službena klijentska biblioteka za Rust jezik.
  • EdgeDB binarni protokol je stabiliziran, što omogućuje obradu nekoliko različitih sesija istovremeno unutar iste mrežne veze, prosljeđivanje putem HTTP-a, korištenje globalnih varijabli i lokalnih stanja.
  • Dodana je podrška za aktivaciju utičnice, koja vam omogućuje da ne držite poslužiteljski rukovatelj u memoriji i da ga pokrenete samo kada pokušavate uspostaviti vezu (korisno za uštedu resursa na sustavima razvojnih programera).

Izvor: opennet.ru

Dodajte komentar