A relációs-grafoló adatbázis-kezelő EdgeDB 2.0 kiadása

Megjelent az EdgeDB 2.0 alapú adatbázis-kezelő rendszer, amely relációs-grafikus adatmodellt és EdgeQL lekérdező nyelvet valósít meg, optimalizálva a bonyolult hierarchikus adatok kezelésére. A kód Python és Rust nyelveken íródott (a parser és a teljesítménykritikus részek) és az Apache 2.0 licenc alatt terjesztik. A projekt a PostgreSQL fölé építkezik. Kliensek könyvtárai elérhetők Python, Go, Rust és TypeScript/Javascript nyelveken. Parancssori eszközök állnak rendelkezésre az adatbázis kezelésére és lekérdezések interaktív végrehajtására (REPL).

Az EdgeDB adatmodellt nem táblák alapján, hanem deklaratív rendszer alapján építik fel, amely objektumtípusokkal dolgozik. A típusok közötti kapcsolatok meghatározására nem használnak külső kulcsokat (foreign key), hanem hivatkozásokkal történik a kapcsolódás (egy objektum használható másik objektum jellemzőjeké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.

Lekérdezések kialakításához támogatott a GraphQL lekérdező nyelv, valamint az EdgeDB saját nyelve, amely az SQL adaptációja hierarchikus adatokhoz. Az eredményeket nem listákban, hanem strukturált formában szolgáltatják, és a beágyazott 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éseként. 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 } );

Az új verzióban:

  • Beépített webes felület került hozzáadásra az adatbázis adminisztrálásához, amely lehetővé teszi az adatok megtekintését és szerkesztését, EdgeQL lekérdezések végrehajtását, valamint a használt tárolási séma elemzését. A felület az "edgedb ui" paranccsal indítható, és elérhető a localhost elérési úton.
    A relációs-grafoló adatbázis-kezelő EdgeDB 2.0 kiadása
  • Megvalósításra került a "GROUP" kifejezés, amely lehetővé teszi az adatok szekciókba állítását és aggregálását, valamint az adatok csoportosítását tetszőleges EdgeQL kifejezések alapján, a SELECT utasítás csoportosításához hasonlóan.
  • Lehetőség nyílik az objektumok szintű hozzáférés kezelésére. A hozzáférési szabályok a tárolási séma szintjén kerülnek meghatározásra, és lehetővé teszik bizonyos objektumkészletek használatának korlátozását a lekérdezések, beszúrások, törlések és frissítések során. Például hozzáadhatunk egy szabályt, amely csak a szerzőnek engedélyezi a közzététel frissítését.
  • Bevezetésre került a globális változók használatának lehetősége a tárolási sémában. Az aktuális felhasználóhoz való kötéshez új globális változó került javaslatra: current_user.
  • Bevezetésre került a tartományértékeket meghatározó típusok támogatása (range).
  • Hivatalos klienskönyvtár készült Rust nyelvhez.
  • Stabilizálva lett az EdgeDB bináris protokollja, amely lehetővé teszi több különböző munkamenet egyidejű kezelését egyetlen hálózati kapcsolat keretein belül, HTTP-n keresztüli áttolást, globális változók használatát és helyi állapotokat.
  • Hozzáadva a socket-alapú aktiválás támogatása, amely lehetővé teszi, hogy a szerverkezelő ne maradjon a memóriában, és csak a kapcsolatfelvételi kísérletkor induljon el (hasznos a fejlesztői rendszerek erőforrásainak megtakarításához).

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