A DBMS EdgeDB 2.0 relációs gráf kiadása

Bemutatjuk az EdgeDB 2.0 DBMS kiadását, amely a relációs gráf adatmodellt és az EdgeQL lekérdezési nyelvet valósítja meg, összetett hierarchikus adatokkal való munkára optimalizálva. A kód Python és Rust nyelven íródott (elemző és teljesítménykritikus részek), és az Apache 2.0 licenc alatt kerül terjesztésre. A projektet a PostgreSQL kiegészítőjeként fejlesztik. Az ügyfélkönyvtárak Python, Go, Rust és TypeScript/Javascript számára készültek. Parancssori eszközöket biztosít a DBMS kezeléséhez és az interaktív lekérdezések végrehajtásához (REPL).

A táblázat alapú adatmodell helyett az EdgeDB objektumtípusokon alapuló deklaratív rendszert használ. Idegen kulcsok helyett hivatkozással történő hivatkozással határozzák meg a típusok közötti kapcsolatot (egy objektum egy másik objektum tulajdonságaként használható).

type Személy { kötelező tulajdonságnév -> str; } type Movie { kötelező tulajdonság címe -> str; multi link szereplők -> Személy; }

Az indexek segítségével felgyorsítható a lekérdezések feldolgozása. Az olyan szolgáltatások is támogatottak, mint az erős tulajdonságtípus, a tulajdonságérték-korlátozás, a számított tulajdonságok és a tárolt eljárások. Az EdgeDB objektumtárolási séma, amely némileg az ORM-re emlékeztet, jellemzői közé tartozik a sémák keverésének lehetősége, a különböző objektumok hivatkozási tulajdonságai és az integrált JSON-támogatás.

A séma áttelepítésének tárolására beépített eszközök állnak rendelkezésre – a külön esdl fájlban megadott séma megváltoztatása után csak futtassa az „edgedb migration create” parancsot, és a DBMS elemzi a séma eltéréseit, és interaktívan generál egy szkriptet a séma áttelepítéséhez. új séma. A rendszer automatikusan nyomon követi a sémaváltozások előzményeit.

A lekérdezések generálásához a GraphQL lekérdezési nyelv és a védett EdgeDB nyelv is támogatott, amely az SQL adaptációja hierarchikus adatokhoz. A listák helyett a lekérdezések eredményei strukturált módon vannak formázva, és az allekérdezések és JOIN-ok helyett megadhat egy EdgeQL-lekérdezést kifejezésként egy másik lekérdezésben. A tranzakciók és ciklusok támogatottak.

select Movie { title, actors: { name } } filter .title = "A Mátrix" insert Movie { title := "The Matrix Resurrections", actors := ( Select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } a 0, 1, 2, 3} unió számához ( válasszon { szám, szám + 0.5 } );

Az új verzióban:

  • Az adatbázis-adminisztrációhoz beépített webes felület került hozzáadásra, amely lehetővé teszi az adatok megtekintését és szerkesztését, az EdgeQL lekérdezések futtatását és a használt tárolási séma elemzését. A felületet az „edgedb ui” paranccsal indítjuk el, majd a localhost elérésekor válik elérhetővé.
    A DBMS EdgeDB 2.0 relációs gráf kiadása
  • A „GROUP” kifejezés megvalósításra került, amely lehetővé teszi az adatok particionálását és összesítését, valamint adatok csoportosítását tetszőleges EdgeQL-kifejezések használatával, hasonlóan a SELECT műveletben történő csoportosításhoz.
  • Az objektumszintű hozzáférés szabályozásának lehetősége. A hozzáférési szabályok a tárolási séma szintjén vannak meghatározva, és lehetővé teszik egy bizonyos objektumkészlet használatának korlátozását a lekérési, beszúrási, törlési és frissítési műveletekben. Például hozzáadhat egy olyan szabályt, amely csak a szerző számára engedélyezi a kiadvány frissítését.
  • Hozzáadtuk a globális változók használatának lehetőségét a tárolási sémában. A jelenlegi_user új globális változót javasolták a felhasználóhoz való kötéshez.
  • Hozzáadott támogatás az értéktartományokat meghatározó típusokhoz.
  • Elkészült egy hivatalos ügyfélkönyvtár a Rust nyelvhez.
  • Az EdgeDB bináris protokollt stabilizálták, lehetővé téve több különböző munkamenet egyidejű feldolgozását ugyanazon a hálózati kapcsolaton belül, HTTP-n keresztüli továbbítással, globális változók és helyi állapotok használatával.
  • Hozzáadott támogatás a socket aktiváláshoz, amely lehetővé teszi, hogy a kiszolgálókezelőt ne tartsa a memóriában, és csak akkor futtassa, amikor megpróbál kapcsolatot létesíteni (hasznos erőforrások megtakarításához a fejlesztői rendszereken).

Forrás: opennet.ru

Hozzászólás