Vydání relačně-grafové databáze EdgeDB 2.0

Byl vydán release databázového systému EdgeDB 2.0, který implementuje relačně-grafový model dat a jazyk dotazů EdgeQL, optimalizovaný pro práci se složitými hierarchickými daty. Kód je napsán v jazycích Python a Rust (parser a výkonnostně kritické části) a je distribuován pod licencí Apache 2.0. Projekt se vyvíjí jako nadstavba nad PostgreSQL. Klientské knihovny byly připraveny pro jazyky Python, Go, Rust a TypeScript/Javascript. Je poskytován nástroj příkazového řádku pro správu databáze a interaktivní vykonávání dotazů (REPL).

Místo modelu dat založeného na tabulkách používá EdgeDB deklarativní systém založený na objektových typech. Místo cizích klíčů (foreign key) pro určení vazeb mezi typy se používá propojování odkazy (jeden objekt může být použit jako vlastnost jiného objektu).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Pro zrychlení zpracování dotazů mohou být použity indexy. Také jsou podporovány možnosti, jako je přísné typování vlastností, omezení hodnot vlastností, vypočítávané vlastnosti a uložené procedury. Zvláštností objektového schématu ukládání EdgeDB, které se poněkud podobá ORM, je možnost mixování schémat, propojení vlastností z různých objektů a integrovaná podpora JSON.

Jsou poskytovány integrované nástroje pro migraci schématu ukládání — po změně schématu definovaného v samostatném esdl souboru stačí provést příkaz „edgedb migration create“ a databáze analyzuje rozdíly v schématu a v interaktivním režimu vygeneruje skript pro přechod na nové schéma. Historie změn schématu je automaticky sledována.

Pro formulaci dotazů je podporován jak jazyk dotazů GraphQL, tak vlastní jazyk EdgeDB, který je adaptací SQL pro hierarchická data. Místo seznamů jsou výsledky dotazů prezentovány ve strukturované podobě a místo poddotazů a operací JOIN je možné určit jeden dotaz EdgeQL jako výraz uvnitř jiného dotazu. Podporovány jsou transakce a cykly.

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 } );

V nové verzi:

  • Bylo přidáno vestavěné webové rozhraní pro administraci databáze, které umožňuje prohlížení a editaci dat, vykonávání dotazů EdgeQL a analýzu použitého schématu ukládání. Rozhraní se spouští příkazem „edgedb ui“, po jehož provedení je k dispozici při přístupu k localhost.
    Vydání relačně-grafové databáze EdgeDB 2.0
  • Byl implementován výraz „GROUP“, který umožňuje segmentaci a agregaci dat a provádění seskupení dat podle libovolných výrazů EdgeQL obdobně jako při seskupování v operaci SELECT.
  • Možnost správy přístupových práv na úrovni objektů. Pravidla přístupu jsou stanovena na úrovni schématu ukládání a umožňují omezit možnost použití určité sady objektů v operacích výběru, vkládání, odstraňování a aktualizace. Například lze přidat pravidlo, které umožňuje aktualizaci publikace pouze autorovi.
  • Byla přidána možnost používání globálních proměnných ve schématu ukládání. Pro přiřazení uživateli byla navržena nová globální proměnná current_user.
  • Byla přidána podpora typů, které definují rozsahy hodnot (range).
  • Byla připravena oficiální klientská knihovna pro jazyk Rust.
  • Byl stabilizován binární protokol EdgeDB, který nyní umožňuje zpracování více různých relací v rámci jednoho síťového spojení, přesměrování přes HTTP, využití globálních proměnných a lokálních stavů.
  • Byla přidána podpora aktivace pomocí socketu, která umožňuje neudržovat serverový zpracovatel v paměti a spouštět ho pouze při pokusu o navázání spojení (užitečné pro úsporu zdrojů na systémech vývojářů).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster