Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O padrão de consulta de dados mais simples e rápido é:
- Uma única tabela ou vista
- Pré-filtrado no servidor para o que você precisa
- As colunas são indexadas corretamente para as consultas esperadas
Ao projetar seu aplicativo, você precisa pensar em como consultar os dados rapidamente. A melhor maneira de consultar dados é usar uma única tabela ou exibição que tenha todas as informações necessárias e filtrá-las no servidor antes de exibi-las em seu aplicativo. Você também precisa certificar-se de que as colunas usadas para filtrar ou classificar os dados estão indexadas corretamente. Isso torna seu aplicativo mais rápido e suave.
Por exemplo, suponha que você tenha uma galeria que mostre uma lista de clientes e seus vendedores. Se você armazenar as informações do cliente e do vendedor em tabelas separadas, precisará usar pesquisas para obter o nome do vendedor para cada cliente. Isso torna seu aplicativo mais lento porque ele precisa executar muitas consultas para a outra tabela. Uma maneira melhor é criar uma exibição que combine as informações do cliente e do vendedor em uma tabela e usar essa exibição como a fonte de dados para sua galeria. Em seguida, seu aplicativo só precisa executar uma consulta para obter todos os dados necessários.
Há um compromisso entre a velocidade da consulta e a normalização dos dados. A normalização de dados significa que você armazena os dados apenas uma vez e evita a duplicação. Isso ajuda a manter os dados consistentes e precisos. No entanto, às vezes você precisa duplicar alguns dados para tornar as consultas mais rápidas e fáceis. Você precisa equilibrar essas duas metas no design do aplicativo e na estrutura da tabela. Caso contrário, seu aplicativo ficará lento e atrasado porque precisa fazer vários trabalhos para filtrar e unir os dados de tabelas diferentes.
Utilize vistas do lado do servidor
As visualizações são provavelmente a ferramenta mais comum para ajudar a equilibrar esses objetivos. Eles apresentam uma estrutura de tabela única para consultas, pré-filtram dados para o que você precisa na consulta e habilitam pesquisas e associações a outras tabelas. Como os filtros, consultas e junções de dados para a visualização são computados no servidor, tanto a carga útil como a computação do lado do cliente são reduzidas.
Evite demasiadas consultas numa galeria
Uma galeria pode exibir muitos registros de uma fonte de dados. Mas, às vezes, você precisa mostrar informações adicionais de outra fonte de dados relacionada à original. Por exemplo, você tem uma galeria que mostra uma lista de clientes e deseja mostrar o nome do vendedor atribuído a cada cliente. O nome do vendedor é armazenado em uma fonte de dados diferente das informações do cliente. Para mostrar o nome do vendedor, você precisa usar uma função de pesquisa que encontre o registro correspondente na outra fonte de dados. Isso expande a tabela original com os valores de pesquisa.
No entanto, expandir a tabela pode ser muito lento se você tiver muitos registros e muitas pesquisas. Para cada registro na galeria, o aplicativo precisa executar uma consulta separada para a outra fonte de dados e obter o valor de pesquisa. Isso significa que o aplicativo pode precisar executar muitas consultas para cada registro, o que pode levar muito tempo e afetar o desempenho do aplicativo. Este anti-padrão é por vezes conhecido como "N quadrado, (n^2)" ou um problema "N+1".
Usar StartsWith ou Filter
O Power Fx fornece várias maneiras de pesquisar dados. Em geral, use uma expressão que aproveite um índice como StartsWith ou Filter em vez de uma que leia toda a tabela como In. O operador In é adequado para coleções na memória ou se a tabela de fonte de dados externa for muito pequena.
Considere a duplicação de dados
Às vezes, os dados são lentos para acessar em uma consulta porque são armazenados em um local ou formato diferente. Para tornar a consulta mais rápida, você pode copiar os dados lentos e armazená-los localmente em uma tabela que seja rápida e fácil de consultar. No entanto, isso significa que os dados locais podem não ser a versão mais atualizada dos dados originais. Em seguida, execute outro processo para atualizar os dados locais periodicamente. Este processo pode ser um fluxo Power Automatic, um plugin, um procedimento armazenado ou qualquer outro método que possa mover dados de um lugar para outro.
O requisito de frequência de atualização dos dados locais depende das necessidades da sua empresa. Quão atualizados os dados precisam ser para seu aplicativo? Por exemplo, suponha que você trabalhe para a Contoso, uma empresa que vende bicicletas. A lista de bicicletas disponíveis é armazenada em um banco de dados de Produtos que você pode acessar por meio de uma API em um conector personalizado. Mas digamos que a chamada de API é lenta e, portanto, você decide copiar os dados do produto e armazená-los localmente em uma tabela. Em seguida, você cria um modo de exibição que combina sua tabela com outros dados relevantes para seu aplicativo. Você também cria um fluxo do Power Automate que é executado todos os dias e atualiza sua tabela com os dados mais recentes do produto da API. Em seguida, seu aplicativo pode consultar os dados locais mais rapidamente, e os dados têm apenas um dia no máximo.
A duplicação de dados é um tipo comum de técnica em aplicativos de nível empresarial para garantir um bom desempenho. Você pode usar plug-ins do Dataverse, procedimentos armazenados ou movimentação de dados para duplicar dados em uma única tabela otimizada para consulta. A questão-chave é: quão atualizados devem ser esses dados? Se conseguir tolerar algum atraso, pode usar esta técnica para acelerar a sua aplicação.
Suggestions
Para alcançar esse objetivo, considere as seguintes perguntas e sugestões:
- Qual é a importância para um cliente ver o valor dos dados em uma galeria ou grade de dados? Seria aceitável primeiro selecionar um registro e, em seguida, mostrar os dados em um formulário?
- Uma visualização pode fazer o pré-trabalho necessário para ver os dados no formato correto?
- Está a usar um operador "IN" onde um "StartsWith" funcionará?
- Quão atualizados devem ser os seus dados? Existe uma estratégia de duplicação de dados que você pode usar para fazer com que sua consulta funcione em uma única tabela por padrão?