Vydanie relačného grafu DBMS EdgeDB 2.0

Predstavuje sa vydanie EdgeDB 2.0 DBMS, ktoré implementuje dátový model relačného grafu a dotazovací jazyk EdgeQL, optimalizovaný pre prácu s komplexnými hierarchickými dátami. Kód je napísaný v jazykoch Python a Rust (analyzátor a časti kritické pre výkon) a je distribuovaný pod licenciou Apache 2.0. Projekt je vyvíjaný ako doplnok pre PostgreSQL. Klientske knižnice sú pripravené pre Python, Go, Rust a TypeScript/Javascript. Poskytuje nástroje príkazového riadka na správu DBMS a vykonávanie interaktívnych dotazov (REPL).

Namiesto tabuľkového dátového modelu používa EdgeDB deklaratívny systém založený na typoch objektov. Namiesto cudzích kľúčov sa na definovanie vzťahu medzi typmi používa prepojenie odkazom (jeden objekt môže byť použitý ako vlastnosť iného objektu).

typ Osoba { požadovaný názov vlastnosti -> str; } type Movie { požadovaný názov vlastnosti -> str; multi link aktéri -> Osoba; }

Indexy možno použiť na urýchlenie spracovania dotazov. Podporované sú aj funkcie ako silné typovanie vlastností, obmedzenia hodnoty vlastností, vypočítané vlastnosti a uložené procedúry. Funkcie schémy ukladania objektov EdgeDB, ktorá trochu pripomína ORM, zahŕňajú schopnosť miešať schémy, vlastnosti prepojenia z rôznych objektov a integrovanú podporu JSON.

Na ukladanie migrácie schémy sú k dispozícii vstavané nástroje – po zmene schémy špecifikovanej v samostatnom súbore esdl stačí spustiť príkaz „edgedb Migration create“ a DBMS analyzuje rozdiely v schéme a interaktívne vygeneruje skript na migráciu na nová schéma. História zmien schémy je automaticky sledovaná.

Na generovanie dotazov je podporovaný dotazovací jazyk GraphQL aj proprietárny jazyk EdgeDB, ktorý je prispôsobením SQL pre hierarchické údaje. Namiesto zoznamov sú výsledky dotazov naformátované štruktúrovaným spôsobom a namiesto poddotazov a JOINov môžete zadať jeden dotaz EdgeQL ako výraz v rámci iného dotazu. Transakcie a cykly sú podporované.

select Movie { title, herci: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", herci := ( select Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } pre číslo v spojení {0, 1, 2, 3} ( vyberte { číslo, číslo + 0.5 } );

V novej verzii:

  • Pre správu databázy bolo pridané vstavané webové rozhranie, ktoré umožňuje prezerať a upravovať dáta, spúšťať EdgeQL dotazy a analyzovať použitú schému ukladania. Rozhranie sa spúšťa príkazom „edgedb ui“, po ktorom sa sprístupní pri prístupe k localhost.
    Vydanie relačného grafu DBMS EdgeDB 2.0
  • Bol implementovaný výraz „GROUP“, ktorý vám umožňuje rozdeliť a agregovať údaje a zoskupiť údaje pomocou ľubovoľných výrazov EdgeQL, podobne ako zoskupovanie v operácii SELECT.
  • Schopnosť riadiť prístup na úrovni objektu. Pravidlá prístupu sú definované na úrovni schémy úložného priestoru a umožňujú vám obmedziť schopnosť používať určitú množinu objektov v operáciách načítania, vloženia, vymazania a aktualizácie. Môžete napríklad pridať pravidlo, ktoré umožňuje aktualizovať publikáciu iba autorovi.
  • Pridaná možnosť používať globálne premenné v schéme úložiska. Bola navrhnutá nová globálna premenná current_user, ktorá sa má viazať na používateľa.
  • Pridaná podpora pre typy, ktoré definujú rozsahy hodnôt.
  • Bola pripravená oficiálna knižnica klientov pre jazyk Rust.
  • Binárny protokol EdgeDB bol stabilizovaný, čo umožňuje spracovávať niekoľko rôznych relácií súčasne v rámci toho istého sieťového pripojenia, preposielať cez HTTP, pomocou globálnych premenných a lokálnych stavov.
  • Pridaná podpora pre aktiváciu soketu, ktorá vám umožňuje neudržiavať obslužný program servera v pamäti a spúšťať ho iba pri pokuse o nadviazanie spojenia (užitočné na šetrenie zdrojov na vývojárskych systémoch).

Zdroj: opennet.ru

Pridať komentár