D'oscail Alibaba an cód do PolarDB, DBMS dáilte bunaithe ar PostgreSQL.

Alibaba, одна из крупнейших китайских IT-компаний, открыла исходные тексты распределённой СУБД PolarDB, основанной на PostgreSQL. PolarDB расширяет возможности PostgreSQL средствами для распределённого хранения данных с обеспечением целостности и поддержкой ACID-транзакций в контексте всей глобальной базы данных, разнесённой по разным узлам кластера. PolarDB также поддерживает распределённую обработку SQL-запросов, обеспечение отказоустойчивости и избыточное хранение данных для восполнения информации после выхода из строя одного или нескольких узлов. При необходимости расширения хранилища достаточно просто добавить в кластер новые узлы. Код открыт под лицензией Apache 2.0.

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

Патчи добавляют в ядро PostgreSQL распределённый вариант механизма управления параллельным доступом к данным при помощи многоверсионности (MVCC, Multiversion concurrency control) для разных уровней изоляции. Большая часть функциональности PolarDB вынесена в расширения, что снижает зависимость от PostgreSQL и упрощает обновление и внедрение решений на базе PolarDB (упрощается переход на новые версии PostgreSQL и поддержание полной совместимости с PostgreSQL). Для управления кластером применяется инструментарий pgxc_ctl, основанный на аналогичной утилите от PostgreSQL-XC и PostgreSQL-XL.

В кластере выделяется три базовых компонента: узлы БД (DN), менеджер кластера (CM) и сервис управления транзакциями (TM). Дополнительно может быть задейсвован прокси-балансировщик нагрузки. Каждый из компонентов является отдельным процессом и может быть запущен на разном сервере. Узлы БД обслуживают SQL-запросы от клиентов и одновременно выступают координаторами распределённого выполнения запросов с участием других узлов БД. Менеджер кластера отслеживает состояние каждого узла БД, хранит конфигурацию кластера и предоставляет инструменты для управления, резервного копирования, балансировки нагрузки, обновления, запуска и остановки узлов. Сервис управления транзакциями отвечает за поддержание общей целостности во всём кластере.

D'oscail Alibaba an cód do PolarDB, DBMS dáilte bunaithe ar PostgreSQL.

PolarDB базируется на архитектуре распределённых вычислений Shared-nothing, в соответствии с которой данные распределяются при хранении на разные узлы, без применения общего для всех узлов хранилища, и каждый узел отвечает за привязанную к нему порцию данных и выполняет связанные с данными запросы. Каждая таблица сегментируется на части (sharding) с применением хэширования по первичному ключу. Если запрос охватывает данные, размещённые на разных узлах, для обеспечения атомарности, согласованности, изолированности и надёжности (ACID) подключается механизм распределённого выполнения транзакций и координатор транзакций.

Для обеспечения отказоустойчивости каждый сегмент реплицируется как минимум на три узла. Для экономии ресурсов полные данные включают только две реплики, а одна ограничивается хранением лога отложенной записи (WAL). Один из двух узлов с полными репликами выбирается в качестве лидера и участвует в обработке запросов. Второй узел выступает запасным для рассматриваемого сегмента данных, а третий принимает участие в выборе лидирующего узла и может использоваться для восстановления информации в случае выхода из строя двух узлов с полными репликами. Репликация данных между узлами кластера организована с использованием алгоритма Paxos, обеспечивающего согласованное определение консенсуса в сети с потенциально ненадёжными узлами.

Отмечается, что полную функциональность СУБД PolarDB планируется раскрыть в течение трёх выпусков: В первой версии будет опубликованы средства репликации, обеспечения высокой доступности и управления кластером. Во втором выпуске будет реализована система распределённого выполнения транзакций, поддерживающая ACID на уровне разных узлов и распределённое выполнение SQL. В третьем выпуске появится плагин к PostgreSQL и средства для гибкого распределения данных по узлам, включая адаптивное размещение сегментов для достижения оптимальной производительности и возможность расширения кластера через добавление новых узлов.

Foinse: oscailtenet.ru

Add a comment