Frigivelse af relationsgrafen DBMS EdgeDB 2.0

EdgeDB 2.0 DBMS-udgivelsen præsenteres. Den implementerer relationsgrafdatamodellen og EdgeQL-forespørgselssproget, der er optimeret til at arbejde med komplekse hierarkiske data. Koden er skrevet i Python og Rust (parser- og performancekritiske dele) og distribueres under Apache 2.0-licensen. Projektet udvikles som et tilføjelsesprogram til PostgreSQL. Klientbiblioteker er forberedt til Python, Go, Rust og TypeScript/Javascript. Kommandolinjeværktøjer leveres til DBMS-styring og interaktiv forespørgselsudførelse (REPL).

I stedet for en tabelbaseret datamodel bruger EdgeDB et deklarativt system baseret på objekttyper. I stedet for fremmednøgler bruges linking ved reference til at definere forholdet mellem typer (et objekt kan bruges som en egenskab for et andet objekt).

type Person { påkrævet egenskabsnavn -> str; } type Film { påkrævet egenskabstitel -> str; multi link skuespillere -> Person; }

Indekser kan bruges til at fremskynde forespørgselsbehandlingen. Funktioner såsom stærk egenskabsskrivning, ejendomsværdibegrænsninger, beregnede egenskaber og lagrede procedurer understøttes også. Funktioner i EdgeDB-objektlagringsskemaet, som minder lidt om en ORM, omfatter muligheden for at blande skemaer, linke egenskaber fra forskellige objekter og integreret JSON-understøttelse.

Der er indbyggede værktøjer til lagring af skemamigrering - efter at have ændret skemaet angivet i en separat esdl-fil, skal du bare køre kommandoen "edgedb migration create", og DBMS vil analysere forskellene i skemaet og interaktivt generere et script til migrering til nyt skema. Historien om skemaændringer spores automatisk.

For at generere forespørgsler understøttes både GraphQL-forespørgselssproget og det proprietære EdgeDB-sprog, som er en tilpasning af SQL til hierarkiske data. I stedet for lister formateres forespørgselsresultater på en struktureret måde, og i stedet for underforespørgsler og JOINs kan du angive én EdgeQL-forespørgsel som et udtryk i en anden forespørgsel. Transaktioner og cyklusser understøttes.

vælg Film { titel, skuespillere: { navn } } filter .title = "The Matrix" indsæt Film { titel := "The Matrix Resurrections", skuespillere := ( vælg Person filter .name in { 'Keanu Reeves', 'Carrie-Anne Moss', 'Laurence Fishburne' } ) } for tal i {0, 1, 2, 3} union ( vælg { tal, tal + 0.5 } );

I den nye version:

  • En indbygget webgrænseflade til databaseadministration er blevet tilføjet, så du kan se og redigere data, udføre EdgeQL-forespørgsler og analysere den anvendte lagringsmetode. Grænsefladen startes af kommandoen "edgedb ui", hvorefter den bliver tilgængelig, når du tilgår localhost.
    Frigivelse af relationsgrafen DBMS EdgeDB 2.0
  • Udtrykket "GROUP" er blevet implementeret, hvilket giver dig mulighed for at partitionere og aggregere data og udføre gruppering af data efter vilkårlige EdgeQL-udtryk, svarende til gruppering i SELECT-operationen.
  • Mulighed for at kontrollere adgang på objektniveau. Adgangsregler defineres på lagringsskemaniveau og giver dig mulighed for at begrænse brugen af ​​et bestemt sæt objekter i vælg-, indsæt-, slet- og opdateringshandlinger. Du kan f.eks. tilføje en regel, der kun tillader forfatteren at opdatere en publikation.
  • Tilføjet muligheden for at bruge globale variabler i lagringsskemaet. En ny global variabel current_user foreslås til binding til en bruger.
  • Tilføjet understøttelse af typer, der definerer værdiintervaller.
  • Det officielle klientbibliotek til Rust-sproget er blevet forberedt.
  • Den binære EdgeDB-protokol er blevet stabiliseret, hvilket giver mulighed for at håndtere flere forskellige sessioner samtidigt inden for en enkelt netværksforbindelse, videresende via HTTP og bruge globale variabler og lokale tilstande.
  • Tilføjet understøttelse af socket-aktivering, hvilket gør det muligt ikke at gemme serverhandleren i hukommelsen og kun at starte den, når der forsøges at oprette en forbindelse (nyttigt til at spare ressourcer på udviklersystemer).

Kilde: opennet.ru

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