De ontwikkelaars van de DBMS EdgeDB hebben aangekondigd het project om te dopen naar Gel. Tegelijkertijd is er een belangrijke nieuwe release gevormd — Gel 6.0. De reden voor de naamsverandering is het verlangen om misleidende connotaties die ontstaan door het gebruik van het woord "edge" te vermijden, waardoor velen het project beschouwen als een DBMS voor edge-computing of als een graf-georiënteerde DBMS. De hernoeming heeft alleen de merkelementen geraakt. De structuur van het project, de doelen en het team zijn hetzelfde gebleven. Hulpprogramma's en bibliotheken in de nieuwe release zijn hernoemd, maar om backwards compatibility te waarborgen, blijven oude namen beschikbaar via symbolische links en wrappers.
Het project ontwikkelt zich in de vorm van een uitbreiding op PostgreSQL, die een relationeel-grafische datamodel en de querytaal EdgeQL implementeert, geoptimaliseerd voor het werken met complexe hiërarchische gegevens. De code is geschreven in Python en Rust (parser en prestatiekritieke delen) en wordt verspreid onder de Apache 2.0-licentie. Klantenbibliotheken zijn beschikbaar voor de programmeertalen Python, Go, Rust, .NET, Elixir en TypeScript/Javascript. Er is een commandoregeltoolkit beschikbaar voor het beheren van de DBMS en het interactief uitvoeren van queries (REPL).
In plaats van een op tabellen gebaseerde datamodel gebruikt Gel een declaratief systeem op basis van objecttypes. In plaats van foreign keys om de verbinding tussen types te definiëren, wordt linkbinding gebruikt (een object kan als eigenschap van een ander object worden gebruikt).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Er zijn mogelijkheden zoals strikte typisatie van eigenschappen, beperkingen van eigenschapswaarden, berekende eigenschappen en opgeslagen procedures. Kenmerkend voor het objectgeoriënteerde opslagschema van Gel, dat een beetje lijkt op ORM, is de mogelijkheid om schema's te mengen, eigenschappen van verschillende objecten te koppelen, en geïntegreerde ondersteuning voor JSON. Voor snellere verwerking van queries kunnen indexen worden gebruikt.
Er zijn ingebouwde tools voor het migreren van opslagstructuren — na het wijzigen van de structuur, zoals gedefinieerd in een aparte esdl-bestand, is het voldoende om het commando «gel migration create» uit te voeren en de database zal de verschillen in de structuur analyseren en een script genereren voor de overstap naar de nieuwe structuur in interactieve modus. De geschiedenis van de wijziging van de structuur wordt automatisch gevolgd.
Voor het vormen van verzoeken wordt de GraphQL-querytaal ondersteund, evenals de eigen EdgeQL-taal, die een aanpassing van SQL is voor hiërarchische gegevens. In plaats van lijsten, worden de resultaten van het verzoek gestructureerd weergegeven, en in plaats van subquery's en JOIN-operaties is het mogelijk om één EdgeQL-query als een expressie binnen een andere query op te geven. Transacties en lussen worden ondersteund.
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’ } ) }
Belangrijkste wijzigingen in Gel 6.0:
- De mogelijkheid om traditionele SQL-query's te gebruiken bij het verbinden met de database via het Gel-protocol of in de modus van het PostgreSQL-protocol is toegevoegd. De ondersteuning van SQL zal de migratie naar Gel van bestaande projecten vereenvoudigen, die nu geleidelijk van SQL kunnen worden overgezet, terwijl oude SQL-clients en SQL ORM's blijven worden gebruikt. Projecten die oorspronkelijk EdgeQL gebruiken, kunnen aanvullende mogelijkheden benutten die beschikbaar zijn in SQL, maar nog niet in EdgeQL zijn geïmplementeerd, zoals vensterfuncties, recursieve query's en expliciete sloten.
- Er is ondersteuning toegevoegd voor in-place updates, die geen dump van de database hoeven te maken en opnieuw te uploaden bij het overstappen naar een nieuwe significante release. Bij de update van EdgeDB 5.x naar Gil 6.0 moet de oude methode worden gebruikt, maar bij de overgang van Gil 6.x naar 7.0 is een herupload van de dump niet nodig.
- Er is behoud van statistieken van de query-prestaties gegarandeerd, die beschikbaar zijn via de sys::QueryStats objecten.
- Ondersteuning voor de PostgreSQL-extensie PostGIS voor het opslaan van ruimtelijke gegevens, gebruikt in geografische informatiesystemen, is toegevoegd.
- De std::net-bibliotheek is toegevoegd voor het verzenden van netwerkaanvragen (HTTP wordt ondersteund) in asynchrone modus.
- Ter aanvulling op ext::auth is ondersteuning toegevoegd voor de configuratie van OpenID Connect-providers.
- In de toevoeging ext::ai is de lijst met ondersteunde grote taalsystemen van OpenAI, Anthropic en Mistral bijgewerkt.
- De mogelijkheid om extra handlers voor commando's in de gel-tool te verbinden is beschikbaar gesteld.
- In EdgeQL is de semantiek vereenvoudigd voor het vinden van paden tussen knooppunten in de grafiek.
- In gel.toml is de instelling "[[watch]]" toegevoegd, waarmee scripts kunnen worden uitgevoerd bij wijzigingen in opgegeven bestanden.
- In de ORM Drizzle is ondersteuning voor Gel geïmplementeerd.
Bron: opennet.ru
