Paglabas ng relational graph na DBMS EdgeDB 2.0

Ang paglabas ng EdgeDB 2.0 DBMS ay ipinakita, na nagpapatupad ng relational graph data model at ang EdgeQL query language, na na-optimize para sa pagtatrabaho sa kumplikadong hierarchical data. Ang code ay nakasulat sa Python at Rust (parser at mga bahaging kritikal sa pagganap) at ipinamamahagi sa ilalim ng lisensya ng Apache 2.0. Ang proyekto ay binuo bilang isang add-on para sa PostgreSQL. Ang mga library ng kliyente ay inihanda para sa Python, Go, Rust at TypeScript/Javascript. Nagbibigay ng mga tool sa command line para sa pamamahala ng DBMS at interactive query execution (REPL).

Sa halip na modelo ng data na nakabatay sa talahanayan, gumagamit ang EdgeDB ng isang sistemang deklaratibo batay sa mga uri ng bagay. Sa halip na mga dayuhang key, ang pag-link sa pamamagitan ng sanggunian ay ginagamit upang tukuyin ang kaugnayan sa pagitan ng mga uri (ang isang bagay ay maaaring gamitin bilang isang pag-aari ng isa pang bagay).

uri Tao { kinakailangang pangalan ng ari-arian -> str; } uri ng Pelikula { kinakailangang pamagat ng ari-arian -> str; multi link na aktor -> Tao; }

Maaaring gamitin ang mga index upang mapabilis ang pagproseso ng query. Sinusuportahan din ang mga feature tulad ng malakas na pag-type ng ari-arian, mga paghihigpit sa halaga ng ari-arian, mga nakalkulang katangian, at mga nakaimbak na pamamaraan. Kasama sa mga feature ng EdgeDB object storage scheme, na medyo nakapagpapaalaala sa isang ORM, ang kakayahang maghalo ng mga schema, mag-link ng mga property mula sa iba't ibang object, at pinagsama-samang suporta sa JSON.

Ang mga built-in na tool ay ibinigay para sa pag-imbak ng schema migration - pagkatapos baguhin ang schema na tinukoy sa isang hiwalay na esdl file, patakbuhin lang ang command na "edgedb migration create" at susuriin ng DBMS ang mga pagkakaiba sa schema at interactive na bubuo ng script para sa paglipat sa bagong schema. Awtomatikong sinusubaybayan ang kasaysayan ng mga pagbabago sa schema.

Upang makabuo ng mga query, pareho ang GraphQL query language at ang proprietary EdgeDB language, na isang adaptasyon ng SQL para sa hierarchical data, ay sinusuportahan. Sa halip na mga listahan, ang mga resulta ng query ay naka-format sa isang structured na paraan, at sa halip na mga subquery at JOIN, maaari mong tukuyin ang isang EdgeQL query bilang isang expression sa loob ng isa pang query. Sinusuportahan ang mga transaksyon at cycle.

piliin ang Pelikula { pamagat, aktor: { pangalan } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", mga aktor := ( piliin ang Person filter .name sa { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } para sa numero sa {0, 1, 2, 3} unyon ( piliin ang { number, number + 0.5 } );

Sa bagong bersyon:

  • Ang isang built-in na web interface ay idinagdag para sa pangangasiwa ng database, na nagbibigay-daan sa iyong tingnan at i-edit ang data, patakbuhin ang mga query sa EdgeQL at pag-aralan ang ginamit na scheme ng imbakan. Ang interface ay inilunsad ng "edgedb ui" na utos, pagkatapos nito ay magiging available kapag ina-access ang localhost.
    Paglabas ng relational graph na DBMS EdgeDB 2.0
  • Ang expression na "GROUP" ay ipinatupad, na nagbibigay-daan sa iyo na hatiin at pagsama-samahin ang data at data ng pangkat gamit ang mga arbitrary na expression ng EdgeQL, katulad ng pagpapangkat sa isang SELECT operation.
  • Kakayahang kontrolin ang pag-access sa antas ng bagay. Tinutukoy ang mga panuntunan sa pag-access sa antas ng schema ng storage at nagbibigay-daan sa iyong limitahan ang kakayahang gumamit ng ilang partikular na hanay ng mga bagay sa mga operasyon ng pagkuha, pagpasok, pagtanggal, at pag-update. Halimbawa, maaari kang magdagdag ng panuntunan na nagbibigay-daan lamang sa may-akda na mag-update ng publikasyon.
  • Nagdagdag ng kakayahang gumamit ng mga pandaigdigang variable sa schema ng storage. Ang isang bagong pandaigdigang variable na current_user ay iminungkahi upang maiugnay sa gumagamit.
  • Nagdagdag ng suporta para sa mga uri na tumutukoy sa mga hanay ng mga halaga.
  • Isang opisyal na library ng kliyente para sa Rust na wika ang inihanda.
  • Ang EdgeDB binary protocol ay na-stabilize, na ginagawang posible na iproseso ang ilang iba't ibang mga session nang sabay-sabay sa loob ng parehong koneksyon sa network, pagpapasa sa pamamagitan ng HTTP, gamit ang mga global variable at lokal na estado.
  • Nagdagdag ng suporta para sa pag-activate ng socket, na nagbibigay-daan sa iyo na huwag panatilihing nasa memorya ang handler ng server at patakbuhin lamang ito kapag sinusubukang magtatag ng isang koneksyon (kapaki-pakinabang para sa pag-save ng mga mapagkukunan sa mga system ng developer).

Pinagmulan: opennet.ru

Magdagdag ng komento