Toleo la kwanza thabiti la grafu ya uhusiano DBMS EdgeDB

Toleo la kwanza thabiti la EdgeDB DBMS linapatikana, ambalo ni nyongeza kwa PostgreSQL na utekelezaji wa modeli ya data ya grafu ya uhusiano na lugha ya swala ya EdgeQL, iliyoboreshwa kwa kufanya kazi na data changamano ya daraja. Nambari hiyo imeandikwa kwa Python na Rust na inasambazwa chini ya leseni ya Apache 2.0. Maktaba za mteja zimetayarishwa kwa Python, Go, Rust na TypeScript/Javascript. Hutoa zana za mstari wa amri kwa usimamizi wa DBMS na utekelezaji wa hoja shirikishi (REPL).

Badala ya modeli ya data ya mezani, EdgeDB hutumia mfumo wa kutangaza kulingana na aina za vitu. Badala ya funguo za kigeni, kuunganisha kwa rejeleo hutumiwa kufafanua uhusiano kati ya aina (kitu kimoja kinaweza kutumika kama mali ya kitu kingine). aina Mtu { required jina la mali -> str; } chapa Filamu { jina la mali linalohitajika -> str; waigizaji wa viungo vingi -> Mtu; }

Fahirisi zinaweza kutumika kuharakisha usindikaji wa hoja. Vipengele kama vile uandishi thabiti wa sifa, vizuizi vya thamani ya mali, sifa zilizokokotwa, na taratibu zilizohifadhiwa pia zinatumika. Vipengele vya mpango wa uhifadhi wa kitu wa EdgeDB, ambao unakumbusha kwa kiasi fulani ORM, ni pamoja na uwezo wa kuchanganya miundo, sifa za kuunganisha kutoka kwa vitu tofauti, na usaidizi uliojumuishwa wa JSON.

Zana zilizojengwa ndani zimetolewa kwa ajili ya kuhifadhi uhamiaji wa schema - baada ya kubadilisha schema iliyoainishwa katika faili tofauti ya esdl, endesha tu amri ya "edgedb migration create" na DBMS itachambua tofauti za schema na kutoa hati kwa maingiliano ya kuhamia schema mpya. Historia ya mabadiliko ya schema inafuatiliwa kiotomatiki.

Ili kuunda maswali, lugha ya maswali ya GraphQL na lugha ya EdgeDB inayomilikiwa, ambayo ni urekebishaji wa SQL kwa data ya daraja, zinatumika. Badala ya orodha, matokeo ya hoja hupangwa kwa njia iliyopangwa, na badala ya hoja ndogo na JOIN, unaweza kubainisha hoja moja ya EdgeQL kama usemi ndani ya hoja nyingine. Shughuli na mizunguko zinatumika. chagua Filamu { title, watendaji: { name } } chujio .title = "The Matrix" weka Filamu { title := "The Matrix Resurrections", waigizaji := ( chagua Kichujio cha Mtu .name katika { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } kwa nambari katika muungano wa {0, 1, 2, 3} ( chagua { nambari, nambari + 0.5 } );

Chanzo: opennet.ru

Kuongeza maoni