В статье рассматривается архитектура PolarDB: разделение вычислений и хранилища на уровне файловой системы, использование PolarFS с консенсусом ParallelRaft и физической репликации redo;
PolarDB реализует ключевое архитектурное изменение: вычислительные узлы и слой хранения данных разъединены на уровне файловой системы и связаны по сети с поддержкой RDMA. Это устраняет проблему, заложенную в традиционных системах, где вычисления и хранение сосредоточены на одном физическом узле — при такой конфигурации объем данных ограничен немногими терабайтами, масштабирование по записи требует перераспределения данных, а репликация и аварийное восстановление наращивают задержки и сложность операций.
В классической модели масштабирование через нативную репликацию приводит к секундам задержки и к росту операционной сложности пропорционально числу реплик; при сбоях восстановление опирается на воспроизведение бинарных логов, и время восстановления растёт с объёмом транзакций. Эти ограничения — следствие единого предположения о совместном расположении вычислений и хранения. PolarDB выстраивает архитектуру вокруг обратного предположения и тем самым снимает ряд фундаментальных ограничений. Архитектура PolarDB состоит из двух независимо масштабируемых уровней. Вычислительный уровень размещает движок базы данных — MySQL, PostgreSQL или PostgreSQL с совместимостью Oracle — и отвечает за разбор и оптимизацию запросов, их выполнение и управление буферным пулом. Независимое масштабирование вычислительных узлов означает, что добавление вычислительной мощности не требует немедленного перемещения данных между узлами хранения.
Уровень хранения, PolarStore, предоставляет каждому вычислительному узлу общий распределённый блочный диск. Благодаря общему слою хранения реплики только для чтения не поддерживают собственных независимых копий базы — они читают те же физические страницы, в которые пишет первичный узел. В связке с PolarFS, реализующим консенсус ParallelRaft, и физической репликацией redo, это создаёт единый консистентный и реплицируемый слой хранения данных. Один кластер PolarDB поддерживает один первичный узел для чтения и записи и до 15 узлов только для чтения, при этом все узлы совместно используют один и тот же распределённый подложечный слой хранения. Разделение ответственности между уровнями пронизывает всю систему: архитектурное решение влияет на логику отказоустойчивости, доступности чтения и на модель управления репликацией, минимизируя необходимость держать множество полных копий данных.
Такой подход меняет условия для операторов и пользователей облачных баз данных: масштабирование вычислительных ресурсов и управление репликацией теперь оперируют на уровне распределённой файловой системы и сети, а не требовать синхронного копирования данных на каждый вычислительный узел. Дальнейшее изучение архитектуры сосредоточено на деталях PolarFS с ParallelRaft и механизмах физической redo‑репликации, обеспечивающих согласованность и восстановление данных.
Источники
Ответы (0)
Пока нет ответов в этой теме.