Programiści systemu baz danych EdgeDB ogłosili zmianę nazwy projektu na Gel. Równocześnie wprowadzono nową, znaczącą wersję — Gel 6.0. Jako powód zmiany nazwy podano chęć pozbycia się mylących konotacji związanych z używaniem słowa „edge”, przez co wiele osób postrzega projekt jako system baz danych dla obliczeń krawędziowych lub jako system baz danych zorientowany na grafy. Zmiana nazwy dotyczyła jedynie elementów marki. Struktura projektu, cele i zespół pozostają bez zmian. Narzędzia i biblioteki w nowym wydaniu zostały przemianowane, ale dla zapewnienia kompatybilności wstecznej zachowano możliwość używania starych nazw za pomocą dowiązań symbolicznych i opakowań.
Projekt rozwija się jako nakładka na PostgreSQL, realizująca model danych relacyjno-grafowych oraz język zapytań EdgeQL, zoptymalizowany do pracy ze złożonymi danymi hierarchicznymi. Kod został napisany w językach Python i Rust (parser oraz krytyczne części wydajnościowe) i jest rozpowszechniany na licencji Apache 2.0. Biblioteki klienckie przygotowano dla języków Python, Go, Rust, .NET, Elixir i TypeScript/Javascript. Oferowane jest narzędzie wiersza poleceń do zarządzania systemem baz danych oraz interaktywnego wykonywania zapytań (REPL).
W Gel zastosowano deklaracyjny system oparty na typach obiektowych, zamiast modelu danych opartego na tabelach. Zamiast kluczy obcych (foreign key) do definiowania relacji między typami używane jest powiązanie za pomocą referencji (jeden obiekt może być używany jako właściwość innego obiektu).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Wsparcie dla takich funkcji jak ścisła typizacja właściwości, ograniczenia wartości właściwości, właściwości obliczeniowe oraz procedury składowane. Z cech schematu obiektowego przechowywania Gel, który przypomina ORM, zauważa się możliwość mieszania schematów, powiązania właściwości z różnych obiektów oraz zintegrowane wsparcie dla JSON. Aby przyspieszyć przetwarzanie zapytań, mogą być stosowane indeksy.
Dostarczane są wbudowane narzędzia do migracji schematu przechowywania — po zmianie schematu zdefiniowanego w osobnym pliku esdl wystarczy wykonać polecenie „gel migration create”, a SGBD przeanalizuje różnice w schemacie i w trybie interaktywnym wygeneruje skrypt do przejścia na nowy schemat. Historia zmian schematu jest automatycznie śledzona.
Do tworzenia zapytań wspierany jest język zapytań GraphQL oraz własny język EdgeQL, będący adaptacją SQL do danych hierarchicznych. Zamiast list wyniki zapytania są przedstawiane w zorganizowanej formie, a zamiast podzapytań i operacji JOIN istnieje możliwość wskazania jednego zapytania EdgeQL jako wyrażenia wewnątrz innego zapytania. Wspierane są transakcje i pętle.
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’ } ) }
Główne zmiany w Gel 6.0:
- Dodano możliwość korzystania z tradycyjnych zapytań SQL przy łączeniu z SGBD za pomocą protokołu Gel lub w trybie protokołu PostgreSQL. Zakłada się, że wsparcie SQL uprości migrację istniejących projektów na Gel, które można teraz stopniowo przenosić z SQL, kontynuując korzystanie ze starych klientów SQL i SQL ORM. Projekty, które pierwotnie używały EdgeQL, będą mogły wykorzystać dodatkowe możliwości dostępne w SQL, które jeszcze nie zostały zaimplementowane w EdgeQL, takie jak funkcje okienne, zapytania rekurencyjne i jawne blokady.
- Dodano wsparcie dla aktualizacji na miejscu, które nie wymaga tworzenia i ponownego ładowania zrzutu bazy danych podczas przejścia na nowy znaczący wydanie. Przy aktualizacji z EdgeDB 5.x do Gil 6.0 należy korzystać ze starej metody, ale przy przejściu z Gil 6.x na 7.0 zrzut nie będzie wymagany.
- Zapewniono zachowanie statystyk dotyczących wydajności zapytań, które są dostępne przez obiekty sys::QueryStats.
- Dodano wsparcie dla rozszerzenia PostgreSQL PostGIS do przechowywania danych przestrzennych wykorzystywanych w systemach informacji geografik.
- Dodano bibliotekę std::net do wysyłania zapytań sieciowych (wspierane HTTP) w trybie asynchronicznym.
- W dodatku do ext::auth dodano wsparcie dla konfiguracji dostawców OpenID Connect.
- W dodatku ext::ai zaktualizowano listę wspieranych dużych modeli językowych od OpenAI, Anthropic i Mistral.
- Dodano możliwość podłączania dodatkowych obsługujących poleceń w narzędziu gel.
- W EdgeQL uproszczono semantykę do znajdowania ścieżek pomiędzy węzłami grafu.
- W gel.toml dodano ustawienie „[[watch]]”, które pozwala na uruchamianie skryptów przy zmianach wskazanych plików.
- W ORM Drizzle wprowadzono wsparcie dla Gel.
Źródło: opennet.ru
