nedavno najavljeno je izdanje DBMS-a «EdgeDB 2.0», koji implementira relacijski model podataka grafa i EdgeQL upitni jezik, optimiziran za rad sa složenim hijerarhijskim podacima.
EdgeDB je baza podataka otvorenog koda dizajnirana kao duhovni nasljednik SQL-a i relacijske paradigme. Njegov cilj je riješiti neke teške probleme dizajna koji postojeće baze podataka čine nepotrebno opterećujućim za korištenje.
Pokretan postgresovom tražilicom ispod haube, EdgeDB razmišlja o shemi na isti način kao i vi: kao o objektima sa svojstvima povezanim vezama. To je poput relacijske baze podataka s objektno orijentiranim modelom podataka ili graf baze podataka sa strogom shemom. Zovemo je relacijska baza podataka grafova.
O EdgeDB-u
Projekt se razvija kao dodatak za PostgreSQL. Klijentske biblioteke pripremljene su za jezike Python, Go, Rust i TypeScript/Javascript.
Umjesto podatkovnog modela temeljenog na tablici, EdgeDB koristi deklarativni sustav temeljen na tipovima objekata. Umjesto stranih ključeva (foreign key) za određivanje odnosa između tipova koristi se referentno vezanje (objekt se može koristiti kao svojstvo drugog objekta).
Indeksi se mogu koristiti za ubrzavanje obrade upita. Također podržane su značajke kao što je snažno upisivanje svojstava, ograničenja vrijednosti svojstva, izračunata svojstva i pohranjene procedure. Neke od značajki sheme za pohranu objekata EdgeDB, koje pomalo podsjećaju na ORM, uključuju mogućnost miješanja shema, vezanje svojstava različitih objekata i podršku za ugrađeni JSON.
Ugrađeni alati dostupni su za migraciju shema pohrane: 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 migriranje na novu shemu. Povijest izmjena sheme prati se automatski.
Za postavljanje upita, GraphQL upitni jezik i kao vlastiti jezik EdgeDB, koji je adaptacija SQL-a za hijerarhijske podatke. Umjesto popisa, rezultati upita imaju strukturirani format, a umjesto podupita i JOIN-ova, EdgeQL upit može se navesti kao izraz unutar drugog upita. Transakcije i ciklusi su podržani.
Glavne nove značajke EdgeDB 2.0
U novoj verziji koja je predstavljena, dodano je integrirano web sučelje za administraciju baze podataka omogućuje pregled i uređivanje podataka, pokretanje EdgeQL upita i analizirati korištenu shemu skladištenja. Sučelje se pokreće naredbom "edgedb ui", nakon čega je dostupno pristupom localhost.
Izraz "GROUP" je implementiran kako bi omogućio particioniranje i agregaciju 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 upotrebu određenog skupa objekata u operacijama odabira, umetanja, brisanja i ažuriranja. Na primjer, možete dodati pravilo koje samo autoru dopušta ažuriranje objave.
Također je istaknuto da dodana mogućnost korištenja globalnih varijabli u shemi skladištenja. Za povezivanje s korisnikom predložena je nova globalna varijabla.
Od ostalih istaknutih promjena:
- Pripremljena je službena klijentska biblioteka za Rust jezik.
- Stabiliziran je binarni protokol EdgeDB u kojem je postalo moguće istovremeno obrađivati nekoliko različitih sesija unutar iste mrežne veze, prosljeđivanjem preko HTTP-a, korištenjem globalnih varijabli i lokalnih stanja.
- Dodana podrška za tipove koji definiraju raspone vrijednosti (raspon).
- Dodana podrška za aktivaciju utičnice, koja omogućuje da se upravljački program poslužitelja ne drži u memoriji i da se pokreće samo kada se pokušava uspostaviti veza (korisno za uštedu resursa na razvojnim sustavima).
Konačno za one koje zanima više o tome, trebali bi znati da je kod napisan u Pythonu i Rustu i da je objavljen pod licencom Apache 2.0.
Više o tome možete saznati na sljedeći link.