Vývojáři databáze EdgeDB oznámili přejmenování projektu na Gel. Zároveň byl uveden nový významný release — Gel 6.0. Mezi důvody pro změnu názvu se uvádí snaha zbavit se zavádějících konotací spojených s použitím slova "edge", díky kterému mnoho lidí projekt vnímá jako databázi pro edge výpočty nebo jako grafově orientovanou databázi. Přejmenování se týká pouze prvků značky. Struktura projektu, cíle a tým zůstávají stejné. Nástroje a knihovny v novém vydání byly přejmenovány, ale pro zajištění zpětné kompatibility byla zachována možnost použití starých názvů prostřednictvím symbolických odkazů a wrapperů.
Projekt se vyvíjí jako nadstavba nad PostgreSQL, implementující 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 kritické části pro výkon) a je distribuován pod licencí Apache 2.0. Klientské knihovny jsou k dispozici pro jazyky Python, Go, Rust, .NET, Elixir a TypeScript/Javascript. Je k dispozici nástroj pro příkazový řádek pro správu databáze a interaktivní provádění dotazů (REPL).
Místo modelu dat založeného na tabulkách používá Gel deklarativní systém založený na objektových typech. Místo cizích klíčů (foreign key) pro určení vztahu mezi typy se používá vazba pomocí odkazů (jeden objekt může být použit jako vlastnost jiného objektu).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Podporovány jsou funkce jako přísná typizace vlastností, omezení hodnot vlastností, vypočítané vlastnosti a uložené procedury. Zajímavostí objektové schéma uložení Gel, které se částečně podobá ORM, je možnost mísení schémat, vazby vlastností z různých objektů a integrovaná podpora JSON. Pro urychlení zpracování dotazů mohou být použity indexy.
Jsou poskytovány integrované nástroje pro migraci schématu uložení — po úpravě schématu stanoveného v samostatném esdl souboru stačí provést příkaz "gel migration create" a databáze analyzuje rozdíly ve schématu a v interaktivním režimu vygeneruje skript pro přechod na nové schéma. Automaticky je sledována historie změn schématu.
Pro dotazování se podporuje jazyk dotazů GraphQL a vlastní jazyk EdgeQL, což je adaptace SQL pro hierarchická data. Místo seznamů jsou výsledky dotazu uspořádané ve strukturované podobě, a místo poddotazů a operací JOIN je možné uvést jeden dotaz EdgeQL jako výraz uvnitř jiného dotazu. Podporují se 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’ } ) }
Hlavní změny v Gel 6.0:
- Byla přidána možnost používání tradičních SQL dotazů při připojení k DBMS pomocí protokolu Gel nebo v režimu protokolu PostgreSQL. Předpokládá se, že podpora SQL usnadní migraci na Gel stávajících projektů, které lze postupně převádět z SQL, zatímco se stále používají staré SQL klienti a SQL ORM. Projekty, které původně používaly EdgeQL, budou schopny využívat další funkce, které jsou v SQL dostupné, ale zatím neimplementované v EdgeQL, jako jsou oknové funkce, rekurzivní dotazy a explicitní zámky.
- Byla přidána podpora pro aktualizaci na místě, která nevyžaduje vytváření a opětovné nahrávání dumpu databáze při přechodu na nové významné vydání. Při aktualizaci z EdgeDB 5.x na Gil 6.0 je třeba použít starou metodu, ale při přechodu na Gil 6.x na 7.0 opětovné nahrávání dumpu nebude potřeba.
- Bylo zajištěno uchování statistik o výkonnosti dotazů, které jsou dostupné prostřednictvím objektů sys::QueryStats.
- Byla přidána podpora PostgreSQL rozšíření PostGIS pro ukládání prostorových dat používaných v geografických informačních systémech.
- Byla přidána knihovna std::net pro odesílání síťových dotazů (podporováno HTTP) v asynchronním režimu.
- K rozšíření ext::auth byla přidána podpora pro nastavení poskytovatelů OpenID Connect.
- Ve rozšíření ext::ai byl aktualizován seznam podporovaných velkých jazykových modelů od OpenAI, Anthropic a Mistral.
- Byla poskytnuta možnost připojení dalších zpracovatelů pro příkazy v utilitě gel.
- V EdgeQL byla zjednodušená sémantika pro nalezení cest mezi uzly grafu.
- Do gel.toml byla přidána konfigurace „[[watch]]“, která umožňuje spouštění skriptů při změně uvedených souborů.
- V ORM Drizzle byla realizována podpora pro Gel.
Zdroj: opennet.ru
