GraphQL on hyvin suosittu ja tehokas, mutta se on perustavanlaatuisesti erilainen kuin OData. Eli mikään ei ole ehdottomasti parempi kuin toinen.
On muutamia pointteja, jotka voin ymmärtää.
OData = SQL URL-muodossa
OData oli tapa serialisoida SQL-lause URL-osoitteeseen
Asiakaspuolen kyselykykyä on vaikea rajoittaa.
OData Standardisoitu
ODatan ominaisuus on sen vahvuus, aivan kuten RPC tekee RESTfulille. RESTfulilla on tekniset tiedot ja se on helppo ymmärtää, mutta kaikkea ei ole helppo ilmaista. RPC voi ilmaista kaiken, mutta se on liian epästandardoitua.
ODatan puutteet
OData on yleensä tiukempi kuin tietokantaskeeman tila (eli se on kuin SQL-kysely), ja kun skeema on muuttunut, vanhan version ylläpito on vaikeampaa.
OData suosii yhtenäistä hallintaa, ja sen optimointi erityistapauksia varten on vaikeaa.
Parhaiten kuvattu
OData on kuin SQL Query, GraphQL on kuin tallennettu proseduuri. Maistat hitaasti.
Siksi näiden kahden täytyy elää rinnakkain ja täydentää toisiaan.
yhteenveto
OData on kuin SQL Query, GraphQL on kuin tallennettu proseduuri.
OData on kuin RESTful, ja GraphQL on kuin RPC
Kun haluat yksinkertaista yhdistämistä, löydät RESTFulin erinomaiseksi, SQL Query riittää, OData on hyvä.
Mutta kun on erityistilanteita etkä voi käyttää yksinkertaista menetelmää, RPC:tä tai tallennettua proseduuria, GraphQL korostaa sen viehätystä.
Katsotaanpa molempien osapuolten käyttötilanteita. OData on taipuvainen API:ksi yrityssovelluksille, kuten SAP:lle. Yleensä yksinkertaisempi, relaatiopohjainen tietokantamalli.
GraphQL on internet-sovellus, avoin API ja minkä tahansa tyyppinen data (kuten NoSQL)
Yhteenvetona: GraphQL pystyy ilmaisemaan enemmän (vapaammin) kuin OData, ODatalla on sääntöjä (enemmän rajoitteita) kuin GraphQL:llä
Kumpi se on, vai GraphQL ulkomaailmalle vai OData sisäiselle, se riippuu todella projektista, käyttääkö sitä.