Компанія Alibaba відкрила код розподіленої СУБД PolarDB, заснованої на 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-запити від клієнтів та одночасно виступають координаторами розподіленого виконання запитів з участю інших вузлів БД. Менеджер кластера відстежує стан кожного вузла БД, зберігає конфігурацію кластера та надає інструменти для керування, резервного копіювання, балансування навантаження, оновлення, запуску та зупинки вузлів. Сервіс керування транзакціями відповідає за підтримку загальної цілісності у всьому кластері.

Компанія Alibaba відкрила код розподіленої СУБД PolarDB, заснованої на PostgreSQL

PolarDB базується на архітектурі розподілених обчислень Shared-nothing, відповідно до якої дані розподіляються при зберіганні на різні вузли, без застосування загального для всіх вузлів сховища, і кожен вузол відповідає за прив'язану до нього порцію даних та виконує пов'язані з цими запитами. Кожна таблиця сегментується на частини (sharding) із застосуванням хешування за первинним ключем. Якщо запит охоплює дані, розміщені на різних вузлах, для забезпечення атомарності, узгодженості, ізольованості та надійності (ACID) підключається механізм розподіленого виконання транзакцій та координатор транзакцій.

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

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

Джерело: opennet.ru

Додати коментар або відгук