Prima versiune stabilă a sistemului de gestionare a bazelor de date relaționale și grafice EdgeDB.

Este disponibilă prima versiune stabilă a SGBD-ului EdgeDB, care reprezintă un strat deasupra PostgreSQL, implementând un model de date relațional-grafic și un limbaj de interogare EdgeQL, optimizat pentru lucrul cu date complexe și ierarhice. Codul este scris în limbajele Python și Rust și este distribuit sub licența Apache 2.0. Bibliotecile client sunt pregătite pentru limbajele Python, Go, Rust și TypeScript/Javascript. Este furnizat un instrument de linie de comandă pentru gestionarea SGBD-ului și executarea interactivă a interogărilor (REPL).

În locul modelului de date bazat pe tabele, EdgeDB utilizează un sistem declarațional bazat pe tipuri de obiecte. În locul cheilor externe (foreign key) pentru a defini relația între tipuri, se utilizează legarea prin referințe (un obiect poate fi folosit ca proprietate a altui obiect). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Pentru a accelera procesarea interogărilor, pot fi utilizate indecși. De asemenea, sunt suportate funcționalități cum ar fi tiparea strictă a proprietăților, restricții asupra valorilor proprietăților, proprietăți calculate și proceduri stocate. Printre caracteristicile schemei de stocare obiectuală EdgeDB, care este similară cu ORM, se numără posibilitatea de amestecare a schemelor, legarea proprietăților din diferite obiecte și suportul integrat pentru JSON.

Sunt furnizate instrumente încorporate pentru migrarea schemei de stocare — după modificarea schemei specificate într-un fișier esdl separat, este suficient să executați comanda „edgedb migration create”, iar SGBD-ul va analiza diferențele în schemă și va genera interactiv un script pentru trecerea la noua schemă. Istoricul modificărilor schemei este urmărit automat.

Pentru formularea interogărilor este suportat atât limbajul de interogare GraphQL, cât și propriul limbaj EdgeDB, care reprezintă o adaptare a SQL pentru date ierarhice. În loc de liste, rezultatele interogării sunt prezentate într-o formă structurată, iar în loc de subinterogări și operații JOIN, se oferă posibilitatea de a indica o interogare EdgeQL ca expresie în interiorul altei interogări. Sunt suportate tranzacții și bucle. 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 } );

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster