EdgeDB, en grafrelationsdata-DBMS

nylig udgivelsen af ​​DBMS «EdgeDB 2.0» blev annonceret, som implementerer relationsgrafens relationelle datamodel og EdgeQL forespørgselssprog, optimeret til at arbejde med komplekse hierarkiske data.

EdgeDB er en open source-database designet som en spirituel efterfølger til SQL og det relationelle paradigme. Dens mål er at løse nogle vanskelige designproblemer, der gør eksisterende databaser unødvendigt byrdefulde at bruge.

Drevet af Postgres-forespørgselsmotoren under motorhjelmen, tænker EdgeDB på skemaet på samme måde som du gør: som objekter med egenskaber forbundet med bindinger. Det er som en relationsdatabase med en objektorienteret datamodel eller en grafdatabase med et strengt skema. Vi kalder det en relationel database af grafer.

Om EdgeDB

Projektet udvikles som et plugin til PostgreSQL. Klientbibliotekerne er forberedt til Python, Go, Rust og TypeScript/Javascript sprogene.

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

Indekser kan bruges til at fremskynde forespørgselsbehandlingen. Også funktioner såsom stærk egenskabsskrivning understøttes, ejendomsværdibegrænsninger, beregnede egenskaber og lagrede procedurer. Nogle af funktionerne i EdgeDB-objektlagringsskemaet, der minder lidt om ORM, inkluderer evnen til at blande skemaer, binde egenskaber for forskellige objekter og understøttelse af indlejret JSON.

Der er indbyggede værktøjer til at migrere lagerskemaet: Efter at have ændret skemaet angivet i en separat esdl-fil, skal du bare køre kommandoen "edgedb migration create", og DBMS'et vil analysere forskellene i skemaet og generere et script interaktivt. for at migrere til det nye skema. Skemaændringshistorik spores automatisk.

Til forespørgsler kan både GraphQL-forespørgselssproget og som sit eget sprog EdgeDB, som er en tilpasning af SQL til hierarkiske data. I stedet for lister har forespørgselsresultater et struktureret format, og i stedet for underforespørgsler og JOIN'er kan en EdgeQL-forespørgsel angives som et udtryk i en anden forespørgsel. Transaktioner og cyklusser understøttes.

De vigtigste nye funktioner i EdgeDB 2.0

I den nye version, der blev præsenteret, integreret webgrænseflade er blevet tilføjet til databaseadministration giver mulighed for at se og redigere data, køre EdgeQL-forespørgsler og analysere den anvendte opbevaringsordning. Interfacet startes med kommandoen "edgedb ui", hvorefter det er tilgængeligt ved at tilgå localhost.

Udtrykket "GROUP" blev implementeret for at tillade dataopdeling og aggregering og gruppering af data ved hjælp af vilkårlige EdgeQL-udtryk, svarende til gruppering i en SELECT-operation.

Mulighed for at kontrollere adgang på objektniveau, adgangsregler er defineret på lagerskemaniveau og giver dig mulighed for at begrænse brugen af ​​et bestemt sæt objekter i valg, indsæt, slet og opdateringsoperationer. For eksempel kan du tilføje en regel, der tillader kun forfatteren at opdatere et indlæg.

Det fremhæves også, at tilføjet mulighed for at bruge globale variabler i lagerordningen. For at binde til brugeren er en ny global variabel blevet foreslået.

Af de andre ændringer, der skiller sig ud:

  • Det officielle klientbibliotek for Rust-sproget er udarbejdet.
  • Den binære EdgeDB-protokol er blevet stabiliseret, hvor det er blevet muligt at behandle flere forskellige sessioner samtidigt inden for samme netværksforbindelse, videresende over HTTP, ved hjælp af globale variabler og lokale tilstande.
  • Tilføjet understøttelse af typer, der definerer værdiområder (område).
  • Tilføjet understøttelse af socket-aktivering, som gør det muligt ikke at beholde serverdriveren i hukommelsen og kun at starte den, når du forsøger at etablere en forbindelse (nyttigt til at spare ressourcer på udviklingssystemer).

Endelig for dem der er interesserede i at vide mere om det, bør de vide, at koden er skrevet i Python og Rust og er udgivet under Apache 2.0-licensen.

Du kan få mere at vide om det på følgende link.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort.

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.