Pirmais stabilais relāciju diagrammas DBMS EdgeDB laidiens

Ir pieejams pirmais stabilais EdgeDB DBVS laidiens, kas ir PostgreSQL papildinājums ar relāciju grafika datu modeļa un EdgeQL vaicājuma valodas ieviešanu, kas optimizēta darbam ar sarežģītiem hierarhiskiem datiem. Kods ir rakstīts Python un Rust un tiek izplatīts saskaņā ar Apache 2.0 licenci. Klientu bibliotēkas ir sagatavotas Python, Go, Rust un TypeScript/Javascript. Nodrošina komandrindas rīkus DBVS pārvaldībai un interaktīvai vaicājuma izpildei (REPL).

Tabulas datu modeļa vietā EdgeDB izmanto deklaratīvu sistēmu, kuras pamatā ir objektu tipi. Ārējo atslēgu vietā saistīšana ar atsauci tiek izmantota, lai definētu attiecības starp veidiem (vienu objektu var izmantot kā cita objekta īpašību). type Persona { obligātā īpašuma nosaukums -> str; } type Movie { obligātā īpašuma nosaukums -> str; multi link aktieri -> Persona; }

Indeksus var izmantot, lai paātrinātu vaicājumu apstrādi. Tiek atbalstītas arī tādas funkcijas kā spēcīga rekvizītu ievadīšana, īpašuma vērtības ierobežojumi, aprēķinātie rekvizīti un saglabātās procedūras. EdgeDB objektu uzglabāšanas shēmas līdzekļi, kas nedaudz atgādina ORM, ietver iespēju sajaukt shēmas, saišu rekvizītus no dažādiem objektiem un integrētu JSON atbalstu.

Shēmas migrācijas glabāšanai tiek nodrošināti iebūvēti rīki - pēc atsevišķā esdl failā norādītās shēmas maiņas vienkārši palaidiet komandu “edgedb migration create”, un DBVS analizēs shēmas atšķirības un interaktīvi ģenerēs skriptu migrēšanai uz jauna shēma. Shēmas izmaiņu vēsture tiek automātiski izsekota.

Lai ģenerētu vaicājumus, tiek atbalstīta gan GraphQL vaicājumu valoda, gan patentētā EdgeDB valoda, kas ir SQL pielāgošana hierarhiskiem datiem. Sarakstu vietā vaicājuma rezultāti tiek formatēti strukturētā veidā, un apakšvaicājumu un JOIN vietā varat norādīt vienu EdgeQL vaicājumu kā izteiksmi citā vaicājumā. Tiek atbalstīti darījumi un cikli. atlasiet Filmu {nosaukums, aktieri: {nosaukums}} filter .title = "Matrica" ​​insert Movie { title := "The Matrix Resurrections", aktieri := ( atlasiet Personas filtru .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } skaitlim savienībā 0, 1, 2, 3} ( izvēlieties { number, number + 0.5 } );

Avots: opennet.ru

Pievieno komentāru