rqlite 6.0 ning chiqarilishi, SQLite asosidagi taqsimlangan, xatolarga chidamli DBMS.

Tarqalgan DBMS rqlite 6.0 ning chiqarilishi taqdim etilgan, u SQLite-dan saqlash mexanizmi sifatida foydalanadi va sinxronlashtirilgan saqlashlar klasteri ishini tashkil qilish imkonini beradi. Rqlite-ning xususiyatlaridan biri bu etcd va Consul-ga biroz o'xshash, lekin kalit/qiymat formati o'rniga relyatsion ma'lumotlar modelidan foydalangan holda taqsimlangan nosozliklarga chidamli saqlashni o'rnatish, joylashtirish va texnik xizmat ko'rsatish qulayligi. Loyiha kodi Go-da yozilgan va MIT litsenziyasi ostida tarqatiladi.

Barcha tugunlarni sinxronlashtirilgan holatda saqlash uchun Raft konsensus algoritmi qo'llaniladi. Rqlite asl SQLite kutubxonasi va standart go-sqlite3 drayveridan foydalanadi, buning ustiga mijoz so'rovlarini qayta ishlaydigan, boshqa tugunlarga replikatsiyani amalga oshiradigan va yetakchi tugunni tanlash bo'yicha konsensusga erishishni kuzatuvchi qatlam ishga tushiriladi.

Ma'lumotlar bazasiga o'zgartirishlar faqat etakchi sifatida tanlangan tugun tomonidan amalga oshirilishi mumkin, lekin yozish operatsiyalari bilan bog'lanishlar klasterdagi boshqa tugunlarga ham yuborilishi mumkin, bu so'rovni takrorlash uchun rahbarning manzilini qaytaradi (keyingi versiyada ular rahbarga so'rovlarni avtomatik yo'naltirishni qo'shishga va'da berish). Asosiy e'tibor xatolarga chidamlilikka qaratilgan, shuning uchun DBMS faqat o'qish operatsiyalari bilan o'lchaydi va yozish operatsiyalari qiyinchilik tug'diradi. Bitta tugundan rqlite klasterini ishga tushirish mumkin va bu yechim nosozlikka chidamlilikni ta'minlamasdan HTTP orqali SQLite-ga kirishni ta'minlash uchun ishlatilishi mumkin.

Har bir tugundagi SQLite ma'lumotlari faylda emas, balki xotirada saqlanadi. Raft protokolini amalga oshirish bilan qatlam darajasida ma'lumotlar bazasidagi o'zgarishlarga olib keladigan barcha SQLite buyruqlari jurnali saqlanadi. Ushbu jurnal replikatsiya (boshqa tugunlarda so'rovlarni ko'paytirish darajasida replikatsiya), yangi tugunni ishga tushirish yoki ulanishni yo'qotishdan tiklash paytida ishlatiladi. Jurnal hajmini kamaytirish uchun avtomatik qadoqlash qo'llaniladi, bu ma'lum miqdordagi o'zgarishlardan so'ng boshlanadi va diskda oniy rasmni o'rnatishga olib keladi, unga nisbatan yangi jurnal (xotiradagi ma'lumotlar bazasi holati) saqlanishi boshlanadi. oniy rasm + to'plangan o'zgarishlar jurnali bilan bir xil).

rqlite xususiyatlari:

  • SQLite-ni alohida o'rnatishni talab qilmasdan, klasterni joylashtirish oson.
  • Replikatsiya qilingan SQL xotirasini tezda olish imkoniyati.
  • Ishchi loyihalarda foydalanishga tayyor (ishlab chiqarish darajasi).
  • Ommaviy rejimda ma'lumotlarni yangilash va klasterning yetakchi tugunini aniqlash imkonini beruvchi HTTP(S) API mavjudligi. Shuningdek, u buyruq qatori interfeysi va SQLite uchun yaratilgan turli xil mijozlar kutubxonalaridan foydalanish imkoniyatini beradi.
  • Klasterlarni dinamik ravishda yaratish imkonini beruvchi boshqa tugunlarni aniqlash xizmatining mavjudligi.
  • Tugunlar o'rtasida ma'lumotlar almashinuvini shifrlashni qo'llab-quvvatlash.
  • O'qish paytida ma'lumotlarning dolzarbligi va izchilligini tekshirish darajasini sozlash qobiliyati.
  • Konsensusni aniqlashda ishtirok etmaydigan va o'qish operatsiyalari uchun klasterning masshtabliligini oshirish uchun foydalaniladigan tugunlarni faqat o'qish rejimida ulashning ixtiyoriy imkoniyati.
  • Bitta so'rovda buyruqlarni birlashtirishga asoslangan tranzaktsiyalarning shaxsiy shaklini qo'llab-quvvatlash (BEGIN, COMMIT, ROLLBACK, SAVEPOINT va RELEASE asosidagi operatsiyalar qo'llab-quvvatlanmaydi).
  • Issiq zaxira nusxalarini yaratishni qo'llab-quvvatlash.

Yangi nashr o'qish va yozish so'rovlarini to'g'ri klaster tugunlariga yo'naltirish jarayonini takomillashtirish orqali klaster ishonchliligini oshirishga qaratilgan muhim arxitektura o'zgarishlarini kiritadi. rqlite tugunlari endi Raft protokoli bo'yicha tugunlar o'rtasida o'rnatilgan TCP ulanishlaridan foydalangan holda bir nechta mantiqiy ulanishlarni o'zaro ko'paytirishi mumkin. Agar so'rov rahbar vakolatini talab qilsa, lekin ikkinchi darajali tugunga yuborilsa, ikkilamchi tugun rahbarning manzilini aniqlab, uni Raft konsensus hisob-kitoblarini amalga oshirmasdan mijozga yuborishi mumkin.

O'zgartirish, shuningdek, alohida metama'lumotlarni sinxronlash komponentiga bo'lgan ehtiyojni yo'q qildi va Raft holati va metama'lumotlarning alohida ishlashini bekor qildi. Ikkilamchi tugunlar endi yetakchi tugunga faqat kerak boβ€˜lganda, yetakchi tugun manzilini bilish zarur boβ€˜lganda soβ€˜rov yuboradi. API klasterdagi boshqa tugunlarning holati haqida ma'lumot olish imkoniyatini beradi. Buyruqlar qatori interfeysiga ".sysdump" buyrug'i qo'shildi.

Manba: opennet.ru

a Izoh qo'shish