Ukukhishwa kwe-EdgeDB 2.0 DBMS kwethulwa, esebenzisa imodeli yedatha yegrafu ehlobene kanye nolimi lombuzo lwe-EdgeQL, olulungiselelwe ukusebenza ngedatha eyinkimbinkimbi ye-hierarchical. Ikhodi ibhalwe nge-Python ne-Rust (izingxenye ezihlukanisayo nezibalulekile zokusebenza) futhi isatshalaliswa ngaphansi kwelayisensi ye-Apache 2.0. Iphrojekthi ithuthukiswa njengesengezo se-PostgreSQL. Imitapo yolwazi yeklayenti ilungiselwe iPython, Go, Rust kanye ne-TypeScript/Javascript. Ihlinzeka ngamathuluzi omugqa womyalo wokuphathwa kwe-DBMS kanye nokwenziwa kombuzo osebenzisanayo (REPL).
Esikhundleni semodeli yedatha esekwe etafuleni, i-EdgeDB isebenzisa isistimu yokumemezela esekelwe ezinhlotsheni zezinto. Esikhundleni sokhiye bangaphandle, ukuxhumanisa ngereferensi kusetshenziselwa ukuchaza ubudlelwano phakathi kwezinhlobo (into eyodwa ingasetshenziswa njengempahla yenye into).
thayipha Umuntu {igama lempahla elidingekayo -> str; } thayipha i-Movie {isihloko sesakhiwo esidingekayo -> str; abadlali abaningi bezixhumanisi -> Umuntu; }
Izinkomba zingasetshenziswa ukusheshisa ukucutshungulwa kwemibuzo. Izici ezifana nokuthayipha kwesakhiwo okuqinile, imikhawulo yenani lesakhiwo, izakhiwo ezibaliwe, nezinqubo ezigciniwe nazo ziyasekelwa. Izici zohlelo lwe-EdgeDB lwesitoreji sento, esisikhumbuza ngandlela thize i-ORM, zifaka ikhono lokuhlanganisa ama-schema, izakhiwo zokuxhumanisa ezivela ezintweni ezihlukene, nokusekelwa okuhlanganisiwe kwe-JSON.
Amathuluzi akhelwe ngaphakathi ahlinzekelwe ukugcina ukuthuthwa kwe-schema - ngemva kokushintsha i-schema esicaciswe kufayela le-esdl elihlukile, vele usebenzise umyalo othi "edgedb migration create" futhi i-DBMS izohlaziya umehluko ku-schema futhi ikhiqize ngokuhlanganyela iskripthi sokuthuthela ku-schema. i-schema entsha. Umlando wezinguquko ze-schema ulandelelwa ngokuzenzakalelayo.
Ukuze ukhiqize imibuzo, kokubili ulimi lombuzo lwe-GraphQL kanye nolimi lobunikazi lwe-EdgeDB, okuwukuguqulwa kwe-SQL yedatha ye-hierarchical, kuyasekelwa. Esikhundleni sohlu, imiphumela yemibuzo ifomethwe ngendlela ehlelekile, futhi esikhundleni semibuzo engaphansi kanye nama-JOIN, ungacacisa umbuzo owodwa we-EdgeQL njengesisho phakathi komunye umbuzo. Okwenziwayo nemijikelezo kuyasekelwa.
khetha I-Movie {isihloko, abalingisi: {igama } } isihlungi .title = "I-Matrix" faka i-Movie {isihloko := "I-Matrix Resurrections", abadlali := ( khetha Isihlungi Somuntu .igama kokuthi {'Keanu Reeves', 'Carrie- U-Anne Moss', u-'Laurence Fishburne' } )} ngenombolo {0, 1, 2, 3} inyunyana ( khetha {inombolo, inombolo + 0.5} );
Enguqulweni entsha:
- Isixhumi esibonakalayo sewebhu esakhelwe ngaphakathi sengeziwe sokulawulwa kwesizindalwazi, esikuvumela ukuthi ubuke futhi uhlele idatha, usebenzise imibuzo ye-EdgeQL futhi uhlaziye uhlelo lokugcina olusetshenzisiwe. I-interface yethulwa ngomyalo we-"edgedb ui", ngemuva kwalokho iyatholakala uma ufinyelela i-localhost.
- Isisho esithi “GROUP” siqalisiwe, esikuvumela ukuthi uhlukanise futhi uhlanganise idatha nedatha yeqembu usebenzisa izinkulumo ze-EdgeQL ezingafaneleki, ezifana nokuhlanganisa ekusebenzeni KHETHA.
- Ikhono lokulawula ukufinyelela ezingeni lento. Imithetho yokufinyelela ichazwa ezingeni le-schema sesitoreji futhi ikuvumela ukuthi ukhawulele ikhono lokusebenzisa isethi ethile yezinto ekulandeni, ekufakeni, ekususeni, nasekubuyekezeni imisebenzi. Isibonelo, ungangeza umthetho ovumela umbhali kuphela ukuthi abuyekeze okushicilelwe.
- Kwengezwe amandla okusebenzisa okuguquguqukayo komhlaba kuhlelo lwesitoreji. Kuphakanyiswe i-variable variable global current_user ukuthi ibophezele kumsebenzisi.
- Usekelo olungeziwe lwezinhlobo ezichaza ububanzi bamanani.
- Umtapo wolwazi weklayenti osemthethweni wolimi lwe-Rust usulungisiwe.
- Iphrothokholi ye-EdgeDB kanambambili isizinzile, okwenza kube nokwenzeka ukucubungula izikhathi eziningana ezahlukene ngesikhathi esisodwa ngaphakathi koxhumano lwenethiwekhi efanayo, ukudlulisela phambili nge-HTTP, kusetshenziswa okuguquguqukayo komhlaba kanye nezifunda zendawo.
- Ukwesekwa okwengeziwe kokuvula isokhethi, okukuvumela ukuthi ungasigcini isibambi seseva kumemori futhi usisebenzise kuphela lapho uzama ukusungula uxhumano (oluwusizo ekulondolozeni izinsiza ezinhlelweni zonjiniyela).
Source: opennet.ru