Den første stabile utgivelsen av relasjonsgrafen DBMS EdgeDB

Den første stabile utgivelsen av EdgeDB DBMS er tilgjengelig, som er et tillegg til PostgreSQL med implementering av relasjonsgrafdatamodellen og EdgeQL-spørringsspråket, optimalisert for arbeid med komplekse hierarkiske data. Koden er skrevet i Python og Rust og distribueres under Apache 2.0-lisensen. Klientbiblioteker er forberedt for Python, Go, Rust og TypeScript/Javascript. Gir kommandolinjeverktøy for DBMS-administrasjon og interaktiv spørringskjøring (REPL).

I stedet for en tabellbasert datamodell, bruker EdgeDB et deklarativt system basert på objekttyper. I stedet for fremmednøkler, brukes kobling ved referanse for å definere forholdet mellom typer (ett objekt kan brukes som en egenskap for et annet objekt). type Person { nødvendig egenskapsnavn -> str; } skriv inn Film { nødvendig egenskapstittel -> str; multi link aktører -> Person; }

Indekser kan brukes til å fremskynde behandling av spørringer. Funksjoner som sterk egenskapsskriving, eiendomsverdibegrensninger, beregnede egenskaper og lagrede prosedyrer støttes også. Funksjoner ved EdgeDB-objektlagringsskjemaet, som minner litt om en ORM, inkluderer muligheten til å blande skjemaer, koble egenskaper fra forskjellige objekter og integrert JSON-støtte.

Innebygde verktøy er tilgjengelig for lagring av skjemamigrering - etter å ha endret skjemaet spesifisert i en separat esdl-fil, kjør bare kommandoen "edgedb migration create" og DBMS vil analysere forskjellene i skjemaet og interaktivt generere et skript for migrering til nytt skjema. Historien til skjemaendringer spores automatisk.

For å generere spørringer støttes både GraphQL-spørringsspråket og det proprietære EdgeDB-språket, som er en tilpasning av SQL for hierarkiske data. I stedet for lister formateres spørringsresultater på en strukturert måte, og i stedet for underspørringer og JOIN-er kan du spesifisere én EdgeQL-spørring som et uttrykk i en annen spørring. Transaksjoner og sykluser støttes. velg Film { title, actors: { name } } filter .title = "The Matrix" sett inn Film { title := "The Matrix Resurrections", skuespillere := (velg Person filter .name i { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } for nummer i {0, 1, 2, 3} union (velg { tall, tall + 0.5 });

Kilde: opennet.ru

Legg til en kommentar