Vydání relačního grafu DBMS EdgeDB 2.0

Je představena verze EdgeDB 2.0 DBMS, která implementuje datový model relačního grafu a dotazovací jazyk EdgeQL, optimalizovaný pro práci s komplexními hierarchickými daty. Kód je napsán v Pythonu a Rustu (analyzátor a části kritické pro výkon) a je distribuován pod licencí Apache 2.0. Projekt je vyvíjen jako doplněk pro PostgreSQL. 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; aktéři s více odkazy -> 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 } );

V nové verzi:

  • Pro správu databáze bylo přidáno vestavěné webové rozhraní, které umožňuje prohlížet a upravovat data, spouštět dotazy EdgeQL a analyzovat použité schéma úložiště. Rozhraní se spouští příkazem „edgedb ui“, po kterém se zpřístupní při přístupu k localhost.
    Vydání relačního grafu DBMS EdgeDB 2.0
  • Byl implementován výraz „GROUP“, který vám umožňuje rozdělovat a agregovat data a seskupovat data pomocí libovolných výrazů EdgeQL, podobně jako seskupování v operaci SELECT.
  • Schopnost řídit přístup na úrovni objektu. Pravidla přístupu jsou definována na úrovni schématu úložiště a umožňují vám omezit schopnost používat určitou sadu objektů při operacích načítání, vkládání, odstraňování a aktualizace. Můžete například přidat pravidlo, které umožní aktualizaci publikace pouze autorovi.
  • Přidána možnost používat globální proměnné ve schématu úložiště. Pro uživatele byla navržena nová globální proměnná current_user.
  • Přidána podpora pro typy, které definují rozsahy hodnot.
  • Byla připravena oficiální klientská knihovna pro jazyk Rust.
  • Binární protokol EdgeDB byl stabilizován, což umožňuje zpracovávat několik různých relací současně v rámci stejného síťového připojení, přeposílání přes HTTP, pomocí globálních proměnných a lokálních stavů.
  • Přidána podpora pro aktivaci soketu, která umožňuje neuchovávat obslužný program serveru v paměti a spouštět jej pouze při pokusu o navázání spojení (užitečné pro úsporu prostředků na vývojářských systémech).

Zdroj: opennet.ru

Přidat komentář