Горизонтальное масштабирование означает, что вы масштабируете, добавляя больше машин в пул ресурсов, тогда как вертикальное масштабирование означает, что вы масштабируете, добавляя больше мощности (ЦП, ОЗУ) к существующей машине .
Простой способ запомнить это - подумать о машине в серверной стойке, мы добавляем больше машин в горизонтальном направлении и добавляем больше ресурсов в машину в вертикальном направлении.
В мире баз данных горизонтальное масштабирование часто основано на разделении данных, т.е. каждый узел содержит только часть данных, при вертикальном масштабировании данные находятся на одном узле, а масштабирование выполняется с помощью многоядерности, то есть распределения нагрузки между ресурсы процессора и оперативной памяти этой машины.
При горизонтальном масштабировании часто проще динамически масштабировать, добавляя больше машин в существующий пул. Вертикальное масштабирование часто ограничивается мощностью одной машины, масштабирование сверх этой емкости часто приводит к простоям и имеет верхний предел.
Хорошими примерами горизонтального масштабирования являются Cassandra, MongoDB, Google Cloud Spanner ... и хорошим примером вертикального масштабирования является MySQL - Amazon RDS (облачная версия MySQL). Это обеспечивает простой способ вертикального масштабирования путем переключения с небольших на большие машины. Этот процесс часто включает простои.
Сетки данных в памяти, такие как GigaSpaces XAP , Coherence и т. Д., Часто оптимизируются как для горизонтального, так и для вертикального масштабирования просто потому, что они не привязаны к диску. Горизонтальное масштабирование посредством разделения и вертикальное масштабирование благодаря поддержке многоядерных процессоров.
Вы можете прочитать больше на эту тему в моих предыдущих постах:
Масштабирование против Масштабирования и Общие принципы, стоящие за альтернативами NOSQL