Recomendações para otimizar o desempenho dos dados

Aplica-se a esta recomendação de lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:

PE:08 Otimizar o desempenho dos dados. Otimize armazenamentos de dados, partições e índices para seu uso pretendido e real na carga de trabalho.

Este guia descreve as recomendações para otimizar o desempenho dos dados. Otimizar o desempenho de dados é refinar a eficiência com a qual a carga de trabalho processa e armazena dados. Cada operação de carga de trabalho, transação ou computação normalmente depende da recuperação, processamento e armazenamento rápidos e precisos de dados. Quando o desempenho dos dados é otimizado, a carga de trabalho é executada sem problemas. O desempenho de dados comprometidos cria um efeito dominó de baixa eficiência de desempenho. A falha ao otimizar o desempenho dos dados resulta em atrasos de resposta, latência aumentada e escalabilidade reduzida. Isso coloca em risco a eficiência de toda a carga de trabalho.

Definições

Termo Definição
Teorema de CAP Uma estrutura usada para considerar a consistência, a disponibilidade e a tolerância à partição para ajudar a explicar as compensações na consistência de dados.
Recompilação de índice de banco de dados Uma atividade de manutenção que descarta e recria um índice.
Reorganização do índice de banco de dados Uma atividade de manutenção que otimiza o índice de banco de dados atual.
Armazenamento de dados Um recurso que armazena dados como um banco de dados, um repositório de objetos ou um compartilhamento de arquivos.
Coerência eventual Um modelo de sincronização de dados que permite inconsistência temporária em réplicas de dados antes de serem sincronizadas.
Índice Uma estrutura de banco de dados que fornece acesso rápido aos itens.
OLAP (processamento analítico online) Uma tecnologia que organiza grandes bancos de dados de negócios, dá suporte a análises complexas e executa consultas analíticas complexas sem afetar negativamente os sistemas transacionais.
OLTP (transação online) Uma tecnologia que registra interações comerciais à medida que ocorrem em operações diárias de uma organização.
Simultaneidade otimista Uma abordagem para atualizar bancos de dados que usam instantâneos para fazer atualizações em vez de mecanismos de bloqueio tradicionais, melhorando o desempenho e a escalabilidade.
Teorema PACELC Uma estrutura usada para considerar a tolerância à partição, disponibilidade, consistência e latência para ajudar a explicar as compensações na consistência de dados.
Particionamento O processo de divisão física de dados em armazenamentos de dados separados.
Ajuste de consulta Um processo que otimiza a velocidade de uma consulta de banco de dados.
Ler réplica Uma cópia dinâmica de um banco de dados primário que permite descarregar o tráfego de leitura de um banco de dados de gravação.

Principais estratégias de design

Para otimizar o uso de dados, verifique se os armazenamentos de dados, partições e índices são otimizados para uso pretendido e para uso real em uma carga de trabalho. O uso otimizado de dados pode melhorar o desempenho da consulta, reduzir o consumo de recursos e aumentar a eficiência geral do sistema. Considerar as seguintes estratégias:

  • Dados de perfil. Entenda seus dados e verifique se o modelo de dados é adequado para sua carga de trabalho. Considere fatores como normalização de dados, estratégias de indexação e técnicas de particionamento. Para obter uma recuperação de dados eficiente, selecione os tipos de dados apropriados, defina relações entre entidades e determine uma estratégia de indexação ideal.

  • Ajuste a configuração de armazenamento de dados. Configure sua infraestrutura de armazenamento de dados para se alinhar aos seus requisitos de carga de trabalho. Selecione uma tecnologia de armazenamento apropriada, por exemplo, bancos de dados relacionais, bancos de dados NoSQL e data warehouses. Otimize as configurações de armazenamento, como tamanho do buffer, mecanismos de cache e compactação.

  • Otimizar o desempenho da consulta. Analise e otimize as consultas executadas na carga de trabalho. Use técnicas como otimização de consulta, indexação e cache. Para identificar gargalos, use planos de consulta e ferramentas de monitoramento de desempenho e faça as melhorias necessárias.

  • Monitore e ajuste regularmente o sistema. Monitore continuamente o desempenho da carga de trabalho e itera nas otimizações de configuração e consulta de armazenamento de dados. Com base nas práticas recomendadas de ajuste de desempenho, analise as métricas do sistema, identifique áreas de melhoria e implemente alterações.

