CAP teoremasi taqsimlangan tizimlar nazariyasining asosiy poydevoridir. Albatta, u hali ham bahsli: uning ta'riflari kanonik emas va qat'iy isbot yo'q. Shunga qaramay, sog'lom fikrga™ asoslangan holda, biz intuitiv ravishda teoremaning haqiqat ekanligini tushunamiz.

Faqatgina "P" harfining ma'nosi aniq emas. Klaster bo'linganida, u kvorumga erishilgunga qadar jim turishni yoki mavjud ma'lumotlarni qaytarish-qaytarmaslikni hal qiladi. Ushbu qarorning natijasiga qarab, tizim CP yoki AP sifatida tasniflanadi. Masalan, Cassandra har ikki yo'nalishda ham harakat qilishi mumkin, bu klaster sozlamalariga emas, balki har bir aniq so'rov parametrlariga bog'liq. Lekin agar tizim "P" bo'lmasa va bo'linib ketsa, unda nima bo'ladi?
Bu savolga javob biroz kutilmagan: CA klasteri bo'linishi mumkin emas.
Bu bo'linib bo'lmaydigan klaster nima?
Bunday klasterning muhim atributi umumiy ma'lumotlarni saqlash tizimidir. Aksariyat hollarda bu SAN orqali ulanishni anglatadi, bu esa CA yechimlaridan foydalanishni SAN infratuzilmasini saqlab turishga qodir yirik korxonalar bilan cheklaydi. Bir nechta uchun serverlar Xuddi shu ma'lumotlar bilan ishlash uchun klaster fayl tizimi talab qilinadi. Bunday fayl tizimlari HPE (CFS), Veritas (VxCFS) va IBM (GPFS) portfellarida mavjud.
Oracle RAC
Real Application Cluster opsiyasi birinchi marta 2001-yilda Oracle 9i chiqarilishi bilan paydo bo'lgan. Bunday klasterda bir nechta misollar server bir xil ma'lumotlar bazasi bilan ishlash.
Oracle ham klaster fayl tizimi, ham o'zining yechimi - ASM, Avtomatik saqlashni boshqarish bilan ishlashi mumkin.
Har bir misol o'z jurnalini yuritadi. Tranzaksiya bitta misol tomonidan bajariladi va amalga oshiriladi. Agar misol bajarilmasa, omon qolgan klaster tugunlaridan biri (nusxalari) uning jurnalini o'qiydi va yo'qolgan ma'lumotlarni tiklaydi, shu bilan ularning mavjudligini ta'minlaydi.
Barcha nusxalar o'z keshini saqlaydi va bir xil sahifalar (bloklar) bir vaqtning o'zida bir nechta nusxalarning keshlarida bo'lishi mumkin. Bundan tashqari, agar bitta nusxa boshqa nusxaning keshidagi sahifaga muhtoj bo'lsa, u uni diskdan o'qish o'rniga keshni birlashtirish orqali qo'shnisidan olishi mumkin.

Lekin agar misollardan biri ma'lumotlarni o'zgartirishi kerak bo'lsa, nima bo'ladi?
Oracle’ning o‘ziga xos xususiyati shundaki, unda maxsus qulflash xizmati yo‘q: agar server qatorni qulflamoqchi bo‘lsa, qulflash yozuvi to‘g‘ridan-to‘g‘ri qulflanadigan qator joylashgan xotira sahifasiga yoziladi. Bu yondashuv Oracle’ni monolit ma’lumotlar bazalari orasida samaradorlik bo‘yicha chempionga aylantiradi: qulflash xizmati hech qachon to‘siq bo‘lib qolmaydi. Biroq, klasterli konfiguratsiyada bu arxitektura intensiv tarmoq trafikiga va o‘chib qolishlarga olib kelishi mumkin.
Yozuv qulflangandan so'ng, bir misol boshqa barcha misollarga ushbu yozuvni o'z ichiga olgan sahifa faqat qulflanganligi haqida xabar beradi. Agar boshqa misol o'sha sahifadagi yozuvni o'zgartirishi kerak bo'lsa, u sahifaga o'zgartirishlar kiritilguncha, ya'ni o'zgartirish ma'lumotlari disk jurnaliga yozilguncha (tranzaksiya davom etishi mumkin bo'lgan paytda) kutishi kerak. Shuningdek, sahifa ketma-ket bir nechta misollar tomonidan o'zgartirilishi mumkin, bu holda sahifa diskka yozilganda, u qaysi misol sahifaning joriy versiyasini saqlashini aniqlashi kerak.
Turli RAC tugunlarida bir xil sahifalarni tasodifiy yangilash ma'lumotlar bazasi ishlashining keskin pasayishiga olib keladi, bu esa klaster ishlashi bitta misolnikidan pastroq bo'lishi mumkin.
Oracle RAC dan to'g'ri foydalanish ma'lumotlarni jismonan ajratish (masalan, bo'limli jadval mexanizmidan foydalanish) va har bir bo'limlar to'plamiga ajratilgan tugun orqali kirishdir. RAC ning asosiy maqsadi gorizontal masshtablash emas, balki xatolarga chidamlilikdir.
Agar tugun yurak urishiga javob berishni to'xtatsa, buni birinchi bo'lib aniqlagan tugun diskda ovoz berishni boshlaydi. Agar yo'qolgan tugun baribir javob bermasa, tugunlardan biri ma'lumotlarni tiklash uchun javobgarlikni o'z zimmasiga oladi:
- yo'qolgan tugun keshidagi barcha sahifalarni "muzlatib qo'yadi";
- yo'qolgan tugunning qayta ishlash jurnallarini o'qiydi va ushbu jurnallarda qayd etilgan o'zgarishlarni qayta qo'llaydi, shu bilan birga boshqa tugunlarda o'zgartirilayotgan sahifalarning so'nggi versiyalari mavjudligini tekshiradi;
- tugallanmagan tranzaksiyalarni qaytaradi.
Tugunlar orasidagi ishdan chiqishni soddalashtirish uchun Oracle xizmat tushunchasini taqdim etadi - virtual instansiya. Instansiya bir nechta xizmatlarni qo'llab-quvvatlashi mumkin va xizmat tugunlar orasida ko'chib o'tishi mumkin. Ma'lumotlar bazasining ma'lum bir qismini (masalan, mijozlar guruhini) qo'llab-quvvatlaydigan dastur instansiyasi bitta xizmat bilan ishlaydi, ma'lumotlar bazasining ushbu qismi uchun mas'ul bo'lgan xizmat esa tugun ishlamay qolsa, boshqa tugunga ko'chib o'tadi.
IBM Tranzaksiyalar uchun Pure Data Systems
Big Blue portfelida 2009-yilda DBMS uchun klaster yechimi paydo bo'ldi. Mafkuraviy jihatdan u "umumiy" apparat asosida qurilgan Parallel Sysplex klasterining vorisi hisoblanadi. 2009-yilda DB2 pureScale dasturiy ta'minot to'plami chiqarildi va 2012-yilda IBM Pure Data Systems for Tranzas deb nomlangan apparat va dasturiy ta'minot vositasini taklif qildi. Buni rebrending qilingan Netezzadan boshqa narsa bo'lmagan Pure Data Systems for Analytics bilan adashtirmaslik kerak.
Bir qarashda, pureScale arxitekturasi Oracle RAC ga o'xshaydi: bir nechta tugunlar umumiy saqlash tizimiga ulangan va har bir tugun o'zining xotira maydonlari va tranzaksiya jurnallari bilan o'zining DBMS nusxasini ishga tushiradi. Biroq, Oracle dan farqli o'laroq, DB2 db2LLM* jarayonlari to'plami bilan ifodalangan maxsus qulflash xizmatiga ega. Klaster konfiguratsiyasida bu xizmat alohida tugunga joylashtiriladi, bu Parallel Sysplexda ulanish imkoniyati (CF) va Pure Datada PowerHA deb ataladi.
PowerHA quyidagi xizmatlarni taqdim etadi:
- blok menejeri;
- global bufer keshi;
- jarayonlararo aloqa sohasi.
Masofaviy xotiraga kirish PowerHA dan ma'lumotlar bazasi tugunlariga va aksincha ma'lumotlarni uzatish uchun ishlatiladi, shuning uchun klaster o'zaro aloqasi RDMA protokolini qo'llab-quvvatlashi kerak. PureScale Ethernet orqali ham Infiniband, ham RDMA dan foydalanishi mumkin.

Agar tugunga sahifa kerak bo'lsa va u keshda bo'lmasa, u sahifani global keshdan so'raydi va faqat u u yerda bo'lmasa, uni diskdan o'qiydi. Oracle'dan farqli o'laroq, so'rov faqat PowerHA'ga yuboriladi, qo'shni tugunlarga emas.
Biror misol satrni o'zgartirganda, uni eksklyuziv rejimda va satrni o'z ichiga olgan sahifani umumiy rejimda qulflaydi. Barcha qulflar global qulflash menejerida ro'yxatdan o'tkaziladi. Tranzaksiya tugagach, tugun qulflash menejeriga xabar yuboradi, u o'zgartirilgan sahifani global keshga nusxalaydi, qulflarni ochadi va o'zgartirilgan sahifani boshqa tugunlarning keshlarida bekor qiladi.
Agar o'zgartirilayotgan qatorni o'z ichiga olgan sahifa allaqachon qulflangan bo'lsa, qulflash menejeri o'zgartirilgan sahifani o'zgartirishni amalga oshirgan tugun xotirasidan o'qiydi, qulfni ochadi, o'zgartirilgan sahifani boshqa tugunlarning keshlarida bekor qiladi va sahifa qulfini uni so'ragan tugunga qaytaradi.
"Iflos", ya'ni o'zgartirilgan sahifalar diskka oddiy tugundan ham, PowerHA (quyidagilarni chiqarib tashlash) dan ham yozilishi mumkin.
Agar pureScale tuguni ishlamay qolsa, tiklash faqat ishlamay qolish vaqtida hali bajarilmagan tranzaksiyalar bilan cheklanadi: tugallangan tranzaksiyalarda ushbu tugun tomonidan o'zgartirilgan sahifalar PowerHA-dagi global keshda saqlanadi. Tugun klaster serverlaridan birida o'chirilgan konfiguratsiyada qayta ishga tushadi, bajarilmagan tranzaksiyalarni qaytaradi va qulflarni ochadi.
PowerHA ikkita serverda ishlaydi va asosiy tugun o'z holatini sinxron ravishda takrorlaydi. Agar asosiy tugun ishlamay qolsa, PowerHA klasteri zaxira tugunida ishlashda davom etadi.
Albatta, bitta tugun orqali ma'lumotlar to'plamiga kirish klasterning umumiy ishlashini yaxshilaydi. PureScale hatto ma'lum bir ma'lumotlar maydoni bitta tugun tomonidan qayta ishlanayotganini aniqlay oladi va keyin ushbu maydonga tegishli barcha qulflar PowerHA bilan aloqa o'rnatmasdan, ushbu tugun tomonidan mahalliy ravishda qayta ishlanadi. Biroq, dastur ushbu ma'lumotlarga boshqa tugun orqali kirishga urinishi bilan markazlashtirilgan qulflash jarayoni qayta boshlanadi.
IBMning 90% o'qish va 10% yozish ish yuklamasi bilan o'tkazilgan ichki sinovlari, bu real dunyodagi ishlab chiqarish ish yuklamalariga juda o'xshaydi, 128 tugungacha deyarli chiziqli masshtablashni ko'rsatadi. Afsuski, sinov shartlari oshkor qilinmagan.
HPE NonStop SQL
Hewlett-Packard Enterprise ham o'zining yuqori darajadagi mavjudlik platformasiga ega. Bu 1976-yilda Tandem Computers tomonidan ishga tushirilgan NonStop platformasi. 1997-yilda kompaniya Compaq tomonidan sotib olindi, bu esa o'z navbatida 2002-yilda Hewlett-Packard bilan birlashdi.
NonStop HLR yoki bank kartalarini qayta ishlash kabi muhim dasturlarni yaratish uchun ishlatiladi. Platforma hisoblash tugunlari, ma'lumotlarni saqlash tizimi va aloqa uskunalarini o'z ichiga olgan apparat va dasturiy ta'minot vositasi sifatida taqdim etiladi. ServerNet tarmog'i (zamonaviy tizimlarda Infiniband) ham tugunlar o'rtasidagi aloqa, ham ma'lumotlarni saqlash tizimiga kirish uchun xizmat qiladi.
Tizimning dastlabki versiyalarida bir-biri bilan sinxronlashtirilgan maxsus protsessorlar ishlatilgan: barcha operatsiyalar bir nechta protsessorlar tomonidan sinxron ravishda bajarilgan va agar bitta protsessor ishlamay qolsa, u o'chib qolar, ikkinchisi esa ishlashni davom ettirar edi. Keyinchalik, tizim an'anaviy protsessorlarga (avval MIPS, keyin Itanium va nihoyat x86) o'tdi va sinxronizatsiya uchun boshqa mexanizmlar qo'llanildi:
- Xabarlar: Har bir tizim jarayonining "soya" egizagi mavjud, unga faol jarayon vaqti-vaqti bilan uning holati haqida xabarlar yuboradi; agar asosiy jarayon muvaffaqiyatsiz bo'lsa, soya jarayoni oxirgi xabar bilan belgilangan paytdan boshlab ishlay boshlaydi;
- Ovoz berish: Saqlash tizimida bir nechta bir xil so'rovlarni qabul qiladigan va ularni faqat so'rovlar mos kelganda bajaradigan maxsus apparat komponenti mavjud; protsessorlar jismonan sinxronlashtirilish o'rniga asinxron ishlaydi va ularning ishlarining natijalari faqat kirish/chiqish nuqtalarida taqqoslanadi.
1987-yildan beri NonStop platformasi relyatsion ma'lumotlar bazasini (DBMS) ishga tushirib kelmoqda - avval SQL/MP, keyin esa SQL/MX.
Butun ma'lumotlar bazasi qismlarga bo'lingan bo'lib, ularning har biri o'zining Ma'lumotlarga kirish menejeri (DAM) jarayoni tomonidan boshqariladi. U ma'lumotlarni yozib olish, keshlash va blokirovka qilishni amalga oshiradi. Ma'lumotlarni qayta ishlash tegishli ma'lumotlar menejerlari bilan bir xil tugunlarda ishlaydigan Ijrochi Server Jarayonlari tomonidan amalga oshiriladi. SQL/MX rejalashtiruvchisi vazifalarni ijrochilar o'rtasida taqsimlaydi va natijalarni birlashtiradi. Izchil o'zgarishlar talab qilinganda, TMF (Tranzaksiyalarni boshqarish vositasi) kutubxonasi tomonidan taqdim etilgan ikki bosqichli commit protokoli qo'llaniladi.

NonStop SQL jarayonlarga ustuvorlik berishi mumkin, shunda uzoq analitik so'rovlar tranzaksiyalarni bajarishga xalaqit bermaydi. Biroq, uning maqsadi analitik emas, balki qisqa tranzaksiyalarni qayta ishlashdir. Ishlab chiquvchi NonStop klasterining besh "to'qqiz" darajasida mavjudligini kafolatlaydi, ya'ni ishlamay qolish vaqti yiliga atigi besh daqiqa.
SAP XANA
HANA DBMS (1.0) ning birinchi barqaror versiyasi 2010-yil noyabr oyida bo'lib o'tdi va SAP ERP paketi 2013-yil may oyida HANA ga o'tdi. Platforma sotib olingan texnologiyalarga asoslangan: TREX Search Engine (ustunli xotirada qidirish), P*TIME DBMS va MAX DB.
"HANA" so'zining o'zi High Performance ANalytical Appliance qisqartmasi hisoblanadi. Ushbu ma'lumotlar bazasi ma'lumotlar bazasi har qanday x86 serverida ishlay oladigan kod sifatida yetkazib beriladi, ammo ishlab chiqarishni o'rnatish faqat sertifikatlangan apparatda amalga oshirilishi mumkin. Yechimlar HP, Lenovo, Cisco, Dell, Fujitsu, Hitachi va NEC kompaniyalarida mavjud. Ba'zi Lenovo konfiguratsiyalari hatto SANsiz ishlashga imkon beradi, mahalliy disklardagi GPFS klasteri esa umumiy xotira vazifasini bajaradi.
Yuqorida sanab o'tilgan platformalardan farqli o'laroq, HANA xotiradagi ma'lumotlar bazasi bo'lib, asosiy ma'lumotlar tasviri RAMda saqlanadi va faqat jurnallar va davriy suratlar diskka falokatdan keyin tiklash uchun yoziladi.

Har bir HANA klaster tuguni ma'lumotlarning o'z qismi uchun javobgardir va ma'lumotlar xaritasi koordinator tugunida joylashgan maxsus komponentda - Nom serverida saqlanadi. Ma'lumotlar tugunlar o'rtasida takrorlanmaydi. Qulflash ma'lumotlari ham har bir tugunda saqlanadi, ammo tizimda global qulflash detektori mavjud.
HANA klasteriga ulanishda mijoz o'z topologiyasini yuklab oladi va keyin kerakli ma'lumotlarga qarab istalgan tugunga to'g'ridan-to'g'ri kirishi mumkin. Agar tranzaksiya bitta tugundagi ma'lumotlarga ta'sir qilsa, u o'sha tugun tomonidan mahalliy ravishda bajarilishi mumkin. Biroq, agar bir nechta tugunlardagi ma'lumotlar o'zgartirilsa, boshlovchi tugun koordinator tuguniga murojaat qiladi, u taqsimlangan tranzaksiyani ochadi va muvofiqlashtiradi, uni optimallashtirilgan ikki fazali commit protokoli yordamida commit qiladi.
Koordinator tuguni takrorlanadi, shuning uchun agar koordinator ishlamay qolsa, zaxira tuguni darhol o'z vazifasini bajaradi. Biroq, agar ma'lumotlar tuguni ishlamay qolsa, uning ma'lumotlariga kirishning yagona yo'li tugunni qayta ishga tushirishdir. Odatda, HANA klasterlari yo'qolgan tugunni iloji boricha tezroq qayta ishga tushirish uchun zaxira serverni saqlab turadi.
Manba: www.habr.com
