3.1. Zayif ACID xususiyatlari
Uzun vaqt davomida ma'lumotlarning ishonchliligi arxitektorlar va dasturchilar uchun muhim bo'lgan. Relatsion bazalar o'zgartirishlar paytida blokirovka qilish va o'qish yoki undo-loglarni blokirovka qilish imkonini berardi. Lekin katta ma'lumotlar miqdori va tarqatilgan tizimlar bilan tranzaktsionlik va yuqori mavjudlik va tez javob vaqtini ta'minlash imkonsiz edi.
Hatto biz bir yozuvni yangilasak ham, bu boshqa odamlar bu o'zgartirishni darhol ko'rishini anglatmaydi. Bu master-uzelda sodir bo'lishi mumkin, va keyin replika asinkron tarzda boshqa foydalanuvchi foydalanadigan slave-uzelga ko'chirilishi mumkin.
Bu eventual consistency deb ataladi va bunga Facebook va Amazon kabi yirik kompaniyalar ishlaydi. Ular foydalanuvchilar nekonsistent ma'lumotlarni ko'rishlari mumkin bo'lgan maksimal interval bir soniyadan oshmasligini aytadilar. Bunday vaziyat quyidagi rasmda ko'rsatilgan:
Bunday vaziyatda savol tug'iladi: yuqori atomarlik-ishtirok operatsiyalarni talab qiluvchi va shu bilan birga tez tarqatilgan klasterlarga muhtoj bo'lgan tizimlar (masalan, moliyaviy yoki internet-do'konlar) bilan nima qilish kerak? Amaliyot ko'rsatadi, bu kabi talablar allaqachon eski.
Masalan, moliyaviy bank tizimini ishlab chiquvchi aytdi: «Agar biz aslida bankomat tarmog'ida har bir tranzaktsiya yakunlanishini kutganimizda edi, mijozlar g'azablanib qochgan bo'lardilar. Siz va sherigingiz bir vaqtning o'zida pul yechib olsangiz va limitni oshirsangiz, nima bo'ladi? Siz ikkalangiz ham o'z pullaringizni olasiz, va biz buni keyinroq to'g'irlaymiz».
Rasmda mehmonxonalarni bron qilish ko'rsatilgan. Eventual consistency dan foydalanadigan onlayn-do'konlar konflikt holatlarini hal qilishning choralari (avtomatik hal qilish, operatsiyani qaytarish yoki ma'lumotlarni yangilash) ko'rishi kerak. Haqiqiy hayotda mehmonxonalar har doim kutilmagan vaziyatlar uchun "zaxira" bo'sh xonalarni ushlab turishadi, shunda muammo hal qilinadi.
Zayif ACID xususiyatlari mavjud, lekin ular relatsion baza ma'lumotlaridagi kabi emas. Relatsion baza ma'lumotlar bilan ishlaydigan ilovalar tranzaktsiya ishlatib, o'zaro bog'langan ob'ektlarni o'zgartirishadi (masalan, buyurtma va buyurtma pozitsiyalari). NoSQL baza ma'lumotlarida ma'lumotlar modeli to'g'ri rejalashtirilsa izolyatsiya darajasini erishish mumkin (masalan, agregat buyurtmani va buyurtma punktlarini birgalikda ifodalaydi).
3.2. Taqqoslanmagan resurslar bilan tarqatilgan tizimlar (share nothing)
Yana, bu graf baza ma'lumotlariga tegishli emas, chunki ularning tuzilishini masofaviy nodlarga bo'lish mumkin emas.
Nega tobora ko'proq odamlar NoSQL bazalaridan foydalanishadi? Javob oddiy: dunyoda oqilona vaqt ichida qayta ishlanishi kerak bo'lgan ko'proq ma'lumot bor. Lekin protsessorlarning ishlash qobiliyati va diskdan o'qish tezligi tez o'smayapti. Va nihoyat, kuchli serverning narxi har doim bir nechta oddiy serverlarning narxidan yuqori. Odatdagi relatsion bazalar bu muammoni hal qila olmaydi.
Saqlashni yaxshilash uchun (sig'im, javob vaqti, o'tkazuvchanlik qobiliyati), klasterga yangi server qo'shish kerak. Bu gorizontal masshtablash deb ataladi, bir nechta mustaqil serverlar tez tarmoq bilan bog'langan. Har bir server faqat ma'lumotlar va so'rovlarning bir qismini qayta ishlaydi. NoSQL baza avtomatik ravishda shardlash, replikatsiya, uzilishdan saqlanishni ta'minlash va nodlar qo'shilganda ma'lumotlarni qayta taqsimlash kabi jarayonlarga g'amxo'rlik qiladi.
Quyida tarqatilgan NoSQL baza ma'lumotlarining asosiy xususiyatlari keltirilgan:
Replikatsiya yangilanish paytida ma'lumotlarni boshqa nodlarga nusxalash imkonini beradi. Bu masshtablashni oshirish, shuningdek ma'lumotlarning mavjudligi va saqlanishini oshirishga yordam beradi. Replikatsiya ikki turda bo'lishi mumkin:
master-slave:
peer-to-peer:
Birinchi tur o'qish uchun yaxshi masshtablashadi (har qanday noddan amalga oshirilishi mumkin), lekin yozish uchun emas (faqat master nodda). Mavjudlik bilan muammolar ham bor (master nod qulagan taqdirda, u avtomatik yoki qo'lda boshqa nodlardan biri bilan almashtiriladi). Ikkinchi turdagi replikatsiyada barcha nodlar teng va so'rovlarni o'qish va yozish uchun qayta ishlay oladi.
Sharding — ma'lumotlarni nodlarga bo'lish:
Sharding tez ishlash va relatsion baza ma'lumotlarining o'tkazish qobiliyatini oshirish uchun tez-tez ishlatilgan. Ilova ma'lumotlarni bir nechta bazalar orasida bo'lgan va ma'lumotlarni so'rov qilish paytida kerakli bazadan foydalangan. NoSQL baza ma'lumotlarida sharding va replikatsiya avtomatik ravishda, foydalanuvchi ilovasining ishtirokisiz amalga oshiriladi.
3.3. NoSQL bazalar asosan ochiq manbali va 21-asrda yaratilgan
Sadalad va Fauler ob'ektli baza ma'lumotlarini NoSQL sifatida klassifikatsiya qilmagan, chunki ular 1990-yillarda yaratilgan va katta mashhurlikka ega bo'lmagan. Lekin, NoSQL Database saytida ular umumiy ro'yxatga kiritilgan.
NoSQL harakati katta mashhurlikdan foydalanmoqda. Bu relatsion baza ma'lumotlari eskirganini anglatmaydi. Ular foydalanishda davom etadi, lekin ko'proq NoSQL bazalari bilan kombinatsiyada. Endi biz poliglot ma'lumotlarni saqlash tizimiga havola qilamiz, u yerda turli vazifalar uchun turli ma'lumotlar omborlari ishlatiladi. Relatsion baza ma'lumotlarining monopoliyasi yo'q. Odamlar ko'proq ma'lumotlarning xususiyatlari va ularni qanday foydalanishimizga asoslanib omborni tanlashadi. Bu juda qiziqarli.
3.4. mongoDB haqida umumiy ko'rinish
MongoDB — bu hujjatga asoslangan (document-oriented) ochiq manbali, kross-platformali va tarqatilgan baza ma'lumotlari bo'lib, ilovalarni ishlab chiqish va masshtablashni osonlashtirish uchun mo'ljallangan.
MongoDB baza ma'lumotlari katta hajmdagi ma'lumotlarni saqlash va shu bilan birga tez ishlash uchun yaratilgan. Unda SQL (RDBMS) kabi boshqa baza ma'lumotlaridagi jadvallar, qatorlar va ustunlar yo'q. Ma'lumotlar JSON asosidagi hujjat sifatida kollektsiyalarda saqlanadi, bu BSON deb ataladi.
Havolalar:
- Interaktiv qo'llanma
- Nerelatsion ma'lumotlar va NoSQL baza ma'lumotlari
- NoSQL baza ma'lumotlari nima?
- Qanday qilib apache cassandra ishlaydi
- MongoDB vs Cassandra
3.5. Redis
Redis (Remote Dictionary Server) — bu kalit-qiymat turi ochiq manbali baza ma'lumotlar serveri. Bu ko'pincha ma'lumotlar strukturasi serveri deb ataladi. Bu Redis o'zgaruvchan ma'lumotlar strukturalariga kirishni server-klient modeli va TCP-socketlar va oddiy protokoldan foydalanish orqali mumkinligini anglatadi. Shu orqali turli proseslar bir xil ma’lumotlar strukturasi ustida birgalikda ishlashlari mumkin.
GO TO FULL VERSION