Gerenciamento de Bancos de Dados: Melhores Práticas

Aprenda as melhores práticas para o gerenciamento de bancos de dados e garanta sua eficiência.

Tempo de Leitura: 5 minutos

Diante da crescente complexidade e quantidade de dados, a adoção de boas práticas para o gerenciamento de bancos de dados tornou-se componente vital para assegurar o desempenho, segurança e escalabilidade eficiente das aplicações. Neste artigo, exploraremos conceitos essenciais e práticas recomendadas, destacando pontos essenciais tanto no desenvolvimento quanto na operação de sistemas.

Conheça nosso manifesto

Conceitos Essenciais

Banco de Dados vs. Aplicação:

Primeiramente, vamos discutir a distinção entre a camada de armazenamento (banco de dados) e a camada de manipulação (aplicação) é fundamental. 

Um banco de dados é responsável por coletar, armazenar e gerenciar dados de forma eficiente. Ele é projetado para permitir a recuperação fácil, rápida e segura das informações. Enquanto uma aplicação é um conjunto de código fonte, um programa de software projetado para realizar tarefas específicas e/ou fornecer funcionalidades específicas para o usuário final.

Ambos estão normalmente atrelados juntos às aplicações fornecendo sistemas mais eficientes, mas suas responsabilidades não devem ser confundidas.

A aplicação deve ser desenvolvida de forma onde toda a lógica da regra de negócio esteja em seu código, evitando que a camada de armazenamento contemple fragmentos da lógica em seu servidor. Isso evita que a aplicação fique dependente de um banco de dados em específico. Garantindo assim a independência e isolamento entre os serviços, onde cada um exerce sua função principal.

Modelar um banco de dados e esperar que esse mesmo schema não necessite de alterações futuras é um pensamento ilusório. Com o avanço das aplicações, de suas necessidades e de suas regras de negócio, alterações no schema do banco precisam ser planejadas desde o inicio. Com tudo o projeto de desenvolvimento deve considerar uma visão abrangente do sistema, priorizando a implementação de novas funcionalidades sem alterar diretamente o banco de dados, especialmente em esquemas relacionais com grande volume de dados. Após esgotadas as opções possíveis e constatado que a única forma viável é alteração no banco de dados, deve-se realizar os devidos testes e durante uma janela de manutenção agendada a alteração ser feita em produção.

Problemas de Performance/Lentidão nas Consultas

Tuning de Banco de Dados:

A criação indiscriminada de índices pode impactar negativamente o desempenho como um todo, devido ao consumo de espaço em disco e processos internos de manutenção.

A criação de um índice reflete como a criação de um novo objeto no banco de dados, que é armazenado de forma isolada da tabela, por tanto a  cada inserção de nova linha na tabela, a mesma também será inserida no index representando duas operações de escrita.




O tuning vai além da indexação e inclui análise detalhada do processamento da consulta usando ferramentas de "explain", configuração adequada dos parâmetros de inicialização e estimativa correta do poder computacional do sistema gerenciador de banco de dados (SGBD) .

Estratégias para Melhorar Consultas:
  • Inclua filtros mais restritivos para otimizar consultas.
  • Otimize a ordem dos filtros
  • Evite joins desnecessários.
  • Considere limites na quantidade de dados retornados e implemente processamento paralelo.
  • Ações direcionadas ao banco de dados: particionamento de tabelas, atualização de índices, externalização de dados não acessados e ajuste de parâmetros de configuração.

Uso de ORM (Object Relational Mapper)

Produtividade vs. Performance:

Embora o uso de ORM simplifique o desenvolvimento, é crucial analisar constantemente sua performance. Seu uso implica em uma camada adicional entre a lógica da aplicação e o banco de dados, onde esse processamento mesmo que em milissegundos podem fazer diferença significativa em sistemas de tráfego intenso e dificultar a rastreabilidade das quieres até seu ponto de origem na aplicação.

A função do ORM é promover a abstração do gerenciamento e conectividade com diversos banco de dados, o que resulta na utilização de funções básicas do SQL, já que precisa encontrar uma forma de normalização para diferentes mecanismos de banco de dados. Com a inserção de um banco de dados NoSQL essa normalização pode significar degradação da performance do ORM com banco de dados destino.

  • Acompanhe como o ORM realiza as consultas que chegam ao banco de dados.
  • Implemente em paralelo consultas usando raw SQL na aplicação.
  • Exemplo prático: O Sequelize incorpora índices pré-definidos no código da aplicação, gerando uma dependência. Destaca-se a importância da análise contínua.

Controle de acesso

Consiste em um prática crucial no gerenciamento de banco de dados, que visa garantir a confidencialidade, integridade e disponibilidade das informações. Protegendo contra acessos não autorizados, garantindo que apenas usuários autorizados possam visualizar, modificar ou excluir dados.

