Patrons de dades de consulta optimitzats

El patró de consulta de dades més senzill i ràpid és:

  1. Una sola taula o visualització
  2. Prefiltrat al servidor al que necessiteu
  3. Les columnes s'indexen correctament per a les consultes esperades

Quan dissenyeu l'aplicació, heu de pensar en com consultar les dades ràpidament. La millor manera de consultar dades és utilitzar una sola taula o visualització que tingui tota la informació que necessiteu i filtrar-la al servidor abans de mostrar-la a l'aplicació. També heu d'assegurar-vos que les columnes que utilitzeu per filtrar o ordenar les dades estiguin indexades correctament. Això fa que la vostra aplicació sigui més ràpida i fluida.

Per exemple, suposem que teniu una galeria que mostra una llista de clients i els seus comercials. Si emmagatzemeu la informació del client i del comercial en taules independents, heu d'utilitzar cerques per obtenir el nom del venedor de cada client. Això alenteix l'aplicació perquè ha d'executar moltes consultes a l'altra taula. Una millor manera és crear una visualització que combini la informació del client i del venedor en una taula i utilitzar-la com a font de dades per a la galeria. Aleshores, l'aplicació només ha d'executar una consulta per obtenir totes les dades que necessita.

Hi ha una compensació entre la velocitat de consulta i la normalització de dades. La normalització de dades significa que emmagatzemeu les dades només una vegada i eviteu la duplicació. Això ajuda a mantenir les dades coherents i precises. Tanmateix, de vegades cal duplicar algunes dades per fer les consultes més ràpides i fàcils. Heu d'equilibrar aquests dos objectius en el disseny de l'aplicació i l'estructura de la taula. En cas contrari, la vostra aplicació serà lenta i lenta perquè ha de fer nombrosos treballs per filtrar i unir les dades de diferents taules.

Utilitzar visualitzacions del servidor

Les visualitzacions són probablement l'eina més comuna per ajudar a equilibrar aquests objectius. Presenten una única estructura de taula per a consultes, filtren prèviament les dades per al que necessiteu a la consulta i permeten cerques i unions a altres taules. Com que els filtres, les cerques i les unions de la visualització es calculen al servidor, es minimitzen tant la càrrega útil com el càlcul del client.

Una galeria pot visualitzar molts registres d'una font de dades. Però, de vegades, cal mostrar informació addicional d'una altra font de dades relacionada amb l'original. Per exemple, teniu una galeria que mostra una llista de clients i voleu mostrar el nom del comercial assignat a cada client. El nom del venedor s'emmagatzema en una font de dades diferent de la informació del client. Per mostrar el nom del comercial, heu d'utilitzar una funció de cerca que trobi el registre coincident a l'altra font de dades. Això expandeix la taula original amb els valors de cerca.

Tanmateix, l'expansió de la taula pot ser molt lenta si teniu molts registres i moltes cerques. Per a cada registre de la galeria, l'aplicació ha d'executar una consulta independent a l'altra font de dades i obtenir el valor de cerca. Això vol dir que és possible que l'aplicació hagi d'executar moltes consultes per a cada registre, cosa que pot trigar molt de temps i afectar el rendiment de l'aplicació. Aquest antipatró de vegades es coneix com a "N al quadrat, (n^2)" o un problema "N+1".

Utilitzar StartsWith o Filter

El Power Fx proporciona diverses maneres de cercar dades. En general, utilitzeu una expressió que aprofiti un índex com StartsWith o Filter en lloc d'una que llegeixi tota la taula com In. L'operador In està bé per a col·leccions en memòria o si la taula de fonts de dades externes és molt petita.

Penseu en duplicar dades

De vegades, l'accés a les dades és lent en una consulta perquè s'emmagatzemen en una ubicació o format diferents. Per fer que la consulta sigui més ràpida, podeu copiar les dades lentes i emmagatzemar-les localment en una taula que sigui ràpida i fàcil de consultar. Tanmateix, això vol dir que és possible que les dades locals no siguin la versió més actualitzada de les dades originals. A continuació, executeu un altre procés per actualitzar les dades locals periòdicament. Aquest procés pot ser un flux del Power Automate, un connector, un procediment emmagatzemat o qualsevol altre mètode que pugui moure dades d'un lloc a un altre.

El requisit de freqüència d'actualització de les dades locals depèn de les necessitats de la vostra empresa. Quina actualització han de tenir les dades de l'aplicació? Per exemple, suposem que treballeu per a Contoso, una empresa que ven bicicletes. La llista de bicicletes disponibles s'emmagatzema en una base de dades de productes a la qual podeu accedir a través d'una API en un connector personalitzat. Però diguem que la trucada a l'API és lenta i, per tant, decidiu copiar les dades del producte i emmagatzemar-les localment en una taula. A continuació, creeu una visualització que combini la taula amb altres dades rellevants per a l'aplicació. També creeu un flux del Power Automate que s'executa cada dia i actualitza la taula amb les dades de producte més recents de l'API. Aleshores, l'aplicació pot consultar les dades locals més ràpidament i les dades només tenen un dia com a màxim.

La duplicació de dades és un tipus de tècnica comuna en aplicacions de nivell empresarial per garantir un bon rendiment. Podeu utilitzar connectors, procediments emmagatzemats o moviments de dades del Dataverse per duplicar dades en una sola taula optimitzada per a consultes. La pregunta clau és: fins a quin punt han d'estar actualitzades aquestes dades? Si us podeu permetre un retard, podeu utilitzar aquesta tècnica per accelerar l'aplicació.

Suggeriments

Per assolir aquest objectiu, considereu les preguntes i suggeriments següents:

  1. Quina importància té per a un client veure el valor de les dades en una galeria o quadrícula de dades? Seria acceptable seleccionar primer un registre i després mostrar les dades en un formulari?
  2. Una visualització pot fer el treball previ necessari per veure les dades en el format correcte?
  3. Esteu utilitzant un operador "IN" on funcionarà un "StartsWith"?
  4. Quina actualització han d'estar les vostres dades? Hi ha alguna estratègia de duplicació de dades que pugueu utilitzar per fer que la consulta funcioni en una sola taula per defecte?