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. Otimizar arquivos de dados, partições e índices para a utilização pretendida e real na carga de trabalho. |
---|
Este guia descreve as recomendações para otimizar o desempenho dos dados. Otimizar o desempenho dos dados tem a ver com refinar a eficiência com que a carga de trabalho processa e armazena dados. Cada operação de carga de trabalho, transação ou computação depende normalmente da obtenção, processamento e armazenamento rápidos e precisos dos dados. Quando o desempenho dos dados é otimizado, a carga de trabalho é executada sem problemas. O desempenho de dados comprometido cria um efeito dominó de má eficiência de desempenho. A não otimização do desempenho dos dados resulta em atrasos de resposta, latência aumentada e escalabilidade reduzida. Compromete a eficiência de toda a carga de trabalho.
Definições
Termo | Definição |
---|---|
Teorema CAP | Uma arquitetura utilizada para considerar a consistência, a disponibilidade e a tolerância à partição para ajudar a explicar as desvantagens na consistência dos dados. |
Recompilação do índice de base de dados | Uma atividade de manutenção que cai e recria um índice. |
Reorganização do índice de base de dados | Uma atividade de manutenção que otimiza o índice de base de dados atual. |
Arquivo de dados | Um recurso que armazena dados como uma base de dados, um arquivo de objetos ou uma partilha de ficheiros. |
Consistência eventual | Um modelo de sincronização de dados que permite uma inconsistência temporária nas réplicas de dados antes de serem sincronizadas eventualmente. |
Índice | Uma estrutura de base de dados que fornece acesso rápido aos itens. |
Processamento analítico online (OLAP) | Uma tecnologia que organiza bases de dados empresariais de grandes dimensões, suporta análises complexas e realiza consultas analíticas complexas sem afetar negativamente os sistemas transacionais. |
Processamento de transações online (OLTP) | Uma tecnologia que regista as interações empresariais à medida que ocorrem em operações diárias de uma organização. |
Simultaneidade otimista | Uma abordagem para atualizar bases de dados que utilizam instantâneos para fazer atualizações em vez de mecanismos de bloqueio tradicionais, melhorando o desempenho e a escalabilidade. |
Teorema PACELC | Uma arquitetura utilizada para considerar a tolerância, disponibilidade, consistência e latência de partições para ajudar a explicar as desvantagens na consistência dos dados. |
Criação de partições | O processo de divisão física de dados em arquivos de dados separados. |
Ajuste de consultas | Um processo que otimiza a velocidade de uma consulta de base de dados. |
Réplica de leitura | Uma cópia em direto de uma base de dados primária que lhe permite descarregar o tráfego de leitura de uma base de dados de escrita. |
Principais estratégias de design
Para otimizar a utilização de dados, certifique-se de que os arquivos de dados, partições e índices estão otimizados para a utilização pretendida e para utilização real numa carga de trabalho. A utilização otimizada de dados pode melhorar o desempenho das consultas, reduzir o consumo de recursos e melhorar a eficiência geral do sistema. Considere as seguintes estratégias:
Dados de perfil. Compreenda os seus dados e certifique-se de que o modelo de dados é adequado para a carga de trabalho. Considere fatores como a normalização de dados, estratégias de indexação e técnicas de criação de partições. Para obter dados eficientes, certifique-se de que seleciona tipos de dados adequados, define relações entre entidades e determina uma estratégia de indexação ideal.
Ajuste a configuração do armazenamento de dados. Configure a sua infraestrutura de armazenamento de dados para se alinhar com os seus requisitos de carga de trabalho. Selecione uma tecnologia de armazenamento adequada, por exemplo bases de dados relacionais, bases de dados NoSQL e armazéns de dados. Otimizar as definições de armazenamento, como o tamanho da memória intermédia, os mecanismos de colocação em cache e a compressão.
Otimizar o desempenho das consultas. Analisar e otimizar consultas executadas na carga de trabalho. Utilize técnicas como otimização de consultas, indexação e colocação em cache. Para identificar estrangulamentos, utilize planos de consulta e ferramentas de monitorização de desempenho e, em seguida, faça as melhorias necessárias.
Monitorize e ajuste regularmente o sistema. Monitorize continuamente o desempenho da carga de trabalho e itere na configuração do armazenamento de dados e otimizações de consultas. Com base nas melhores práticas de otimização do desempenho, analise as métricas do sistema, identifique áreas de melhoramento e implemente alterações.
Dados de perfil
A criação de perfis de dados envolve examinar os dados de uma origem e recolher informações sobre os mesmos. O objetivo é compreender a qualidade, a estrutura e as características dos dados da carga de trabalho. Este processo permite a identificação de problemas como valores em falta, duplicados, formatos inconsistentes e outras anomalias. Para criar perfis de dados eficazes, considere as seguintes estratégias:
Compreender a estrutura de dados. Examine a estrutura dos seus dados, incluindo tabelas, colunas e relações. Determine os tipos de dados, comprimentos e restrições que são aplicados a cada coluna. A avaliação da estrutura de dados ajuda-o a compreender como os dados são organizados e como se relacionam com outros elementos de dados.
Analise o volume de dados. Avalie o volume dos seus dados para compreender o tamanho geral e os padrões de crescimento. Determine o número de registos ou documentos e o tamanho de tabelas ou coleções individuais. Estas informações ajudam-no 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, tais como relações de chave primária e externa. Compreenda como os dados estão ligados, para que possa determinar como as alterações numa tabela ou documento podem afetar os dados relacionados.
Avaliar a qualidade dos dados. Avalie a qualidade dos seus dados ao examinar fatores como a integridade, a precisão, a consistência e a singularidade. Identifique anomalias de dados, valores em falta ou registos duplicados que possam afetar a integridade dos dados e o desempenho das consultas. Este passo ajuda-o a identificar áreas para 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, valores atípicos e distorções de dados. Para otimizar o desempenho das consultas, escolha as estratégias de indexação adequadas e as técnicas de otimização de consultas com base na distribuição.
Monitorizar o desempenho dos dados
A monitorização do desempenho dos dados é a prática de controlar consistentemente a eficiência dos arquivos de dados, partições e índices em tempo real. Envolve recolher e analisar métricas de desempenho específicas das operações de dados, utilizando ferramentas personalizadas para soluções de monitorização ao nível do sistema, específicas da base de dados ou de terceiros. A monitorização eficaz do desempenho de dados permite-lhe identificar e mitigar proativamente potenciais estrangulamentos, garantindo que os processos e tarefas relacionados com dados são eficientes. Para monitorizar o desempenho dos dados, considere as seguintes estratégias:
Recolher métricas específicas de dados. Recolha as principais métricas que se relacionam diretamente com o desempenho dos dados. Estas métricas incluem tempos de resposta de consulta, débito de dados, E/S de disco relacionados com o 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. Utilize limiares predefinidos ou anomalias nestas métricas para acionar alertas. Os alertas permitem-lhe receber notificações quando as métricas de desempenho excedem os intervalos aceitáveis ou mostram um comportamento anormal. Por exemplo, se uma consulta de base de dados demorar mais tempo do que o esperado ou se o débito de dados cair significativamente, acionaria um alerta. Pode configurar estes alertas com ferramentas de monitorização especializadas ou scripts personalizados.
Diagnosticar problemas de desempenho de dados. Reveja regularmente as métricas de dados recolhidas para identificar potenciais estrangulamentos de desempenho ou degradação nas operações de dados. As ferramentas de visualização ou os dashboards podem ser inestimáveis neste processo, ajudando a realçar tendências, estrangulamentos e valores atípicos no desempenho dos dados. Uma vez identificados, aprofunde as causas principais destes problemas e planeigue os passos de remediação adequados.
Dados de partição
A criação de partições envolve dividir grandes conjuntos de dados ou cargas de trabalho de grande volume em subconjuntores mais pequenos e geríveis. A criação de partições melhora a eficiência do desempenho dos dados ao distribuir a carga de trabalho e ao melhorar o processamento paralelo. Também garante um acesso a dados mais eficaz com base em necessidades específicas e padrões de consulta. Pode particionar dados vertical ou horizontalmente (também denominado fragmentação).
Estratégia | Definição | Exemplo | Casos de utilização |
---|---|---|---|
Criação de partições verticais | Divida uma tabela em tabelas mais pequenas ao selecionar colunas ou campos específicos para cada partição. Cada partição representa um subconjunto dos dados completos. | Se tiver uma tabela com as colunas A, B, C e D, pode 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 acedem a todas as colunas em conjunto. - Algumas colunas são maiores do que outras e separá-las pode aumentar o desempenho de E/S. - Diferentes partes de dados têm padrões de acesso diversos. |
Criação de partições horizontais | 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 tiver uma tabela com as linhas 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 é demasiado grande para uma única localização ou servidor. - Os dados são acedidos com base em intervalos ou filtros específicos. - Precisa de distribuir a carga de trabalho por nós físicos ou servidores para melhorar o desempenho. |
Para particionar os seus dados, considere os seguintes passos:
Analisar dados e consultas. Analise os padrões de dados e de consulta para identificar estratégias de criação de partições ou fragmentação adequadas. Compreender a natureza dos dados, padrões de acesso e requisitos de distribuição.
Determine uma chave. Escolha uma chave de criação de partições ou fragmentação para distribuir dados entre partições ou partições horizontais. Selecione cuidadosamente a chave com base em características de dados e requisitos de consulta.
Determinar a lógica. Determine uma lógica de criação de partições ou fragmentação com base na chave escolhida. Considere dividir os dados em intervalos, aplicar algoritmos de hashing ou utilizar outras técnicas de criação de partições.
Configure a infraestrutura. Configure o sistema de bases de dados para suportar a criação de partições ou a fragmentação. Considere criar a infraestrutura necessária, definir as partições ou partições horizontais e configurar a distribuição de dados.
Para obter mais informações, veja Documentação de orientação sobre a criação de partições de dados.
Otimizar consultas de base de dados
Otimizar consultas de base de dados refina as consultas com técnicas como sugestões de índice e colocação em cache. Estes ajustes aumentam a eficiência e a velocidade da obtenção de dados. Como resultado, a base de dados tem uma carga de trabalho mais leve, os recursos funcionam de forma mais eficaz e os utilizadores desfrutam de interações mais suaves. Para otimizar as consultas de base de dados, considere as seguintes estratégias:
Reescrever consultas. Reveja e analise consultas complexas para identificar oportunidades para reescrevê-las. Considere reestruturar a lógica de consulta, eliminar operações redundantes ou simplificar a sintaxe das consultas.
Evite o problema de consulta N+1. Minimize o número de percursos de ida e volta para a base de dados ao utilizar associações e obtenção em lotes para obter dados relacionados de forma eficiente.
Reordenar associações. Avalie o plano de consulta e considere reorganizar a ordem de associação para minimizar o número de linhas em cada operação de associação. A ordem pela qual associa tabelas pode afetar o desempenho das consultas.
Utilizar sugestões de índice. Utilize sugestões de índice para que um motor de base de dados possa especificar a utilização de índices quando executa uma consulta. As sugestões de índice orientam o otimizador para selecionar os índices mais adequados.
Consultas de cache. Armazene os resultados das consultas executadas frequentemente na memória. A colocação em cache de consultas elimina a necessidade de executar repetidamente a mesma consulta e reduz a sobrecarga de processamento de consultas.
Otimizar o bloqueio. Evite sugestões de bloqueio desnecessárias ou restritivas nas consultas. As estratégias de bloqueio eficientes podem melhorar o desempenho e a simultaneidade das consultas. Aplique mecanismos de bloqueio otimizados fornecidos pelo sistema de bases de dados. Analise e ajuste os níveis de isolamento para equilibrar a consistência dos dados e o desempenho das consultas.
Monitorizar e otimizar. Monitorize as métricas de desempenho de consultas, como o runtime, a utilização de recursos e o débito de consultas. Utilize ferramentas de criação de perfis de base de dados e funcionalidades de monitorização para identificar consultas com mau desempenho. Avalie e ajuste os planos de consulta com base nos dados de desempenho recolhidos. Analise os planos de consulta e as estatísticas de espera para identificar estrangulamentos. Utilize essas informações para otimizar o desempenho das consultas.
Otimizar o desempenho do índice
Os índices melhoram a velocidade de obtenção de dados ao permitir que as bases de dados encontrem rapidamente dados com colunas ou campos específicos. Quando otimiza estes índices, as operações de ordenação e associação tornam-se mais eficientes, levando a consultas mais rápidas. Os índices bem otimizados reduzem as operações de E/S do disco necessárias para as consultas. A remoção de índices desnecessários ou redundantes também liberta espaço de armazenamento valioso. Para otimizar o desempenho do índice, considere as seguintes estratégias:
Analisar padrões de consulta. Compreenda os padrões de consulta que são executados na base de dados. Identifique as consultas que são executadas com frequência e podem degradar o desempenho. Analise os padrões de consulta para determinar quais os índices que são benéficos para otimizar o desempenho.
Avaliar índices existentes. Reveja os índices existentes na sua base de dados. Avalie a utilização, os efeitos de desempenho e a relevância para os padrões de consulta. Identifique índices redundantes ou não utilizados que pode remover para melhorar o desempenho de escrita e reduzir a sobrecarga de armazenamento.
Identificar colunas para indexação. Identifique as colunas que são frequentemente utilizadas nas cláusulas where, join e order by das suas consultas. Estas colunas são potenciais candidatas à indexação porque podem permitir a obtenção rápida de dados.
Escolha um tipo de índice adequado. Selecione um tipo de índice adequado com base no seu sistema de bases de dados. As opções comuns incluem índices de árvore b para consultas de igualdade e intervalo, índices 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 corresponda melhor aos seus requisitos de consulta.
Considere a ordem das colunas de índice. Quando cria índices compostos ou índices com múltiplas colunas, considere a ordem das colunas. Coloque as colunas que são utilizadas mais frequentemente em consultas no início do índice. A ordem das colunas ajuda a garantir que a carga de trabalho está a utilizar índices de forma eficaz para uma vasta gama de consultas.
Equilibrar o tamanho do índice. Evite criar índices em colunas com baixa cardinalidade ou colunas com um número baixo de valores distintos. Estes índices podem ser ineficientes e aumentar o tamanho da base de dados. Em vez disso, as colunas de índice que têm uma elevada seletividade.
Manter a utilização do índice. Monitorize continuamente a utilização e o desempenho dos índices. Procure oportunidades para criar novos índices ou modificar índices existentes com base em alterações nos padrões de consulta ou nos requisitos de desempenho. Remover ou atualizar índices que já não são benéficos. Os índices têm uma sobrecarga de manutenção. À medida que os dados mudam, os índices podem fragmentar e afetar o desempenho. Realize regularmente tarefas de manutenção de índices, como reconstruir ou reorganizar índices, para garantir um desempenho ideal.
Testar e validar. Antes de rever os índices num ambiente de produção, execute testes e validação minuciosos. Meça o efeito de desempenho das revisões de índice com cargas de trabalho representativas. Verifique as melhorias em relação aos testes de referência predefinidos.
Desvantagem: os índices de árvore B podem ter uma sobrecarga de armazenamento elevada e as consultas de correspondência exata podem ser lentas. Os índices hash não são adequados para consultas de intervalo ou operadores de comparação. Os índices de texto completo podem ter requisitos de armazenamento elevados e as consultas de dados não textuais podem ser lentas.
Considerar a compressão de dados
A compressão de dados é o processo de redução do tamanho dos dados para otimizar o espaço de armazenamento e melhorar a eficiência de desempenho da carga de trabalho. Os dados comprimidos requerem menos espaço de armazenamento e menos largura de banda para transmissão, o que resulta numa transferência rápida de dados. Comprimiria dados para reduzir os requisitos de espaço de armazenamento e melhorar os tempos de acesso aos dados. Quando comprime dados, reduz as operações de E/S e os requisitos de largura de banda de rede.
A compressão sem perdas e a compressão de perda são algoritmos de compressão de dados. Os algoritmos de compressão sem perda reduzem o tamanho dos dados sem perder informações. Os algoritmos de compressão de perda alcançam proporções de compressão elevadas ao remover informações menos importantes ou redundantes.
Compromisso: para comprimir e descomprimir dados, precisa de recursos computacionais, como CPU e memória. Quanto mais dados comprimir, mais recursos precisa.
Arquivar e remover dados
Arquivar e remover são estratégias que simplificam o armazenamento de dados. O arquivo reposiciona os dados mais antigos e acedidos com menos frequência para um armazenamento mais rentável. A remoção de dados remove permanentemente dados redundantes. Contribuem para a eficiência de desempenho ao reduzir o volume de dados, aumentar a velocidade de acesso aos dados e reduzir os tempos de cópia de segurança e recuperação:
Reduzir o volume de dados: menos dados significa tempos de processamento mais rápidos, garantindo respostas rápidas aos pedidos dos utilizadores.
Aumentar a velocidade de acesso aos dados: um conjunto de dados cortado permite consultas mais rápidas e obtenção de dados, otimizando a capacidade de resposta do sistema.
Reduzir os tempos de cópia de segurança e recuperação: os conjuntos de dados mais pequenos aceleram os processos de cópia de segurança e restauro, minimizando o tempo de inatividade e garantindo um desempenho consistente.
O arquivo e a remoção são fundamentais para manter a eficiência de desempenho máxima em sistemas orientados por dados.
Otimizar a carga de armazenamento
Otimizar a carga de armazenamento significa simplificar os pedidos para o sistema de armazenamento. Ajuda a eliminar pedidos desnecessários. Também melhora a obtenção de dados e evita sobrecarregar o armazenamento. Otimizar a carga de armazenamento garante que o sistema de armazenamento continua a responder a pedidos legítimos e mantém o pico de desempenho. Implementar estratégias para reduzir a carga de processamento no arquivo de dados. Para otimizar a carga do arquivo de dados, considere as seguintes estratégias:
Utilizar a colocação em cache
A colocação em cache armazena dados acedidos frequentemente numa área de armazenamento de acesso rápido, o que torna a obtenção de dados mais rápida do que a extração da origem principal. Esta técnica aumenta o desempenho dos dados ao reduzir os tempos de acesso e evitar obtenções de dados repetitivas. A colocação em cache melhora as velocidades de leitura e os tempos de resposta do utilizador, especialmente para dados acedidos com frequência Este método é mais eficaz em dados estáticos ou dados que raramente mudam.
Para garantir uma eficiência de colocação em cache ideal, considere fatores como políticas de expiração, estratégias de expulsão e gestão do tamanho da cache. Ajuste as definições, como o time to live (TTL), para um desempenho ideal. Para utilizar uma cache para otimizar a carga de armazenamento, considere as seguintes estratégias:
Colocação em cache dentro da memória: efetue a colocação em cache dentro da memória para armazenar dados acedidos frequentemente na memória para obter rapidamente. Pode utilizar esta técnica para dados de aplicações dispendiosos para calcular ou obter a partir de uma base de dados. A colocação em cache dentro da memória é útil para dados que lê com frequência, mas que não mudam frequentemente.
Colocação em cache de consultas da base de dados: utilize esta técnica para colocar em cache os resultados das consultas da base de dados para evitar executar a mesma consulta várias vezes. A colocação em cache de consultas de base de dados é útil para consultas de bases de dados complexas e demoradas. Quando coloca em cache os resultados de uma consulta, os pedidos subsequentes para a mesma consulta são devolvidos rapidamente.
Colocação em cache da rede de entrega de conteúdos: utilize esta técnica para colocar em cache conteúdo Web em servidores de rede distribuídos para reduzir a latência e melhorar a entrega de conteúdos. A colocação em cache da rede de entrega de conteúdos é eficaz para conteúdos estáticos, como imagens, ficheiros CSS e ficheiros JavaScript. As redes de entrega de conteúdos armazenam cópias de conteúdo em várias localizações em todo o mundo, para que os utilizadores possam aceder ao conteúdo a partir de um servidor próximo geograficamente.
Utilizar réplicas de leitura
Muitas bases de dados suportam várias réplicas de leitura. Distribua consultas de leitura entre réplicas para minimizar a procura na base de dados de escrita. Cada réplica de leitura pode servir um subconjunto de tráfego, o que pode melhorar o desempenho.
Quando tem uma carga de trabalho com várias réplicas de dados que espera manter sincronizadas, é útil modelar este sistema distribuído com o teorema PACELC. O teorema PACELC ajuda-o a compreender a latência versus as opções de compromisso de constância no estado não particionado do sistema. Utilize estas informações para o ajudar a escolher um motor de base de dados e uma estratégia de sincronização de dados que melhor endereça o sistema num estado particionado e não particionado. Para obter mais informações, veja Padrão de Segregação de Responsabilidade de Comandos e Consultas (CQRS).
Otimizar a consistência dos dados
Numa carga de trabalho distribuída, onde os dados residem em vários nós ou localizações, o nível de consistência selecionado determina a rapidez com que as alterações numa localização se refletem noutras localizações. Optar por uma consistência mais rigorosa consome mais recursos de computação e pode afetar negativamente a eficiência de desempenho. Por outro lado, um nível de consistência menos rigoroso, como a consistência eventual, introduz inconsistências temporárias entre os nós, mas pode aumentar a eficiência de 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 propagam-se gradualmente em vez de instantaneamente, aumentando a capacidade de resposta da carga de trabalho e a velocidade de processamento de dados. Apesar de introduzir inconsistências de curta duração, a carga de trabalho apresenta eventualmente dados consistentes em todos os nós. Escolher a consistência eventual pode elevar o desempenho de uma carga de trabalho e melhorar ainda mais a sua disponibilidade e escalabilidade.
Otimizar atualizações de dados
Pode utilizar a simultaneidade otimista para processar 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 utilizadores ou processos funcionem em simultâneo e pressupõe que os conflitos são raros.
Com a 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 é detetada uma atualização em conflito, o sistema resolve o conflito ao rejeitar a atualização ou intercalar as alterações.
A simultaneidade otimista minimiza a contenção e permite que as atualizações simultâneas prossigam sem bloqueios desnecessários. Reduz o tempo de espera dos recursos e proporciona um débito elevado.
Otimizar o movimento e o processamento de dados
Otimizar o movimento e o processamento de dados envolve melhorar a eficiência e o desempenho das operações relacionadas com a extração, transformação, carregamento e processamento de dados. Considere os seguintes aspetos fundamentais para otimizar o movimento e o processamento de dados:
Otimização da extração, transformação e carregamento (ETL): otimize os processos etl para minimizar o tempo de processamento. Pode simplificar o processo de extração, implementar algoritmos de transformação eficientes e otimizar o processo de carregamento. Quando torna cada passo eficiente, pode otimizar o fluxo de trabalho geral.
Processamento paralelo: utilize técnicas de processamento paralelo para melhorar o desempenho. Quando distribui tarefas de processamento de dados por vários threads ou nós, pode dividir e processar a carga de trabalho em simultâneo, o que resulta num processamento rápido.
Processamento em lotes: agrupe tarefas semelhantes para reduzir a sobrecarga causada por operações repetidas. Processe várias tarefas num lote para reduzir o tempo de processamento geral.
Otimizar a estrutura de armazenamento
Otimizar a conceção de armazenamento implica criar uma arquitetura de armazenamento de dados precisa e selecionar tecnologias de armazenamento adequadas. Um design de armazenamento simplificado melhora o acesso, a obtenção e a manipulação de dados. Através do design de armazenamento estratégico, uma carga de trabalho obtém melhores tempos de resposta e funcionalidade geral.
Estruturar para proximidade de dados
A proximidade dos dados refere-se à colocação estratégica de dados mais próximos dos utilizadores ou serviços que acedem aos mesmos com mais frequência. Ao reduzir a distância física ou lógica entre os dados e os respetivos utilizadores, a proximidade dos dados garante um acesso a dados mais rápido e uma melhor capacidade de resposta. 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 acedidos com frequência. Esta análise pode ajudar a determinar onde colocar os dados para o máximo benefício.
Escolher soluções que suportem a reposicionamento de dados: considere soluções que oferecem reposicionamento de dados dinâmicos com base na alteração dos padrões de acesso, garantindo o posicionamento ideal dos dados.
Escolher soluções que suportem a sincronização de dados: se atender a uma base de utilizadores 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 estão disponíveis nas proximidades dos utilizadores.
Desvantagem: se os dados subjacentes forem alterados frequentemente, implemente um mecanismo de invalidação da cache para garantir que os dados em cache permanecem atualizados.
Utilizar persistência poliglota
A persistência poliglota é a prática de utilizar várias tecnologias de armazenamento de dados para armazenar e gerir diferentes tipos de dados numa aplicação ou sistema. Diferentes tipos de bases de dados ou soluções de armazenamento servem diferentes requisitos de dados.
A persistência poliglota tira partido das vantagens de cada tecnologia de armazenamento de dados para garantir um desempenho e escalabilidade ideais para cada tipo de dados. Por exemplo, pode utilizar uma base de dados relacional para armazenar dados estruturados e transacionais. Além disso, pode utilizar uma base 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 bases de dados relacionais, pode criar tabelas normalizadas com relações adequadas. Para bases de dados NoSQL, pode definir estruturas de documentos 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. Certifique-se de que a aplicação consegue ler e escrever dados nos arquivos de dados adequados.
Desvantagem: uma estrutura de dados com baixa normalização pode melhorar o desempenho, mas introduzir complexidades.
Separar sistemas OLTP e OLAP
Para separar sistemas OLTP e OLAP , crie e implemente sistemas distintos para tarefas de processamento e processamento analítico transacional. Esta separação permite-lhe otimizar cada sistema para a sua carga de trabalho e características específicas.
Os sistemas OLTP são utilizados para processamento transacional em tempo real. Processam as transações individuais de forma eficiente e fiável. Normalmente, os sistemas OLTP são utilizados para realizar tarefas operacionais diárias, como o processamento de encomendas online, a gestão de inventário e a gestão de dados do cliente. Os sistemas OLTP priorizam a capacidade de resposta, a consistência e a simultaneidade.
Os sistemas OLAP são utilizados para processamento e relatórios analíticos complexos. Processam grandes volumes de dados e realizam cálculos e agregações intensivas. Os sistemas OLAP são utilizados para tarefas como business intelligence, data mining e suporte de decisões. Os sistemas OLAP priorizam o desempenho das consultas, a agregação de dados e a análise multidimensional.
Quando separa sistemas OLTP e OLAP, pode alocar recursos adequados e otimizar cada sistema para a carga de trabalho específica. A separação permite-lhe aplicar diferentes técnicas de modelação de dados a cada sistema. Normalmente, os sistemas OLTP utilizam esquemas normalizados para processamento transacional eficiente. Os sistemas OLAP podem utilizar esquemas desnormalizados ou técnicas de armazenamento de dados para otimizar o desempenho das consultas.
Facilitação do Azure
Dados de criação de perfis: o Azure oferece ferramentas e serviços que pode utilizar para criar perfis de dados, como o Azure Catálogo de Dados, o Azure Purview e o Azure Synapse Analytics. Estas ferramentas permitem-lhe extrair, transformar e carregar dados de várias origens, efetuar verificações de qualidade de dados e obter informações sobre os dados.
Monitorizar o desempenho dos dados: para monitorizar o desempenho dos dados, pode utilizar o Azure Monitor para recolher e analisar métricas de infraestrutura, registos e dados da aplicação. Pode integrar o Monitor noutros serviços, como o Application Insights. O Application Insights fornece monitorização do desempenho da aplicação e suporta muitas plataformas.
O Application Insights recolhe dados de utilização e desempenho. Pode utilizar o Log Analytics para correlacionar esses dados com dados de configuração e desempenho em recursos do Azure.
Pode utilizar a funcionalidade de informações do SQL do Azure e do Azure Cosmos DB para monitorizar a sua base de dados. Esta funcionalidade permite-lhe diagnosticar e otimizar problemas de desempenho da base de dados.
Particionar dados: o Azure oferece várias estratégias de criação de partições para diferentes arquivos de dados. Cada arquivo de dados pode ter considerações e opções de configuração diferentes para a criação de partições de dados. Para obter mais informações, veja Estratégias de criação de partições de dados.
Otimizar as consultas de base de dados e o desempenho do índice: utilize a funcionalidade de informações de desempenho de consultas do SQL do Azure Database para otimizar consultas, tabelas e bases de dados. Pode utilizar esta funcionalidade para identificar e resolver problemas de desempenho de consultas.
Para bases de dados relacionais, deve seguir as diretrizes de conceção do índice, SQL Server documentação de orientação do índice e orientações sobre o índice do Azure Cosmos DB. Utilize Base de Dados SQL para efetuar a otimização automática de consultas para melhorar o desempenho.
Nas bases de dados SQL, deve reorganizar ou reconstruir índices regularmente. Identifique consultas lentas e otimize-as para melhorar o desempenho. Muitos motores de base de dados têm funcionalidades de otimização de consultas. Para obter mais informações, veja Melhores práticas para o desempenho de consultas.
O Azure Cosmos DB tem uma política de indexação predefinida que indexa todas as propriedades de cada item e impõe índices de intervalo para qualquer cadeia ou número. Esta política fornece-lhe um desempenho de consulta eficiente e não tem de gerir os índices antecipadamente.
Otimizar a carga de armazenamento: muitos serviços de bases de dados do Azure suportam réplicas de leitura. A disponibilidade e a configuração das réplicas de leitura variam consoante o serviço de base de dados do Azure. Veja a documentação oficial de cada serviço para compreender os detalhes e as opções.
Otimizar a conceção do armazenamento: o Azure oferece vários arquivos de dados diferentes de acordo com as suas necessidades de carga de trabalho. Compreenda os tipos de arquivo de dados e selecione um arquivo de dados do Azure para a sua aplicação.
Ligações relacionadas
- Otimização automática no Base de Dados SQL
- BD do Cosmos para o Azure
- Documentação de orientação do índice do Azure Cosmos DB
- SQL do Azure
- Melhores práticas para o desempenho de consultas
- Padrão CQRS
- Documentação de orientação sobre a criação de partições de dados
- Estratégias de criação de partições de dados
- Política de indexação predefinida
- Documentação de orientação de conceção de índices
- Descrição geral do OLAP
- Descrição geral do OLTP
- Melhores práticas de criação de partições
- Reorganizar ou reconstruir índices
- Selecionar um arquivo de dados do Azure para a sua aplicação
- documentação de orientação do índice de SQL Server
- Compreender os tipos de arquivo de dados
Lista de verificação de Eficiência de Desempenho
Veja o conjunto completo de recomendações.