Relatsioonigraafiku DBMS EdgeDB 2.0 väljalase

Esitletakse EdgeDB 2.0 DBMS-i väljalaset, mis rakendab relatsioonigraafikute andmemudelit ja EdgeQL päringukeelt, mis on optimeeritud keerukate hierarhiliste andmetega töötamiseks. Kood on kirjutatud Pythonis ja Rustis (parser ja jõudluskriitilised osad) ning seda levitatakse Apache 2.0 litsentsi all. Projekti arendatakse PostgreSQL-i lisandmoodulina. Klienditeegid on ette valmistatud Pythoni, Go, Rusti ja TypeScripti/Javascripti jaoks. Pakub käsurea tööriistu DBMS-i haldamiseks ja interaktiivse päringu täitmiseks (REPL).

Tabelipõhise andmemudeli asemel kasutab EdgeDB objektitüüpidel põhinevat deklaratiivset süsteemi. Võõrvõtmete asemel kasutatakse tüüpidevahelise seose määratlemiseks viitega linkimist (üht objekti saab kasutada teise objekti omadusena).

type Isik { nõutav omadusnimi -> str; } type Movie { nõutud omaduse pealkiri -> str; mitme lingi näitlejad -> Isik; }

Indekseid saab kasutada päringu töötlemise kiirendamiseks. Toetatakse ka selliseid funktsioone nagu tugev atribuutide sisestamine, atribuudi väärtuse piirangud, arvutatud omadused ja salvestatud protseduurid. Mõnevõrra ORM-i meenutava EdgeDB objektide salvestusskeemi funktsioonid hõlmavad võimalust segada skeeme, linkida erinevate objektide atribuute ja integreeritud JSON-i tuge.

Skeemi migratsiooni salvestamiseks on kaasas sisseehitatud tööriistad - pärast eraldi esdl-failis määratud skeemi muutmist käivitage lihtsalt käsk "edgedb migration create" ja DBMS analüüsib skeemi erinevusi ja genereerib interaktiivselt skripti skeemi migreerimiseks. uus skeem. Skeemimuudatuste ajalugu jälgitakse automaatselt.

Päringute genereerimiseks toetatakse nii GraphQL-i päringukeelt kui ka EdgeDB-keelt, mis on SQL-i kohandamine hierarhiliste andmete jaoks. Loendite asemel vormindatakse päringutulemused struktureeritud viisil ning alampäringute ja JOIN-ide asemel saate määrata ühe EdgeQL-i päringu avaldisena mõnes teises päringus. Toetatakse tehinguid ja tsükleid.

select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( valige Isiku filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } numbri jaoks liidus 0, 1, 2, 3} ( valige { number, number + 0.5 } );

Uues versioonis:

  • Andmebaasi haldamiseks on lisatud sisseehitatud veebiliides, mis võimaldab vaadata ja redigeerida andmeid, käivitada EdgeQL päringuid ja analüüsida kasutatavat salvestusskeemi. Liides käivitatakse käsuga "edgedb ui", misjärel muutub see localhostile juurdepääsul kättesaadavaks.
    Relatsioonigraafiku DBMS EdgeDB 2.0 väljalase
  • Rakendatud on avaldis GROUP, mis võimaldab teil sektsioonida ja koondada andmeid ning rühmitada andmeid suvaliste EdgeQL-i avaldiste abil, sarnaselt SELECT-toimingu rühmitamisega.
  • Võimalus kontrollida juurdepääsu objekti tasemel. Juurdepääsureeglid on määratletud salvestusskeemi tasemel ja võimaldavad piirata võimalust kasutada teatud objektide komplekti toomise, sisestamise, kustutamise ja värskendamise toimingutes. Näiteks saate lisada reegli, mis lubab ainult autoril väljaannet värskendada.
  • Lisatud on võimalus kasutada salvestusskeemis globaalseid muutujaid. Kasutajaga sidumiseks on pakutud välja uus globaalne muutuja current_user.
  • Lisatud on väärtuste vahemikke määratlevate tüüpide tugi.
  • Rusti keele ametlik klientraamatukogu on koostatud.
  • EdgeDB binaarprotokoll on stabiliseeritud, mis võimaldab töödelda mitut erinevat seanssi samaaegselt sama võrguühenduse piires, edastades HTTP kaudu, kasutades globaalseid muutujaid ja kohalikke olekuid.
  • Lisatud pesa aktiveerimise tugi, mis võimaldab serveritöötlejat mitte mälus hoida ja käivitada seda ainult siis, kui proovite ühendust luua (kasulik arendajasüsteemide ressursside säästmiseks).

Allikas: opennet.ru

Lisa kommentaar