Segurança na Administração de Usuários:
  • Restrinja o uso de credenciais de superuser a um pequeno grupo de usuários.
  • Cada aplicação deve ter seu próprio usuário com permissões específicas para garantir isolamento de recursos e segurança dos dados.
  • Seguir a regra do “mínimo possível” na liberação de permissões.
  • Implemente política de troca periódica de senhas.
  • Priorize uso de Sistema de Login Único SSO, com perfis de acesso estendido aos diversos bancos de dados.

Camada de Cache

O armazenamento em cache permite reutilizar com eficiência e alta velocidade os dados recuperados ou computados anteriormente de uma camada de armazenamento físico que se localiza entre a aplicação e o servidor de armazenamento de dados.

Utilização Eficiente do Redis:
  • Redis é uma ferramenta eficiente para caching, proporcionando baixa latência e escalabilidade.
  • Gerencie a temporariedade dos dados.

Utilização Eficiente da memória do banco de dados:
  • Uso consciente dos dados no workload.
  • Espaço em memória compatível.
  • Monitoramento dos dados alocados.

Quais Dados Retornar, Como e Por Quê

Para garantir uma boa performance na aplicação, as consultas no banco de dados devem ser previamente planejadas, em conjunto com quais dados serão retornados e como será esse retorno. Essa definição é importante para que seja possível trabalhar em ações direcionadas de melhorias com o intuito de garantir um banco de dados otimizado.

Retorno dos Dados para a Aplicação:

Performance em Consultas com Grandes Volumes de Dados:

  • Escolha cuidadosa dos dados retornados.
  • Implemente filtros para escolha do usuário e bloqueios padrão para evitar acesso indiscriminado aos dados.
  • Realize  etapas de agregações, ordenações e demais processamentos sob a responsabilidade da aplicação. 

Cuidados com Consultas Pontuais:

  • Evite consultas indiscriminadas usando "SELECT * FROM table".
  • Utilize a cláusula LIMIT para reduzir a quantidade de dados retornados.
  • Considere a paginação como uma estratégia eficiente.

Correções nos Dados Diretamente no Banco de Dados

A manipulação direta dos dados na camada de armazenamento deve ser executada de forma pontual e excepcional sempre com cautela, garantindo que não haja possibilidade de perda ou inconsistência dos dados.

Manipulação Adequada dos Dados:
  • A aplicação deve ser responsável por toda a manipulação dos dados, evitando falhas na aplicação.
  • Abordagem de segurança: crie seções com diferentes níveis de permissões na aplicação para garantir que todas as alterações de dados sejam realizadas diretamente pela aplicação.
  • Implemente política de auditoria em alterações manuais de dados em ambiente de produção .

Drivers e Plataformas de Conexões Oficiais e Atualizadas

O lançamento de novas versões dos bancos de dados traz a implementação de novas features, correções de bugs,  melhoria de performance contribuindo para o aperfeiçoamento do mecanismo no mercado frente às novas necessidades que surgem

Importância das Atualizações:
  • Utilize versões recentes de bancos de dados e drivers oficiais para garantir correções, melhorias e segurança.
  • Priorize  o uso de ferramentas oficiais para conexões, como pgAdmin, MySQL Workbench e MongoCompass.
  • Exemplo prático: queries realizadas na GUI Robo3t chegavam ao mongodb sem filtros, causando leitura inteira na collection e consequentemente consumo indevido do poder computacional do cluster. 

Uso de Novas Tecnologias

Estamos na era da computação em nuvem que  proporciona escalabilidade, flexibilidade e eficiência na gestão de recursos, permitindo redução de custos operacionais e ganho de performance.

Explorando a Computação em Nuvem:
  • Aproveite os benefícios de utilizar SaaS (Software as a Service) para otimizar custos, escalar conforme a demanda e redução de carga operacional.
  • Utilize as opções de segurança já disponíveis, para atender aos requisitos de proteção de dados, alinhada com legislações como a LGPD.
Essenciais para Eficiência Operacional:
  • Garanta o monitoramento e observabilidade em todos serviços.
  • Integre o banco de dados à plataforma de monitoramento da aplicação.
  • Obtenha ferramentas específicas para seus bancos de dados.
  • Acompanhe o consumo, saúde e custo do sistema com a configuração de alertas proativos.
  • Implemente automações em respostas aos alertas.

Conclusão

Ao implementar estas boas práticas, os desenvolvedores garantem a eficácia operacional, segurança e desempenho robusto dos bancos de dados em suas aplicações. A constante análise e adaptação são fundamentais para lidar com as evoluções tecnológicas e as demandas em constante mudança do mercado cada dia mais orientado por dados.

Francis Palharini
Francis Palharini
Estou na área de tecnologia desde 2020, antes disso eu não fazia ideia de nada dessa área. Hoje trabalho na TecnoSpeed como DBA. Apaixonada por Harry Potter, Vingadores e por dormir, quando não estou trabalhando estou na academia, assistindo série ou lendo.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Pular para o conteúdo