Čo je Xano?
Pomalá obrazovka môže čakať na logiku API, dopyt do databázy alebo prácu, ktorá nemusí skončiť pred odoslaním odpovede. Najprv treba nájsť toto čakanie. Indexy a cache riešia rôzne príčiny.
Sledujte cestu požiadavky
- Požiadavka aplikácie
- Logika API
- Dátový dotaz
- Odpoveď
Xano v skratke
Xano je no-code platforma na vývoj backendu aplikácií. Medzi jej hlavné funkcie patria:
- Autentifikácia: Hneď v základe má JWE tokeny a hotové riešenia na OAuth autentifikáciu.
- No-code API builder: Postavíte v ňom zložitú biznis logiku a workflowy (CRUD operácie sa dajú vygenerovať automaticky).
- Flexibilná databáza: Spravovaná databáza PostgreSQL, v ktorej si nastavíte triggery, indexy, validácie dát a podobne.
- Opakované úlohy: Opakované workflowy nastavíte jednoducho a v podstate zodpovedajú CRON jobom.
Pri audite Xano hľadáme pomalé dopyty a ďalšie problémy s výkonom. Môžeme ho spojiť s auditom WeWebu.
Ako zlepšiť celkový výkon Xano?
Ďalšie časti opisujú konkrétne zmeny v dopytoch, API endpointoch a úlohách na pozadí.
Databázové indexy
Indexy môžu pomôcť pri pomalých dopytoch. Tu sú situácie, v ktorých sa oplatí ich zvážiť v Xano.
Kedy použiť databázové indexy v Xano?
Zjednodušene: index vytvoríte vtedy, keď potrebujete zrýchliť dopyt do databázy. Podľa dokumentácie Xano sú hlavné prípady použitia tieto:
- Máte dopyt, ktorému trvá dlho, kým vráti dáta.
- Dopyt používa jednoduché operátory, napríklad
item.amount < 0auser.name = “Juraj”. - Tabuľka je taká veľká, že jej prehľadávanie tvorí merateľnú časť oneskorenia. Samotný počet riadkov nie je dôvod na index.
Kedy sa databázovým indexom v Xano vyhnúť?
- Ak má tabuľka veľa operácií insert/update.
- Ak má kombinácia polí v indexe len málo jedinečných hodnôt (takzvaná nízka kardinalita).
- Neselektívne dopyty: Ak dopyt zvyčajne vracia veľkú časť dát z tabuľky, indexy radšej nepoužívajte.
Aké typy indexov môžete pridať do tabuľky v Xano?
| Typ indexu | Použitie |
|---|---|
| GIN (Generalized Inverted Index) | Hlavne na vyhľadávanie v JSON dátach (napr. hľadanie páru kľúč-hodnota v JSON stĺpci). |
| Index | Štandardné, jednoduché dopyty. Môže byť jednoduchý (jeden stĺpec) alebo zložený (viac stĺpcov, napríklad vek + lokalita). |
| Unique | Vynúti jedinečné hodnoty v stĺpcoch (sekundárne ID, slugy a pod.). |
| Spatial | Špeciálne na vyhľadávanie v geografických dátach. |
| Search | Index, ktorý sa používa s fuzzy vyhľadávaním v Xano na hľadanie podobného textu. |
Ako v Xano vytvoriť nový index?
Návod Xano na indexy opisuje ich vytváranie aj sledovanie. Porovnajte konkrétny dopyt pred úpravou a po nej.
Index má prínosy aj náklady
| Dôvody na preverenie | Dôvody na opatrnosť | |
|---|---|---|
| Správanie dotazu | Pomalý dotaz s výberovými filtrami | Dotaz vracia väčšinu tabuľky |
| Zmeny dát | Opakované čítanie indexovaných polí | Časté vkladanie a aktualizácie |
| Hodnoty polí | Dostatok rôznych hodnôt na zúženie hľadania | Len niekoľko rôznych hodnôt |
Cachovanie API a funkcií
Čo je cachovanie?
Cachovanie dát vie skrátiť čas odozvy niektorých API endpointov zo sekúnd na milisekundy. Xano používa cachovanie cez REDIS, ktoré ukladá dáta v pamäti. Keď je pre požiadavku dostupná platná odpoveď v cache, Xano ju vráti bez opätovného vykonania cachovanej logiky. Pri chýbajúcej alebo neplatnej odpovedi musí výsledok vytvoriť.
Kedy v Xano nasadiť cachovanie odpovedí?
Xano má dva „typy“ cachovania odpovedí (API a Function), ale fungujú úplne rovnako. Cachovanie odpovedí odporúčame, lebo zlepší výkon a uvoľní výpočtové zdroje pre iné operácie.
- Statické alebo zriedka sa meniace dáta: keď sa podkladové dáta nemenia často.
- Náročné dopyty: ak logika trvá 10 a viac sekúnd. Môžete nastaviť reset cache (napr. každú hodinu).
- Predvídateľné zmeny dát: ak viete, že sa dáta aktualizujú denne, môžete nastaviť reset cache hneď po aktualizácii.
Kedy sa cachovaniu odpovedí v Xano vyhnúť?
Ak je API alebo funkcia v cache, nenačítava dáta v reálnom čase ani nespúšťa operácie vo function stacku. V týchto prípadoch sa cachovaniu vyhnite alebo s ním buďte opatrní:
- Načítavanie veľmi dynamických dát (napr. feedy sociálnych sietí).
- Akákoľvek funkcia alebo endpoint, kde robíte operácie zápisu alebo aktualizácie (tie sa totiž nevykonajú).
- Personalizované odpovede: ak sú dáta viazané na konkrétneho používateľa, použite „private caching“.
Pri načítavaní dát používajte addony
Čo sú addony v Xano?
Addon pridáva súvisiace dáta do databázového dopytu v Xano. Namiesto viacerých dopytov, ktorých výsledky potom spájate, pridá súvisiace záznamy do výsledku hlavného dopytu. To samo osebe nezaručuje jedinú operáciu v databáze.
Kedy addony v Xano použiť?
- Príklad 1: obohatenie dát podľa „cudzieho kľúča“. Ak má tabuľka
eventstĺpeclocation_id, addon vie automaticky dotiahnuť mesto/krajinu z tabuľkylocation. - Príklad 2: agregácie. Ak máte zoznam filmov a tabuľku recenzií, addon vie ku každému filmu vrátiť spolu s jeho detailmi aj počet recenzií.
Načítajte súvisiace dáta so záznamom
Samostatné hľadanie
- Načítať udalosť
- Osobitne načítať miesto
- Spojiť odpoveď vlastnou logikou
Dotaz s addonom
- Načítať udalosť so súvisiacim miestom
- Zahrnúť potrebné mesto a krajinu
- Vrátiť spojené dáta
Menej funkčných blokov, viac filtrov
Ukážeme si to na príklade. Máme tabuľku s 1 000 príspevkami. Chceme z nich odstrániť bodky a čiarky, dať slovám veľké začiatočné písmená, orezať medzery (trim), rozdeliť (split) a spojiť (join).
- Samostatné funkčné bloky (priemer ~ 1,5 s): Na každú operáciu jeden blok.
- Filtre Xano v jednom bloku (priemer ~ 0,75 s): Jeden funkčný blok s viacerými zreťazenými filtrami. V tomto príklade bol čas spracovania približne o 50 % kratší. Je to výsledok konkrétnej úlohy, nie zaručené zrýchlenie každej aplikácie.
Niekedy pomôže vlastný kód
Xano je primárne no-code, ale pri niektorých úlohách vie kód veci zrýchliť.
- V rovnakom príklade sme s kódom v AWS Lambda celkový čas skrátili o ďalších 60 %. Iné transformácie treba zmerať samostatne.
.forEacha.mapdopadli podobne, pri obrovských poliach však môže byť.forEachšetrnejší k pamäti.
Asynchrónne spracovanie
Nie všetko musí bežať synchrónne. Pomocou funkcie „Post process“ v Xano spustíte logiku až potom, ako API vráti odpoveď.
- Hodí sa na: odoslanie potvrdzovacieho e-mailu pri registrácii. Používateľ uvidí hlásenie o úspechu bez toho, aby čakal na odpoveď poskytovateľa e-mailov.
- Pozor: Nepoužívajte to, ak používateľ musí hneď vedieť, či práve táto operácia zlyhala.
Oddeľte odpoveď od následnej práce
- 1 Dokončite potrebnú operáciu
Dokončite prácu potrebnú pre výsledok API.
- 2 Vráťte odpoveď
Rozhranie môže zobraziť výsledok.
- 3 Spustite následné spracovanie
Napríklad po registrácii odošlite potvrdzovací e-mail.
Výsledok overte pri skutočnej záťaži
Jedna úprava, potom nové meranie
- Zmerať východisko
- Nájsť pomalý krok
- Spraviť jednu úpravu
- Porovnať výsledok
Viac používateľov, dát a funkcií môže spomaliť no-code aplikáciu aj aplikáciu postavenú na vlastnom kóde.
Ak je vaša aplikácia v Xano pomalá, môžeme ju s vami prejsť a navrhnúť úpravy.