Dados de perfil

A criação de perfil de dados envolve examinar os dados de uma fonte e coletar informações sobre ele. O objetivo é entender a qualidade, a estrutura e as características dos dados de carga de trabalho. Esse processo permite a identificação de problemas como valores ausentes, duplicatas, formatos inconsistentes e outras anomalias. Para criação de perfil de dados eficaz, considere as seguintes estratégias:

  • Entenda a estrutura de dados. Examine a estrutura de seus dados, incluindo tabelas, colunas e relações. Determine os tipos de dados, os comprimentos e as restrições que são aplicados a cada coluna. A avaliação da estrutura de dados ajuda você a entender como os dados são organizados e como eles se relacionam com outros elementos de dados.

  • Analise o volume de dados. Avalie o volume de seus dados para entender o tamanho geral e os padrões de crescimento. Determine o número de registros ou documentos e o tamanho de tabelas ou coleções individuais. Essas informações ajudam você a estimar os requisitos de armazenamento e a identificar problemas de escalabilidade.

  • Identificar relações de dados. Explore as relações entre elementos de dados, como relações de chave primária e estrangeira. Entenda como os dados estão conectados, para que você possa determinar como as alterações em uma tabela ou documento podem afetar os dados relacionados.

  • Avaliar a qualidade dos dados. Avalie a qualidade dos dados examinando fatores como integridade, precisão, consistência e exclusividade. Identifique anomalias de dados, valores ausentes ou registros duplicados que possam afetar a integridade dos dados e o desempenho da consulta. Esta etapa ajuda você a identificar áreas de limpeza e melhoria de dados.

  • Capturar distribuição de dados. Analise a distribuição de valores em cada coluna para determinar os padrões de dados. Identifique valores frequentes e raros, exceções e distorções de dados. Para otimizar o desempenho da consulta, escolha estratégias de indexação apropriadas e técnicas de otimização de consulta com base na distribuição.

Monitorar o desempenho dos dados

O monitoramento de desempenho de dados é a prática de acompanhar consistentemente a eficiência de armazenamentos de dados, partições e índices em tempo real. Ele envolve coletar e analisar métricas de desempenho específicas para operações de dados, usando ferramentas personalizadas para soluções de monitoramento de nível de sistema, específicas do banco de dados ou de terceiros. O monitoramento eficaz do desempenho de dados permite identificar e atenuar proativamente possíveis gargalos, garantindo que processos e tarefas relacionados a dados sejam eficientes. Para monitorar o desempenho dos dados, considere as seguintes estratégias:

  • Coletar métricas específicas de dados. Reúna as principais métricas relacionadas diretamente ao desempenho dos dados. Essas métricas incluem tempos de resposta de consulta, taxa de transferência de dados, E/S de disco relacionada ao acesso a dados e os tempos de carregamento de partições de dados específicas.

  • Configurar alertas de dados. Configure alertas especificamente para métricas de dados. Use limites ou anomalias predefinidos nessas métricas para disparar alertas. Os alertas permitem que você receba notificações quando as métricas de desempenho excederem os intervalos aceitáveis ou mostrarem comportamento anormal. Por exemplo, se uma consulta de banco de dados demorar mais do que o esperado ou se a taxa de transferência de dados cair significativamente, ela disparará um alerta. Você pode configurar esses alertas usando ferramentas de monitoramento especializadas ou scripts personalizados.

  • Diagnosticar problemas de desempenho de dados. Examine regularmente as métricas de dados coletadas para identificar possíveis gargalos de desempenho ou degradação em operações de dados. Ferramentas de visualização ou painéis podem ser inestimáveis nesse processo, ajudando a destacar tendências, gargalos e exceções no desempenho de dados. Depois de identificado, aprofunde-se nas causas raiz desses problemas e estratize as etapas de correção apropriadas.

