Rhyddhad sefydlog cyntaf y graff perthynol DBMS EdgeDB

Mae'r datganiad sefydlog cyntaf o'r EdgeDB DBMS ar gael, sy'n ychwanegiad i PostgreSQL gyda gweithrediad y model data graff perthynol ac iaith ymholiad EdgeQL, wedi'i optimeiddio ar gyfer gweithio gyda data hierarchaidd cymhleth. Mae'r cod wedi'i ysgrifennu yn Python a Rust ac fe'i dosberthir o dan drwydded Apache 2.0. Mae llyfrgelloedd cleientiaid yn cael eu paratoi ar gyfer Python, Go, Rust a TypeScript/Javascript. Yn darparu offer llinell orchymyn ar gyfer rheoli DBMS a gweithredu ymholiad rhyngweithiol (REPL).

Yn lle model data seiliedig ar dabl, mae EdgeDB yn defnyddio system ddatganiadol yn seiliedig ar fathau o wrthrychau. Yn lle allweddi tramor, defnyddir cysylltu trwy gyfeiriad i ddiffinio'r berthynas rhwng mathau (gellir defnyddio un gwrthrych fel eiddo gwrthrych arall). teipiwch Person { enw eiddo gofynnol -> str; } math Movie { teitl eiddo gofynnol -> str; actorion aml-gyswllt -> Person; }

Gellir defnyddio mynegeion i gyflymu prosesu ymholiadau. Cefnogir nodweddion megis teipio eiddo cryf, cyfyngiadau gwerth eiddo, eiddo cyfrifiadurol, a gweithdrefnau storio hefyd. Mae nodweddion cynllun storio gwrthrychau EdgeDB, sydd braidd yn atgoffa rhywun o ORM, yn cynnwys y gallu i gymysgu sgemâu, cysylltu priodweddau o wahanol wrthrychau, a chefnogaeth integredig JSON.

Darperir offer adeiledig ar gyfer storio mudo sgema - ar ôl newid y sgema a nodir mewn ffeil esdl ar wahân, rhedwch y gorchymyn “creu mudo edgeb” a bydd y DBMS yn dadansoddi'r gwahaniaethau yn y sgema ac yn cynhyrchu sgript yn rhyngweithiol ar gyfer mudo i'r sgema newydd. Mae hanes newidiadau sgema yn cael ei olrhain yn awtomatig.

Er mwyn cynhyrchu ymholiadau, cefnogir iaith ymholiad GraphQL a'r iaith EdgeDB berchnogol, sy'n addasiad o SQL ar gyfer data hierarchaidd. Yn lle rhestrau, mae canlyniadau ymholiad yn cael eu fformatio mewn ffordd strwythuredig, ac yn lle subqueries ac JOINs, gallwch nodi un ymholiad EdgeQL fel mynegiant o fewn ymholiad arall. Cefnogir trafodion a chylchoedd. select Movie { title , actorion : { name } } filter .title = "Y Matrics" mewnosod Movie { title := "Y Matrics Atgyfodiad", actorion := ( dewiswch Person filter .name yn { ' Keanu Reeves ' , ' Carrie- Anne Moss', 'Laurence Fishburne' } ) } ar gyfer rhif yn undeb {0, 1, 2, 3} ( dewiswch { number, number + 0.5 } );

Ffynhonnell: opennet.ru

Ychwanegu sylw