Preskočiť na obsah

Ako zrýchliť Xano: návod na optimalizáciu výkonu

Č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

  1. Požiadavka aplikácie
  2. Logika API
  3. Dátový dotaz
  4. Odpoveď
Každá časť môže pridať čakanie. Pred úpravou zmerajte, kde vzniká oneskorenie.

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 < 0 a user.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 indexuPouž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).
UniqueVynú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.
SearchIndex, 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 preverenieDô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
Skontrolujte konkrétne dotazy a po zmene indexu overte výsledok.

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 event stĺpec location_id, addon vie automaticky dotiahnuť mesto/krajinu z tabuľky location.
  • 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
Príklad udalosti a miesta z tohto návodu. Overte, ktoré súvisiace polia obrazovka naozaj potrebuje.

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.
  • .forEach a .map dopadli 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.

Použite to len pri práci, ktorej zlyhanie nemusí zmeniť okamžitú odpoveď.

Výsledok overte pri skutočnej záťaži

Jedna úprava, potom nové meranie

Pomalý endpoint
  1. Zmerať východisko
  2. Nájsť pomalý krok
  3. Spraviť jednu úpravu
  4. Porovnať výsledok
Použite rovnaké vstupy a sledujte rýchlosť aj správnosť. Pri cache overte platnú uloženú odpoveď aj jej chýbanie.

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.

Chcete sa poradiť o svojom projekte?

Dohodnite si hovor a spolu prejdeme vaše možnosti.

JurajCEO, QikBuild

Z hovoru si odnesiete

  • Návrh, čo by sme postavili ako prvé
  • Orientačnú cenu
  • Odpoveď, či sa vám oplatí softvér na mieru
Dohodnúť 30-minútový hovor

Alebo napíšte na hello@qikbuild.com