Dados de partição

O particionamento envolve a divisão de grandes conjuntos de dados ou cargas de trabalho de alto volume em subconjuntos menores e gerenciáveis. O particionamento melhora a eficiência do desempenho dos dados distribuindo a carga de trabalho e melhorando o processamento paralelo. Ele também garante acesso a dados mais eficaz com base em necessidades específicas e padrões de consulta. Você pode particionar dados vertical ou horizontalmente (também chamado de fragmentação).

Estratégia Definição Exemplo Casos de uso
Particionamento vertical Divida uma tabela em tabelas menores selecionando colunas ou campos específicos para cada partição. Cada partição representa um subconjunto dos dados completos. Se você tiver uma tabela com as colunas A, B, C e D, poderá criar uma tabela com as colunas A e B e outra com as colunas C e D. – Uma tabela contém muitas colunas, mas as consultas não acessam todas as colunas juntas.
- Algumas colunas são maiores que outras e separá-las pode aumentar o desempenho de E/S.
– Diferentes partes de dados têm padrões de acesso diversos.
Particionamento horizontal Dividir dados com base em linhas ou intervalos de valores (também conhecidos como fragmentação). Cada partição contém um subconjunto de linhas com características semelhantes. Se você tiver uma tabela com linhas de 1 a 1000, poderá criar uma partição com as linhas 1 a 500 e outra com as linhas 501 a 1000. – Um conjunto de dados é muito grande para um único local ou servidor.
– Os dados são acessados com base em intervalos ou filtros específicos.
– Precisa distribuir a carga de trabalho entre nós físicos ou servidores para melhorar o desempenho.

Para particionar seus dados, considere as seguintes etapas:

  • Analisar dados e consultas. Analise os padrões de dados e consultas para identificar estratégias adequadas de particionamento ou fragmentação. Entenda a natureza dos dados, dos padrões de acesso e dos requisitos de distribuição.

  • Determine uma chave. Escolha uma chave de particionamento ou fragmentação para distribuir dados entre partições ou fragmentos. Selecione cuidadosamente a chave com base em características de dados e requisitos de consulta.

  • Determinar a lógica. Determine uma lógica de particionamento ou fragmentação com base na chave escolhida. Considere dividir os dados em intervalos, aplicar algoritmos de hash ou usar outras técnicas de particionamento.

  • Configure a infraestrutura. Configure o sistema de banco de dados para dar suporte a particionamento ou fragmentação. Considere criar a infraestrutura necessária, definir as partições ou fragmentos e configurar a distribuição de dados.

Para saber mais, consulte Diretrizes de particionamento de dados.

Otimizar consultas de banco de dados

Otimizar consultas de banco de dados refina consultas usando técnicas como dicas de índice e cache. Esses ajustes aumentam a eficiência e a velocidade da recuperação de dados. Como resultado, o banco de dados tem uma carga de trabalho mais leve, os recursos funcionam com mais eficiência e os usuários desfrutam de interações mais suaves. Para otimizar consultas de banco de dados, considere as seguintes estratégias:

  • Reescrever consultas. Examine e analise consultas complexas para identificar oportunidades de reescrita. Considere reestruturar a lógica de consulta, eliminar operações redundantes ou simplificar a sintaxe de consulta.

  • Evite o problema de consulta N+1. Minimize o número de ida e volta para o banco de dados usando junções e busca em lote para recuperar dados relacionados com eficiência.

  • Reordenar junções. Avalie o plano de consulta e considere reorganizar a ordem de junção para minimizar o número de linhas em cada operação de junção. A ordem na qual você ingressa tabelas pode afetar o desempenho da consulta.

  • Use dicas de índice. Use dicas de índice para que um mecanismo de banco de dados possa especificar o uso de índices ao executar uma consulta. Dicas de índice orientam o otimizador a selecionar os índices mais apropriados.

  • Consultas de cache. Armazene os resultados de consultas executadas com frequência na memória. O cache de consulta elimina a necessidade de executar repetidamente a mesma consulta e reduz a sobrecarga de processamento de consulta.

  • Otimizar o bloqueio. Evite dicas de bloqueio desnecessárias ou restritivas em consultas. Estratégias de bloqueio eficientes podem melhorar o desempenho e a simultaneidade da consulta. Aplique mecanismos de bloqueio otimizados que o sistema de banco de dados fornece. Analise e ajuste os níveis de isolamento para equilibrar a consistência de dados e o desempenho da consulta.

  • Monitorar e ajustar. Monitore as métricas de desempenho da consulta, como runtime, utilização de recursos e taxa de transferência de consulta. Use ferramentas de criação de perfil de banco de dados e funcionalidades de monitoramento para identificar consultas com baixo desempenho. Avalie e ajuste planos de consulta com base nos dados de desempenho coletados. Analise os planos de consulta e aguarde as estatísticas para identificar gargalos. Use essas informações para otimizar o desempenho da consulta.

