Escala horizontal significa que você escala adicionando mais máquinas ao seu conjunto de recursos, enquanto Escala vertical significa que você escala adicionando mais energia (CPU, RAM) a uma máquina existente .
Uma maneira fácil de lembrar isso é pensar em uma máquina em um rack de servidor, adicionamos mais máquinas na direção horizontal e mais recursos a uma máquina na direção vertical .
Em um mundo de banco de dados, o dimensionamento horizontal é geralmente baseado no particionamento dos dados, ou seja, cada nó contém apenas parte dos dados; no dimensionamento vertical, os dados residem em um único nó e o dimensionamento é feito por vários núcleos, ou seja, espalhando a carga entre os recursos de CPU e RAM dessa máquina.
Com o dimensionamento horizontal, muitas vezes é mais fácil dimensionar dinamicamente adicionando mais máquinas ao pool existente - o dimensionamento vertical costuma ser limitado à capacidade de uma única máquina, o dimensionamento além dessa capacidade geralmente envolve tempo de inatividade e vem com um limite superior.
Bons exemplos de escala horizontal são Cassandra, MongoDB, Google Cloud Spanner .. e um bom exemplo de escala vertical é o MySQL - Amazon RDS (a versão em nuvem do MySQL). Ele fornece uma maneira fácil de escalar verticalmente, alternando de máquinas pequenas para maiores. Esse processo geralmente envolve tempo de inatividade.
As grades de dados na memória, como GigaSpaces XAP , coerência etc., geralmente são otimizadas para escala horizontal e vertical, simplesmente porque não estão vinculadas ao disco. Escalonamento horizontal por meio de particionamento e escalonamento vertical por meio de suporte multinúcleo.
Você pode ler mais sobre esse assunto nos meus posts anteriores:
Scale-out vs Scale-up e Os princípios comuns por trás das alternativas NOSQL