Ignorar navegação

Escalar verticalmente versus escalar horizontalmente

Uma introdução à escalabilidade do banco de dados na computação em nuvem

Dados, dados em todo lugar: o que falamos quando falamos sobre escalabilidade

A escalabilidade na computação em nuvem é a capacidade de aumentar ou diminuir de modo rápido e fácil o tamanho ou a potência de uma solução de TI ou de um recurso. Embora o termo escalabilidade possa se referir à capacidade de qualquer sistema de gerenciar uma quantidade cada vez maior de trabalho, quando falamos sobre se escalar vertical ou horizontalmente, estamos frequentemente fazendo referência a bancos de dados (muitos deles).

A escalabilidade do banco de dados é a principal opção para desenvolvedores de aplicativos modernos. Digamos que um novo aplicativo seja lançado e que a demanda por TI cresça de alguns usuários para milhões de usuários em todo o mundo. Uma das capacidades mais importantes para ajudar os desenvolvedores de aplicativos a acompanhar a demanda e minimizar o tempo de inatividade é conseguir escalar com eficiência.

O debate entre escalar horizontalmente vs. verticalmente se concentra na maneira como a escalabilidade nos ajuda a adaptar e a gerenciar grandes volumes e uma vasta gama de dados, volumes de dados em constante mudança e mudar os padrões de carga de trabalho, tudo isso gerado por meio da nuvem, dispositivos móveis, mídia social e Big Data.

Escalar horizontalmente versus verticalmente

No nível mais básico, a escalabilidade do banco de dados pode ser dividida em dois tipos:

O dimensionamento vertical, ou redução ou expansão vertical, é onde você aumenta ou diminui a potência de computação ou bancos de dados conforme necessário, alterando os níveis de desempenho ou usando pools de banco de dados elásticos para ajustar automaticamente de acordo com suas demandas de carga de trabalho.

O dimensionamento horizontal, ou redução ou expansão horizontal, é onde você adiciona mais bancos de dados ou divide seu banco de dados grande em nós menores, usando uma abordagem de particionamento de dados chamada fragmentação, que pode ser gerenciada de maneira mais rápida e fácil entre servidores.

Como escalar verticalmente

A escala vertical é usada quando você precisa reagir rapidamente para consertar um problema de desempenho que não pode ser resolvido usando técnicas clássicas de otimização do banco de dados, como alterações de consulta ou indexação. Escalar verticalmente é útil para lidar com picos nas suas cargas de trabalho em que o nível de desempenho atual não pode atender a todas as demandas. A escala vertical permite que você adicione mais recursos para gerenciar facilmente cargas de trabalho de pico. Em seguida, quando os recursos não forem mais necessários, reduzir verticalmente permite que você volte para o estado original e economize nos custos de nuvem.

Escale verticalmente quando:

  • Você verá que as suas cargas de trabalho estão atingindo algum limite de desempenho, como limites de CPU ou de E/S.
  • Você precisa reagir rapidamente para consertar problemas de desempenho que não podem ser resolvidos com a otimização do banco de dados clássica.
  • Você precisar de uma solução que permita alterar as camadas de serviço para se adaptar à alteração dos requisitos de latência.

Como escalar horizontalmente

Os desenvolvedores de aplicativos começarão a considerar escalar horizontalmente ou expandir quando não conseguirem obter recursos suficientes para as cargas de trabalho, mesmo operando nos níveis de desempenho mais altos. Com a escala horizontal, os dados são divididos em vários bancos de dados (ou fragmentos) entre servidores, e cada fragmento pode ser escalado ou reduzido verticalmente de modo independente.

Como o particionamento de dados aprimora a escalabilidade? Quando você escalar verticalmente um banco de dados individual adicionando recursos como VMs (máquinas virtuais), ele eventualmente atingirá um limite de hardware físico. Como cada partição de dados é hospedada em um servidor separado, se você dividir os dados entre vários fragmentos, poderá escalar horizontalmente um sistema quase sem limite.

Alguns tipos de tecnologias de banco de dados, mais notavelmente os bancos de dados NoSQL ou não relacionais, forem desenvolvidos com funcionalidades exclusivas para escalar horizontalmente os dados com fragmentação, o que permite que eles gerenciem dados grandes, não relacionados, indeterminados ou que estão em rápida mudança.

