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

Tarqalgan ma'lumotlar bazasi rqlite 7.0 chiqarildi, u SQLite-dan saqlash mexanizmi sifatida foydalanadi va bir-biri bilan sinxronlashtirilgan omborlardan klaster 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 go-sqlite3 drayveridan foydalanadi, uning 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 bazasini o'zgartirishga olib keladigan barcha SQLite buyruqlari jurnali saqlanadi. Ushbu jurnal replikatsiya paytida (boshqa tugunlarda so'rovlarni takrorlash darajasida replikatsiya), yangi tugunni ishga tushirishda yoki ulanishning yo'qolishini tiklash uchun ishlatiladi. Jurnal hajmini kamaytirish uchun avtomatik qadoqlash qo'llaniladi, bu ma'lum miqdordagi o'zgarishlardan so'ng boshlanadi va oniy tasvirni o'rnatishga olib keladi, unga nisbatan yangi jurnal yuritila boshlaydi (xotiradagi ma'lumotlar bazasi holati suratga o'xshash + to'plangan o'zgarishlar jurnali).

rqlite xususiyatlari:

  • SQLite-ni alohida o'rnatishni talab qilmasdan, klasterni joylashtirish oson.
  • Replikatsiya qilingan SQL xotirasini tezda olish imkoniyati.
  • Ishlab chiqarish loyihalarida foydalanishga tayyor (ishlab chiqarish darajasi).
  • Ommaviy rejimda ma'lumotlarni yangilash va klasterning yetakchi tugunini aniqlash imkonini beruvchi HTTP(S) API mavjudligi. Turli xil dasturlash tillari uchun buyruq qatori interfeysi va mijozlar kutubxonalari ham taqdim etilgan.
  • 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 nashrda:

  • Konsul va etcd taqsimlangan saqlash bazasida ishlashi mumkin bo'lgan yangi tugunlarni aniqlash xizmatidan foydalangan holda avtomatik rqlite klasterini qo'llab-quvvatlash qo'shildi. Xizmat rqlite tugunlariga avtomatik ravishda bir-birini topish imkonini beradi - administrator oddiy konsul yoki etcd klaster manzilini (masalan, "example.com:8500") ko'rsatgan holda turli serverlarda bir nechta tugunlarni ishga tushirishi kerak va tugunlar avtomatik ravishda bo'ladi. klasterga birlashtirilgan. Etakchi tugun vaqti-vaqti bilan Konsul yoki etcd xotirasida o'z manzili haqidagi ma'lumotlarni yangilab turadi, bu sizga boshqa tugunlarni qayta konfiguratsiyaga hojat qoldirmasdan liderni keyinchalik o'zgartirishga imkon beradi, shuningdek, etakchini almashtirgandan keyin ham yangi tugunlarni qo'shish imkonini beradi. AWS Lambda’da ishlaydigan eski Discovery rejimi xizmati toβ€˜xtatildi.
  • CLI interfeysi bir vaqtning o'zida bir nechta xostlarni belgilash imkonini beradi - agar birinchi tugun mavjud bo'lmasa, keyingi xostlar bilan bog'lanadi.
  • Qlitli buyruq qatori argumentlarini tahlil qilish uchun kod qayta ishlangan.
  • Eskirgan protobuf paketi to'xtatildi.
  • Raft protokolini amalga oshirishda foydalanilgan BoltDB xotirasi etcd loyihasining vilkasi bbolt bilan almashtirildi.

Manba: opennet.ru

a Izoh qo'shish