Optimizovani obrasci podataka upita

Najjednostavniji i najbrži obrazac upita podataka je:

  1. Jedna tabela ili prikaz
  2. Unapred filtrirano na serveru na ono što vam je potrebno
  3. Kolone su ispravno indeksirane za očekivane upite

Kada dizajnirate aplikaciju, potrebno je da razmislite o tome kako da brzo ispitate podatke. Najbolji način da izvršite upit nad podacima je da koristite jednu tabelu ili prikaz koji sadrži sve potrebne informacije i filtrirate ih na serveru pre nego što ih prikažete u aplikaciji. Takođe morate da se uverite da su kolone koje koristite za filtriranje ili sortiranje podataka pravilno indeksirane. Ovo čini aplikaciju bržom i glatkom.

Na primer, pretpostavimo da imate galeriju koja prikazuje listu kupaca i njihovih prodavaca. Ako informacije o kupcu i prodavcu skladištite u zasebne tabele, potrebno je da koristite izgled da biste dobili ime prodavca za svakog kupca. Ovo usporava aplikaciju jer treba da pokrene mnoge upite u drugu tabelu. Bolji način je da kreirate prikaz koji kombinuje informacije o kupcu i prodavcu u jednoj tabeli i koristite taj prikaz kao izvor podataka za vašu galeriju. Tada aplikacija treba da pokrene samo jedan upit da bi dobila sve potrebne podatke.

Postoji razmena između brzine upita i normalizacije podataka. Normalizacija podataka znači da podatke skladištite samo jednom i izbegavate dupliranje. Ovo pomaže da podaci ostanu dosledni i tačni. Međutim, ponekad je potrebno da duplirate neke podatke da biste upite brže i lakše. Potrebno je da izbalansirate ova dva cilja u dizajnu aplikacije i strukturi tabele. U suprotnom, vaša aplikacija će biti spora i zaostata jer treba da uradi brojne radove kako bi filtrirala i spajala podatke iz različitih tabela.

Korišćenje prikaza na strani servera

Prikazi su verovatno najčešća alatka koja pomaže u balansiranju ovih ciljeva. Oni predstavljaju jednu strukturu tabele za upite, predfilter podatke za ono što vam je potrebno u upitu i omogućavaju izgled i spajanje sa drugim tabelama. Budući da su filteri, izgled i spojovi za prikaz izračunati na serveru, i tovar i računar na strani klijenta su umanjeni.

Galerija može da prikaže mnogo zapisa iz izvor podataka. Međutim, ponekad je potrebno da prikažete dodatne informacije iz drugog izvor podataka koje su povezane sa originalnom. Na primer, imate galeriju koja prikazuje listu kupaca i želite da prikažete ime prodavca koji je dodeljen svakom kupcu. Ime prodavca je uskladišteno u različitim izvor podataka od informacija kupca. Da biste pokazali ime prodavca, potrebno je da koristite funkciju pronalaženja koja pronalazi odgovarajući zapis u drugoj izvor podataka. Ovim se originalna tabela proširuje vrednostima za pronalaženje.

Međutim, proširenje tabele može biti veoma sporo ako imate mnogo zapisa i mnogo zapisa. Za svaki zapis u galeriji, aplikacija treba da pokrene poseban upit za druge izvor podataka i dobije vrednost za pronalaženje. To znači da će aplikacija možda morati da pokrene mnoge upite za svaki zapis, što može dugo da potraje i utiče na performanse aplikacije. Ovaj anti-obrazac je ponekad poznat kao "N na kvadrat" (n^2)" ili "N+1" problem.

Koristi "StartWith" ili "Filter"

Power Fx obezbeđuje nekoliko načina pretraživanja podataka. Uopšteno, koristite izraz koji koristi indeks kao što je "StartWith" ili "Filter" umesto onog koji čita celu tabelu kao što je "In ". Operator In je u redu za kolekcije memorije ili ako je spoljna izvor podataka veoma mala.

Razmislite o dupliranju podataka

Ponekad se podacima sporo pristupa u upitu jer su uskladišteni na drugoj lokaciji ili formatu. Da biste ubrzali upit, možete da kopirate spore podatke i uskladištite ih lokalno u tabelu koju je brzo i lako izvršiti upit. Međutim, to znači da lokalni podaci možda nisu najobjašnjenija verzija originalnih podataka. Zatim pokrenite drugi proces da biste povremeno ažurirali lokalne podatke. Ovaj proces može biti tok Power Automate , dodatna komponenta, uskladištena procedura ili bilo koji drugi metod koji može da premešta podatke sa jednog mesta na drugo.

Zahtev učestalosti ažuriranja lokalnih podataka zavisi od vaših poslovnih potreba. Koliko sveži podaci treba da budu za vašu aplikaciju? Na primer, pretpostavimo da radite za Kontoso, kompaniju koja prodaje bicikle. Lista dostupnih bicikala skladišti se u bazi podataka "Proizvodi" kojima možete da pristupite putem API-ja u prilagođenoj liniji spajanja. Međutim, recimo da je API poziv spor i zato odlučite da kopirate podatke o proizvodu i uskladištite ih lokalno u tabelu. Zatim kreirate prikaz koji kombinuje tabelu sa drugim relevantnim podacima za aplikaciju. Takođe kreirate tok koji Power Automate se pokreće svakog dana i ažurirate tabelu najnovijim podacima o proizvodu iz API-ja. Tada vaša aplikacija može brže da izvrši upit nad lokalnim podacima, a podaci su stari najviše jedan dan.

Dupliranje podataka je uobičajen tip tehnike u aplikacijama za ocenjivanje preduzeća kako bi se osigurale dobre performanse. Dodatne komponente Dataverse , uskladištene procedure ili premeštanje podataka možete da koristite za dupliranje podataka u jednu tabelu koja je optimizovana za upite. Ključno pitanje je: koliko autiskti moraju biti auterni? Ako možete da priuštite neko odlaganje, možete da koristite ovu tehniku da biste ubrzali aplikaciju.

Predlozi

Da biste ostvarili ovaj cilj, razmotrite sledeća pitanja i sugestije:

  1. Koliko je važno da klijent vidi vrednost podataka u galeriji ili koordinatnoj mreži podataka? Da li bi bilo prihvatljivo da prvo izaberete zapis, a zatim da prikažete podatke u obrascu?
  2. Da li prikaz može da uradi prethodno delo neophodno da bi se videli podaci u pravom formatu?
  3. Da li koristite operator "IN" gde će raditi "StartsWith"?
  4. Koliko je potrebno da vaši podaci budu aktuelni? Da li postoji strategija dupliranja podataka koju možete da koristite da bi upit podrazumevano radio preko jedne tabele?