Otimizar o desempenho do índice

Os índices aprimoram a velocidade de recuperação de dados, permitindo que os bancos de dados encontrem dados rapidamente usando colunas ou campos específicos. Quando você otimiza esses índices, as operações de classificação e junção se tornam mais eficientes, levando a consultas mais rápidas. Índices bem otimizados são reduzidos nas operações de E/S de disco necessárias para consultas. A remoção de índices desnecessários ou redundantes também libera espaço de armazenamento valioso. Para otimizar o desempenho do índice, considere as seguintes estratégias:

  • Analisar padrões de consulta. Entenda os padrões de consulta executados no banco de dados. Identifique as consultas que são executadas com frequência e podem prejudicar o desempenho. Analise padrões de consulta para determinar quais índices são benéficos para otimizar o desempenho.

  • Avaliar índices existentes. Examine os índices existentes em seu banco de dados. Avalie seu uso, efeitos de desempenho e relevância para os padrões de consulta. Identifique índices redundantes ou não utilizados que podem ser removidos para melhorar o desempenho de gravação e reduzir a sobrecarga de armazenamento.

  • Identificar colunas para indexação. Identifique colunas que são frequentemente usadas nas cláusulas where, join e order by de suas consultas. Essas colunas são potenciais candidatas à indexação porque podem habilitar a recuperação rápida de dados.

  • Escolha um tipo de índice apropriado. Selecione um tipo de índice apropriado com base no sistema de banco de dados. As opções comuns incluem índices de árvore b para consultas de igualdade e intervalo, índices de hash para consultas de correspondência exatas e índices de texto completo para operações de pesquisa de texto. Escolha um tipo de índice que melhor corresponda aos seus requisitos de consulta.

  • Considere a ordem da coluna de índice. Ao criar índices compostos ou índices com várias colunas, considere a ordem das colunas. Coloque as colunas usadas com mais frequência em consultas no início do índice. A ordem da coluna ajuda a garantir que sua carga de trabalho esteja efetivamente usando índices para uma ampla gama de consultas.

  • Balancear o tamanho do índice. Evite criar índices em colunas com baixa cardinalidade ou colunas que tenham um número baixo de valores distintos. Esses índices podem ser ineficientes e aumentar o tamanho do banco de dados. Em vez disso, indexe colunas que têm uma seletividade alta.

  • Manter o uso do índice. Monitore continuamente o uso e o desempenho de seus índices. Procure oportunidades para criar novos índices ou modificar índices existentes com base em alterações em padrões de consulta ou requisitos de desempenho. Remova ou atualize índices que não são mais benéficos. Os índices têm sobrecarga de manutenção. À medida que os dados mudam, os índices podem fragmentar e afetar o desempenho. Execute regularmente tarefas de manutenção de índice, como recompilar ou reorganizar índices, para garantir o desempenho ideal.

  • Testar e validar. Antes de revisar índices em um ambiente de produção, execute testes e validação completos. Meça o efeito de desempenho das revisões de índice usando cargas de trabalho representativas. Verifique as melhorias em relação aos parâmetros de comparação predefinidos.

