Кампанія 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

Дадаць каментар