La unua stabila eldono de la interrilata grafikaĵo DBMS EdgeDB

La unua stabila eldono de EdgeDB nun haveblas. Ĝi estas aldonaĵo por PostgreSQL, kiu efektivigas la rilatan grafean datummodelon kaj la serĉlingvon EdgeQL, optimumigita por labori kun kompleksaj hierarkiaj datumoj. La kodo estas skribita en Python kaj Rust kaj estas distribuita sub la permesilo Apache 2.0. Klientaj bibliotekoj estas haveblaj por Python, Go, Rust kaj TypeScript/Javascript. Komandliniaj iloj por administri la DBMS kaj interagan serĉekzekuton (REPL) estas provizitaj.

Anstataŭ tabel-bazita datummodelo, EdgeDB uzas deklaran sistemon bazitan sur objektaj tipoj. Anstataŭ fremdaj ŝlosiloj, ligado estas uzata por difini rilatojn inter tipoj (unu objekto povas esti uzata kiel eco de alia objekto). type Person { postulata economo -> str; } type Movie { postulata ecotitolo -> str; plurligaj aktoroj -> Person; }

Indeksoj povas esti uzataj por akceli demandopretigon. Trajtoj kiel forta tajpado de posedaĵoj, limigoj de posedaĵoj, komputitaj trajtoj kaj stokitaj proceduroj ankaŭ estas subtenataj. Trajtoj de la skemo de konservado de objektoj EdgeDB, kiu estas iom rememoriga pri ORM, inkluzivas la kapablon miksi skemojn, ligi ecojn de malsamaj objektoj kaj integran JSON-subtenon.

Enkonstruitaj iloj estas provizitaj por stoki skemon-migradon - post ŝanĝi la skemon specifitan en aparta esdl-dosiero, simple rulu la komandon "edgedb migration create" kaj la DBMS analizos la diferencojn en la skemo kaj interage kreos skripton por migrado al la skemo. nova skemo. La historio de skemaj ŝanĝoj estas aŭtomate spurita.

Serĉserĉa subteno inkluzivas kaj GraphQL kaj la propran serĉlingvon de EdgeDB, kiu estas adapto de SQL por hierarkiaj datumoj. Anstataŭ listoj, la serĉrezultoj estas strukturitaj, kaj anstataŭ subserĉoj kaj KUNIGOJ, vi povas specifi unu EdgeQL-serĉon kiel esprimon ene de alia serĉserĉo. Transakcioj kaj bukloj estas subtenataj. 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 } );

fonto: opennet.ru

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster