Pierwsza stabilna wersja relacyjnego wykresu DBMS EdgeDB

Dostępna jest pierwsza stabilna wersja EdgeDB DBMS, która jest dodatkiem do PostgreSQL z implementacją relacyjnego modelu danych grafowych i języka zapytań EdgeQL, zoptymalizowanego do pracy ze złożonymi danymi hierarchicznymi. Kod napisany jest w językach Python i Rust i jest rozpowszechniany na licencji Apache 2.0. Biblioteki klienckie przygotowane są dla Pythona, Go, Rusta i TypeScript/Javascript. Udostępnia narzędzia wiersza poleceń do zarządzania systemem DBMS i interaktywnego wykonywania zapytań (REPL).

Zamiast modelu danych opartego na tabelach, EdgeDB używa systemu deklaratywnego opartego na typach obiektów. Zamiast kluczy obcych do definiowania relacji między typami stosuje się łączenie przez referencję (jeden obiekt może być używany jako właściwość innego obiektu). wpisz Osoba { wymagana nazwa właściwości -> str; } wpisz Film { wymagany tytuł właściwości -> str; aktorzy z wieloma linkami -> Osoba; }

Indeksy można wykorzystać do przyspieszenia przetwarzania zapytań. Obsługiwane są także funkcje, takie jak silne typowanie właściwości, ograniczenia wartości właściwości, właściwości obliczane i procedury składowane. Funkcje schematu obiektowego przechowywania danych EdgeDB, który nieco przypomina ORM, obejmują możliwość mieszania schematów, łączenia właściwości różnych obiektów i zintegrowaną obsługę JSON.

Dostępne są wbudowane narzędzia do przechowywania migracji schematu - po zmianie schematu określonego w osobnym pliku esdl wystarczy uruchomić komendę „edgedb migracja create”, a DBMS przeanalizuje różnice w schemacie i interaktywnie wygeneruje skrypt migracji do nowy schemat. Historia zmian schematu jest śledzona automatycznie.

Do generowania zapytań obsługiwany jest zarówno język zapytań GraphQL, jak i autorski język EdgeDB, będący adaptacją SQL dla danych hierarchicznych. Zamiast list wyniki zapytań są formatowane w sposób ustrukturyzowany, a zamiast podzapytań i JOINów można określić jedno zapytanie EdgeQL jako wyrażenie w innym zapytaniu. Obsługiwane są transakcje i cykle. wybierz Film { tytuł, aktorzy: { imię } } filter .title = „Matrix” wstaw Film { tytuł := „Wskrzeszenia Matrixa”, aktorzy := ( wybierz Filtr osoby .name w { „Keanu Reeves”, „Carrie- Anne Moss', 'Laurence Fishburne' } ) } dla liczby w związku {0, 1, 2, 3} ( wybierz { liczba, liczba + 0.5 } );

Źródło: opennet.ru

Dodaj komentarz