GraphQL dotazy pod kontrolou: hloubka versus počet polí
První let s batoletem se láme na několika místech, která se dají předem připravit. Nejde o to mít dokonalý plán, ale eliminovat situace, kdy se dítě začne nudit nebo přetažené zlobit. Rozhodující je načasování letu vzhledem k dennímu režimu dítěte. Pokud batole pravidelně usíná kolem poledne, vezměte let, který startuje zhruba hodinu před tímto časem. Nástup, vzlet i první hodina letu se pak svezou na vlně přirozené únavy. Naopak let v době, kdy je dítě čerstvé a nabuzené, znamená dvě hodiny práce navíc.
Co si u vitríny ověřit dřív, než uvěříte legendě U každého exponátu si nejdřív přečtěte celý popisek až barvy stěn do obýváku konce, včetně drobného písma o dataci a původu. Potom porovnejte předmět s tím, co popisek tvrdí. Sekera na popravu má jiný poměr hlavy a násady než nástroj řemeslný, http://Uz-kino.ru/user/JaunitaMacKillop/ a meč s nerovnoměrným ostřím nebyl na parádu. Když si nejste jistí, vyfoťte si popisek a prohlédněte si exponát z více stran. Fotografování bez blesku bývá povoleno, ale na některých místech ne, tak se předem zeptejte u vchodu.
V pražských muzeích narazíte na předměty, které se v běžné sbírce vystavují jen nerady: meče s poškozeným ostřím, sekery s krátkou rukojetí, řetězy a obojky. Návštěvník často projde kolem vitríny bez povšimnutí, protože exponát vypadá jako běžná zbraň. Rozdíl je v proporcích a opotřebení. Popravčí nástroj nebyl zbraň pro boj, ale pro jediný přesně vedený úder. Proto se u něj počítá s těžkou hlavou, krátkou pákou a ostřím, které se brousilo do jiného úhlu než válečný meč. When you liked this informative article along with you desire to get guidance concerning další informace generously stop by our website. Když se u vitríny zastavíte, všímejte si nejdřív hmotnosti a tvaru rukojeti, ne výzdoby.
Začněte tam, kde pachy vznikají nejčastěji: v sifonu dřezu. Nasypte do odtoku dvě až tři lžíce sody a zalijte hrnkem horké vody, ne vroucí. Nechte půl hodiny působit a pak propláchněte. Teprve potom přidejte hrnek octa smíchaného s hrnkem vody a nechte deset minut bublat. Nakonec vše propláchněte teplou vodou. Chybou je sypat sodu přímo do octa v dřezu a hned spláchnout, protože reakce proběhne během několika sekund a do sifonu se nedostane.
Začněte rozměry. Ložná plocha by měla být alespoň tak dlouhá jako postava nejvyššího spáče plus několik centimetrů rezervy, jinak budou nohy viset nebo se hlava opře o opěrku. Hloubka sedu kolem 45 až 50 cm vyhovuje většině dospělých; příliš hluboký sed nutí k předklonu a u starších lidí ztěžuje vstávání. Výšku sedu volte podle toho, zda převažuje sezení, nebo spaní – nižší sed usnadňuje lehnutí, vyšší zase vstávání.
Druhá strana optimalizace je na serveru. DataLoader nebo obdobný nástroj pro dávkování a cachování v rámci jednoho požadavku odstraní N+1 problém, který vzniká, když resolver volá databázi pro každou položku seznamu zvlášť. Dávejte pozor na to, aby cache byla vázaná na kontext požadavku, ne globální — jinak si klienti začnou předávat data, která nemají vidět. U perzistentních dotazů se vyplatí hashovat celý dokument a povolit jen známé tvary; tím odpadá parsování i riziko nečekaně drahých variant.
Na co si dát pozor: nevěřte číslům, která zní příliš dramaticky, a neopakujte je jako fakt. Legendy o počtu poprav nebo o prokletí předmětu bývají převzaté z literatury 19. století, která si zakládala na účinku na čtenáře. Stejně tak neberte vážně tvrzení, že určitý nástroj „musel" patřit konkrétnímu katovi, pokud to není doloženo osvětlení v obýváku inventáři. Muzejní evidence bývá strohá, ale právě v ní najdete jméno dárce a rok získání, což je nejspolehlivější stopa.
Počet polí a složitost místo hloubky Hloubka sama nestačí. Mělký dotaz může obsahovat tisíce polí díky širokým seznamům a aliasům, kterými klient obchází jednoduché limity. Zaveďte výpočet složitosti dotazu: každému poli přiřaďte váhu podle náročnosti jeho resolveru, vynásobte ji počtem položek v seznamu a výsledek sečtěte. Stanovte rozpočet na požadavek a dotazy nad ním odmítejte srozumitelnou chybou, ne tichým oříznutím. Aliasy počítejte jako samostatná pole, jinak je ochrana snadno obejitelná opakováním stejného pole pod různými jmény.
Nakonec měřte průběžně, ne jednorázově. Sledujte podíl odmítnutých dotazů, latenci podle tvaru dotazu a velikost odpovědí. Pokud některý limit odmítá legitimní klienty, upravte váhy nebo rozpočet, ale nikdy nevypínejte ochranu plošně. Typický omyl je zvýšit limit natolik, že přestane chránit, jen aby zmizely chyby v logu. Lepší je vrátit klientovi jasnou informaci o tom, který limit překročil, a nechat ho dotaz zúžit.
Nejčastější příčina pomalých GraphQL dotazů není databáze ani síť, ale to, že klient požaduje víc, než server dokáže rozumně obsloužit v jednom požadavku. GraphQL dává klientovi svobodu určit tvar odpovědi, a právě ta svoboda se snadno zvrhne v dotazy, které rekurzivně procházejí grafem do hloubky nebo žádají stovky polí v jednom seznamu. Prvním krokem optimalizace proto není ladění resolverů, ale měření: zapište si reálné dotazy z produkce, změřte jejich latenci a velikost odpovědi a najděte ty, které se od ostatních odchylují. Bez tohoto kroku se optimalizuje naslepo.