Além disso, alguns serviços de banco de dados (SQL) relacionais que originalmente ofereciam serviços para escalar ou reduzir verticalmente estão começando a oferecer opções empolgantes para corresponder às vantagens de escalabilidade de bancos de dados não relacionais. Os serviços de hiperescala, como a Hiperescala do Banco de Dados SQL do Microsoft Azure e a Hiperescala do Banco de Dados do Azure para PostgreSQL, permitem que os usuários escalem verticalmente o armazenamento para até 100 TB com rapidez, fornecem uma arquitetura flexível e nativa de nuvem que permite que o armazenamento cresça conforme necessário e permitem backups quase instantâneos e restaurações rápidas de banco de dados em apenas alguns minutos.

Escale horizontalmente quando:

  • Você tem aplicativos distribuídos geograficamente em que cada aplicativo deve acessar parte dos dados na região. Cada aplicativo acessará apenas o fragmento associado a essa região sem afetar outros fragmentos.
  • Você tem um cenário de fragmentação global, como balanceamento de carga, em que há um grande número de clientes distribuídos geograficamente que inserem dados nos próprios fragmentos dedicados.
  • Você atingiu o limite dos seus requisitos de desempenho, mesmo nos níveis de desempenho mais altos do seu serviço, ou se os dados não couberem em um banco de dados individual.

Dimensionamento automático

O dimensionamento automático é o processo de correspondência automática e dinâmica de recursos para atender aos requisitos de desempenho de um sistema. À medida que o volume de trabalho cresce, os aplicativos podem precisar de recursos adicionais para manter os níveis de desempenho necessários ou atender à demanda crescente. Se a demanda ficar mais lenta e os recursos adicionais não forem mais necessários, você poderá economizar em gastos com a nuvem tendo um serviço automático em vigor para desalocar recursos não utilizados.

O dimensionamento automático aproveita a elasticidade de ambientes hospedados na nuvem. Ele facilita a sobrecarga de gerenciamento reduzindo a necessidade de os operadores do sistema tomarem decisões sobre a adição ou remoção de recursos ou a verificação do desempenho do sistema constantemente.

Embora haja duas maneiras principais de escalar os aplicativos (vertical ou horizontalmente), é menos comum automatizar a escala vertical, pois escalar verticalmente geralmente requer que o sistema fique temporariamente indisponível enquanto está sendo reimplantado.

O dimensionamento automático é mais comum ao escalar horizontalmente, pois escalar ou reduzir horizontalmente significa apenas adicionar ou remover instâncias de um recurso e seu aplicativo continua sendo executado sem interrupção conforme novos recursos são provisionados. Se a demanda diminuir, os recursos poderão ser desligados facilmente sem tempo de inatividade e desalocados.

Muitos provedores de sistemas baseados em nuvem, como o Microsoft Azure, dão suporte à escala horizontal automática.

  • Um banco de dados é qualquer coleção de informações inter-relacionadas que são armazenadas e organizadas para que seja mais fácil de gerenciar e acessar. À medida que novos dados e tipos de dados estão sendo gerados em um ritmo espantoso, torna-se um desafio manter os dados organizados, acessíveis e protegidos. DBMS (sistemas de gerenciamento de banco de dados), que incluem uma camada de ferramentas de gerenciamento, são usados com frequência para gerenciar enormes quantidades de dados.

    Novos tipos de banco de dados e tecnologias estão constantemente sendo criados para adaptarem-se ao grande volume e à vasta matriz de dados gerada pela nuvem, dispositivos móveis, mídia social e Big Data.

    Saiba mais sobre bancos de dados
  • Os bancos de dados NoSQL, muitas vezes chamados de SQL não relacionais ou "não apenas" SQL, são um conjunto diversificado de tecnologias de banco de dados que lidam com o armazenamento e a recuperação de dados de modo diferente de um banco de dados (SQL) relacional e tradicional.

    Os bancos de dados NoSQL não exigem um esquema predefinido e são capazes de usar vários modelos de dados, o que os torna extremamente eficientes para gerenciar grandes volumes de dados não estruturados e escalar projetos de banco de dados de Big Data.

    Saiba mais sobre os bancos de dados NoSQL
  • O PostgreSQL é um banco de dados robusto de código aberto que funciona com consultas relacionais e não relacionais, que é conhecido por sua confiabilidade e integridade de dados. O PostgreSQL é amplamente usado em campos como serviços financeiros, manufatura, sistemas de informações geográficas governamentais e tecnologia da Web. Os desenvolvedores criam aplicativos com o PostgreSQL, enquanto os administradores confiam nele para proteger os dados.

    Saiba mais sobre o PostgreSQL
  • O cache é uma técnica comum usada por desenvolvedores e profissionais de TI que tem o objetivo de aprimorar o desempenho e a escalabilidade de um sistema. O cache funciona copiando temporariamente dados acessados com frequência para um armazenamento rápido localizado próximo ao aplicativo. Se esse armazenamento rápido de dados estiver mais próximo do aplicativo do que a fonte original, o cache poderá aprimorar significativamente os tempos de resposta para aplicativos cliente ao fornecer dados com mais rapidez. Em geral, os desenvolvedores criam aplicativos para armazenar em cache os dados processados e realocam o cache para atender às solicitações mais rapidamente do que nas consultas de banco de dados padrão.

    Saiba mais sobre o cache
  • A fragmentação de dados é um tipo de particionamento de dados horizontal que permite que você divida seu banco de dados grande em bancos de dados menores, que podem ser gerenciados de maneira mais rápida e fácil entre os servidores.

    Saiba mais sobre a fragmentação de banco de dados
  • Uma plataforma como serviço, geralmente abreviada como PaaS, é um serviço de um provedor de nuvem que oferece um ambiente sob demanda para desenvolvimento, teste, entrega e gerenciamento de aplicativos. A plataforma como serviço torna mais simples e rápido para os desenvolvedores criarem aplicativos Web ou móveis, sem precisarem lidar com a configuração ou o gerenciamento da infraestrutura subjacente de servidores, armazenamento, rede e bancos de dados que eles necessitam como desenvolvedores.

    Saiba mais sobre o PaaS

Explore a escalabilidade da nuvem com o Azure

Descubra uma abordagem abrangente à escala vertical vs. escala horizontal que se adapte ao seu cenário em ambientes locais, de várias nuvens e de borda. A família do Azure de serviços de banco de dados oferece uma opção de bancos de dados relacionais, NoSQL e na memória totalmente gerenciados, abrangendo mecanismos proprietários e de código aberto, para atender às necessidades dos desenvolvedores de aplicativos modernos.

Economize tempo e dinheiro com o gerenciamento de infraestrutura automatizado, incluindo soluções de automação para escalabilidade, disponibilidade e segurança.

Produtos e serviços relacionados

SQL do Azure

A família de bancos de dados SQL de nuvem oferece opções flexíveis para a migração, a modernização e o desenvolvimento de aplicativos

Azure Cosmos DB

Banco de dados NoSQL rápido com APIs abertas para qualquer escala

Azure PostgreSQL

PostgreSQL totalmente gerenciado, inteligente e escalonável

Banco de Dados SQL do Azure

SQL inteligente gerenciado na nuvem

Instância Gerenciada de SQL do Azure

Instância SQL gerenciada e sempre atualizada na nuvem

SQL Server em Máquinas Virtuais

Migre cargas de trabalho do SQL Server para a nuvem com o menor TCO

Banco de Dados do Azure para MySQL

Bancos de dados MySQL totalmente gerenciados e escalonáveis

Azure MariaDB

Serviço de banco de dados MariaDB gerenciado para desenvolvedores de aplicativos

Cache do Azure para Redis

Potencialize aplicativos com cache de dados de baixa latência e alta taxa de transferência

Escale sem limites com os bancos de dados gerenciados

Concentre-se na criação de aplicativos e simplifique o seu trabalho com os bancos de dados gerenciados pelo Microsoft Azure

Estamos prontos para começar – vamos configurar uma conta gratuita

Podemos ajudar você?