Escalonamento de banco de dados horizontal vs. vertical

À medida que seu aplicativo cresce, o banco de dados pode se tornar um gargalo no sistema sem a infraestrutura ou modificações adequadas. Muitas vezes, os engenheiros enfrentam uma escolha difícil quando o tráfego aumenta: tornar o servidor atual mais potente ou adicionar mais servidores ao conjunto? Este guia explica a diferença entre escalonamento horizontal e vertical, as vantagens e desvantagens de cada um e como escolher a abordagem certa para suas necessidades.

Escalonamento e inovação com os bancos de dados do Google Cloud

O que significa escalonamento de banco de dados?

O escalonamento de banco de dados é o processo de aumentar a capacidade, o desempenho e a disponibilidade de um sistema. Ele permite que seu banco de dados processe mais dados e acompanhe o número crescente de usuários.

No setor, os especialistas usam dois termos principais para esse processo. O escalonamento vertical é o "escalonamento para cima", enquanto o escalonamento horizontal é o "escalonamento para fora". Compreender esses dois caminhos é a primeira etapa ao criar um sistema de dados confiável.

O que é escalonamento vertical?

O escalonamento vertical inclui adicionar mais poder ao servidor atual. Você mantém o mesmo nó do banco de dados, mas dá a ele mais CPU, memória ou armazenamento para fazer o trabalho.

Essa é considerada a maneira tradicional de escalonar bancos de dados relacionais. Ela mantém a arquitetura simples porque todos os seus dados ainda ficam em um só lugar.

Benefícios e desafios do escalonamento vertical

Benefícios

  • Simplicidade: seu código permanece o mesmo porque o aplicativo ainda considera o banco de dados como uma única máquina.
  • Manutenção mais fácil: você só tem um servidor para gerenciar e atualizar.
  • Consistência: você não precisa se preocupar em sincronizar dados entre vários servidores.

Desafios

  • Limites fixos: cada máquina tem uma capacidade máxima. Não será possível adicionar mais hardware a um único servidor.
  • Inatividade: muitas vezes, é necessário colocar o banco de dados off-line por um momento para realizar esses upgrades de hardware.
  • Ponto único de falha: se esse servidor falhar, todo o aplicativo pode falhar com ele.

Serviços de bancos de dados gerenciados, como o Cloud SQL, podem facilitar o escalonamento vertical, para você alterar o tamanho da máquina com apenas alguns cliques. Porém, é importante lembrar que você ainda pode atingir os limites físicos do hardware.

Exemplos e casos de uso comuns do escalonamento vertical

Em pequena escala: imagine uma startup em rápido crescimento que executa um web app em um único banco de dados. Quando o tráfego começa a aumentar, ela pode migrar para uma instância maior, o que, por sua vez, oferece mais poder de computação para lidar com os visitantes extras sem precisar reescrever o código do aplicativo.

Escala empresarial: uma grande empresa com um sistema legado também pode usar o escalonamento vertical. Esses sistemas geralmente precisam de relações complexas entre os dados. Como o código é criado para um único banco de dados, ela pode escalonar verticalmente adicionando mais poder a essa máquina em vez de tentar migrar para um sistema distribuído.

Necessidades internas: algumas empresas também usam o escalonamento vertical para relatórios internos. Elas podem adicionar mais RAM ao servidor de banco de dados principal para conseguirem processar com mais rapidez consultas grandes que demandam muitos recursos, sem prejudicar a experiência dos usuários regulares.

O que é escalonamento horizontal?

O escalonamento horizontal indica a adição de mais máquinas ao sistema de banco de dados em vez de tornar uma máquina mais potente, o que distribui o trabalho entre um grupo de servidores. É um conceito fundamental na computação em nuvem moderna e em sistemas distribuídos.

Para isso funcionar, os engenheiros usam técnicas como fragmentação, em que os dados são divididos em partes menores em diferentes servidores, e replicação, em que os dados são copiados para vários nós.

Benefícios e desafios do escalonamento horizontal

Benefícios

  • Crescimento ilimitado: é possível continuar adicionando mais máquinas conforme suas necessidades aumentam.
  • Alta disponibilidade: como você tem vários servidores, o sistema permanece on-line mesmo que um nó falhe.
  • Custo-benefício: é possível usar hardware padrão mais barato em vez de comprar um servidor enorme e caro.

Desafios

  • Complexidade: seu aplicativo precisa saber como se comunicar com vários servidores, o que aumenta os desafios de design.
  • Consistência de dados: manter os dados sincronizados em várias máquinas diferentes pode ser difícil de gerenciar.
  • Mudanças no código: talvez seja necessário mudar o código do aplicativo para lidar com um ambiente de banco de dados distribuído.

Um banco de dados SQL distribuído como o Spanner pode ajudar você a lidar com esses desafios. O Spanner faz o trabalho pesado de sincronizar os dados em várias máquinas. Você não precisa dividir seus dados manualmente ou perder a segurança de um banco de dados relacional. Assim, você pode escalonar horizontalmente sem tornar o sistema muito complexo.

Exemplos e casos de uso comuns do escalonamento horizontal

Capacidade: uma plataforma global de e-commerce pode usar o escalonamento horizontal durante grandes ações promocionais. Quando milhões de pessoas acessam o site ao mesmo tempo, o sistema pode rebalancear automaticamente os dados em novos nós para lidar com o tráfego, garantindo que nenhum servidor fique sobrecarregado.

