Izdaja relacijsko-grafične DBMS EdgeDB 5.0

Na voljo je izdaja SGBD EdgeDB 5.0, ki implementira relacijsko-grafične modele podatkov in jezik poizvedb EdgeQL, optimiziran za delo s kompleksnimi hierarhičnimi podatki. Projekt se razvija kot nadgradnja nad PostgreSQL, pri čemer je koda napisana v programskih jezikih Python in Rust (parser in kritični deli zmogljivosti) ter se distribuira pod licenco Apache 2.0. Klijentske knjižnice so na voljo za jezike Python, Go, Rust, .NET, Elixir in TypeScript/Javascript. Na voljo je tudi orodje za upravljanje SGBD prek ukazne vrstice in interaktivno izvajanje poizvedb (REPL).

Namesto modela podatkov, temelječega na tabelah, EdgeDB uporablja deklarativni sistem, ki temelji na objektnih tipih. Namesto zunanjih ključev (foreign key) za določanje povezav med tipi se uporablja povezovanje z referencami (en objekt se lahko uporablja kot lastnost drugega objekta).

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

Podpirajo se možnosti, kot so stroga tipizacija lastnosti, omejitve vrednosti lastnosti, izračunane lastnosti in shranjene procedure. Med značilnostmi objektne sheme shranjevanja EdgeDB, ki nekoliko spominja na ORM, izstopa možnost mešanja shem, povezovanja lastnosti iz različnih objektov in integrirana podpora za JSON. Za pospešitev obdelave poizvedb je mogoče uporabljati indekse.

Na voljo so vgrajena orodja za migracijo sheme shranjevanja — po spremembi sheme, določene v ločenem esdl-dokumentu, je dovolj, da izvedete ukaz "edgedb migration create", in SGBD bo analiziral razlike v schemi ter v interaktivnem načinu generiral skript za prehod na novo shemo. Zgodovina sprememb sheme se samodejno sledi.

Za oblikovanje poizvedb je podprt jezik poizvedb GraphQL in lastni jezik EdgeDB, ki predstavlja prilagoditev SQL za hierarhične podatke. Namesto seznamov so rezultati poizvedbe prikazani v strukturirani obliki, namesto podpoizvedb in operacij JOIN pa je mogoče navesti eno poizvedbo EdgeQL kot izraz znotraj druge poizvedbe. Podpirajo se transakcije in zanke.

izberi Film { naslov, igralci: { ime } } filtriraj .naslov = «The Matrix» vstavi Film { naslov := «The Matrix Resurrections», igralci := ( izberi Oseba filtriraj .ime v { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) }

V novi različici:

  • Dodana je podpora za ve branches («branching»), ki omogoča uporabo koncepta vej pri delu s podatki in shemami, ki se uporablja v sistemih za upravljanje različic. Namesto izraza «baza podatkov» je v novi izdaji predlagan pojem «veja» (branch), ukaza «create database» in «drop database» pa sta označena za zastarela in namesto njiju se priporoča uporaba novih ukazov «create empty branch» in «drop branch». Poleg praznih vej je mogoče s pomočjo ukazov «create schema branch» in «create data branch» ustvarjati odcepe od obstoječih vej in baz podatkov, tako da kopirajo shemo shranjevanja in podatke.

    Z praktičnega vidika podpora vej omogoča sinhronizacijo podatkov s kodo, ki se uporablja za njihovo obdelavo, pri čemer se ohranja združljivost s staro kodo. Na primer, po posodobitvi kode je mogoče povezati novo vejo podatkov, ki upošteva spremembe v shemi shranjevanja. Omenjena funkcionalnost je koristna za poenostavitev razvoja in testiranja novih različic programske opreme, po katerih je dovolj, da preklopite na že testirano vejo.

  • V razširitev pgvector, ki se uporablja za učinkovito shranjevanje in poizvedovanje vektorjev, je dodan nov tip indeksov HNSW (Hierarchical Navigable Small Worlds), ki je na voljo v treh različicah: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip in ext::pgvector::hnsw_cosine. Poleg tega so v pgvector razširjene možnosti za fino nastavitev indeksov preko objekta ext::pgvector::Config.
  • Dodane so dodatne možnosti avtentikacije. V razširitvi auth je bila uvedena podpora za brezgeselne sheme avtentikacije WebAuthn (Passkeys) in «magic links» (na podlagi e-pošte). Dodana je podpora za uporabo platform Slack in Discord kot OAuth ponudnikov.
  • Izvedene so optimizacije zmogljivosti. Pri uresničitvi predpomnilnika z rezultati kompilacije poizvedb je zagotovljeno ohranjanje stanja med ponovnimi zagonih in dodana je samodejna priporočitev po migraciji. Povečana je hitrost dela z velikimi shemami shranjevanja.
  • V jeziku poizvedb EdgeQL je v izrazu „for“ dovoljeno ne navesti ključno besedo „union“ v osnovnih poizvedbah, kjer so uporabljeni izrazi insert, update ali delete.
  • Dodana je ukaz vacuum() za čiščenje, optimizacijo in pakiranje vsebine Baze podatkov.
  • Dovoljeno je pretvarjanje podatkov med tipom bytes in tipi int16, int32, int64 ter uuid z uporabo funkcij to_bytes(), to_uuid() in to_int*().
  • Dodana je možnost zapiranja vseh povezav na Bazo podatkov po izvedbi operacije „drop database“.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster