Alibaba PostgreSQL asosidagi tarqatilgan ma'lumotlar bazasi bo'lgan PolarDB uchun kodni ochdi.

Xitoyning eng yirik IT-kompaniyalaridan biri bo'lgan Alibaba PostgreSQL asosidagi tarqatilgan DBMS PolarDB ning manba kodini ochdi. PolarDB turli klaster tugunlari bo'ylab taqsimlangan butun global ma'lumotlar bazasi kontekstida yaxlitlik va ACID tranzaktsiyalarini qo'llab-quvvatlash bilan taqsimlangan ma'lumotlarni saqlash vositalari bilan PostgreSQL imkoniyatlarini kengaytiradi. PolarDB shuningdek, bir yoki bir nechta tugunlar ishlamay qolgandan so'ng ma'lumotni tiklash uchun taqsimlangan SQL so'rovlarini qayta ishlash, xatolarga chidamlilik va ortiqcha ma'lumotlarni saqlashni qo'llab-quvvatlaydi. Agar siz xotirani kengaytirishingiz kerak bo'lsa, klasterga yangi tugunlarni qo'shishingiz mumkin. Kod Apache 2.0 litsenziyasi ostida ochiq.

PolarDB ikkita komponentdan iborat - kengaytmalar va PostgreSQL uchun yamoqlar to'plami. Yamalar PostgreSQL yadrosining imkoniyatlarini kengaytiradi va kengaytmalar PostgreSQL-dan alohida amalga oshiriladigan komponentlarni o'z ichiga oladi, masalan, taqsimlangan tranzaksiyalarni boshqarish mexanizmi, global xizmatlar, taqsimlangan SQL so'rovlar protsessori, qo'shimcha metama'lumotlar, klasterni boshqarish vositalari, klasterni joylashtirish va migratsiyani soddalashtirish unga mavjud tizimlar.

Yamalar PostgreSQL yadrosiga turli xil izolyatsiya darajalari uchun multiversiya (MVCC, Multiversion concurrency control) yordamida maʼlumotlarga parallel kirishni boshqarish mexanizmining taqsimlangan versiyasini qoʻshadi. PolarDB funksiyalarining aksariyati kengaytmalarga kiritilgan bo‘lib, bu PostgreSQLga bog‘liqlikni kamaytiradi va PolarDB asosidagi yechimlarni yangilash va amalga oshirishni osonlashtiradi (bu PostgreSQLning yangi versiyalariga o‘tishni soddalashtiradi va PostgreSQL bilan to‘liq moslikni saqlaydi). Klasterni boshqarish uchun PostgreSQL-XC va PostgreSQL-XL ning shunga o'xshash yordam dasturiga asoslangan pgxc_ctl asboblar to'plami ishlatiladi.

Klasterda uchta asosiy komponent mavjud: ma'lumotlar bazasi tugunlari (DN), klaster menejeri (CM) va tranzaksiyalarni boshqarish xizmati (TM). Bundan tashqari, proksi yuk balanslagichidan foydalanish mumkin. Har bir komponent alohida jarayon bo'lib, uni boshqa serverda ishga tushirish mumkin. Ma'lumotlar bazasi tugunlari mijozlarning SQL so'rovlariga xizmat qiladi va bir vaqtning o'zida boshqa ma'lumotlar bazasi tugunlari ishtirokida taqsimlangan so'rovlarni bajarish koordinatorlari sifatida ishlaydi. Klaster menejeri har bir ma'lumotlar bazasi tugunining holatini kuzatib boradi, klaster konfiguratsiyasini saqlaydi va tugunlarni boshqarish, zaxiralash, yuklarni muvozanatlash, yangilash, ishga tushirish va to'xtatish uchun vositalarni taqdim etadi. Tranzaktsiyalarni boshqarish xizmati butun klaster bo'ylab umumiy yaxlitlikni saqlash uchun javobgardir.

Alibaba PostgreSQL asosidagi tarqatilgan ma'lumotlar bazasi bo'lgan PolarDB uchun kodni ochdi.

PolarDB Shared-nothing taqsimlangan hisoblash arxitekturasiga asoslangan bo'lib, unga ko'ra ma'lumotlar turli tugunlarda saqlanganida, barcha tugunlar uchun umumiy xotiradan foydalanmasdan tarqatiladi va har bir tugun u bilan bog'liq ma'lumotlar qismi uchun javobgardir va tegishli so'rovlarni bajaradi. ma'lumotlarga. Har bir jadval birlamchi kalit asosida xeshlash yordamida qismlarga bo'linadi (parchalanadi). Agar so'rov turli tugunlarda joylashgan ma'lumotlarni qamrab olsa, atomiklik, izchillik, izolyatsiya va ishonchlilikni (ACID) ta'minlash uchun taqsimlangan tranzaksiyani bajarish mexanizmi va tranzaksiya koordinatori faollashtiriladi.

Nosozlikka chidamliligini ta'minlash uchun har bir segment kamida uchta tugunga takrorlanadi. Resurslarni tejash uchun to'liq ma'lumotlar faqat ikkita nusxani o'z ichiga oladi va bittasi qayta yozish jurnalini (WAL) saqlash bilan cheklanadi. To'liq replikalarga ega bo'lgan ikkita tugunlardan biri etakchi sifatida saylanadi va so'rovlarni qayta ishlashda ishtirok etadi. Ikkinchi tugun ko'rib chiqilayotgan ma'lumotlar segmenti uchun zaxira rolini o'ynaydi, uchinchisi esa etakchi tugunni tanlashda ishtirok etadi va to'liq nusxalari bo'lgan ikkita tugun ishlamay qolganda ma'lumotni tiklash uchun ishlatilishi mumkin. Klaster tugunlari o'rtasida ma'lumotlarni takrorlash Paxos algoritmi yordamida tashkil etiladi, bu potentsial ishonchsiz tugunlarga ega bo'lgan tarmoqdagi konsensusning izchil ta'rifini ta'minlaydi.

Qayd etilishicha, PolarDB DBMS ning to‘liq funksionalligi uchta relizda ochilishi rejalashtirilgan: Birinchi versiyada replikatsiya, yuqori mavjudlik va klasterni boshqarish vositalari chop etiladi. Ikkinchi versiyada o'zaro bog'liq ACID va taqsimlangan SQL bajarilishini qo'llab-quvvatlaydigan taqsimlangan tranzaktsiyalarni bajarish tizimi mavjud bo'ladi. Uchinchi versiyada PostgreSQL uchun plagin va tugunlar bo'ylab moslashuvchan ma'lumotlarni tarqatish vositalari, shu jumladan optimal ishlashga erishish uchun segmentlarni moslashtirilgan joylashtirish va yangi tugunlarni qo'shish orqali klasterni kengaytirish imkoniyati mavjud.

Manba: opennet.ru

a Izoh qo'shish