Udgivelsen af relations-graf databasen EdgeDB 2.0

EdgeDB 2.0, som implementerer en relations-grafmodel og spørgesproget EdgeQL, der er optimeret til arbejde med komplekse hierarkiske data, er blevet frigivet. Koden er skrevet i Python og Rust (parser og kritiske dele for ydeevne) og distribueres under Apache 2.0-licensen. Projektet udvikles som en udvidelse til PostgreSQL. Klientbiblioteker er tilgængelige for sprog som Python, Go, Rust og TypeScript/Javascript. En kommandolinjeværktøj er til rådighed til administration af databasen og interaktiv udførelse af forespørgsler (REPL).

I stedet for en tabelbaseret datamodel anvender EdgeDB et deklarativt system baseret på objekt typer. I stedet for fremmednøgler (foreign key) til at definere forbindelser mellem typer anvendes binding via referencer (et objekt kan bruges som en egenskab af et andet objekt).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

For at fremskynde behandling af forespørgsler kan der anvendes indekser. Der understøttes også funktioner som streng typificering af egenskaber, begrænsninger for værdier, beregnede egenskaber og gemte procedurer. I EdgeDB's objektlagringsskema, som minder om ORM, er der mulighed for at blande skemaer, knytte egenskaber fra forskellige objekter og integreret JSON-understøttelse.

Indbyggede værktøjer til migrering af lagringsskemaet tilbydes — efter ændring af skemaet, der angives i en separat esdl-fil, er det tilstrækkeligt at udføre kommandoen "edgedb migration create", og databasen vil analysere forskellene i skemaet og interaktivt generere et script til overgangen til det nye skema. Historikken for ændringer i skemaet spores automatisk.

Der understøttes både GraphQL og EdgeDB's eget forespørgselsprog, som er en tilpasning af SQL til hierarkiske data. I stedet for lister præsenteres forespørgselsresultaterne i struktureret form, og i stedet for subforespørgsler og JOIN-operationer kan man angive en EdgeQL-forespørgsel som et udtryk inden i en anden forespørgsel. Transaktioner og løkker understøttes.

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’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

I den nye version:

  • Der er tilføjet en indbygget webgrænseflade til administration af databasen, som muliggør visning og redigering af data, udførelse af EdgeQL-forespørgsler og analyse af den anvendte datamodel. Grænsefladen startes med kommandoen «edgedb ui», hvorefter den er tilgængelig ved at tilgå localhost.
    Udgivelsen af relations-graf databasen EdgeDB 2.0
  • Der er implementeret udtrykket «GROUP», som gør det muligt at sektionere og aggregere data og udføre gruppering af data baseret på vilkårlige EdgeQL-udtryk, i lighed med gruppering i SELECT-operationer.
  • Mulighed for objektbaseret adgangskontrol. Adgangsregler defineres på niveauet for datamodellen og tillader begrænsning af brugen af et bestemt sæt objekter i udvalg, indsættelse, sletning og opdatering operationer. For eksempel kan der tilføjes en regel, der tillader opdatering af en publikation kun for forfatteren.
  • Der er tilføjet mulighed for brug af globale variabler i datamodellen. Der er foreslået en ny global variabel current_user til binde til brugeren.
  • Der er tilføjet support til typer, der definerer værd intervaler (range).
  • Den officielle klientbibliotek til Rust er blevet forberedt.
  • Den binære protokol EdgeDB er stabiliseret, hvilket muliggør behandling af flere forskellige sessioner samtidigt inden for et enkelt netværksforbindelse, proxying via HTTP, brug af globale variabler og lokale tilstande.
  • Tilføjet støtte til aktivering via socket, som gør det muligt ikke at have serverbehandleren i hukommelsen og kun starte den ved forsøg på at etablere forbindelse (nyttigt til ressourcebesparelse på udviklersystemer).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster