Контейнерная инфраструктура абстрагирует ресурсы хранения и вычислительные ресурсы (рассмотрим PV
и Pod
в k8s), и эти ресурсы масштабируются по мере масштабирования базы данных.Таким образом, форма масштабирования зависит от самой базы данных.
Для TiDB, хотя он предлагает MySQL-совместимый интерфейс SQL, его архитектура очень отличается от MySQL и других традиционных реляционных баз данных:
- Уровень SQL (TiDB) обслуживает запросы SQL и взаимодействует со слоем хранения на основе рассчитанного плана запроса .Он не имеет состояния и масштабируется по запросу как для запросов на чтение, так и для записи.Как правило, вы масштабируете / увеличиваете уровень SQL, чтобы получить больше вычислительных ресурсов для расчета плана запросов, объединения, агрегирования и обслуживания большего количества соединений.
- Уровень хранения ( TiKV ) отвечает за хранение данных и обслуживание KV API для уровня SQL.Наиболее интересной частью TiKV является многоплановая репликация. Уровень хранения автоматически разбивает данные на части и равномерно распределяет их по контейнерам.Каждая часть представляет собой группу плота, лидер которой выполняет запросы на чтение и запись.При увеличении / уменьшении масштаб слоя хранения автоматически переносит фрагменты данных для балансировки нагрузки.Таким образом, масштабирование уровня хранения даст вам лучшую пропускную способность чтения / записи и большую емкость данных.
Возвращаясь к вопросу, все компоненты, упомянутые в вопросе, масштабируются.Реплики чтения / записи, обслуживающие запросы SQL, могут масштабироваться, «движок» базы данных (уровень хранения), обслуживающий запросы KV, может масштабироваться, а PV также масштабируется вместе с процессом масштабирования уровня хранения.