1 post / 0 new
Guest (not verified)
Když GraphQL přestane stíhat, dotazy se rozpadnou na desítky volání

Kabely řešte dřív, než je začnete schovávat. Veďte je po zdi v liště, která se dá odstranit bez poškození omítky, a přebytečnou délku svažte suchým zipem. Prodlužovací kabel s vypínačem umístěte na dosah ruky, abyste po práci vypnuli monitor, lampu i nabíječku jedním pohybem. Běžná chyba je schovat vše pod stůl bez přehledu – při hledání kabelu pak strhnete celou síť.

Dávejte pozor na dosah a překážky. Bluetooth pracuje na krátkou vzdálenost a voda, lidské tělo i kovové desky signál tlumí. Pokud držíte telefon v jedné ruce a zařízení za tělem, spojení se nenaváže. Zkuste obě zařízení položit na stůl metr od sebe, bez mezičlánků. U počítače pomůže i výměna portu, pokud používáte externí Bluetooth adaptér. Vestavěné moduly v levnějších přenosných počítačích mívají slabší anténu a při zakrytí dlaní ztrácejí signál.

První botičky nejsou jen módní doplněk. Pro batole znamenají zásadní změnu v tom, jak vnímá vlastní nohy. Do té doby chodilo bosky nebo v měkkých ponožkách, prsty mělo volně a každý krok přizpůsobovalo povrchu. Botička přidá váhu, pevný obvod a jiný sklon. Dětská noha je navíc v prvních letech z velké části chrupavčitá, takže špatně zvolená obuv může ovlivnit držení prstů i klenbu. Příprava proto nezačíná v obchodě, ale doma několik týdnů předtím, než boty vůbec koupíte.

Prvním krokem je změřit, kolik datových zdrojů jeden dotaz skutečně zasáhne. GraphQL sám o sobě neprozradí, které pole je drahé. Pomůže trasování jednotlivých resolverů a sledování počtu volání na úroveň vnoření. Typická chyba je ignorovat N+1 problém jen proto, že databáze má indexy. Index pomůže jednomu dotazu, ale tisíce samostatných dotazů zůstanou tisíci dotazy. Řešením je dávkování a krátkodobá cache v rámci jednoho požadavku, nikoli globální cache bez rozlišení kontextu.

Před konečným umístěním si projděte recepci sám, jako byste přicházel poprvé. Vezměte si kufr, projděte od dveří k pultu a pak k pohovce. Pokud narazíte do nábytku nebo musíte uhýbat, pohovka stojí špatně. Stejný test udělejte s koštětem nebo vysavačem — úklid nesmí být slalom. Teprve když projdete oba testy, je umístění hotové.

U odložených a streamovaných odpovědí je klíčové hlídat, co se posílá dřív. Pokud klient dostane částečná data a okamžitě je vykreslí, může dojít k blikání nebo k chybnému stavu. Vyplatí se proto označit, která pole jsou kritická a která mohou dorazit později. Server by měl mít možnost poslat odpověď po částech a klient musí umět rozlišit, zda jde o konečný stav, nebo o průběžnou aktualizaci.

Délka a zavěšení rozhodují o tom, jestli bude výsledek působit úmyslně, nebo náhodně. Závěs by měl sahat na zem nebo těsně nad ni, nikdy ne končit uprostřed okna. Tyč volit co nejblíž ke stropu a širší než okno, aby se daly závěsy vytáhnout a okno zůstalo odhalené. Když je závěs úzký a napnutý, působí levně i u drahé látky. Počítejte s tím, že šířka látky má být alespoň dvojnásobkem šířky okna, jinak nevzniknou řasy a závěs ztratí objem.

Dalším místem je fragmentace dotazů. Mnoho týmů posílá jeden velký dotaz pro celou obrazovku a při každé změně stavu ho celý opakuje. Lepší je rozdělit data podle toho, kdy se skutečně mění, a zbytek dotahovat přes samostatné operace. Pomůže také normalizovaná klientská cache, která umí sloučit stejné entity z více dotazů. Bez ní se stejná data stahují opakovaně a server platí za každý požadavek znovu.

Poslední oblastí je sledování v produkci. Bez metrik podle typu operace, podle nákladů a podle chybovosti se optimalizace mění v hádání. Užitečné je logovat konkrétní tvary dotazů, které překračují limity, a porovnávat je v čase. Když se stejný dotaz zhorší po nasazení nové verze schématu, je to signál, že se změnilo chování resolveru, ne že klient najednou posílá horší dotazy. Průběžné vyhodnocování nákladů a jasná pravidla pro hloubku a dávkování udrží GraphQL v roce 2026 použitelné i při růstu počtu služeb.

Hloubka dotazu a náklady, které se nepočítají Omezení hloubky dotazu je základ, ale v roce 2026 už nestačí. Dva dotazy se stejnou hloubkou mohou mít velmi odlišnou cenu. Zavádí se proto výpočet nákladů podle počtu vrácených objektů a podle toho, zda pole spouští vzdálené volání. Limity je vhodné nastavit na úrovni operace, ne jen na úrovni schématu. Pokud klient pošle dotaz s velkým limitem na seznam, náklady rostou lineárně a server může snadno narazit na kapacitu.

GraphQL v roce 2026 řeší jiný problém než dřív. Server už není jen jedna databáze za jedním resolverem, ale často několik služeb, kešovacích vrstev a odložených výpočtů. Dotaz, který se na vývojovém prostředí vrátí za pár milisekund, může v produkci znamenat stovky volání a nesouvislé odpovědi. Optimalizace proto nezačíná u klienta, ale u toho, co vlastně resolver dělá s daty.

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Navigation

User login