Il ridimensionamento orizzontale significa scalare aggiungendo più macchine nel pool di risorse mentre il ridimensionamento verticale significa scalare aggiungendo più potenza (CPU, RAM) a una macchina esistente .
Un modo semplice per ricordare questo è pensare a una macchina su un server rack, aggiungiamo più macchine in direzione orizzontale e aggiungiamo più risorse a una macchina in direzione verticale .
In un mondo di database il ridimensionamento orizzontale si basa spesso sul partizionamento dei dati, ovvero ogni nodo contiene solo una parte dei dati, nel ridimensionamento verticale i dati risiedono su un singolo nodo e il ridimensionamento viene effettuato tramite multi-core, ovvero dividendo il carico tra le risorse CPU e RAM di quella macchina.
Con il ridimensionamento orizzontale è spesso più facile ridimensionare dinamicamente aggiungendo più macchine al pool esistente: il ridimensionamento verticale è spesso limitato alla capacità di una singola macchina, oltre a tale capacità spesso comporta tempi di inattività e presenta un limite superiore.
Buoni esempi di ridimensionamento orizzontale sono Cassandra, MongoDB, Google Cloud Spanner .. e un buon esempio di ridimensionamento verticale è MySQL - Amazon RDS (la versione cloud di MySQL). Fornisce un modo semplice per ridimensionare verticalmente passando da macchine più piccole a più grandi. Questo processo comporta spesso tempi di inattività.
Le griglie di dati in memoria come GigaSpaces XAP , Coherence ecc. Sono spesso ottimizzate per il ridimensionamento sia orizzontale che verticale semplicemente perché non sono legate al disco. Ridimensionamento orizzontale tramite partizionamento e ridimensionamento verticale tramite supporto multi-core.
Puoi leggere di più su questo argomento nei miei post precedenti:
Scale-out vs Scale-up e The Common Principles Behind the NOSQL Alternatives