Optimalizované vzory údajov dotazov

Najjednoduchší a najrýchlejší vzor dotazu na údaje je:

  1. Jedna tabuľka alebo pohľad
  2. Predfiltrované na serveri podľa toho, čo potrebujete
  3. Stĺpce sú indexované správne pre očakávané dotazy

Keď navrhujete svoju aplikáciu, musíte myslieť na to, ako rýchlo dopytovať údaje. Najlepším spôsobom dotazovania na údaje je použiť jednu tabuľku alebo zobrazenie, ktoré obsahuje všetky potrebné informácie, a pred zobrazením vo svojej aplikácii ich filtrovať na serveri. Musíte sa tiež uistiť, že stĺpce, ktoré používate na filtrovanie alebo triedenie údajov, sú správne indexované. Vďaka tomu je vaša aplikácia rýchlejšia a plynulejšia.

Predpokladajme napríklad, že máte galériu, ktorá zobrazuje zoznam zákazníkov a ich predajcov. Ak ukladáte informácie o zákazníkovi a predajcovi v samostatných tabuľkách, na získanie mena predajcu pre každého zákazníka musíte použiť vyhľadávanie. To spomaľuje vašu aplikáciu, pretože potrebuje spustiť veľa dotazov na druhú tabuľku. Lepším spôsobom je vytvoriť zobrazenie, ktoré kombinuje informácie o zákazníkovi a predajcovi do jednej tabuľky, a použiť toto zobrazenie ako zdroj údajov pre svoju galériu. Potom vašej aplikácii stačí spustiť jeden dotaz, aby získala všetky údaje, ktoré potrebuje.

Existuje kompromis medzi rýchlosťou dopytu a normalizáciou údajov. Normalizácia údajov znamená, že údaje uložíte iba raz a vyhnete sa duplicite. To pomáha udržiavať údaje konzistentné a presné. Niekedy je však potrebné duplikovať niektoré údaje, aby boli dotazy rýchlejšie a jednoduchšie. Tieto dva ciele musíte vyvážiť v dizajne aplikácie a štruktúre tabuľky. V opačnom prípade bude vaša aplikácia pomalá a oneskorená, pretože musí vykonať množstvo práce na filtrovanie a spájanie údajov z rôznych tabuliek.

Použite zobrazenia na strane servera

Zobrazenia sú pravdepodobne najbežnejším nástrojom, ktorý pomáha vyrovnať tieto ciele. Predstavujú štruktúru jednej tabuľky pre dotazy, predfiltrujú údaje pre to, čo v dotaze potrebujete, a umožňujú vyhľadávanie a spojenia s inými tabuľkami. Pretože filtre, vyhľadávania a spojenia pre zobrazenie sa počítajú na serveri, je minimalizované zaťaženie aj výpočet na strane klienta.

Galéria môže zobraziť veľa záznamov z zdroj údajov. Niekedy však potrebujete zobraziť ďalšie informácie z inej zdroj údajov, ktorá súvisí s pôvodnou. Máte napríklad galériu, ktorá zobrazuje zoznam zákazníkov, a chcete zobraziť meno predajcu, ktorý je priradený ku každému zákazníkovi. Meno predajcu je uložené v inom zdroj údajov ako informácie o zákazníkovi. Ak chcete zobraziť meno predajcu, musíte použiť funkciu vyhľadávania, ktorá nájde zodpovedajúci záznam v inom zdroj údajov. Toto rozšíri pôvodnú tabuľku o vyhľadávacie hodnoty.

Rozšírenie tabuľky však môže byť veľmi pomalé, ak máte veľa záznamov a veľa vyhľadávaní. Pre každý záznam v galérii musí aplikácia spustiť samostatný dotaz na druhý zdroj údajov a získať hodnotu vyhľadávania. To znamená, že aplikácia môže potrebovať spustiť veľa dotazov pre každý záznam, čo môže trvať dlho a ovplyvniť výkon aplikácie. Tento anti-vzor je niekedy známy ako problém „N na druhú, (n^2)“ alebo „N+1“.

Použite StartsWith alebo Filter

Power Fx poskytuje niekoľko spôsobov vyhľadávania údajov. Vo všeobecnosti použite výraz, ktorý využíva index ako StartsWith alebo Filter namiesto výrazu, ktorý prečíta celú tabuľku ako In. Operátor In je vhodný pre kolekcie v pamäti alebo ak je externá tabuľka zdroj údajov veľmi malá.

Zvážte duplikovanie údajov

Niekedy je prístup k údajom v dotaze pomalý, pretože sú uložené v inom umiestnení alebo formáte. Ak chcete zrýchliť dotaz, môžete skopírovať pomalé údaje a uložiť ich lokálne do tabuľky, ktorá sa dá rýchlo a jednoducho dotazovať. To však znamená, že lokálne údaje nemusia byť najaktuálnejšou verziou pôvodných údajov. Potom spustite ďalší proces na pravidelnú aktualizáciu miestnych údajov. Tento proces môže byť Power Automate tok, doplnok, uložená procedúra alebo akákoľvek iná metóda, ktorá dokáže presúvať údaje z jedného miesta na druhé.

Požiadavka na frekvenciu aktualizácie miestnych údajov závisí od potrieb vašej firmy. Aké čerstvé musia byť údaje pre vašu aplikáciu? Predpokladajme napríklad, že pracujete pre spoločnosť Contoso, ktorá predáva bicykle. Zoznam dostupných bicyklov je uložený v databáze produktov, ku ktorej máte prístup prostredníctvom rozhrania API vo vlastnom konektore. Povedzme však, že volanie rozhrania API je pomalé, a tak sa rozhodnete skopírovať údaje o produkte a uložiť ich lokálne do tabuľky. Potom vytvoríte zobrazenie, ktoré kombinuje vašu tabuľku s ďalšími relevantnými údajmi pre vašu aplikáciu. Môžete tiež vytvoriť Power Automate tok, ktorý sa spúšťa každý deň a aktualizuje vašu tabuľku najnovšími údajmi o produktoch z rozhrania API. Potom môže vaša aplikácia vyhľadávať miestne údaje rýchlejšie a údaje sú staré maximálne jeden deň.

Duplikovanie údajov je bežným typom techniky v podnikových aplikáciách na zabezpečenie dobrého výkonu. Na duplikovanie údajov do jednej tabuľky, ktorá je optimalizovaná na dopytovanie, môžete použiť doplnky Dataverse , uložené procedúry alebo presun údajov. Kľúčová otázka znie: nakoľko musia byť tieto údaje aktuálne? Ak si môžete dovoliť nejaké oneskorenie, môžete použiť túto techniku ​​na zrýchlenie aplikácie.

Návrhy

Na dosiahnutie tohto cieľa zvážte nasledujúce otázky a návrhy:

  1. Aké dôležité je pre zákazníka vidieť hodnotu údajov v galérii alebo dátovej mriežke? Bolo by prijateľné najprv vybrať záznam a potom zobraziť údaje vo formulári?
  2. Dokáže zobrazenie vykonať predbežnú prácu potrebnú na zobrazenie údajov v správnom formáte?
  3. Používate operátor "IN", kde bude fungovať "StartsWith"?
  4. Aké aktuálne musia byť vaše údaje? Existuje stratégia duplikácie údajov, ktorú môžete použiť na to, aby váš dotaz predvolene pracoval s jednou tabuľkou?