Вертикальное и горизонтальное масштабирование
Вводные сведения о масштабируемости баз данных при облачных вычислениях.
Данные повсюду: что скрывается за понятием "масштабируемость"
Масштабируемость при облачных вычислениях — это возможность быстро и без труда увеличить или уменьшить размер либо мощность ИТ-решения или ресурса. В то время как термин "масштабируемость" может означать способность любой системы справиться с растущим объемом работы, в контексте горизонтального и вертикального увеличения масштаба речь часто идет о базах данных и больших объемах данных.
Обеспечение масштабируемости базы данных — самая приоритетная задача для разработчиков современных приложений. Предположим, новое приложение становится популярным. Спрос на него возрастает от нескольких пользователей до миллионов пользователей по всему миру. На этом этапе эффективное масштабирование критически необходимо разработчикам приложений, чтобы адаптироваться к спросу и свести к минимуму время простоя.
Это обсуждение различий между горизонтальным и вертикальным увеличением масштаба сосредоточено на способах, благодаря которым масштабируемость позволяет адаптироваться к огромным объемам разнообразных данных и управлять ими, изменяя объемы данных и шаблоны рабочих нагрузок, которые создаются в облаке, на мобильных устройствах, в социальных сетях и источниках больших данных.
Горизонтальное и вертикальное увеличение масштаба
На самом базовом уровне масштабируемость баз данных можно разделить на два типа:
Вертикальное увеличение (или уменьшение) масштаба, при котором по мере необходимости увеличиваются или уменьшаются базы данных либо вычислительная мощность. Для этого можно изменить уровень производительности либо использовать пулы эластичных баз данных, обеспечивающие автоматическую адаптацию к требованиям рабочей нагрузки.
Горизонтальное увеличение (или уменьшение) масштаба, при котором добавляются дополнительные базы данных или большая база данных разделяется на небольшие узлы с использованием подхода, который называется сегментированием и обеспечивает более быстрое и простое управление на разных серверах.
Вертикальное увеличение масштаба
Вертикальное увеличение масштаба используется, когда необходимо быстро реагировать на проблемы с производительностью, которые нельзя решить с помощью классической методики оптимизации базы данных, например изменения запросов или индексирования. Вертикальное увеличение масштаба помогает справиться с пиками в рабочих нагрузках, когда текущий уровень производительности не может удовлетворить все требования. Вертикальное увеличение масштаба позволяет добавлять дополнительные ресурсы, чтобы легко адаптироваться к пиковым рабочим нагрузкам. Затем, если ресурсы больше не нужны, можно выполнить вертикальное уменьшение масштаба, чтобы вернуться к исходному состоянию и сократить затраты на облако.
Вертикальное увеличение масштаба выполняется в следующих случаях:
-
Рабочие нагрузки достигают определенного ограничения производительности, например ограничения, касающегося ЦП или операций ввода-вывода.
-
Вам нужно быстро реагировать, чтобы устранить проблемы с производительностью, которые нельзя решить путем классической оптимизации базы данных.
-
Вам требуется решение, позволяющее изменять уровни служб, чтобы адаптироваться к изменению требований к задержке.
Горизонтальное увеличение масштаба
Разработчики приложений начинают задумываться о горизонтальном увеличении масштаба, если им не удается получить достаточно ресурсов для рабочих нагрузок даже на самых высоких уровнях производительности. При горизонтальном увеличении масштаба данные разбиваются на несколько баз данных (или сегментов) между серверами. Масштаб каждого сегмента можно вертикально увеличивать или уменьшать по отдельности.
Как секционирование данных повышает масштабируемость? При вертикальном увеличении масштаба отдельной базы данных путем добавления таких ресурсов, как виртуальные машины, в конечном итоге будет достигнуто физическое ограничение оборудования. Каждая секция данных размещается на отдельном сервере, поэтому, если разделить данные на несколько сегментов, можно практически без ограничений горизонтально увеличивать масштаб системы.
Некоторые типы технологий баз данных, особенно нереляционные базы данных или базы данных NoSQL, разрабатываются с уникальными возможностями горизонтального увеличения масштаба данных путем сегментирования базы данных. Это позволяет таким базам данных управлять объемными, несвязанными, неопределенными или быстро изменяющимися данными.
Кроме того, некоторые реляционные службы баз данных (SQL), изначально предлагавшие услуги вертикального увеличения или уменьшения масштаба, начинают предоставлять интересные возможности, позволяя достичь уровня масштабируемости нереляционных баз данных. Службы гипермасштабирования, такие как Гипермасштабирование Базы данных SQL Microsoft Azure и Гипермасштабирование Базы данных Azure для PostgreSQL, дают пользователям возможность быстро масштабировать хранилище до 100 ТБ, обеспечивают ориентированную на облако гибкую архитектуру, позволяя увеличивать объем хранилища в соответствии с потребностями, а также включать почти моментальные операции резервного копирования и быстрые операции восстановления баз данных за несколько минут.
Горизонтальное увеличение масштаба выполняется в следующих случаях:
-
У вас есть географически распределенные приложения, каждое из которых должно обращаться к части данных в регионе. Каждое приложение будет обращаться только к сегменту, связанному с этим регионом, не затрагивая другие сегменты.
-
У вас есть глобальный сценарий сегментирования (например, балансировка нагрузки) с большим количеством географически распределенных клиентов, которые вставляют данные в выделенные им сегменты.
-
Если ограничения производительности превышаются даже на самых высоких уровнях производительности службы или если ваши данные не помещаются в одну базу данных.
Автомасштабирование
Автоматическое масштабирование — это процесс автоматического и динамического согласования ресурсов с требованиями к производительности системы. По мере увеличения объема работы приложениям могут потребоваться дополнительные ресурсы для поддержки необходимых уровней производительности или удовлетворения растущих потребностей. Если потребность уменьшается и дополнительные ресурсы больше не нужны, вы можете сократить расходы на облако с помощью автоматической службы, которая отменит выделение неиспользуемых ресурсов.
Автоматическое масштабирование использует преимущества эластичности облачных сред. Это упрощает управление, уменьшая необходимость для системных операторов постоянно принимать решения о добавлении либо удалении ресурсов или проверке производительности системы.
Есть два основных способа масштабирования приложений: вертикальное и горизонтальное. Вертикальное масштабирование реже выполняется автоматически, так как при нем часто требуется, чтобы система была временно недоступна во время повторного развертывания.
Автоматическое масштабирование чаще выполняется при горизонтальном масштабировании, так как горизонтальное увеличение или уменьшение масштаба означает просто добавление или удаление экземпляров ресурса. При этом ваше приложение не прерывает работу во время подготовки новых ресурсов. Если потребность уменьшается, вы можете беспрепятственно и без простоев завершить работу ресурсов, а также отменить их выделение.
Многие поставщики облачных систем, такие как Microsoft Azure, поддерживают автоматическое горизонтальное масштабирование.
Вопросы и ответы
-
Базой данных называют любую коллекцию взаимосвязанных сведений, которая хранится и упорядочивается для упрощения управления и доступа. Новые данные и типы данных создаются с головокружительной скоростью. Поэтому обеспечить упорядоченность, доступность и защиту этих данных становится непросто. Для обработки огромных объемов данных часто используются системы управления базами данных (СУБД), которые включают в себя слой средств управления.
Для адаптации к огромному объему разнообразных данных, создаваемых в облаке, на мобильных устройствах, а также в социальных сетях и источниках больших данных, разрабатываются все новые типы баз данных и технологии.
-
Базы данных NoSQL, часто называемые нереляционными или "not only" SQL (не только SQL), —это разнообразные технологии, в которых хранение и получение данных осуществляется не так, как в традиционной реляционной базе данных (SQL).
Базы данных NoSQL не нуждаются в предопределенной схеме и могут использовать несколько моделей данных. Это делает их чрезвычайно эффективными при обработке больших объемов неструктурированных данных и масштабировании проектов баз данных для больших данных.
-
PostgreSQL — это надежная база данных с открытым кодом, которая работает с реляционными и нереляционными запросами. Решение известно своей надежностью и способностью обеспечить целостность данных. PostgreSQL широко используется в таких сферах, как финансовые услуги, производство, государственные географические информационные системы и веб-технологии. Разработчики с помощью PostgreSQL создают приложения, а администраторы доверяют этому решению защиту данных.
-
Кэширование — это распространенный способ, используемый разработчиками и ИТ-специалистами для повышения производительности и масштабируемости системы. При кэшировании часто запрашиваемые данные временно копируются в быстрое хранилище данных, расположенное ближе к приложению. Если это быстрое хранилище данных находится ближе к приложению, чем исходный оригинал, кэширование может значительно улучшить время отклика для клиентских приложений путем более быстрой обработки данных. Разработчики часто создают приложения с возможностью кэширования обработанных данных, а затем перепрофилируют кэш для ускоренного обслуживания запросов (по сравнению со стандартными базами данных).
-
Сегментирование данных — это тип горизонтального секционирования данных, который позволяет разделить большую базу данных на базы данных меньшего размера, которыми проще и быстрее управлять, используя разные серверы.
-
Платформа как услуга (PaaS) — это служба от поставщика облачных служб, которая предоставляет среду по запросу для разработки, тестирования и доставки приложений, а также управления ими. Модель "платформа как услуга" упрощает и ускоряет разработчикам задачу создания мобильных и веб-приложений, так как им не приходится заниматься настройкой и администрированием базовой инфраструктуры серверов, хранилища, сети и баз данных, которые необходимы при разработке.
Ресурсы
Краткие руководства и учебные модули
Облачная масштабируемость в Azure
Сравните преимущества вертикального и горизонтального увеличения масштаба и подберите для себя комплексный подход, который соответствует вашему сценарию, в локальной, многооблачной и пограничной средах. Семейство служб баз данных Azure предлагает широкий выбор полностью управляемых реляционных баз данных, баз данных NoSQL и выполняющихся в памяти баз данных, объединяющих собственные компоненты и компоненты с открытым кодом, чтобы удовлетворить потребности современных разработчиков приложений.
Экономьте время и средства благодаря автоматизированному управлению инфраструктурой, в том числе решениями автоматизации для обеспечения масштабируемости, доступности и безопасности.
Связанные продукты и услуги
Azure SQL
Семейство облачных баз данных SQL, предоставляющее гибкие возможности для миграции, модернизации и разработки приложений.
Azure Cosmos DB
Быстродействующая база данных NoSQL с открытыми API-интерфейсами для любого масштаба.
Azure PostgreSQL
Пользуйтесь преимуществами полностью управляемой и масштабируемой интеллектуальной среды PostgreSQL.
База данных SQL Azure
Управляемая интеллектуальная база данных SQL в облаке.
Управляемый экземпляр SQL Azure
Управляемый и всегда актуальный экземпляр SQL в облаке.
SQL Server на виртуальных машинах
Перенос рабочих нагрузок SQL Server в облако с самой низкой совокупной стоимостью владения.
База данных Azure для MySQL
Полностью управляемая масштабируемая база данных MySQL.
Azure Maria DB
Управляемая служба базы данных MariaDB для разработчиков приложений.
Кэш Azure для Redis
Ускорьте работу приложений за счет кэширования с высокой пропускной способностью и малым временем задержки.
-
Масштабирование без ограничений с помощью управляемых баз данных
Сосредоточьтесь на создании приложений и облегчите себе работу, а управление вашими базами данных обеспечит Microsoft Azure.