Lëshimi i bazës së të dhënave relacional-grafike EdgeDB 2.0

U lansimin e EdgeDB 2.0, një sistem menaxhimi të bazës së të dhënave që implementon një model të dhënash relacional-grafik dhe gjuhën e pyetjeve EdgeQL, të optimizuar për punë me të dhëna komplekse hierarkike. Kodi është shkruar në gjuhët Python dhe Rust (parseri dhe pjesët kritike për performancën) dhe shpërndahet nën licencën Apache 2.0. Projekti zhvillohet si një shtesë mbi PostgreSQL. Bibliotekat klient janë përgatitur për gjuhët Python, Go, Rust dhe TypeScript/Javascript. Ofron një mjet komandë për administrimin e SGBD-së dhe ekzekutimin interaktiv të pyetjeve (REPL).

Në EdgeDB, në vend të modelit të të dhënave të bazuara në tabela, përdoret një sistem deklarativ i bazuar në tipa objektesh. Në vend të çelësave të jashtëm (foreign key) për të përkufizuar lidhjet mes tipave, është e mundur të lidhen përmes lidhjeve (një objekt mund të përdoret si një pronë e një objekti tjetër).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Indekset mund të përdoren për të përshpejtuar përpunimin e kërkesave. Mbështeten gjithashtu mundësi të tilla si tipizimi i rigoroz i pronave, kufizimet e vlerave të pronave, pronat e llogaritur dhe procedurat e ruajtura. Një nga veçoritë e skemës objektike të ruajtjes EdgeDB, e cila ngjan disi me ORM, është mundësia e përzierjes së skemave, lidhjes së pronave nga objekte të ndryshme dhe mbështetje e integruar për JSON.

Ofrohen mjete tĂ« integruara pĂ«r migrimin e skemĂ«s sĂ« ruajtjes — pas ndryshimit tĂ« skemĂ«s, tĂ« pĂ«rcaktuar nĂ« njĂ« skedĂ« tĂ« veçantĂ« esdl, mjafton tĂ« ekzekutohet komanda "edgedb migration create" dhe DBMS do tĂ« analizohet ndryshimet nĂ« skemĂ« dhe do tĂ« gjenerojĂ« njĂ« skenar pĂ«r kalimin nĂ« skemĂ«n e re nĂ« mĂ«nyrĂ« interaktive. Historiku i ndryshimeve tĂ« skemĂ«s Ă«shtĂ« i monitoruar automatikisht.

Për formimin e pyetjeve, mbështetet si gjuha e pyetjeve GraphQL ashtu edhe gjuha e vet EdgeDB, e cila është një adaptim i SQL për të dhëna hierarkike. Në vend të listave, rezultatet e pyetjes paraqiten në një format të strukturuar, dhe në vend të nënpyetjeve dhe operacioneve JOIN, ofrohet mundësia për të caktuar një pyetje EdgeQL si një shprehje brenda një pyetje tjetër. Mbështeten transaksionet dhe ciklet.

select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( select Person filter .name in { 'Keanu Reeves', 'Carrie-Anne Moss', 'Laurence Fishburne' } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

Në këtë version të ri:

  • Shtuar njĂ« ndĂ«rfaqe tĂ« integruar web pĂ«r administrimin e DB, e cila lejon shikimin dhe redaktimin e tĂ« dhĂ«nave, ekzekutimin e pyetjeve EdgeQL dhe analizimin e skemĂ«s sĂ« ruajtjes sĂ« pĂ«rdorur. NdĂ«rfaqja aktivizohet me komandĂ«n "edgedb ui", pas sĂ« cilĂ«s bĂ«het e aksesueshme duke iu drejtuar localhost.
    Lëshimi i bazës së të dhënave relacional-grafike EdgeDB 2.0
  • Implementuar shprehja "GROUP", e cila lejon seksionimin dhe agregimin e tĂ« dhĂ«nave dhe kryerjen e grupimeve tĂ« tĂ« dhĂ«nave sipas shprehjeve tĂ« rastit EdgeQL, ngjashĂ«m me grupimin nĂ« operacionin SELECT.
  • MundĂ«sia pĂ«r tĂ« menaxhuar qasjen nĂ« nivelin e objekteve. Rregullat e qasjes pĂ«rcaktohen nĂ« nivelin e skemĂ«s sĂ« ruajtjes dhe lejojnĂ« kufizimin e mundĂ«sisĂ« pĂ«r tĂ« pĂ«rdorur njĂ« grup tĂ« caktuar objektesh nĂ« operacionet e zgjedhjes, inserimit, fshirjes dhe pĂ«rditĂ«simit. PĂ«r shembull, Ă«shtĂ« e mundur tĂ« shtoni njĂ« rregull qĂ« lejon pĂ«rditĂ«simin e publikimit vetĂ«m nga autori.
  • Shtuar mundĂ«sia e pĂ«rdorimit tĂ« variablave global nĂ« skemĂ«n e ruajtjes. PĂ«r lidhjen me pĂ«rdoruesin Ă«shtĂ« ofruar njĂ« variabĂ«l global e re current_user.
  • Shtuar mbĂ«shtetje pĂ«r tipa qĂ« pĂ«rcaktojnĂ« intervale vlerash (range).
  • PĂ«rgatitur njĂ« bibliotekĂ« zyrtare klienti pĂ«r gjuhĂ«n Rust.
  • Stabilizuar protokollin binar tĂ« EdgeDB, nĂ« tĂ« cilin tani Ă«shtĂ« e mundur tĂ« pĂ«rpunoni njĂ«kohĂ«sisht disa seanca tĂ« ndryshme brenda njĂ« lidhjeje rrjeti, duke kaluar pĂ«rmes HTTP, duke pĂ«rdorur variabla global dhe gjendje lokale.
  • Shtuar mbĂ«shtetje pĂ«r aktivizim pĂ«rmes soketit, duke lejuar qĂ« procesori server tĂ« mos mbahen nĂ« memorie dhe tĂ« aktivizohet vetĂ«m kur pĂ«rpiqet tĂ« vendosĂ« njĂ« lidhje (e dobishme pĂ«r kursimin e burimeve nĂ« sistemet e zhvilluesve).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster