GraphQL.cz/Fórum/Jak na změnu schema v GraphQL bez vlivu na SQL databázi?

Jak na změnu schema v GraphQL bez vlivu na SQL databázi?

Zdravím všechny, mám takový problém a není mi úplně jasné, jak ho vyřešit. V poslední době se dost zajímám o GraphQL a snažím se přizpůsobit moje API potřebám uživatelů. Jenže když chci udělat nějaké změny v GraphQL schématu, tak mě trápí obavy, že by to mohlo negativně ovlivnit moji SQL databázi. Myslím, že je důležité mít obě části oddělené, ale nevím, jak toho dosáhnout. Jak vlastně zajistit, aby změny v GraphQL schématu neovlivnily strukturu nebo data v databázi? Existuje nějaký efektivní způsob, jak to udělat? Měl by někdo z vás zkušenosti s tímto procesem? Třeba nějaké tipy nebo best practices? Snažím se udržet databázi stabilní a nechci riskovat ztrátu dat nebo narušení fungování aplikace. Také bych rád věděl, jestli je třeba upravit resolvery nebo něco jiného, co by mohlo být důležité při této změně. Předem díky za rady!

138 slov
1.4 minut čtení
7. 5. 2023
Robert Vlk

Když chceš měnit GraphQL schéma, aniž bys ovlivnil SQL databázi, je dobrý mít mezi nimi jasnou vrstvu. Tohle se dá udělat tak, že třeba použiješ ORM (Object-Relational Mapping), co ti umožní pracovat s datama bez nutnosti měnit strukturu tabulek. Můžeš taky přidat nové typy nebo pole do GraphQL bez toho, abys musel měnit SQL dotazy, pokud ty starý fungujou a data si pořád sedí.

Pokud jde o resolvery, tak ty musíš aktualizovat, aby odpovídaly novému schématu, ale nemusíš přitom zasahovat do databáze. Případně můžeš využít "alias" pro stávající pole, což ti umožní mít novou logiku bez změny stávající struktury. Doporučuji dělat změny postupně a testovat je v nějakým vývojovým prostředí před nasazením. Takže hlavně buď opatrnej a testuj.

A nezapomeň na versioning API. Pokud uděláš velký změny, je dobrý mít starší verzi API pro ty, co si na to ještě nezvykli.

141 slov
1.4 minut čtení
28. 1. 2023
Helena Macková

Při změně GraphQL schématu, aniž bys ovlivnil SQL databázi, je dobrý nápad mít jasně oddělené vrstvy. Používej abstrakci mezi GraphQL a DB, třeba pomocí ORM nebo nějakého mapování, což ti umožní měnit schéma bez zásahu do databázových struktur. Resolvéry pak můžeš upravit tak, aby odpovídaly novému schématu a přitom nezasahovaly do tabulek nebo sloupců v databázi. Pokud potřebuješ přidat nové pole do GraphQL, můžeš použít field resolvery, které nevyžadují žádnou změnu na DB, třeba tím, že budeš stahovat data z jiného API nebo to vypočítáš na základě existujících dat. Důležité je testovat vše v testovacím prostředí před nasazením do produkce. Vždycky se vyplatí mít zálohu databáze pro případ, že by něco nešlo podle plánu.

114 slov
1.1 minut čtení
4. 6. 2023
Ivana Brychtová

Takže, pokud chceš měnit GraphQL schéma, ale nechceš, aby to nějak poškodilo SQL databázi, tak je fajn mít tyhle dvě části oddělené. Můžeš to udělat pomocí vrstvy abstrakce mezi GraphQL a databází. Například si vytvoř resolvery, které budou zpracovávat požadavky a v nich pak řídit, co se má dělat s daty. Takže i když uděláš změny ve schématu, můžeš upravit jen resolvery a nechat databázi v klidu.

Jo a jestli plánuješ přidat nový typ nebo pole do GraphQL, tak to nemusíš nutně reflektovat v databázi. Prostě to můžeš udělat jako virtuální pole, kde vyplníš data pomocí resolverů bez nutnosti měnit strukturu tabulek. Můžeš taky používat GraphQL direktivy pro podmínkovou logiku.

Důležitý je myslet na verze API. Když změníš schéma, zvaž udělat novou verzi API, aby staré klienty nic nepoškodilo. Tím pádem i když něco změníš, staré dotazy zůstanou funkční.

Takže shrnuto: oddělená architektura, virtuální pole v resolvere, a verze API – to by ti mělo pomoct udržet věci stabilní.

157 slov
1.6 minut čtení
4. 9. 2023
David Valenta
GraphQL.cz/Články/GraphQL a SQL databáze
Usnadnění verzování API s GraphQL a SQL databázemiČlánek se zaměřuje na techniky správy verzí GraphQL API ve spojení se změnami ve struktuře SQL databáze a přináší užitečné tipy pro vývojáře.
1000 slov
10 minut čtení
15. 2. 2020
Barbora Němcová
Přečíst článek
Podobné otázky