Ilmus EdgeDB 2.0 andmebaas, mis rakendab relatsioonilis-graafilist andmemudelit ja EdgeQL pÀringukeelt, mis on optimeeritud keerukate hierarhiliste andmete töötlemiseks. Kood on kirjutatud keeles Python ja Rust (parser ja jÔudluskriitilised osad) ning levitatakse Apache 2.0 litsentsi alusel. Projekt areneb PostgreSQL-i pealisehitise vormis. Klientraamatukogud on valmistatud Python, Go, Rust ja TypeScript/Javascript keelte jaoks. Pakutakse kÀsurea tööriistu andmebaasi haldamiseks ja interaktiivsete pÀringute tÀitmiseks (REPL).
EdgeDB-s rakendatakse andmemudelit, mis pĂ”hineb deklaratiivsel objekttĂŒĂŒpidel, mitte tabelite andmemudelit. TĂŒĂŒpidevaheliste suhete mÀÀratlemiseks kasutatakse viidatud sidumisi (ĂŒks objekt vĂ”ib olla teise objekti omadus) asemel vĂ€liseid vĂ”tmeid (foreign key).
type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }
KĂŒsimuste töötlemise kiirendamiseks vĂ”ivad kasutada indekseid. Toetatakse ka selliseid vĂ”imalusi nagu omaduste ranget tĂŒĂŒbilist mÀÀratlemist, omaduste vÀÀrtuse piiranguid, arvutuslikke omadusi ja salvestatud protseduure. EdgeDB objektimudeli salvestamise skeemi eripĂ€ra, mis meenutab ORM-i, on vĂ”imalik segada skeeme, siduda omadusi erinevatest objektidest ning integreeritud JSON-i toetus.
Sisseehitatud tööriistad andmebaasiskeemi migratsiooniks â pĂ€rast esdl-failis mÀÀratud skeemi muutmist piisab, kui kĂ€ivitada kĂ€sk "edgedb migration create" ning andmebaas analĂŒĂŒsib skeemi erinevusi ja genereerib interaktiivselt skripti uuele skeemile ĂŒlemiseks. Skeemi muutuste ajalugu jĂ€lgitakse automaatselt.
PĂ€ringute koostamiseks toetatakse nii GraphQL pĂ€ringute keelt kui ka oma EdgeDB kĂ”net, mis on SQL-i kohandamine hierarhiliste andmete jaoks. Tulemustena esitatakse pĂ€ringud struktureeritud viisil, mitte loenditena, ning alampĂ€ringute ja JOIN operatsioonide asemel on vĂ”imalus mÀÀrata ĂŒks EdgeQL pĂ€ring vĂ€ljendina teises pĂ€ringus. Toetatakse tehingute ja tsĂŒklite kasutamist.
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 } );
Uues versioonis:
- On lisatud uus veebiliides andmebaasi haldamiseks, mis vĂ”imaldab vaadata ja redigeerida andmeid, tĂ€ita EdgeQL pĂ€ringuid ning analĂŒĂŒsida rakendatavaid salvestusskeeme. Liidese kĂ€ivitamiseks kasutatakse kĂ€sku «edgedb ui», mille tĂ€itmisel on see saadaval localhost'i kaudu.

- Viidatud on «GROUP» vÀljendi rakendamine, mis vÔimaldab andmete sektsioneerimist ja kogumist ning andmete grupeerimist EdgeQL-i kaudu, sarnaselt SELECT-i operatsiooni gruppeerimisega.
- Objekti tasemel ligipÀÀsu haldamise vÔimalus. LigipÀÀsureeglid mÀÀratletakse salvestusstruktuuri tasemel ja vÔimaldavad piirata teatud objektide komplekti kasutamise vÔimalust valimise, lisamise, kustutamise ja vÀrskendamise operatsioonides. NÀiteks saab lisada reegli, mis lubab postituse vÀrskendamise ainult autorile.
- Globaalsete muutuja kasutamise vÔimalus salvestusstruktuuris. Kasutaja sidumiseks on pakkuda uus globaalne muutuja current_user.
- Lisatud tugi vÀÀrtuste vahemike mÀÀratlemiseks tĂŒĂŒbid (range).
- Valmis ametlik kliendiraamatukogu Rusti keele jaoks.
- Stabiliseeritud on EdgeDB binaarprotokoll, milles on tekkinud vĂ”imalus töötada samaaegselt mitme erineva seansi raames ĂŒhe vĂ”rguĂŒhenduse kaudu, HTTP kaudu ĂŒlekande, globaalsete muutujate ja kohalike olekute kasutamisega.
- Lisatud toetuse aktiveerimine socket'i kaudu, mis vĂ”imaldab mitte hoida serveri töötlejat mĂ€lus ja kĂ€ivitada seda vaid ĂŒhenduse loomise katsetel (kasulik arendajate sĂŒsteemide ressursikasutuse sÀÀstmiseks).
Allikas: opennet.ru

