Mind map
Recuperando dados
Map content
Recuperando dados
Use aggregates para buscar dados de entidades de banco de dados
- São definidos visualmente, tornando a recuperação de dados mais intuitiva
- Absorvem automaticamente as alterações no modelo de dados
- Suportam a combinação de diversas entidades e filtragem avançada
- Recuperam apenas os atributos usados na tela
- São executados de forma assíncrona, permitindo que os usuários interajam com o aplicativo enquanto os dados são carregados
Prefira o uso de aggregates em vez de consultas SQL.
Aggregates permitem que você busque dados usando uma consulta otimizada e adaptada às suas necessidades.
Use data actions para buscar dados complexos ou para buscar dados externos
- Busca de dados complexos do banco de dados, o que não é possível com um único aggregate.
- Busca de dados de fontes externas (por exemplo, APIs REST)
Evite buscar um grande número de registros
- Exibir um grande número de registros de uma só vez é lento e desnecessário, pois o usuário pode precisar apenas de alguns registros por vez.
- Busque dados somente sob demanda, definindo a propriedade Fetch dos seus agregados de tela como Only on Demand.
- Se você usar o widget de lista, adote uma abordagem de carregamento lento, manipulando o evento On Scroll Ending. Essa abordagem permite que seu aplicativo carregue dados incrementalmente conforme os usuários rolam a tela.
- Se você usar o widget de tabela, utilize o padrão de interface de paginação para carregar apenas um determinado número de registros por vez, em vez de carregar uma tabela inteira de uma só vez.
Mantenha o número de registros buscados consistente com suas necessidades
- Se você não limitar o número máximo de registros lidos do banco de dados, todos os registros que atenderem aos critérios serão recuperados desnecessariamente, aumentando a carga do banco de dados e o tempo de resposta.
- Para aggregates, defina a propriedade Max. Records para corresponder à quantidade de dados que você deseja exibir. Se precisar da contagem total de registros, use <Aggregate>.Count, pois ela não é limitada pelo valor Max. Records.
- Para consultas SQL, adicione uma cláusula SQL à instrução do elemento SQL para filtrar os resultados no nível do banco de dados. Por exemplo, SELECT <column_names> FROM <!--table_joins> LIMIT 10.
Otimize a contagem de registros
- Ao usar <Aggregate>.Count ou <SQL query>.Count para obter a contagem total de registros retornados por uma consulta, o OutSystems gera uma segunda consulta para realizar a contagem, ignorando o valor "Máx. Registros"
- Para aggregates, o OutSystems gera uma consulta otimizada para contagem de registros. No entanto, isso não acontece com consultas SQL.
- Com aggregates, use <Aggregate>.Count. A plataforma executa a mesma consulta de forma otimizada para contar os registros
- Com consultas SQL, execute uma versão modificada da consulta original, com o único propósito de contar o número de registros
- Não use <Aggregate>.Count ou <SQL query>.Count para verificar se o resultado da consulta está vazio ou não, pois isso executará uma consulta extra desnecessariamente
- Você evita executar consultas complexas repetidamente
Não mostre uma tela em branco enquanto os dados estão sendo obtidos
- Planeje o que seu aplicativo exibe ao usuário enquanto os dados estão sendo buscados
- Busque dados menores ao inicializar o aplicativo. Isso renderiza elementos essenciais enquanto dados maiores são carregados em segundo plano.
- Informe os usuários que os dados estão sendo carregados. Por exemplo, use botões giratórios de carregamento, barras de progresso ou telas de esqueleto.
- Você evita a percepção de um aplicativo quebrado ou sem resposta, melhorando a experiência do usuário.
Otimizar a busca de dados
- Buscar dados para exibição em uma tela usando cálculos complexos ou lógica aumenta o tempo para que os dados sejam carregados.
- Conheça seus requisitos de dados e crie um modelo de dados que suporte o caso de uso da tela, em vez de calcular as informações ao buscar os dados ou nas expressões dos widgets de tela.
- Execute todos os cálculos com antecedência
- Quando os dados são gerados. Por exemplo, sempre que adicionar um período de férias, atualize imediatamente os dias disponíveis restantes nos detalhes do funcionário, em vez de calculá-los quando quiser listar os dias de férias disponíveis por funcionário.
- Use um Timer para preparar os dados antecipadamente. Por exemplo, prepare entidades de aglomeração para suportar painéis.
- Se precisar buscar dados complexos usando data actions, utilize junções e funções SQL adequadas para reunir todos os dados necessários em uma única consulta SQL executada fora de um loop. Certifique-se de criar índices de entidade para os atributos usados nas cláusulas JOIN e WHERE.
- Crie telas especializadas diferentes, em vez de uma tela avançada com preparação de dados ineficiente que precisa lidar com todas as situações.
- Reduz o tempo que os usuários precisam esperar para que os dados sejam carregados, melhorando o desempenho da tela
Restringir o acesso a dados confidenciais
- Ao buscar dados confidenciais que dependem da função ou ID do usuário, não é seguro confiar em informações de controle de entradas do lado do cliente
- Filtre seus aggregates usando a função CheckROLENAMERole() para restringir o acesso a dados sensíveis. Você também pode usar a função GetUserId() para um acesso mais restrito.
- Restringir o acesso aos seus dados traz um nível adicional de segurança ao seu aplicativo.
Information
- Description
- OutSystems Certifications OutSystems - Web Especialist (Melhores práticas) Mind Map on Recuperando dados, created by Neimar Soares on 10/04/2025.
- Created by
- Neimar Soares
- Views
- 0
- Rating