Redundância: às vezes, aplicativos financeiros essenciais também usam o escalonamento horizontal. Eles podem distribuir o banco de dados em vários locais físicos, conhecidos como zonas de disponibilidade. Essa configuração ajuda a garantir que, se um data center tiver um problema, o aplicativo permaneça ativo, mantendo a promessa de consistência de dados.

Proximidade: uma empresa global de jogos pode implantar nós de banco de dados em diferentes partes do mundo. Ao colocar um nó de banco de dados mais perto do jogador, é possível oferecer uma experiência rápida e tranquila com muito pouco atraso. Por exemplo, se um jogador mora em Tóquio, os dados do perfil dele são armazenados em um nó de banco de dados de Tóquio para leituras e gravações extremamente rápidas.

Perguntas frequentes

Quando falamos de escalonamento na nuvem, o escalonamento vertical significa aumentar o tamanho da máquina virtual que hospeda seu banco de dados. O escalonamento horizontal envolve a adição de mais instâncias de máquina a um grupo de escalonamento automático ou a um cluster distribuído.

Algumas empresas usam uma combinação dos dois métodos, o que é chamado de escalonamento diagonal. Nessa abordagem, você adiciona mais nós ao sistema (escalonamento horizontal) e atualiza a capacidade do hardware (escalonamento vertical). Grandes empresas podem usar isso para ter o melhor dos dois mundos, garantindo que o banco de dados seja altamente disponível e poderoso o suficiente para tarefas locais complexas.

Sim. Isso era algo difícil no passado, mas os bancos de dados SQL distribuídos modernos, como o Spanner, usam sincronização avançada de relógio e protocolos inteligentes para permitir o escalonamento horizontal, mantendo os dados organizados e precisos.

Observe sinais de alerta, como alto uso de CPU ou uso da memória, consultas lentas e aumento do atraso para os usuários durante os horários de pico. Esses são sinais de que seu banco de dados atual pode estar com dificuldades para acompanhar o ritmo.

Principais diferenças entre os escalonamentos horizontal e vertical

A principal diferença entre o escalonamento horizontal e o vertical é como eles adicionam recursos ao seu sistema. O escalonamento vertical aumenta a potência de uma máquina, enquanto o escalonamento horizontal adiciona mais máquinas à sua rede.

Recurso

Escalonamento vertical

Escalonamento horizontal

Conceito

Adicionar recursos a uma máquina

Adicionar mais máquinas à rede

Capacidade

Limites fixos de hardware

Praticamente sem limites

Inatividade

Normalmente exige tempo de inatividade

Inatividade zero (os nós são adicionados dinamicamente)

Complexidade

Menor (arquitetura simples)

Maior (requer lógica distribuída)

Custo

Custos mais altos para hardware grande


Escalonamento linear com máquinas padrão

Recurso

Escalonamento vertical

Escalonamento horizontal

Conceito

Adicionar recursos a uma máquina

Adicionar mais máquinas à rede

Capacidade

Limites fixos de hardware

Praticamente sem limites

Inatividade

Normalmente exige tempo de inatividade

Inatividade zero (os nós são adicionados dinamicamente)

Complexidade

Menor (arquitetura simples)

Maior (requer lógica distribuída)

Custo

Custos mais altos para hardware grande


Escalonamento linear com máquinas padrão

Escalonamento de SQL versus NoSQL: desmistificando os mitos

Há várias ideias desatualizadas sobre bancos de dados SQL e NoSQL que ainda permeiam o setor. Grande parte da dificuldade no escalonamento de bancos de dados SQL tradicionais está relacionada à forma como eles lidam com junções e consistência de dados. Distribuir um banco de dados relacional por vários servidores pode ser um desafio técnico, mas as soluções distribuídas modernas superaram muitos desses obstáculos, permitindo que os desenvolvedores escalem o SQL horizontalmente sem abrir mão dos recursos relacionais de que precisam. Confira três equívocos comuns e as verdades por trás deles:

Verdade: eles podem. Embora os designs relacionais mais antigos favorecessem o escalonamento vertical, os sistemas SQL distribuídos modernos permitem que os bancos de dados relacionais abranjam várias máquinas. Essa abordagem combina a consistência do SQL com o poder de crescimento horizontal da arquitetura de nuvem moderna.

Verdade: o NoSQL é eficaz para conjuntos de dados massivos e não estruturados, mas os bancos de dados SQL costumam ser melhores para consultas complexas e estruturadas. Em muitos casos, um banco de dados SQL bem ajustado supera o NoSQL se o aplicativo depende de relações profundas entre pontos de dados.

Verdade: você não precisa escolher. Os padrões de arquitetura modernos permitem escalonar o sistema em várias máquinas, mantendo regras rigorosas para a segurança dos dados, conhecidas como conformidade com ACID, em todo o cluster.

Como escolher a abordagem certa de escalabilidade

Ao decidir como escalonar seu banco de dados, a escolha geralmente depende do seu orçamento, da quantidade de dados que você tem e do tempo de atividade necessário. O conselho típico é o seguinte:

  • Se você tem uma quantidade de tráfego moderada e previsível, é mais fácil começar com o escalonamento vertical porque é mais simples e rápido de configurar.
  • Se você está criando para escala global ou precisa de tempo de atividade constante, é recomendável planejar o escalonamento horizontal desde o início. Exige mais esforço de planejamento, mas pode poupar você de grandes dores de cabeça no futuro.

Escalone com facilidade no Google Cloud

O Google Cloud oferece uma variedade de ferramentas de banco de dados que se adaptam à sua estratégia de escalonamento. Seja para aumentar a escala com simplicidade ou para ter a alta capacidade do escalonamento horizontal, esses produtos podem ajudar.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.

Google Cloud