Compensação: os índices de árvore B podem ter alta sobrecarga de armazenamento e as consultas de correspondência exata podem ser lentas. Índices de hash não são adequados para consultas de intervalo ou operadores de comparação. Os índices de texto completo podem ter altos requisitos de armazenamento e as consultas de dados nãoxtuais podem ser lentas.

Considerar a compactação de dados

A compactação de dados é o processo de redução do tamanho dos dados para otimizar o espaço de armazenamento e melhorar a eficiência do desempenho da carga de trabalho. Os dados compactados exigem menos espaço de armazenamento e menos largura de banda para transmissão, o que resulta em transferência rápida de dados. Você compactaria os dados para reduzir o volume de armazenamento e melhorar os tempos de acesso aos dados. Quando você compacta dados, ele reduz as operações de E/S e os requisitos de largura de banda de rede.

Compactação sem perda e compactação com perda são algoritmos de compactação de dados. Algoritmos de compactação sem perda reduzem o tamanho dos dados sem perder nenhuma informação. Algoritmos de compactação com perda atingem altas taxas de compactação removendo informações menos importantes ou redundantes.

Compensação: para compactar e descompactar dados, você precisa de recursos computacionais, como CPU e memória. Quanto mais dados você compactar, mais recursos você precisa.

Arquivar e limpar dados

Arquivamento e limpeza são estratégias que simplificam o armazenamento de dados. O arquivamento realoca dados mais antigos e com menos frequência acessados para um armazenamento mais econômico. A limpeza permanente de dados remove dados redundantes. Eles contribuem para a eficiência de desempenho reduzindo o volume de dados, aumentando a velocidade de acesso aos dados e reduzindo os tempos de backup e recuperação:

  • Redução do volume de dados: menos dados significa tempos de processamento mais rápidos, garantindo respostas rápidas às solicitações do usuário.

  • Aumento da velocidade de acesso a dados: um conjunto de dados cortado permite consultas mais rápidas e recuperação de dados, otimizando a capacidade de resposta do sistema.

  • Reduzindo os tempos de backup e recuperação: conjuntos de dados menores agilizam os processos de backup e restauração, minimizando o tempo de inatividade e garantindo um desempenho consistente.

O arquivamento e a limpeza são fundamentais para manter a eficiência de desempenho de pico em sistemas controlados por dados.

Otimizar a carga de armazenamento

Otimizar a carga de armazenamento significa simplificar as solicitações para o sistema de armazenamento. Ele ajuda a eliminar solicitações desnecessárias. Ele também aprimora a recuperação de dados e evita sobrecarregar o armazenamento. A otimização da carga de armazenamento garante que o sistema de armazenamento permaneça responsivo a solicitações legítimas e mantenha o desempenho de pico. Implemente estratégias para reduzir a carga de processamento no armazenamento de dados. Para otimizar a carga do armazenamento de dados, considere as seguintes estratégias:

Usar cache

O cache armazena dados comumente acessados em uma área de armazenamento de acesso rápido, tornando a recuperação de dados mais rápida do que extrai-los da origem do main. Essa técnica aumenta o desempenho dos dados reduzindo os tempos de acesso e evitando buscas repetitivas de dados. O cache melhora as velocidades de leitura e os tempos de resposta do usuário, especialmente para dados acessados com frequência Esse método é mais eficaz em dados estáticos ou dados que raramente são alterados.

