Izdanje relacijski-grafičke DBMS-a EdgeDB 5.0

Dostupan je izdanak DBMS-a EdgeDB 5.0, koji implementira relacijsko-grafički model podataka i upitni jezik EdgeQL, optimizirane za rad s složenim hijerarhijskim podacima. Projekt se razvija kao nadogradnja na PostgreSQL, čiji je kod napisan na jezicima Python i Rust (parser i ključni dijelovi za performanse), te se distribuira pod Apache 2.0 licencom. Klijentske biblioteke pripremljene su za jezike Python, Go, Rust, .NET, Elixir i TypeScript/Javascript. Pruža se alat za naredbeni redak za upravljanje DBMS-om i interaktivno izvođenje upita (REPL).

Umjesto modela podataka temeljenog na tablicama, EDGE DB koristi deklarativni sustav temeljen na objektno-orijentiranim tipovima. Umjesto stranih ključeva (foreign key) za definiranje odnosa između tipova koristi se povezivanje referencama (jedan objekt može se koristiti kao svojstvo drugog objekta).

type Person { required name: str; } type Movie { required title: str; multi actors: Person; }

Podržavaju se mogućnosti kao što su stroga tipizacija svojstava, ograničenja vrijednosti svojstava, izračunata svojstva i pohranjene procedure. Od posebnosti objektne sheme pohrane EdgeDB, koja podsjeća na ORM, ističe se mogućnost miješanja shema, povezivanja svojstava iz različitih objekata i integrirana podrška za JSON. Za ubrzanje obrade upita mogu se koristiti indeksi.

Osigurani su ugrađeni alati za migraciju sheme pohrane — nakon promjene sheme, definirane u posebnoj esdl datoteci, dovoljno je izvršiti naredbu 'edgedb migration create' i SUSTAV će analizirati razlike u shemi te u interaktivnom načinu generirati skriptu za prijelaz na novu shemu. Automatski se prati povijest promjene sheme.

Za formiranje upita podržava se jezik upita GraphQL i vlastiti jezik EdgeDB, koji predstavlja prilagodbu SQL-a za hijerarhijske podatke. Umjesto listi, rezultati upita prikazuju se u strukturiranom obliku, a umjesto podupita i JOIN operacija omogućava se navođenje jednog EdgeQL upita kao izraza unutar drugog upita. Podržavaju se transakcije i petlje.

select Movie { title, actors: { name } } filter .title = „The Matrix“ insert Movie { title := „The Matrix Resurrections“, actors := ( select Person filter .name in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) }

U novoj verziji:

  • Dodana je podrška za grananje („branching“), koja omogućava upotrebu koncepta grana pri radu s podacima i shemama, primjenjivim u sustavima za upravljanje verzijama. Umjesto izraza „baza podataka“ u novom izdanju predloženo je poimanje „grana“ (branch), a naredbe „create database“ i „drop database“ označene su kao zastarjele, te se preporučuje upotreba novih naredbi „create empty branch“ i „drop branch“. Osim praznih grana, pomoću naredbi „create schema branch“ i „create data branch“ moguće je stvarati ogranke od postojećih grana i BDP-ova, kopirajući iz njih shemu pohrane i podatke.

    S praktične strane, podrška za grane omogućuje sinkronizaciju podataka s kodom koji se koristi za njihovu obradu, dok se istovremeno održava kompatibilnost sa starim kodom. Na primjer, nakon ažuriranja koda, možete povezati novu granu podataka koja uzima u obzir promjene u strukturi pohrane. Ova funkcionalnost je korisna za pojednostavljenje razvoja i testiranja novih verzija softvera, nakon čega se jednostavno prebacite na već testiranu granu.

  • U proširenju pgvector, koje se koristi za učinkovito pohranjivanje i upit vektora, dodan je novi tip indeksa HNSW (Hierarchical Navigable Small Worlds), koji je, analogno indeksu IVFFlat, dostupan u tri varijante: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip i ext::pgvector::hnsw_cosine. Osim toga, u pgvector su proširene mogućnosti za fino podešavanje indeksa putem objekta ext::pgvector::Config.
  • Dodane su dodatne mogućnosti autentifikacije. U proširenju auth implementirana je podrška za bezlozinke sheme autentifikacije WebAuthn (Passkeys) i 'magic links' (zasnovane na emailu). Dodana je podrška za korištenje platformi Slack i Discord kao OAuth provajdera.
  • Unesene su optimizacije performansi. U implementaciji predmemorije s rezultatima kompajliranja upita osigurano je očuvanje stanja između ponovnih pokretanja i dodana je automatska re-kompilacija nakon migracije. Povećana je brzina rada s velikim strukturama pohrane.
  • U jeziku upita EdgeQL, u izrazu 'for' dopušteno je ne navoditi ključnu riječ 'union' u osnovnim upitima koji koriste izraze insert, update ili delete.
  • Dodana je komanda vacuum() za čišćenje, optimizaciju i pakiranje sadržaja baze podataka.
  • Dopusteno je pretvaranje podataka između tipa bytes i tipova int16, int32, int64 i uuid, koristeći funkcije to_bytes(), to_uuid() i to_int*().
  • Dodana je mogućnost zatvaranja svih konekcija ka bazi podataka nakon izvršenja operacije 'drop database'.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster