Lansering av den relationella-grafdatabashanteraren EdgeDB 5.0

EdgeDB 5.0 har slÀppts och implementerar en relations-grafdatamodell samt frÄgesprÄket EdgeQL, optimerat för arbete med komplexa hierarkiska data. Projektet utvecklas som en utbyggnad över PostgreSQL, dÀr koden Àr skriven i Python och Rust (parser och prestandakritiska delar), och distribueras under Apache 2.0-licensen. Klientbiblioteken har förberetts för sprÄken Python, Go, Rust, .NET, Elixir och TypeScript/Javascript. En kommandoradsverktyg tillhandahÄlls för att hantera databasen och för interaktiv exekvering av frÄgor (REPL).

IstÀllet för en tabellbaserad datamodell anvÀnder EdgeDB ett deklarativt system baserat pÄ objekttyper. IstÀllet för primÀrnycklar (foreign key) för att definiera relationen mellan typer, anvÀnds lÀnkbindningar (en objekt kan anvÀndas som en egenskap av ett annat objekt).

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

Funktioner som strikt typning av egenskaper, begrÀnsningar av egenskapsvÀrden, berÀknade egenskaper och lagrade procedurer stöds. Bland de sÀrskilda funktionerna i EdgeDB:s objektlagringsschema, som pÄminner om ORM, noteras möjligheten att blanda scheman, binda egenskaper frÄn olika objekt och integrerat stöd för JSON. För att pÄskynda frÄga bearbetningen kan index anvÀndas.

Inbyggda verktyg för schema-migrering tillhandahĂ„lls — efter att schemat har Ă€ndrats i en separat esdl-fil, rĂ€cker det med att köra kommandot "edgedb migration create", sĂ„ analyserar databasen skillnaderna i schemat och genererar interaktivt ett script för att migrera till det nya schemat. Historiken för schemaĂ€ndringar spĂ„ras automatiskt.

FrÄgesprÄket GraphQL och det egna sprÄket EdgeDB, som Àr en anpassning av SQL för hierarkiska data, stöds för att formulera frÄgor. IstÀllet för listor visas frÄgeresultaten i strukturerad form, och istÀllet för underfrÄgor och JOIN-operationer ges möjligheten att ange en EdgeQL-frÄga som ett uttryck inom en annan frÄga. Transaktioner och loopar stöds.

vĂ€lja Film { titel, skĂ„despelare: { namn } } filter .titel = «The Matrix» infoga Film { titel := «The Matrix Resurrections», skĂ„despelare := ( vĂ€lj Person filter .namn i { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) }

I den nya versionen:

  • Stöd för branching har lagts till, vilket möjliggör anvĂ€ndning av grenkonceptet i datahantering och scheman, tillĂ€mpat i versionshanteringssystem. I den nya versionen föreslĂ„s termen «branch» istĂ€llet för «databas», och kommandona «create database» och «drop database» har deklarerats som förĂ„ldrade, varvid de nya kommandona «create empty branch» och «drop branch» rekommenderas. Förutom tomma grenar kan du med hjĂ€lp av kommandona «create schema branch» och «create data branch» skapa avknoppningar frĂ„n befintliga grenar och databaser, och kopiera lagringsscheman och data frĂ„n dem.

    FrÄn ett praktiskt perspektiv möjliggör stödet för grenar att synkronisera data med den kod som anvÀnds för att bearbeta dem, samtidigt som kompatibiliteten med gammal kod bibehÄlls. Till exempel, efter att ha uppdaterat koden kan en ny datagren kopplas till den och ta hÀnsyn till de Àndringar som gjorts i lagringsschemat. Denna funktionalitet Àr praktisk för att förenkla utveckling och testning av nya programvaruversioner, dÀr det efter att de Àr redo rÀcker med att vÀxla till den redan testade grenen.

  • I tillĂ€gget pgvector, som anvĂ€nds för effektiv lagring och förfrĂ„gning av vektorer, har en ny typ av index, HNSW (Hierarchical Navigable Small Worlds), lagts till. Denna Ă€r, likt indexet IVFFlat, tillgĂ€nglig i tre varianter: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip och ext::pgvector::hnsw_cosine. Dessutom har möjligheterna för finjustering av indexen utökats genom objektet ext::pgvector::Config.
  • Ytterligare autentiseringsmöjligheter har lagts till. I tillĂ€gget auth har stöd för lösenordsfria autentiseringsscheman WebAuthn (Passkeys) och «magic links» (baserat pĂ„ e-post) implementerats. Stöd för att anvĂ€nda plattformarna Slack och Discord som OAuth-leverantörer har ocksĂ„ lagts till.
  • Prestandaoptimeringar har genomförts. I implementeringen av cacheminnet med resultaten av kompilering av förfrĂ„gningar har tillstĂ„ndet bevarats mellan omstarter, och automatisk rekompilering efter migration har lagts till. Hastigheten för stora lagringsscheman har förbĂ€ttrats.
  • I EdgeQL-frĂ„gesprĂ„ket Ă€r det tillĂ„tet att utelĂ€mna nyckelordet "union" i grundlĂ€ggande förfrĂ„gningar dĂ€r uttryck för insert, update eller delete anvĂ€nds.
  • Kommandot vacuum() har lagts till för att rensa, optimera och packa databasens innehĂ„ll.
  • Det Ă€r tillĂ„tet att konvertera data mellan datatypen bytes och typerna int16, int32, int64 och uuid, med hjĂ€lp av funktionerna to_bytes(), to_uuid() och to_int*().
  • Funktionen att stĂ€nga alla anslutningar till databasen efter att operationen "drop database" har genomförts har lagts till.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster