Esta página abordará o seguinte para ajudá-lo a entender melhor a escalabilidade do banco de dados:
- Dimensionamento horizontal versus vertical
- Desafios de escalabilidade do banco de dados
- Como melhorar a escalabilidade do banco de dados
- Escalabilidade do NoSQL em relação aos bancos de dados relacionais
- Conclusão
O que é escalabilidade do banco de dados? A escalabilidade do banco de dados não é apenas a capacidade de um banco de dados de lidar com mais carga, mas também de melhorar o desempenho à medida que as demandas comerciais de um aplicativo aumentam. Observe que o dimensionamento não significa apenas aumentar os recursos para atender a uma demanda maior, mas também diminuir se a demanda diminuir.
A falha no dimensionamento de um banco de dados tem três resultados típicos: Sobrecarga de CPU/memória, armazenamento atingindo a capacidade e sobrecarga de rede que reduz o tráfego de dados. Qualquer um desses problemas, ou uma combinação deles, pode derrubar seu aplicativo e afetar seriamente seus negócios.
Esta página aborda dois tipos de dimensionamento, os desafios de cada um e as soluções recomendadas para superar esses desafios. Por fim, ela compara os bancos de dados NoSQL e relacionais no contexto da escalabilidade e mostra por que o Couchbase é a melhor opção para escalabilidade.
Dimensionamento horizontal versus vertical
Há duas maneiras de um banco de dados melhorar sua disponibilidade e comportamento quando mais recursos são exigidos: escalonamento vertical e escalonamento horizontal.
O que é escalonamento horizontal?
O dimensionamento horizontal, melhor habilitado em sistemas não relacionais, refere-se à adição de mais nós para compartilhar uma carga maior. Esses nós fazem parte de um cluster que pode ser distribuído em vários servidores, e os dados podem ser conectados por meio de junções. O escalonamento horizontal também é conhecido como escalonamento externo.
O que é escalonamento vertical?
O dimensionamento vertical refere-se à adição de mais recursos físicos ou virtuais a um banco de dados que está sendo executado em um único servidor. Isso pode ser feito adicionando mais potência de CPU, memória ou capacidade de armazenamento. O escalonamento vertical também é conhecido como escalonamento para cima.
O que é melhor, escalonamento horizontal ou vertical?
O tipo de dimensionamento que você deve escolher depende da sua aplicação e dos desafios específicos que você precisa superar. Fatores a serem considerados:
- O escalonamento vertical é uma boa primeira opção quando você não precisa de um salto enorme na escala e deseja minimizar as alterações no sistema geral além das alterações nos recursos de computação
- O dimensionamento vertical pode exigir tempo de inatividade se você estiver trocando de máquinas para obter mais recursos
- Por fim, à medida que seus recursos de computação se expandem, pode ser mais caro aumentar e manter seu banco de dados usando o dimensionamento vertical
Quando você se deparar com esses problemas, ou se quiser preparar seu sistema para o futuro para diferentes cenários de crescimento, o dimensionamento horizontal é o caminho a seguir.
- O dimensionamento horizontal pode melhorar a tolerância a falhas e a disponibilidade, pois reduz o impacto de uma única falha de servidor
- O dimensionamento horizontal pode exigir mudanças na arquitetura e no código do seu aplicativo; no entanto, o impacto é atenuado por bancos de dados modernos, como o Couchbase, que oferecem recursos de dimensionamento automático
Desafios de escalabilidade do banco de dados
Dimensionar um banco de dados pode ser complicado, e os desafios que você encontra dependerão de vários fatores. O primeiro desafio pode ser o fato de você ter um aplicativo legado que é executado em um banco de dados relacional. Nesse caso, você terá de escolher entre usar mais recursos físicos/virtuais ou reprojetar o aplicativo para ser executado em um banco de dados que ofereça suporte ao dimensionamento horizontal.
Outro desafio do dimensionamento de aplicativos modernos é gerenciar os custos de acordo com as diferentes cargas. Você não quer pagar o mesmo preço pelos recursos de computação em períodos de baixa e alta utilização. Você quer que seus custos correspondam à sua demanda.
Um terceiro desafio é que os bancos de dados em escala horizontal podem ser mais complicados de manter e gerenciar. O Couchbase Capella™ é a solução ideal nesse caso, pois é um DBaaS (Database-as-a-Service, banco de dados como serviço) totalmente gerenciado que oferece suporte à replicação e à fragmentação, bem como escalonamento multidimensional.
Como melhorar a escalabilidade do banco de dados
Você pode melhorar o dimensionamento horizontal oferecendo suporte à replicação e ao sharding.
Replicação
A replicação é uma forma de escalonamento que cria cópias de um banco de dados ou de nós de banco de dados. Se um nó ficar inoperante, uma cópia de seus dados poderá ser recuperada em um nó diferente. Outra vantagem da replicação é que as solicitações podem chegar a diferentes nós em diferentes locais, diminuindo assim a carga de trabalho em um nó específico.
Alguns dos principais componentes do Couchbase baseiam-se em uma topologia de replicação mestre-mestre na qual várias instâncias do Couchbase podem atuar como nós mestres e replicar dados entre si:
- O Couchbase usa fluxos de replicação para replicar dados entre os nós. Um fluxo de replicação é um fluxo bidirecional contínuo de dados entre dois nós.
- Couchbase armazena dados em compartimentosque são contêineres lógicos que agrupam dados relacionados. Cada bucket pode ser configurado para replicar seus dados para um ou mais nós.
- Replicação entre data centers (XDCR) é um recurso do Couchbase que permite a replicação entre data centers. O XDCR permite a replicação entre clusters do Couchbase, que podem estar localizados em diferentes regiões ou zonas de disponibilidade.
- Em uma topologia de replicação mestre-mestre, podem ocorrer conflitos quando vários nós atualizam a mesma parte dos dados simultaneamente. O Couchbase tem um mecanismo de resolução de conflitos que se baseia em versões de documentos e registros de data e hora para resolver conflitos.
Fragmentação
O sharding, também conhecido como particionamento, também se baseia no princípio de mover dados entre vários nós. Ao contrário da replicação, o sharding envolve a divisão dos dados em vez de fazer cópias. Sharding de banco de dados divide todo o conjunto de dados em vários grupos conhecidos como shards. Uma vez divididos, cada fragmento pode ser armazenado de forma independente, geralmente em vários servidores que são frequentemente chamados de cluster. Cada fragmento pode ser acessado de forma independente, o que significa que você pode acessar os dados mais rapidamente e ter mais recursos disponíveis para processamento, computação e armazenamento.
O sharding permite um desempenho mais rápido, mas também introduz maior complexidade. Essa complexidade inclui o conceito de rebalanceamento, que envolve a movimentação de dados entre os shards ao longo do tempo para mantê-los distribuídos uniformemente.
Para obter mais detalhes, consulte este guia sobre sharding no Couchbase.
Escalabilidade do NoSQL em relação aos bancos de dados relacionais
Os bancos de dados NoSQL são inerentemente mais escalonáveis do que os bancos de dados relacionais porque podem ser escalonados tanto vertical quanto horizontalmente. Além disso, eles têm uma arquitetura distribuída projetada para lidar com grandes volumes de dados em vários servidores.
Os sistemas tradicionais de gerenciamento de bancos de dados relacionais (RDBMS), como o Oracle, concentram-se na consistência em detrimento da disponibilidade. Inversamente, os bancos de dados NoSQL preferem a disponibilidade à consistência e se concentram mais no suporte a volumes maiores de usuários e dados. Além disso, a distribuição de dados é mais tolerante a falhas se alguns nós ficarem inoperantes.
Conclusão
Para estar um passo à frente das demandas de escalonamento, faça testes de carga regularmente e escolha um banco de dados que ofereça suporte ao método de escalonamento mais adequado às suas necessidades comerciais e de aplicativos. Saiba que há compromissos necessários para as abordagens de dimensionamento horizontal e vertical, como escolher o custo em vez da complexidade ou o tempo de atividade em vez da consistência.
Use estes recursos para saber mais sobre o dimensionamento do banco de dados com o Couchbase:
- Dimensionamento de banco de dados multidimensional - detalhes sobre os serviços do Couchbase, rebalanceamento, status, eventos e trabalhos
- Por que escolher um banco de dados NoSQL? - o que é o NoSQL, como ele funciona e para que servem os bancos de dados NoSQL
- Bancos de dados sem servidor - vantagens para desenvolvedores, persistência de dados para aplicativos e aplicativos compatíveis
- Couchbase Capella DBaaS - a maneira mais fácil e rápida de começar a usar o Couchbase e eliminar o gerenciamento de banco de dados