Vývojári databázového systému EdgeDB oznámili premenovanie projektu na Gel. Súčasne bol predložený nový významný release — Gel 6.0. Dôvodom zmeny názvu je snaha zbaviť sa zavádzajúcich konotácií spojených s použitím slova „edge“, v dôsledku čoho mnohí projekt vnímajú ako databázový systém pre edge počítanie alebo ako grafovo orientovaný databázový systém. Premenovanie sa týka len prvkov značky. Štruktúra projektu, ciele a tím zostali rovnaké. Nástroje a knižnice v novom vydaní boli premenované, ale pre zabezpečenie spätnej kompatibility bola zachovaná možnosť používania starých názvov prostredníctvom symbolických odkazov a obalov.
Projekt sa vyvíja vo forme nadstavby nad PostgreSQL, implementujúcej relačno-grafový model dát a jazyk dopytov EdgeQL, optimalizovaný na prácu so zložitými hierarchickými dátami. Kód je napísaný v jazykoch Python a Rust (parser a výkonnostne kritické časti) a je distribuovaný pod licenciou Apache 2.0. Klientské knižnice sú pripravené pre jazyky Python, Go, Rust, .NET, Elixir a TypeScript/Javascript. K dispozícii je príkazový riadok na správu databázového systému a interaktívne vykonávanie dopytov (REPL).
Namiesto tabuľkového modelu dát sa v Geli používa deklaratívny systém založený na objektných typoch. Namiesto cudzích kľúčov (foreign key) na definovanie vzťahov medzi typmi sa používa prepojenie pomocou odkazov (jeden objekt sa môže používať ako vlastnosť iného objektu).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Podporujú sa funkcie ako prísne typovanie vlastností, obmedzenia hodnôt vlastností, vypočítavané vlastnosti a uložené procedúry. Zaujímavou vlastnosťou objektovej schémy ukladania Gel, ktorá pripomína ORM, je možnosť miešať schémy, prepojiť vlastnosti z rôznych objektov a integrovaná podpora JSON. Na urýchlenie spracovania dopytov je možné použiť indexy.
Sú k dispozícii vstavané nástroje na migráciu schémy ukladania — po zmene schémy definovanej v samostatnom esdl súbore stačí vykonať príkaz „gel migration create“ a databázový systém analyzuje rozdiely v schéme a interaktívne vygeneruje skript na prechod na novú schému. Automaticky sa sleduje história zmien schémy.
Na tvorbu dopytov je podporovaný jazyk dopytov GraphQL a vlastný jazyk EdgeQL, ktorý predstavuje adaptáciu SQL pre hierarchické údaje. Namiesto zoznamov sú výsledky dopytov zobrazené v štruktúrovanej podobe, a namiesto poddopytov a operácií JOIN je poskytnutá možnosť uvádzať jeden dopyt EdgeQL ako výraz v rámci iného dopytu. Podporujú sa transakcie a cykly.
vyber Film { názov, herci: { meno } } filtrovať .názov = „The Matrix“ vložiť Film { názov := „The Matrix Resurrections“, herci := ( vyber Osoba filtrovať .meno v { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) }
Hlavné zmeny v Gel 6.0:
- Pridaná možnosť používania tradičných SQL dopytov pri pripojení k DBMS prostredníctvom protokolu Gel alebo v režime protokolu PostgreSQL. Predpokladá sa, že podpora SQL uľahčí migráciu na Gel existujúcich projektov, ktoré teraz môžu byť postupne prevedené z SQL, pričom budú pokračovať v používaní starých SQL klientov a SQL ORM. Projekty, ktoré pôvodne používali EdgeQL, budú môcť využiť ďalšie možnosti, ktoré sú dostupné v SQL, ale zatiaľ nie sú realizované v EdgeQL, ako napríklad okrajové funkcie, rekurzívne dopyty a explicitné zámky.
- Pridaná podpora aktualizácie na mieste, ktorá nevyžaduje vytváranie a opätovné nahrávanie dumpu DB pri prechode na nový významný release. Pri aktualizácii z EdgeDB 5.x na Gil 6.0 je potrebné použiť starú metódu, ale pri prechode z Gil 6.x na 7.0 nebude potrebné opätovné nahrávanie dumpu.
- Zabezpečené uchovávanie štatistiky o výkonnosti dopytov, ktorá je dostupná prostredníctvom objektov sys::QueryStats.
- Pridaná podpora pre rozšírenia PostgreSQL PostGIS na ukladanie priestorových údajov používaných v geografických informačných systémoch.
- Pridaná knižnica std::net na odosielanie sieťových dopytov (podporovaný je HTTP) v asynchrónnom režime.
- Okrem ext::auth bola pridaná podpora nastavenia poskytovateľov OpenID Connect.
- V doplnku ext::ai bol aktualizovaný zoznam podporovaných veľkých jazykových modelov od OpenAI, Anthropic a Mistral.
- Poskytnutá možnosť pripojenia ďalších spracovateľov pre príkazy v utilite gel.
- V EdgeQL bola zjednodušená sémantika na nájdenie ciest medzi uzlami grafu.
- V gel.toml bola pridaná konfigurácia „[[watch]]“, ktorá umožňuje spúšťať skripty pri zmene určených súborov.
- V ORM Drizzle bola implementovaná podpora Gel.
Zdroj: opennet.ru
