Az EdgeDB első stabil kiadása, relációs-grafikus DBMS

Megjelent az EdgeDB első stabil kiadása, amely a PostgreSQL fölött egy relációs-gráf adatmódelt és az EdgeQL lekérdezési nyelvet valósít meg, optimalizálva a bonyolult hierarchikus adatok kezelésére. A kód Python és Rust nyelveken íródott, és az Apache 2.0 licenc alatt terjesztik. Ügyféllibrárik készültek Python, Go, Rust és TypeScript/Javascript nyelvekhez. Parancssori eszközkészlet áll rendelkezésre az adatbázis kezelésére és interaktív lekérdezések végrehajtására (REPL).

Az EdgeDB nem táblázat alapú adatmódelt alkalmaz, hanem egy deklaratív rendszert objektumtípusok alapján. Az külső kulcsok (foreign key) helyett a típusok közötti kapcsolatok linkekkel történő összekapcsolása történik (egy objektum felhasználható egy másik objektum tulajdonságaként). type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

A lekérdezések feldolgozásának felgyorsítására indexek alkalmazhatók. Továbbá támogatottak a szigorú típusellenőrzés, a jellemzők értékeinek korlátozása, a számított jellemzők és a tárolt eljárások. Az EdgeDB objektum-tárolási sémájában, amely hasonlít az ORM-re, kiemelkedik a sémák keverésének, különböző objektumok jellemzőinek összekapcsolásának és a JSON integrált támogatásának lehetősége.

Beépített eszközök állnak rendelkezésre a tárolási séma migrálására — a sémában végrehajtott változtatások után, amelyeket egy külön esdl-fájlban adtak meg, elegendő végrehajtani az „edgedb migration create” parancsot, és az adatbázis elemzi a sémában lévő eltéréseket, interaktív módban generálja az új sémára való áttéréshez szükséges szkriptet. Automatikusan nyomon követi a sémaváltoztatások történetét.

A lekérdezések összeállításához támogatott a GraphQL lekérdezési nyelv és az EdgeDB saját nyelve, amely az SQL hierarchikus adatokra való adaptációja. A listák helyett a lekérdezések eredményei strukturált formában jelennek meg, a lekérdezések és JOIN műveletek helyett lehetőség van egy EdgeQL lekérdezés megadására egy másik lekérdezés kifejezésén belül. Támogatottak a tranzakciók és ciklusok. 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 } );

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster