Pagpagawas sa relational graph nga DBMS EdgeDB 2.0

Ang pagpagawas sa EdgeDB 2.0 DBMS gipresentar, nga nag-implementar sa relational graph data model ug sa EdgeQL query nga pinulongan, nga gi-optimize alang sa pagtrabaho uban sa komplikadong hierarchical data. Ang code gisulat sa Python ug Rust (parser ug performance-critical nga mga bahin) ug giapod-apod ubos sa Apache 2.0 nga lisensya. Ang proyekto gipalambo isip usa ka add-on alang sa PostgreSQL. Ang mga librarya sa kliyente giandam alang sa Python, Go, Rust ug TypeScript/Javascript. Naghatag mga himan sa command line alang sa pagdumala sa DBMS ug interactive query execution (REPL).

Imbis nga modelo sa datos nga nakabase sa lamesa, ang EdgeDB naggamit sa usa ka deklaratibo nga sistema nga gibase sa mga tipo sa butang. Imbis sa mga langyaw nga yawe, ang pag-link pinaagi sa pakisayran gigamit aron mahibal-an ang relasyon tali sa mga tipo (ang usa ka butang mahimong magamit ingon usa ka kabtangan sa lain nga butang).

type Tawo {kinahanglan nga ngalan sa kabtangan -> str; } type Movie {kinahanglan nga titulo sa kabtangan -> str; multi link nga mga aktor -> Tawo; }

Ang mga indeks mahimong magamit aron mapadali ang pagproseso sa pangutana. Gisuportahan usab ang mga bahin sama sa lig-on nga pag-type sa kabtangan, mga pagdili sa kantidad sa kabtangan, gikalkula nga mga kabtangan, ug gitipigan nga mga pamaagi. Ang mga bahin sa EdgeDB object storage scheme, nga medyo makapahinumdom sa usa ka ORM, naglakip sa abilidad sa pagsagol sa mga schema, link nga mga kabtangan gikan sa lain-laing mga butang, ug integrated JSON nga suporta.

Ang mga built-in nga himan gihatag alang sa pagtipig sa schema migration - human mausab ang schema nga gitakda sa usa ka bulag nga esdl file, padagana lang ang "edgedb migration create" nga sugo ug ang DBMS mag-analisar sa mga kalainan sa schema ug interactive nga makamugna og script para sa paglalin ngadto sa bag-ong schema. Ang kasaysayan sa mga kausaban sa schema awtomatik nga gisubay.

Aron makamugna og mga pangutana, ang GraphQL query nga pinulongan ug ang proprietary EdgeDB nga pinulongan, nga usa ka adaptation sa SQL alang sa hierarchical data, gisuportahan. Imbis sa mga lista, ang mga resulta sa pangutana giporma sa usa ka structured nga paagi, ug imbes sa mga subquery ug JOINs, mahimo nimong ipiho ang usa ka EdgeQL nga pangutana isip usa ka ekspresyon sulod sa laing pangutana. Gisuportahan ang mga transaksyon ug mga siklo.

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

Sa bag-ong bersyon:

  • Gidugang ang usa ka built-in nga web interface alang sa pagdumala sa database, nga nagtugot kanimo sa pagtan-aw ug pag-edit sa datos, pagpadagan sa mga pangutana sa EdgeQL ug pag-analisar sa pamaagi sa pagtipig nga gigamit. Ang interface gilansad pinaagi sa "edgedb ui" nga mando, pagkahuman kini magamit kung mag-access sa localhost.
    Pagpagawas sa relational graph nga DBMS EdgeDB 2.0
  • Ang ekspresyon nga "GROUP" gipatuman, nga nagtugot kanimo sa pagbahin ug pag-aggregate sa datos ug grupo nga datos gamit ang arbitraryong EdgeQL nga mga ekspresyon, susama sa paggrupo sa usa ka SELECT nga operasyon.
  • Abilidad sa pagpugong sa pag-access sa lebel sa butang. Ang mga lagda sa pag-access gihubit sa lebel sa storage schema ug gitugotan ka nga limitahan ang abilidad sa paggamit sa usa ka piho nga hugpong sa mga butang sa pagkuha, pagsal-ot, pagtangtang, ug pag-update nga mga operasyon. Pananglitan, mahimo nimong idugang ang usa ka lagda nga nagtugot lamang sa tagsulat sa pag-update sa usa ka publikasyon.
  • Gidugang ang abilidad sa paggamit sa mga global variable sa laraw sa pagtipig. Usa ka bag-ong global variable current_user ang gisugyot nga igapos sa tiggamit.
  • Gidugang nga suporta alang sa mga tipo nga nagtino sa mga sakup sa mga kantidad.
  • Usa ka opisyal nga librarya sa kliyente alang sa Rust nga pinulongan giandam na.
  • Ang EdgeDB binary protocol na-stabilize, nga nagpaposible sa pagproseso sa daghang lain-laing mga sesyon nga dungan sulod sa samang koneksyon sa network, pagpasa pinaagi sa HTTP, gamit ang mga global variable ug lokal nga estado.
  • Gidugang nga suporta alang sa pagpaaktibo sa socket, nga nagtugot kanimo nga dili itago ang tigdumala sa server sa panumduman ug ipadagan kini kung gisulayan nga magtukod usa ka koneksyon (mapuslanon alang sa pagtipig sa mga kapanguhaan sa mga sistema sa developer).

Source: opennet.ru

Idugang sa usa ka comment