Para garantir a eficiência de cache ideal, considere fatores como políticas de expiração, estratégias de remoção e gerenciamento do tamanho do cache. Ajuste as configurações, como a TTL (vida útil), para obter o desempenho ideal. Para usar um cache para otimizar a carga de armazenamento, considere as seguintes estratégias:

  • Cache na memória: execute o cache na memória para armazenar dados acessados com frequência na memória para recuperação rápida. Você pode usar essa técnica para dados de aplicativo que são caros para calcular ou recuperar de um banco de dados. O cache na memória é útil para dados que você lê com frequência, mas não são alterados com frequência.

  • Cache de consulta de banco de dados: use essa técnica para armazenar em cache os resultados de consultas de banco de dados para evitar a execução da mesma consulta várias vezes. O cache de consulta de banco de dados é útil para consultas de banco de dados complexas e demoradas. Quando você armazena em cache os resultados de uma consulta, as solicitações subsequentes para a mesma consulta são retornadas rapidamente.

  • Cache de rede de distribuição de conteúdo: use essa técnica para armazenar em cache o conteúdo da Web em servidores de rede distribuídos para reduzir a latência e melhorar a entrega de conteúdo. O cache de rede de distribuição de conteúdo é eficaz para conteúdo estático, como imagens, arquivos CSS e arquivos JavaScript. As redes de distribuição de conteúdo armazenam cópias de conteúdo em vários locais em todo o mundo, para que os usuários possam acessar o conteúdo de um servidor próximo a eles geograficamente.

Usar réplicas de leitura

Muitos bancos de dados dão suporte a várias réplicas de leitura. Distribua consultas de leitura entre réplicas para minimizar a demanda no banco de dados de gravação. Cada réplica de leitura pode atender a um subconjunto de tráfego, o que pode melhorar o desempenho.

Quando você tem uma carga de trabalho com várias réplicas de dados que espera manter em sincronia, é útil modelar esse sistema distribuído usando o teorema PACELC. O teorema PACELC ajuda você a entender a latência versus as opções de compensação de constância no estado não particionado do sistema. Use essas informações para ajudá-lo a escolher um mecanismo de banco de dados e uma estratégia de sincronização de dados que melhor atenda ao sistema em um estado particionado e não particionado. Para obter mais informações, consulte Padrão CQRS (Segregação de Responsabilidade de Comando e Consulta).

Otimizar a consistência de dados

Em uma carga de trabalho distribuída, em que os dados residem em vários nós ou locais, o nível de consistência selecionado determina a rapidez com que as alterações em um local refletem em outros. Optar por uma consistência mais rigorosa consome mais recursos de computação e pode afetar negativamente a eficiência do desempenho. Por outro lado, um nível de consistência menos estrito, como a consistência eventual, introduz inconsistências temporárias entre nós, mas pode aumentar a eficiência do desempenho.

A consistência eventual atinge um equilíbrio entre a precisão dos dados e o desempenho da carga de trabalho. As alterações se espalham gradualmente em vez de instantaneamente, aumentando a capacidade de resposta da carga de trabalho e a velocidade de processamento de dados. Embora introduza inconsistências de curta duração, a carga de trabalho eventualmente apresenta dados consistentes em todos os nós. Escolher uma consistência eventual pode elevar o desempenho de uma carga de trabalho e aprimorar ainda mais sua disponibilidade e escalabilidade.

Otimizar atualizações de dados

Você pode usar a simultaneidade otimista para lidar com atualizações simultâneas para os mesmos dados. Em vez de bloquear dados e impedir outras atualizações, a simultaneidade otimista permite que vários usuários ou processos funcionem simultaneamente e pressupõe que conflitos são raros.

Com simultaneidade otimista, cada operação de atualização inclui uma versão ou carimbo de data/hora que representa o estado dos dados no momento da atualização. Quando uma atualização conflitante é detectada, o sistema resolve o conflito rejeitando a atualização ou mesclando as alterações.

A simultaneidade otimista minimiza a contenção e permite que as atualizações simultâneas prossigam sem bloqueio desnecessário. Ele reduz o tempo de espera dos recursos e fornece alta taxa de transferência.

Otimizar a movimentação e o processamento de dados

