První stabilní vydání relačního grafu DBMS EdgeDB

K dispozici je první stabilní verze EdgeDB DBMS, což je doplněk PostgreSQL s implementací datového modelu relačního grafu a dotazovacího jazyka EdgeQL, optimalizovaný pro práci se složitými hierarchickými daty. Kód je napsán v Pythonu a Rustu a je distribuován pod licencí Apache 2.0. Klientské knihovny jsou připraveny pro Python, Go, Rust a TypeScript/Javascript. Poskytuje nástroje příkazového řádku pro správu DBMS a provádění interaktivních dotazů (REPL).

Místo tabulkového datového modelu používá EdgeDB deklarativní systém založený na typech objektů. Namísto cizích klíčů se k definování vztahu mezi typy používá propojení odkazem (jeden objekt lze použít jako vlastnost jiného objektu). type Person { požadovaný název vlastnosti -> str; } type Movie { požadovaný název vlastnosti -> str; vícenásobní aktéři -> Osoba; }

Indexy lze použít ke zrychlení zpracování dotazů. Podporovány jsou také funkce jako silné typování vlastností, omezení hodnoty vlastností, vypočítané vlastnosti a uložené procedury. Mezi funkce schématu ukládání objektů EdgeDB, které trochu připomíná ORM, patří možnost kombinovat schémata, vlastnosti propojení z různých objektů a integrovaná podpora JSON.

K dispozici jsou vestavěné nástroje pro ukládání migrace schématu – po změně schématu uvedeného v samostatném souboru esdl stačí spustit příkaz „edgedb Migration create“ a DBMS analyzuje rozdíly ve schématu a interaktivně vygeneruje skript pro migraci na nové schéma. Historie změn schématu je automaticky sledována.

Pro generování dotazů je podporován jak dotazovací jazyk GraphQL, tak proprietární jazyk EdgeDB, což je adaptace SQL pro hierarchická data. Místo seznamů jsou výsledky dotazů formátovány strukturovaným způsobem a místo poddotazů a JOINů můžete zadat jeden dotaz EdgeQL jako výraz v jiném dotazu. Transakce a cykly jsou podporovány. select Movie { title,herci: {name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", herci := ( select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } pro číslo ve spojení {0, 1, 2, 3} ( vyberte { číslo, číslo + 0.5 } );

Zdroj: opennet.ru

Přidat komentář