Lëshimi i DBMS rrelacionale-grafike EdgeDB 5.0.

ËshtĂ« nĂ« dispozicion versioni i sistemit tĂ« menaxhimit tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave EdgeDB 5.0, i cili implementon modelin relacional-grafik tĂ« tĂ« dhĂ«nave dhe gjuhĂ«n e pyetjeve EdgeQL, tĂ« optimizuara pĂ«r tĂ« punuar me tĂ« dhĂ«na hierarkike komplekse. Projekti zhvillohet si njĂ« shtresĂ« mbi PostgreSQL, dhe kodi i tij Ă«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. Bibliotekat klientitore janĂ« pĂ«rgatitur pĂ«r gjuhĂ«t Python, Go, Rust. .NET, Elixir dhe TypeScript/Javascript. Ofron njĂ« mjete komandash pĂ«r menaxhimin e bazĂ«s sĂ« tĂ« dhĂ«nave 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 name: str; } type Movie { required title: str; multi actors: Person; }

Përfshihen mundësi si tipizimi strikt i vetive, kufizimet e vlerave të vetive, vetitë e llogaritura dhe procedurat e ruajtura. Nga karakteristikat e strukturës objektore të EdgeDB, e cila ngjan disi me ORM, theksohet mundësia e përzierjes së skemave, lidhjes së vetive nga objekte të ndryshme dhe mbështetje e integruar për JSON. Për të aceleruar përpunimin e pyetjeve mund të përdoren indekse.

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 formësimin e pyetjeve përkrahet gjuha e pyetjeve GraphQL dhe gjuha e saj EdgeDB, e cila është një adaptim i SQL për të dhëna hierarkike. Në vend të listave, rezultatet e pyetjes formatohen në mënyrë strukturore, dhe në vend të nënpyetjeve dhe operacioneve JOIN, ofrohet mundësia e caktimit të 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’ } ) }

Në këtë version të ri:

  • Shtuar mbĂ«shtetje pĂ«r degĂ«zimin (branching), e cila lejon pĂ«rdorimin e konceptit tĂ« degĂ«ve gjatĂ« punĂ«s me tĂ« dhĂ«na dhe skema, tĂ« pĂ«rdorur nĂ« sistemet e menaxhimit tĂ« versioneve. NĂ« vend tĂ« termit "baza e tĂ« dhĂ«nave", nĂ« versionin e ri propozohet termi "dege" (branch), dhe komandat "create database" dhe "drop database" janĂ« shpallur tĂ« vjetruara dhe nĂ« vend tĂ« tyre rekomandohet pĂ«rdorimi i komandave tĂ« reja "create empty branch" dhe "drop branch". PĂ«rveç degĂ«ve tĂ« zbrazĂ«ta, me komandat "create schema branch" dhe "create data branch" mund tĂ« krijohen degĂ« nga degĂ«t dhe bazat ekzistuese, duke kopjuar nga ato skemĂ«n e ruajtjes dhe tĂ« dhĂ«nat.

    Nga një këndvështrim praktik, mbështetja për degëzimin lejon sinkronizimin e të dhënave me kodin që përdoret për përpunimin e tyre, duke ruajtur kështu përputhshmërinë me kodin e vjetër. Për shembull, pas përditësimit të kodit, është e mundur të lidhni një degë të re të të dhënave, e cila merr parasysh ndryshimet e bëra në skemën e ruajtjes. Kjo funksionalitet është e përshtatshme për të thjeshtuar zhvillimin dhe testimin e varianteve të reja të softuerit, pasi pas gatishmërisë së tyre mjafton të kaloni në degën e testuar.

  • NĂ« zgjerimin pgvector, i cili Ă«shtĂ« pĂ«rdorur pĂ«r ruajtjen dhe pyetjen efikase tĂ« vektorĂ«ve, Ă«shtĂ« shtuar njĂ« tip i ri indeksi HNSW (Hierarchical Navigable Small Worlds), i cili, ngjashĂ«m me indekset IVFFlat, Ă«shtĂ« i disponueshĂ«m nĂ« tri variante: ext::pgvector::hnsw_euclidean, ext::pgvector::hnsw_ip dhe ext::pgvector::hnsw_cosine. PĂ«r mĂ« tepĂ«r, nĂ« pgvector janĂ« zgjeruar mundĂ«sitĂ« pĂ«r pĂ«rshtatjen e hollĂ«sishme tĂ« indekseve pĂ«rmes objektit ext::pgvector::Config.
  • JanĂ« shtuar mundĂ«si tĂ« reja autentikimi. NĂ« zgjerimin auth Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r skemat pa fjalĂ«kalim tĂ« autentikimit WebAuthn (Passkeys) dhe "magjia lidhjet" (bazuar nĂ« email). ËshtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e platformave Slack dhe Discord si ofrues tĂ« OAuth.
  • JanĂ« bĂ«rĂ« optimizime pĂ«r performancĂ«n. NĂ« realizimin e caches me rezultatet e kompilimit tĂ« pyetjeve Ă«shtĂ« siguruar ruajtja e gjendjes mes riparimeve dhe Ă«shtĂ« shtuar pĂ«rkompilimi automatik pas migrimit. ËshtĂ« rritur shpejtĂ«sia e punĂ«s me skema tĂ« mĂ«dha ruajtjeje.
  • NĂ« gjuhĂ«n e pyetjeve EdgeQL, nĂ« shprehjen "for" lejohet tĂ« mos citohet fjala kyçe "union" nĂ« pyetje bazike, ku pĂ«rdoren shprehjet insert, update ose delete.
  • JanĂ« shtuar komanda vacuum() pĂ«r pastrimin, optimizimin dhe paketimin e pĂ«rmbajtjes sĂ« bazĂ«s sĂ« tĂ« dhĂ«nave.
  • Lejohet konvertimi i tĂ« dhĂ«nave midis tipit bytes dhe tipeve int16, int32, int64 dhe uuid, duke pĂ«rdorur funksionet to_bytes(), to_uuid() dhe to_int*().
  • ËshtĂ« e mundur tĂ« mbyllen tĂ« gjitha lidhjet me bazĂ«n e tĂ« dhĂ«nave pas kryerjes sĂ« operacionit "drop database".

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