Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.

Один высокий серверный модуль рядом с несколькими небольшими — сравнение двух способов масштабирования.

Когда одного сервера становится мало

Представим условный сервис, который каждое утро считает отчёты по продажам. Пока данных немного, один сервер успевает обработать всё до начала рабочего дня. Позже появляются новые магазины и дополнительные показатели, отчёт готовится всё дольше. Первая мысль — купить более мощную машину. Иногда это разумно, но сначала надо понять, ограничивает работу память, скорость вычислений, чтение данных или неудачная организация задачи.

Масштабирование означает изменение доступных ресурсов под нагрузку. Вертикальный путь усиливает отдельный узел. Горизонтальный добавляет узлы и распределяет между ними работу. Это архитектурный выбор, а не обещание, что отчёт автоматически ускорится. Если обработка ждёт медленный источник или повторно читает лишние данные, дополнительные мощности могут помочь меньше, чем ожидалось.

Усилить один узел

Вертикальное масштабирование похоже на замену небольшого рабочего стола на большой: можно разложить больше документов и быстрее находить нужное. Для сервера это обычно увеличение доступной памяти, вычислительной мощности или возможностей хранения. Такой шаг часто проще для уже работающей программы, потому что не требует сразу делить задачу между несколькими машинами.

Но у отдельного узла есть пределы. Более мощная конфигурация может стоить дороже, а одна машина остаётся местом возможного отказа, если не предусмотрены другие меры надёжности. Кроме того, нельзя ускорить строго последовательный шаг одним лишь добавлением памяти. Поэтому до покупки полезно измерить, какой ресурс действительно заканчивается в нужный момент.

Разделить работу между узлами

Горизонтальный путь напоминает команду, которая делит пачку документов между несколькими сотрудниками. Каждый обрабатывает свою часть, затем результаты объединяются. Google Cloud описывает распределённое выполнение запросов как последовательность этапов, где отдельные части могут работать параллельно, а данные передаются между этапами.

Параллельность полезна, если задачу можно разделить. Но она приносит новые расходы: части данных приходится распределять, передавать между узлами и снова собирать результат. Если один участок работы зависит от завершения предыдущего или весь набор постоянно перемещается по сети, простое добавление серверов не даст пропорционального выигрыша.

Условный пример и хранение

Допустим, отчёт строится по десяти независимым магазинам. Отдельные расчёты по магазинам можно выполнять параллельно, а общий итог собрать в конце. Если же сначала нужно получить единый справочник товаров, его подготовка может стать узким местом для всех параллельных частей. Команда должна видеть обе стадии, а не только итоговое время.

В архитектуре BigQuery хранение и вычисления разделены, поэтому их ресурсы могут меняться независимо. Это пример конкретной платформы, а не универсальное правило для любой базы. При выборе подхода нужно отдельно обсуждать объём хранения, скорость чтения и вычислительную нагрузку; слово «масштабирование» само по себе не указывает, что именно меняется.

Как выбрать путь

Сначала назовите проблему измеримо: какой отчёт не успевает, когда замедляется, как меняется объём данных и что происходит при пиковой нагрузке. Затем выясните, можно ли разделить задачу без постоянного обмена большими объёмами. Если нет, усиление одного узла или изменение самой обработки может оказаться проще. Если части независимы и нагрузка растёт неравномерно, распределение работы может дать больше гибкости.

У обоих путей есть пределы и организационная цена. Решение стоит проверять на типичном рабочем сценарии, а не на отвлечённом обещании ускорения. Чтобы понять, почему несколько машин вообще могут обрабатывать один набор, прочитайте объяснение распределённой обработки данных. Здесь же главный вопрос — где именно добавлять ресурсы и какую часть работы они действительно разгрузят.

По теме

Следующий шаг

Если хотите развить навыки в этой области, посмотрите курс Архитектор данных и сопоставьте программу со своими задачами. Материал объясняет отдельный вопрос, но не заменяет практику и разбор вашей ситуации.

Архитектор данных
Курс
Новинка
Архитектор данных

Архитектор данных — это специалист, который проектирует системы хранения и обработки данных, выбирает правильные технологии под разные задачи и строит масштабируемую инфраструктуру.

С нуля
Теория и практика
Диплом по окончании
12 990
₽/мес
Узнать подробнее

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
46

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Журнал изменений данных: как выяснить, кто и когда изменил набор
41

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.
Как таблица базы данных не допускает недопустимые значения
38

Как таблица базы данных не допускает недопустимые значения

Зачем таблице правила для обязательных полей и диапазона значений, какие ошибки они останавливают и почему всё равно нужен смысловой контроль.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.