Prvé stabilné vydanie relačno-grafovej databázovej SYSTÉMU EdgeDB.

K dispozícii je prvá stabilná verzia DBMS EdgeDB, ktorá predstavuje nadstavbu nad PostgreSQL s implementáciou relačno-grafového modelu údajov a dotazovacieho jazyka EdgeQL, optimalizovaného pre prácu s komplexnými hierarchickými údajmi. Kód je napísaný v jazykoch Python a Rust a distribuuje sa pod licenciou Apache 2.0. Klientské knižnice sú pripravené pre jazyky Python, Go, Rust a TypeScript/Javascript. K dispozícii je nástroj príkazového riadka na správu DBMS a interaktívne vykonávanie dotazov (REPL).

Namiesto modelu údajov založeného na tabuľkách, EdgeDB používa deklaratívny systém založený na objektových typoch. Namiesto vonkajších kľúčov (foreign key) na určenie vzťahu medzi typmi sa používa viazanie odkazmi (jeden objekt môže byť použitý ako vlastnosť iného objektu). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Na urýchlenie spracovania dopytov sa môžu použiť indexy. Podporujú sa aj funkcie ako prísna typizácia vlastností, obmedzenia hodnôt vlastností, vypočítané vlastnosti a uložené procedúry. Z osobitostí objektovej schémy ukladania EdgeDB, ktorá do určitej miery pripomína ORM, sa uvádza možnosť miešania schém, prepojenia vlastností z rôznych objektov a integrovaná podpora JSON.

Sú poskytované vstavané nástroje na migráciu schémy ukladania — po zmene schémy definovanej v samostatnom esdl-súbore stačí vykonať príkaz „edgedb migration create“ a DB analyzuje rozdiely v schéme a interaktívne vygeneruje skript na prechod na novú schému. História zmien schémy sa automaticky sleduje.

Na vytváranie dotazov sa podporuje ako jazyk dotazov GraphQL, tak aj vlastný jazyk EdgeDB, ktorý predstavuje adaptáciu SQL pre hierarchické údaje. Namiesto zoznamov sú výsledky dotazu formátované v štruktúrovanej podobe a namiesto poddotazov a operácií JOIN je možné uviesť jeden dotaz EdgeQL ako výraz v inom dotaze. Podporujú sa transakcie a cykly. 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 } );

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster