Binuksan ng Alibaba ang code para sa PolarDB, isang ipinamamahaging DBMS batay sa PostgreSQL.

Ang Alibaba, isa sa pinakamalaking Chinese IT company, ay nagbukas ng source code ng DBMS PolarDB, batay sa PostgreSQL. Pinapalawak ng PolarDB ang mga kakayahan ng PostgreSQL gamit ang mga tool para sa distributed data storage na may integridad at suporta para sa mga transaksyon sa ACID sa konteksto ng buong pandaigdigang database na ibinahagi sa iba't ibang cluster node. Sinusuportahan din ng PolarDB ang distributed SQL query processing, fault tolerance, at redundant data storage para maibalik ang impormasyon pagkatapos mabigo ang isa o higit pang node. Kung kailangan mong palawakin ang iyong storage, maaari ka lang magdagdag ng mga bagong node sa cluster. Ang code ay bukas sa ilalim ng lisensya ng Apache 2.0.

Ang PolarDB ay binubuo ng dalawang bahagi - mga extension at isang set ng mga patch para sa PostgreSQL. Pinapalawak ng mga patch ang mga kakayahan ng core ng PostgreSQL, at ang mga extension ay kinabibilangan ng mga bahaging ipinatupad nang hiwalay mula sa PostgreSQL, gaya ng isang distributed transaction management mechanism, mga pandaigdigang serbisyo, isang distributed SQL query processor, karagdagang metadata, mga tool para sa cluster management, cluster deployment, at pagpapasimple ng migration ng mga umiiral na sistema dito.

Ang mga patch ay nagdaragdag sa PostgreSQL core ng isang ipinamahagi na bersyon ng mekanismo para sa pagkontrol ng parallel na pag-access sa data gamit ang multiversion (MVCC, Multiversion concurrency control) para sa iba't ibang antas ng paghihiwalay. Karamihan sa functionality ng PolarDB ay kasama sa mga extension, na binabawasan ang pag-asa sa PostgreSQL at pinapasimple ang pag-update at pagpapatupad ng mga solusyon batay sa PolarDB (pinasimple nito ang paglipat sa mga bagong bersyon ng PostgreSQL at pinapanatili ang buong compatibility sa PostgreSQL). Upang pamahalaan ang cluster, ang pgxc_ctl toolkit ay ginagamit, batay sa isang katulad na utility mula sa PostgreSQL-XC at PostgreSQL-XL.

May tatlong pangunahing bahagi sa isang cluster: database nodes (DN), cluster manager (CM) at transaction management service (TM). Bukod pa rito, maaaring gumamit ng proxy load balancer. Ang bawat bahagi ay isang hiwalay na proseso at maaaring patakbuhin sa ibang server. Ang mga database node ay nagsisilbi sa mga query ng SQL mula sa mga kliyente at kasabay nito ay kumikilos bilang mga coordinator ng distributed query execution na may partisipasyon ng iba pang mga database node. Sinusubaybayan ng cluster manager ang estado ng bawat database node, iniimbak ang configuration ng cluster, at nagbibigay ng mga tool para sa pamamahala, pag-back up, pag-load ng pagbabalanse, pag-update, pagsisimula, at paghinto ng mga node. Ang serbisyo sa pamamahala ng transaksyon ay responsable para sa pagpapanatili ng pangkalahatang integridad sa buong cluster.

Binuksan ng Alibaba ang code para sa PolarDB, isang ipinamamahaging DBMS batay sa PostgreSQL.

Ang PolarDB ay batay sa Shared-nothing distributed computing architecture, ayon sa kung saan ang data ay ipinamamahagi kapag naka-imbak sa iba't ibang mga node, nang hindi gumagamit ng isang karaniwang storage para sa lahat ng mga node, at ang bawat node ay may pananagutan para sa bahagi ng data na nauugnay dito at nagsasagawa ng mga query na nauugnay. sa datos. Ang bawat talahanayan ay hinahati sa mga bahagi (sharding) gamit ang hashing batay sa pangunahing key. Kung ang kahilingan ay sumasaklaw sa data na matatagpuan sa iba't ibang mga node, ang isang distributed transaction execution engine at transaction coordinator ay isaaktibo upang matiyak ang atomicity, consistency, isolation, and reliability (ACID).

Para matiyak ang fault tolerance, ang bawat segment ay ginagaya sa hindi bababa sa tatlong node. Upang mag-save ng mga mapagkukunan, ang kumpletong data ay kinabibilangan lamang ng dalawang replika, at ang isa ay limitado sa pag-iimbak ng write-back log (WAL). Ang isa sa dalawang node na may ganap na mga replika ay inihalal bilang pinuno at nakikilahok sa pagproseso ng mga kahilingan. Ang pangalawang node ay nagsisilbing ekstra para sa segment ng data na pinag-uusapan, at ang pangatlo ay nakikibahagi sa pagpili ng nangungunang node at maaaring magamit upang maibalik ang impormasyon kung sakaling mabigo ang dalawang node na may ganap na mga replika. Ang pagtitiklop ng data sa pagitan ng mga cluster node ay isinaayos gamit ang Paxos algorithm, na nagsisiguro ng pare-parehong kahulugan ng consensus sa isang network na may potensyal na hindi mapagkakatiwalaang mga node.

Napansin na ang buong paggana ng PolarDB DBMS ay binalak na ihayag sa tatlong release: Sa unang bersyon, ang mga tool para sa pagtitiklop, mataas na kakayahang magamit at pamamahala ng kumpol ay mai-publish. Ang pangalawang release ay magtatampok ng distributed transaction execution system na sumusuporta sa cross-node ACID at distributed SQL execution. Ang ikatlong release ay magsasama ng isang plugin para sa PostgreSQL at mga tool para sa flexible na pamamahagi ng data sa mga node, kabilang ang adaptive na paglalagay ng mga segment upang makamit ang pinakamainam na pagganap at ang kakayahang palawakin ang cluster sa pamamagitan ng pagdaragdag ng mga bagong node.

Pinagmulan: opennet.ru

Magdagdag ng komento