Optimizēti vaicājumu datu modeļi

Vienkāršākais un ātrākais datu vaicājuma modelis ir:

  1. Viena tabula vai skats
  2. Iepriekš filtrēts serverī uz to, kas jums nepieciešams
  3. Kolonnas tiek indeksētas pareizi paredzētajiem vaicājumiem

Noformējot lietotni, jums ir jādomā par to, kā ātri veikt vaicājumus datos. Labākais veids, kā vaicāt datus, ir izmantot vienu tabulu vai skatu, kurā ir visa nepieciešamā informācija, un filtrēt tos serverī, pirms tos parādāt savā programmā. Jums arī jāpārliecinās, vai kolonnas, kuras izmantojat datu filtrēšanai vai kārtošanai, ir pareizi indeksētas. Tas padara jūsu lietotni ātrāku un vienmērīgāku.

Piemēram, pieņemsim, ka jums ir galerija, kurā redzams klientu un viņu pārdevēju saraksts. Ja klienta un pārdevēja informācija tiek glabāta atsevišķās tabulās, ir jāizmanto uzmeklēšana, lai iegūtu katra debitora pārdevēja vārdu. Tas palēnina programmas darbību, jo tai ir jāizpilda daudzi vaicājumi uz otru tabulu. Labāks veids ir izveidot skatu, kurā klienta un pārdevēja informācija tiek apvienota vienā tabulā, un izmantot šo skatu kā galerijas datu avots. Pēc tam jūsu programmai ir jāizpilda tikai viens vaicājums, lai iegūtu visus nepieciešamos datus.

Pastāv kompromiss starp vaicājuma ātrumu un datu normalizēšanu. Datu normalizēšana nozīmē, ka dati tiek glabāti tikai vienu reizi un izvairās no dublēšanās. Tas palīdz nodrošināt datu konsekvenci un precizitāti. Tomēr dažreiz jums ir jādublē daži dati, lai vaicājumi būtu ātrāki un vienkāršāki. Šie divi mērķi ir jālīdzsvaro lietotnes noformējumā un tabulas struktūrā. Pretējā gadījumā jūsu programma būs lēna un novēlota, jo tai ir jāveic daudz darba, lai filtrētu un savienotu datus no dažādām tabulām.

Servera puses skatu izmantošana

Skati, iespējams, ir visizplatītākais rīks, lai palīdzētu līdzsvarot šos mērķus. Tie piedāvā vienas tabulas struktūru vaicājumiem, iepriekš filtrē datus vaicājumā nepieciešamajam un iespējo uzmeklēšanu un savienojumus ar citām tabulām. Tā kā skata filtri, uzmeklēšana un savienojumi tiek aprēķināti serverī, gan lietderīgā slodze, gan klienta puses aprēķins tiek samazināts līdz minimumam.

Galerijā var tikt parādīti daudzi ieraksti no datu avots. Bet dažreiz jums ir jāparāda papildu informācija no cita datu avots, kas ir saistīta ar sākotnējo. Piemēram, jums ir galerija, kurā tiek rādīts debitoru saraksts, un jūs vēlaties parādīt katram debitoram piešķirtā pārdevēja vārdu. Pārdevēja vārds tiek glabāts citā datu avots nekā klienta informācija. Lai parādītu pārdevēja vārdu, ir jāizmanto uzmeklēšanas funkcija, kas atrod atbilstošo ierakstu citā datu avots. Tādējādi sākotnējā tabula tiek izvērsta ar uzmeklēšanas vērtībām.

Tomēr tabulas izvēršana var būt ļoti lēna, ja jums ir daudz ierakstu un daudz uzmeklēšanas. Katram galerijas ierakstam programmai ir jāizpilda atsevišķs vaicājums otram datu avots un jāiegūst uzmeklēšanas vērtība. Tas nozīmē, ka programmai, iespējams, būs jāizpilda daudzi vaicājumi par katru ierakstu, kas var aizņemt ilgu laiku un ietekmēt programmas veiktspēju. Šo anti-modeli dažreiz sauc par "N kvadrātā, (n^2)" vai "N+1" problēmu.

StartsWith vai filtrēšanas izmantošana

Power Fx nodrošina vairākus veidus, kā meklēt datus. Parasti izmantojiet izteiksmi, kas izmanto indeksu, piemēram, StartsWith vai Filtrs , nevis izteiksmi, kas lasa visu tabulu, piemēram , In. · In operators ir piemērots atmiņas kolekcijām vai ja ārējā datu avots tabula ir ļoti maza.

Apsveriet iespēju dublēt datus

Dažreiz datiem vaicājumā var piekļūt lēni, jo tie tiek glabāti citā atrašanās vietā vai formātā. Lai vaicājumu padarītu ātrāku, varat kopēt lēnos datus un saglabāt tos lokāli tabulā, kurā ir ātri un viegli veikt vaicājumu. Tomēr tas nozīmē, ka vietējie dati var nebūt sākotnējo datu visjaunākā versija. Pēc tam palaidiet citu procesu, lai periodiski atjauninātu lokālos datus. Šis process var būt Power Automate plūsma, spraudnis, saglabāta procedūra vai jebkura cita metode, kas var pārvietot datus no vienas vietas uz otru.

Vietējo datu atjaunināšanas biežuma prasība ir atkarīga no jūsu uzņēmuma vajadzībām. Cik svaigiem jābūt jūsu lietotnes datiem? Piemēram, pieņemsim, ka strādājat uzņēmumā Contoso, kas pārdod velosipēdus. Pieejamo velosipēdu saraksts tiek glabāts produktu datu bāzē, kurai varat piekļūt, izmantojot API pielāgotā savienotājā. Taču pieņemsim, ka API izsaukums ir lēns, tāpēc jūs nolemjat kopēt produkta datus un glabāt tos lokāli tabulā. Pēc tam izveidojiet skatu, kurā tabula tiek apvienota ar citiem jūsu programmai atbilstošiem datiem. Jūs arī izveidojat Power Automate plūsmu, kas darbojas katru dienu un atjaunina tabulu ar jaunākajiem produktu datiem no API. Pēc tam jūsu lietotne var ātrāk veikt vaicājumus lokālajos datos, un dati ir ne vairāk kā vienu dienu veci.

Datu dublēšana ir izplatīts tehnikas veids uzņēmuma līmeņa lietojumprogrammās, lai nodrošinātu labu veiktspēju. Varat izmantot Dataverse spraudņus, iekļautās procedūras vai datu pārvietošanu, lai dublētu datus vienā tabulā, kas ir optimizēta vaicājumiem. Galvenais jautājums ir šāds: cik aktuāliem jābūt šiem datiem? Ja varat atļauties nelielu kavēšanos, varat izmantot šo paņēmienu, lai paātrinātu lietotni.

Ieteikumi

Lai sasniegtu šo mērķi, apsveriet šādus jautājumus un ieteikumus:

  1. Cik svarīgi klientam ir redzēt datu vērtību galerijā vai datu režģī? Vai būtu pieņemami vispirms atlasīt ierakstu un pēc tam parādīt datus veidlapā?
  2. Vai skats var veikt priekšdarbus, kas nepieciešami, lai skatītu datus pareizajā formātā?
  3. Vai izmantojat operatoru "IN", kur darbosies "StartsWith"?
  4. Cik aktuāliem ir jābūt jūsu datiem? Vai ir kāda datu dublēšanas stratēģija, ko varat izmantot, lai vaicājums pēc noklusējuma darbotos vienā tabulā?