EdgeDB, isang graph relational data DBMS

Kamakailan lamang ang paglabas ng DBMS «EdgeDB 2.0» ay inihayag, na nagpapatupad ng relational graph relational data model at EdgeQL query language, na na-optimize para sa pagtatrabaho sa kumplikadong hierarchical data.

Ang EdgeDB ay isang open source database na idinisenyo bilang isang espirituwal na kahalili sa SQL at ang relational na paradigm. Ang layunin nito ay lutasin ang ilang mahihirap na problema sa disenyo na ginagawang hindi kinakailangang mabigat na gamitin ang mga umiiral nang database.

Pinapatakbo ng Postgres query engine sa ilalim ng hood, iniisip ng EdgeDB ang schema sa parehong paraan na ginagawa mo: bilang mga bagay na may mga katangian na konektado ng mga binding. Ito ay tulad ng isang relational database na may object-oriented na data model o isang graph database na may mahigpit na schema. Tinatawag namin itong relational database ng mga graph.

Tungkol sa EdgeDB

Ang proyekto ay binuo bilang isang plugin para sa PostgreSQL. Ang mga library ng kliyente ay inihanda para sa Python, Go, Rust at TypeScript/Javascript na mga wika.

Sa halip na isang modelo ng data na nakabatay sa talahanayan, ang EdgeDB gumagamit ng isang sistemang deklaratibo batay sa mga uri ng bagay. Sa halip na mga dayuhang susi (banyagang susi) upang matukoy ang kaugnayan sa pagitan ng mga uri ng reference binding ay ginagamit (ang isang bagay ay maaaring gamitin bilang isang ari-arian ng isa pang bagay).

Maaaring gamitin ang mga index upang mapabilis ang pagproseso ng query. Gayundin sinusuportahan ang mga feature gaya ng malakas na pag-type ng property, mga hadlang sa halaga ng ari-arian, nakalkula na mga katangian, at mga nakaimbak na pamamaraan. Ang ilan sa mga feature ng EdgeDB object storage schema, medyo nakapagpapaalaala sa ORM, ay kinabibilangan ng kakayahang maghalo ng mga schema, magbigkis ng mga katangian ng iba't ibang object, at suporta para sa naka-embed na JSON.

Ang mga built-in na tool ay ibinigay upang lumipat ang storage schema: 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 bubuo ng script nang interactive. upang lumipat sa bagong schema. Awtomatikong sinusubaybayan ang kasaysayan ng pagbabago ng schema.

Para sa pagtatanong, ang GraphQL query language at ang bilang sarili nitong wika na EdgeDB, na isang adaptasyon ng SQL para sa hierarchical na data. Sa halip na mga listahan, may structured na format ang mga resulta ng query, at sa halip na mga subquery at JOIN, maaaring tukuyin ang isang EdgeQL query bilang expression sa loob ng isa pang query. Sinusuportahan ang mga transaksyon at cycle.

Pangunahing bagong tampok ng EdgeDB 2.0

Sa bagong bersyon na ipinakita, naidagdag ang pinagsamang web interface para sa pangangasiwa ng database nagbibigay-daan upang tingnan at i-edit ang data, magpatakbo ng mga query sa EdgeQL at pag-aralan ang storage scheme na ginamit. Ang interface ay nagsimula sa "edgedb ui" na utos, pagkatapos nito ay magagamit sa pamamagitan ng pag-access sa localhost.

Pagpapahayag Ipinatupad ang "GROUP" upang payagan ang paghati at pagsasama-sama ng data at pagpapangkat ng data gamit ang mga arbitrary na expression ng EdgeQL, katulad ng pagpapangkat sa isang SELECT operation.

Kakayahang kontrolin ang pag-access sa antas ng bagay, Ang mga panuntunan sa pag-access ay tinukoy sa antas ng schema ng imbakan at nagbibigay-daan sa iyong paghigpitan ang paggamit ng isang partikular na hanay ng mga bagay sa pagpili, pagpasok, pagtanggal, at pag-update ng mga operasyon. Halimbawa, maaari kang magdagdag ng panuntunan na nagbibigay-daan lamang sa may-akda na mag-update ng post.

Na-highlight din iyon dagdag na kakayahang gumamit ng mga global variable sa scheme ng imbakan. Upang maiugnay sa gumagamit, isang bagong pandaigdigang variable ang iminungkahi.

Sa iba pang mga pagbabago na namumukod-tangi:

  • Ang opisyal na library ng kliyente para sa Rust na wika ay inihanda na.
  • Ang EdgeDB binary protocol ay na-stabilize, kung saan naging posible na iproseso ang ilang magkakaibang session nang sabay-sabay sa loob ng parehong koneksyon sa network, pagpapasa sa HTTP, gamit ang mga global variable at lokal na estado.
  • Nagdagdag ng suporta para sa mga uri na tumutukoy sa mga hanay ng mga halaga (saklaw).
  • Nagdagdag ng suporta para sa pag-activate ng socket, na nagpapahintulot na huwag panatilihing memorya ang driver ng server at simulan lamang ito kapag sinusubukang magtatag ng isang koneksyon (kapaki-pakinabang para sa pag-save ng mga mapagkukunan sa mga sistema ng pag-unlad).

Sa wakas para sa mga interesadong malaman ang tungkol dito, dapat nilang malaman na ang code ay nakasulat sa Python at Rust at inilabas sa ilalim ng lisensya ng Apache 2.0.

Maaari mong malaman ang higit pa tungkol dito sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.