Otimizar a movimentação e o processamento de dados envolve melhorar a eficiência e o desempenho das operações relacionadas à extração, transformação, carregamento e processamento de dados. Considere os seguintes aspectos principais da otimização da movimentação e processamento de dados:

  • Otimização etl (extração, transformação e carregamento): otimize os processos de ETL para minimizar o tempo de processamento. Você pode simplificar o processo de extração, implementar algoritmos de transformação eficientes e otimizar o processo de carregamento. Ao tornar cada etapa eficiente, você pode otimizar o fluxo de trabalho geral.

  • Processamento paralelo: utilize técnicas de processamento paralelo para melhorar o desempenho. Ao distribuir tarefas de processamento de dados em vários threads ou nós, você pode dividir e processar a carga de trabalho simultaneamente, o que resulta em processamento rápido.

  • Processamento em lote: agrupe tarefas semelhantes para reduzir a sobrecarga causada por operações repetidas. Processe várias tarefas em um lote para reduzir o tempo de processamento geral.

Otimizar o design de armazenamento

A otimização do design de armazenamento envolve a criação de uma arquitetura precisa de armazenamento de dados e a seleção de tecnologias de armazenamento apropriadas. Um design de armazenamento simplificado aprimora o acesso, a recuperação e a manipulação de dados. Por meio do design de armazenamento estratégico, uma carga de trabalho obtém tempos de resposta aprimorados e funcionalidade geral.

Design para proximidade de dados

A proximidade de dados refere-se ao posicionamento estratégico de dados mais próximos dos usuários ou serviços que os acessam com mais frequência. Ao reduzir a distância física ou lógica entre os dados e seus usuários, a proximidade dos dados garante um acesso mais rápido aos dados e uma capacidade de resposta aprimorada. Para otimizar o design para proximidade, considere estas estratégias:

  • Avaliar padrões de acesso a dados: avalie os padrões de acesso da carga de trabalho e os dados acessados com frequência. Essa análise pode ajudar a determinar onde colocar dados para o benefício máximo.

  • Escolha soluções que dão suporte à realocação de dados: considere soluções que oferecem realocação dinâmica de dados com base na alteração dos padrões de acesso, garantindo o posicionamento ideal de dados.

  • Escolha soluções que dão suporte à sincronização de dados: se estiver atendendo a uma base de usuários distribuída, opte por soluções que facilitem a sincronização de dados em várias regiões, garantindo que as réplicas de dados estejam disponíveis em proximidade com os usuários.

Compensação: se os dados subjacentes forem alterados com frequência, implemente um mecanismo de invalidação de cache para garantir que os dados armazenados em cache permaneçam atualizados.

Usar persistência poliglota

Persistência poliglota é a prática de usar várias tecnologias de armazenamento de dados para armazenar e gerenciar diferentes tipos de dados em um aplicativo ou sistema. Diferentes tipos de bancos de dados ou soluções de armazenamento atendem a diferentes requisitos de dados.

A persistência poliglota aproveita os benefícios de cada tecnologia de armazenamento de dados para garantir o desempenho e a escalabilidade ideais para cada tipo de dados. Por exemplo, você pode usar um banco de dados relacional para armazenar dados estruturados e transacionais. E você pode usar um banco de dados NoSQL para armazenar dados não estruturados ou semiestruturados.

Crie um esquema para cada tecnologia de armazenamento de dados com base nos requisitos dos dados. Para bancos de dados relacionais, você pode criar tabelas normalizadas com relações apropriadas. Para bancos de dados NoSQL, você pode definir estruturas de documento ou pares chave-valor. Desenvolva os componentes necessários para interagir com cada tecnologia de armazenamento de dados, como APIs, camadas de acesso a dados ou pipelines de integração de dados. Verifique se o aplicativo pode ler e gravar dados nos armazenamentos de dados apropriados.

Compensação: uma estrutura de dados que tem baixa normalização pode melhorar o desempenho, mas introduzir complexidades.

Separar sistemas OLTP e OLAP

Para separar sistemas OLTP e OLAP , projete e implante sistemas distintos para tarefas de processamento transacional e processamento analítico. Essa separação permite otimizar cada sistema para sua carga de trabalho e características específicas.

Os sistemas OLTP são usados para processamento transacional em tempo real. Eles lidam com transações individuais de forma eficiente e confiável. Os sistemas OLTP normalmente são usados para executar tarefas operacionais diárias, como processamento de pedidos online, gerenciamento de inventário e gerenciamento de dados do cliente. Os sistemas OLTP priorizam a capacidade de resposta, a consistência e a simultaneidade.

