Выпущена Alibaba Несколько дней назад приняли решение выпустить исходный код ваша распределенная система управления базами данных "ПоларДБ" который основан на PostgreSQL, код открыт под лицензией Apache 2.0.
Тем, кто не знаком с PolarDB, следует знать, что это реляционная база данных на основе облака, разработанного Alibaba, которое расширяет возможности PostgreSQL для распределенного хранения данных с целостностью и поддержкой транзакций ACID в контексте всей глобальной базы данных, распределенной по разным узлам кластера.
PolarDB тоже поддерживает распределенную обработку SQL-запросов, обеспечивая отказоустойчивость и избыточное хранилище данных для пополнения информации после выхода из строя одного или нескольких узлов. Если вам нужно расширить хранилище, просто добавьте новые узлы в кластер.
ПоларДБ состоит из двух частей: расширения и набор патчей для PostgreSQL. Патчи расширяют возможности ядра PostgreSQL, а расширения включают компоненты, реализованные отдельно от PostgreSQL, такие как механизм управления распределенными транзакциями, глобальные службы, распределенный обработчик запросов SQL, дополнительные метаданные, инструменты для управления кластером, реализации кластера и упростить миграцию на него существующих систем.
Патчи добавляют распределенную версию механизма управления многоверсионным параллелизмом. (MVCC) в ядро PostgreSQL для разных уровней изоляции. Большая часть функциональности PolarDB была перенесена в расширения, что снижает зависимость от PostgreSQL и упрощает обновление и развертывание решений на основе PolarDB (упрощает переход на новые версии PostgreSQL и поддерживает полную совместимость с PostgreSQL).
Есть три основных компонента в кластере: узлы базы данных (DN), менеджер кластера (CM) и служба управления транзакциями (TM), Кроме того, может быть задействован балансировщик нагрузки прокси. Каждый из компонентов представляет собой отдельный процесс и может работать на разных физических серверах. Узлы базы данных обслуживают клиентские SQL-запросы и одновременно выступают координаторами выполнения распределенных запросов с участием других узлов базы данных.
Администратор кластера отслеживает состояние каждого узла базы данных, хранит конфигурацию кластера и предоставляет инструменты для управления, резервного копирования, балансировки нагрузки, обновления, запуска и остановки узлов. Служба управления транзакциями отвечает за поддержание общей целостности во всем кластере.
PolarDB основан на архитектуре распределенных вычислений без совместного использования ресурсов, в соответствии с которой данные распределяются во время хранения на разные узлы, без использования общего хранилища для всех узлов, и каждый узел отвечает за часть данных, связанных с ним, и выполняет связанные данные запроса.
Каждая таблица фрагментирована с использованием хешей первичного ключа. Если запрос охватывает данные, расположенные на разных узлах, механизм выполнения распределенных транзакций и координатор транзакций подключаются для обеспечения атомарности, согласованности, изоляции и надежности (ACID).
Для обеспечения отказоустойчивости каждый сегмент реплицируется как минимум на три узла. Для экономии ресурсов полные данные включают только две реплики, а одна ограничена хранением журнала отложенной записи (WAL). Один из двух узлов полной реплики выбирается в качестве ведущего и участвует в обработке запроса, в то время как второй узел действует как резервный для рассматриваемого сегмента данных, а третий участвует в выборе основного узла и может использоваться для восстановления. информация в случае отказа двух узлов с полными репликами.
Репликация данных между узлами кластера организована с использованием алгоритма Paxos, который обеспечивает согласованное определение консенсуса в сети с потенциально ненадежными узлами. Стоит отметить, что полную функциональность СУБД PolarDB планируется выпустить в трех версиях.
Наконец, если вам интересно узнать об этом больше, вы можете проконсультироваться подробности по следующей ссылке.