[custom_add_property_button]
[custom_sign_button]

5 věcí, které vysvětlují, proč plejtvák obrovský zuby nepotřebuje

Nejčastější příčinou pomalého GraphQL API není síť ani databáze, ale takzvaný N+1 problém. Resolver pro pole, které vrací seznam, uvnitř cyklu volá další resolver pro každý prvek zvlášť. U deseti položek to projde, u tisíce znamená tisíc dotazů do databáze. Řešení není v GraphQL samotném, ale v tom, jak resolvery propojíte s dávkovým načítáním. Knihovny jako DataLoader nebo jejich ekvivalenty v jiných jazycích fungují na principu, že během jednoho tiku event loopu sesbírají všechny požadavky na stejný typ a odešlou je jedním dotazem. Klíčové je vytvořit instanci dávkovače pro každý požadavek, ne globálně. Sdílená instance mezi uživateli způsobí, že se data jednoho klienta mohou dostat do odpovědi jiného.

Druhým viníkem bývá nefunkční termostat. Když zůstane otevřený, motor se zahřívá pomalu a v zimě netopí. Když se zasekne zavřený, chladicí kapalina neprochází chladičem a teplota vyletí během několika minut. Poznáte to jednoduše: po nastartování sledujte teploměr. Pokud ručička vystoupá k červenému poli dřív, než se zahřeje topení, termostat pravděpodobně nepracuje správně. Výměna je levná a rychlá, ale odkládáním si zaděláváte na prasklé těsnění pod hlavou.

Další věc je elektroinstalace. V panelákovém bytě bývá jeden okruh pro kuchyň i obývací pokoj. Pokud přidáš sporák, myčku a další spotřebiče, může být proud nedostatečný. Nech si udělat revizi a případně přidej samostatný jistič pro kuchyňskou linku. Také počítej s tím, že voda a odpad se nedají snadno přemístit – kuchyňská linka by měla zůstat v dosahu stávajících rozvodů, jinak se prodraží a zkomplikuje celá rekonstrukce.

Jak resolvery poskládat, aby se dotazy neopakovaly Uvnitř jednoho resolveru načtěte data, která budete potřebovat pro celou větev, a předejte je dolů pomocí kontextu. GraphQL sám o sobě neřeší, jestli se dvě pole ve stejném dotazu ptají na stejnou entitu. Pokud klient požádá o autora článku a zároveň o autora komentáře a jde o stejnou osobu, bez dávkování se entita načte dvakrát. DataLoader s klíčem podle ID to sjednotí. Pozor na to, že dávkování nezachrání špatný návrh schématu. Když pole vrací objekt, který vždy vyžaduje další dotaz, možná patří přímo do rodičovského typu nebo je lepší ho řešit přes samostatný dotaz na nejvyšší úrovni.

Plejtvák obrovský patří mezi kosticovce, což znamená, že místo zubů má v horní čelisti řady rohovinových plátů – kostice. Ty fungují jako obrovské síto, kterým prochází voda s potravou. Zuby by mu v tomto systému překážely, protože by zachytávaly velké kusy, které musí proudit ven. Místo toho kostice zadrží drobné korýše, malé rybky a plankton, zatímco voda odtéká zpět do moře.

Důležitější než samotné vyhazování je zastavit příliv nových věcí. Zaveď pravidlo, že každý nový předmět musí nahradit jeden starý. Než něco koupíš, počkej týden a napiš si, k čemu to konkrétně použiješ. Většina impulzů do té doby zmizí. Stejně tak se vyhni nákupům „pro případ”, které jen odkládají rozhodnutí na později.

Proč selhává většina pokusů Nejčastější chyba je kupovat si na minimalismus nové vybavení. Bílé krabice, přihrádky a etikety vypadají uklizeně, ale problém neřeší. Jen ukryjí stejné množství věcí do hezčí podoby. Druhá chyba je likvidovat věci, které mají praktickou funkci jen proto, že se nehodí k představě dokonalého interiéru. Minimální byt není prázdný byt. Je to byt, kde každá věc má své místo a důvod, proč tam zůstává.

Poslední věc, na kterou se zapomíná: caching. GraphQL má jediný endpoint a typicky metoda POST, takže běžné HTTP cache nic neudělá. Musíte cachovat na úrovni resolverů nebo celých odpovědí podle hashů dotazů. U dat, která se nemění, nastavte delší TTL. U uživatelských dat použijte klíč, který zahrnuje identitu. Nikdy necachujte odpověď, která závisí na oprávněních, pod klíčem bez nich. Jinak se staví přesně ten problém, kterému se každý snaží vyhnout: jeden uživatel vidí data druhého. Optimalizace GraphQL není o jednom triku, ale o kombinaci dávkování, limitů, perzistovaných dotazů a měření. Bez toho posledního jen hádáte.

V roce 2026 už není rozumné spoléhat jen na to, že klient pošle rozumný dotaz. Perzistované dotazy neboli persisted queries umožňují posílat hash místo celého textu. Server zná jen schválené dotazy a ostatní odmítne. Tím zmizí riziko, že někdo pošle drahý dotaz, který jste nikdy netestovali. Zavést se to dá postupně: nejdřív logujte, jaké dotazy klienti skutečně posílají, pak vytvořte seznam povolených a teprve potom přepněte režim na odmítání neznámých hashů. Získáte menší přenosovou zátěž a lepší kontrolu nad tím, co server vykonává.

Please Sign In Before Adding a Property Or Sign Up If You Don't Have An Account