Os sistemas OLAP são usados para processamento e relatórios analíticos complexos. Eles lidam com grandes volumes de dados e executam cálculos e agregações intensivos. Os sistemas OLAP são usados para tarefas como business intelligence, mineração de dados e suporte a decisões. Os sistemas OLAP priorizam o desempenho da consulta, a agregação de dados e a análise multidimensional.

Ao separar sistemas OLTP e OLAP, você pode alocar recursos apropriados e otimizar cada sistema para sua carga de trabalho específica. A separação permite aplicar diferentes técnicas de modelagem de dados a cada sistema. Os sistemas OLTP normalmente usam esquemas normalizados para processamento transacional eficiente. Os sistemas OLAP podem usar esquemas desnormalizados ou técnicas de data warehousing para otimizar o desempenho da consulta.

Facilitação do Azure

Criação de perfil de dados: o Azure oferece ferramentas e serviços que você pode usar para criar o perfil de dados, como o Azure Catálogo de Dados, o Azure Purview e o Azure Synapse Analytics. Essas ferramentas permitem extrair, transformar e carregar dados de várias fontes, executar verificações de qualidade de dados e obter insights sobre os dados.

Monitorando o desempenho dos dados: para monitorar o desempenho dos dados, você pode usar o Azure Monitor para coletar e analisar métricas de infraestrutura, logs e dados do aplicativo. Você pode integrar o Monitor a outros serviços, como o Application Insights. O Application Insights fornece monitoramento de desempenho do aplicativo e dá suporte a várias plataformas.

O Application Insights coleta dados de uso e desempenho. Você pode usar o Log Analytics para correlacionar esses dados com dados de configuração e desempenho entre os recursos do Azure.

Você pode usar o recurso de insights do SQL do Azure e do Azure Cosmos DB para monitorar seu banco de dados. Esse recurso permite diagnosticar e ajustar problemas de desempenho do banco de dados.

Particionamento de dados: o Azure oferece várias estratégias de particionamento para diferentes armazenamentos de dados. Cada armazenamento de dados pode ter diferentes considerações e opções de configuração para particionamento de dados. Para obter mais informações, consulte Estratégias de particionamento de dados.

Otimizando consultas de banco de dados e desempenho de índice: use o recurso de análise de desempenho de consultas do banco de dados SQL do Azure para otimizar consultas, tabelas e bancos de dados. Você pode usar esse recurso para identificar e solucionar problemas de desempenho de consulta.

Para bancos de dados relacionais, você deve seguir as diretrizes de design de índice, SQL Server diretrizes de índice e diretrizes de índice do Azure Cosmos DB. Use Banco de Dados SQL para executar o ajuste automático de consultas para melhorar o desempenho.

Em bancos de dados SQL, você deve reorganizar ou recompilar regularmente os índices. Identifique consultas lentas e ajuste-as para melhorar o desempenho. Muitos mecanismos de banco de dados têm recursos de ajuste de consulta. Para obter mais informações, consulte Práticas recomendadas para desempenho de consulta.

O Azure Cosmos DB tem uma política de indexação padrão que indexa cada propriedade de cada item e impõe índices de intervalo para qualquer cadeia de caracteres ou número. Essa política fornece um desempenho de consulta eficiente e você não precisa gerenciar índices antecipadamente.

Otimizando a carga de armazenamento: muitos serviços de banco de dados do Azure dão suporte a réplicas de leitura. A disponibilidade e a configuração das réplicas de leitura variam dependendo do serviço de banco de dados do Azure. Consulte a documentação oficial de cada serviço para entender os detalhes e as opções.

Otimizando o design de armazenamento: o Azure oferece muitos armazenamentos de dados diferentes para atender às suas necessidades de carga de trabalho. Entenda os tipos de armazenamento de dados e selecione um armazenamento de dados do Azure para seu aplicativo.

Lista de verificação de eficiência de desempenho

Consulte o conjunto completo de recomendações.