A DBMS EdgeDB relációs gráf első stabil kiadása

Elérhető az EdgeDB DBMS első stabil kiadása, amely a PostgreSQL kiegészítője a relációs gráf adatmodell és az EdgeQL lekérdezési nyelv megvalósításával, amely összetett hierarchikus adatokkal való munkavégzésre van optimalizálva. A kód Python és Rust nyelven íródott, és az Apache 2.0 licenc alatt kerül terjesztésre. 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 } );

Forrás: opennet.ru

Hozzászólás