Ensimmäinen vakaa julkaisu relaatiokaaviosta DBMS EdgeDB

EdgeDB DBMS:n ensimmäinen vakaa julkaisu on saatavilla. Se on PostgreSQL:n lisäosa, jossa on toteutettu relaatiokaaviotietomalli ja EdgeQL-kyselykieli, joka on optimoitu monimutkaisten hierarkkisten tietojen käsittelyyn. Koodi on kirjoitettu Pythonilla ja Rustilla, ja sitä jaetaan Apache 2.0 -lisenssillä. Asiakaskirjastot on valmistettu Pythonille, Golle, Rustille ja TypeScriptille/Javascriptille. Tarjoaa komentorivityökalut DBMS-hallintaan ja interaktiiviseen kyselyn suorittamiseen (REPL).

Taulukkopohjaisen tietomallin sijaan EdgeDB käyttää objektityyppiin perustuvaa deklaratiivista järjestelmää. Vieraiden avainten sijaan linkittämistä käytetään viittauksella määrittämään tyyppien välinen suhde (yksi objektia voidaan käyttää toisen objektin ominaisuutena). type Henkilö { vaadittu ominaisuuden nimi -> str; } type Movie { vaadittu ominaisuuden otsikko -> str; monen linkin toimijat -> henkilö; }

Indeksejä voidaan käyttää nopeuttamaan kyselyn käsittelyä. Ominaisuuksia, kuten vahva ominaisuuden tyyppi, omaisuuden arvon rajoitukset, lasketut ominaisuudet ja tallennetut menettelyt, tuetaan myös. EdgeDB-objektien tallennusmallin ominaisuudet, joka muistuttaa hieman ORM:ää, sisältävät kykyä sekoittaa skeemoja, linkkiominaisuuksia eri objekteista ja integroitua JSON-tukea.

Sisäänrakennetut työkalut toimitetaan skeeman siirron tallentamiseen - kun olet muuttanut erillisessä esdl-tiedostossa määritettyä skeemaa, suorita "edgedb migration create" -komento ja DBMS analysoi skeeman erot ja luo interaktiivisesti komentosarjan siirtymistä varten uusi kaava. Kaavan muutoshistoriaa seurataan automaattisesti.

Kyselyjen luomiseen tuetaan sekä GraphQL-kyselykieltä että EdgeDB-kieltä, joka on SQL:n mukautus hierarkkista dataa varten. Listojen sijasta kyselytulokset muotoillaan jäsennellysti, ja alikyselyjen ja JOIN:ien sijaan voit määrittää yhden EdgeQL-kyselyn lausekkeeksi toisessa kyselyssä. Tapahtumat ja syklit ovat tuettuja. select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", actors := ( valitse Henkilösuodatin .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } numerolle 0, 1, 2, 3} liitossa ( valitse { numero, numero + 0.5 } );

Lähde: opennet.ru

Lisää kommentti