Relatsioonigraafiku DBMS EdgeDB esimene stabiilne väljalase

Saadaval on EdgeDB DBMS-i esimene stabiilne väljalase, mis on PostgreSQL-i lisand, mis sisaldab relatsioonigraafikute andmemudelit ja EdgeQL-i päringukeelt, mis on optimeeritud keerukate hierarhiliste andmetega töötamiseks. Kood on kirjutatud Pythonis ja Rustis ning seda levitatakse Apache 2.0 litsentsi all. 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 } );

Allikas: opennet.ru

Lisa kommentaar