Buvingizga SQL va NoSQL o'rtasidagi farqni qanday tushuntirish mumkin

Buvingizga SQL va NoSQL o'rtasidagi farqni qanday tushuntirish mumkin

Ishlab chiquvchi qabul qiladigan eng muhim qarorlardan biri bu qaysi ma'lumotlar bazasidan foydalanishdir. Ko'p yillar davomida variantlar Structured Query Language (SQL) ni qo'llab-quvvatlaydigan turli xil relyatsion ma'lumotlar bazasi variantlari bilan cheklangan edi. Bularga MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 va boshqalar kiradi.

So'nggi 15 yil ichida bozorda ko'plab yangi No-SQL ma'lumotlar bazalari paydo bo'ldi. Bularga Redis va Amazon DynamoDB kabi kalit-qiymatli do'konlar, Cassandra va HBase kabi keng ustunli ma'lumotlar bazalari, MongoDB va Couchbase kabi hujjatlar do'konlari va Elasticsearch va Solr kabi grafik ma'lumotlar bazalari va qidiruv tizimlari kiradi.

Ushbu maqolada biz SQL va NoSQL-ni ularning funksionalligiga kirmasdan tushunishga harakat qilamiz.
Qolaversa, bu jarayonda biz biroz zavqlanamiz.

Buvimga SQL tilini tushuntirish

Buvi, tasavvur qiling-a, men sizning yagona nevarangiz emasman. Buning o'rniga, dadam va onam bir-birlarini quyondek sevishdi, 100 ta farzand ko'rishdi, keyin yana 50 ta farzand asrab olishdi.

Shunday qilib, siz barchamizni yaxshi ko'rasiz va bizning ismlarimiz, tug'ilgan kunlarimiz, sevimli muzqaymoq ta'mlari, kiyim o'lchamlari, sevimli mashg'ulotlari, turmush o'rtoqlarning ismlari, avlodlarning ismlari va boshqa muhim faktlarni unutishni xohlamaysiz. Biroq, keling, tan olaylik. Siz 85 yoshdasiz va yaxshi xotirangiz bunga dosh bera olmaydi.

Baxtimga, nevaralaringiz orasida eng aqllisi bo‘lib, yordam bera olaman. Shunday qilib, men sizning uyingizga keldim, bir nechta qog'oz varaqlarini chiqaring va biz boshlashdan oldin sizdan bir nechta pechene pishirishingizni so'rayman.

Bir varaqda biz "deb nomlangan ro'yxat tuzamiz.nevaralar" Har nevarasi u haqida ba'zi muhim ma'lumotlar, jumladan, endi qaysi birini ko'rsatadigan noyob raqam bilan yozilgan nabirasi u. Bundan tashqari, tashkilot uchun biz ro'yxatning yuqori qismidagi atributlarni yozamiz, shunda biz har doim ro'yxat qanday ma'lumotlarni o'z ichiga olganligini bilib olamiz.

id
ism
tug'ilgan kun
oxirgi tashrif
kiyim hajmi
sevimli muzqaymoq
qabul qilindi

1
Jimmy
09-22-1992
09-01-2019
L
Yalpizli shokolad
yolg'on

2
Jessica
07-21-1992
02-22-2018
M
Toshli yo'l
haqiqiy

...roʻyxatni davom ettiring!

Nevaralar ro'yxati

Biroz vaqt o'tgach, siz hammasini tushunasiz va biz ro'yxatni deyarli tugatdik! Biroq, siz menga o'girilib: "Biz turmush o'rtoqlar, sevimli mashg'ulotlar, nabiralar uchun joy qo'shishni unutdik!" Lekin yo'q, biz unutganimiz yo'q! Bu davom etadi va yangi qog'oz varag'ini talab qiladi.

Shunday qilib, men boshqa qog'oz parchasini chiqaraman va unda biz ro'yxatni chaqiramiz Turmush o'rtoqlar. Biz yana biz uchun muhim bo'lgan atributlarni ro'yxatning boshiga qo'shamiz va qatorlarga qo'shishni boshlaymiz.

id
nevara_id
ism
tug'ilgan kun

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

...ko'proq turmush o'rtoqlar!

Turmush o'rtoqlar ro'yxati

Bu bosqichda men buvimga tushuntiraman, agar u kim kimga uylanganligini bilmoqchi bo'lsa, u faqat solishtirishi kerak. id ro'yxatda nevaralar с nevara_id turmush o'rtoqlar ro'yxatida.

Bir necha o'nlab pechenyedan ​​keyin menga uxlash kerak. — Davom eta olasizmi, buvi? Men dam olish uchun ketyapman.

Men bir necha soatdan keyin qaytaman. Siz zo'rsiz, buvijon! Ro'yxatdan tashqari hamma narsa ajoyib ko'rinadi sevimli mashg'ulot. Ro'yxatda 1000 ga yaqin sevimli mashg'ulotlar mavjud. Ularning aksariyati takrorlanadi; nima bo'ldi?

nevara_id
Sevimli mashg'ulot

1
velosipedda

4
velosipedda

3
velosipedda

7
yugurish

11
velosipedda

...davom qilaylik!

Kechirasiz, men aytishni butunlay unutibman! Bitta ro'yxat yordamida siz faqat kuzatishingiz mumkin sevimli mashg'ulot. Keyin boshqa ro'yxatda biz kuzatishimiz kerak nevaralarbuni kim qilyapti sevimli mashg'ulot. Biz uni chaqiramiz "Umumiy ro'yxat". Bu sizga yoqmasligini ko'rib, men tashvishlana boshladim va ro'yxat rejimiga qaytdim.

id
Sevimli mashg'ulot

1
velosipedda

2
yugurish

3
suzish

...ko'proq sevimli mashg'ulotlar!

Sevimli mashg'ulotlar ro'yxati

Bizning sevimli mashg'ulotlarimiz ro'yxatini olganimizdan so'ng, biz ikkinchi ro'yxatimizni yaratamiz va uni chaqiramiz "Nevaralarning sevimli mashg'ulotlari".

nevara_id
hobby_id

4
1

3
1

7
2

…Ko'proq!

Nevaralarning sevimli mashg'ulotlarining umumiy ro'yxati

Shuncha ishlardan so'ng, buvisi endi ajoyib xotira tizimiga ega bo'lib, uning ajoyib katta oilasini kuzatib boradi. Va keyin - meni uzoqroq tutish uchun - u sehrli savolni so'raydi: "Bularning barchasini qaerdan o'rgandingiz?"

Relyatsion ma'lumotlar bazalari

Relyatsion ma'lumotlar bazasi - bu siz kirishingiz mumkin bo'lgan rasmiy tavsiflangan jadvallar to'plami (bizning misolimizda bu varaqlar). ma'lumotlar yoki jadvallarni qayta tashkil qilmasdan ularni turli yo'llar bilan to'plang ma'lumotlar bazalari. Relyatsion ma'lumotlar bazalarining ko'p turlari mavjud, ammo afsuski, qog'oz varag'idagi ro'yxat ulardan biri emas.

Eng mashhur relyatsion ma'lumotlar bazalarining o'ziga xos xususiyati so'rovlar tili SQL (Structured Query Language). Buning yordamida, agar buvisi xotira tizimini kompyuterga o'tkazsa, u tezda: "O'tgan yili menga kim tashrif buyurmadi, uylangan va sevimli mashg'ulotlari yo'q?" kabi savollarga tezda javob olishi mumkin edi.

Eng mashhur SQL ma'lumotlar bazasini boshqarish tizimlaridan biri ochiq manbali MySQL hisoblanadi. U, birinchi navbatda, veb-ga asoslangan dasturiy ilovalar uchun ma'lumotlar bazasini boshqarish tizimi (RDBMS) sifatida amalga oshiriladi.

MySQL ning ba'zi asosiy xususiyatlari:

  • Bu juda yaxshi ma'lum, keng qo'llaniladi va sinchkovlik bilan sinovdan o'tgan.
  • SQL va relyatsion ma'lumotlar bazalari bilan ishlash tajribasiga ega bo'lgan ko'plab malakali ishlab chiquvchilar mavjud.
  • Ma'lumotlar turli jadvallarda saqlanadi, bu birlamchi va xorijiy kalitlar (identifikatorlar) yordamida munosabatlarni o'rnatishni osonlashtiradi.
  • Foydalanish oson va samarali, bu uni katta va kichik biznes uchun ideal qiladi.
  • Manba kodi GNU General Public License shartlariga muvofiq.

Endi unut ALL.

Buvimga NoSQL tilini tushuntirish

Buvijon, bizning katta oilamiz bor. Unda 150 nafar nevara bor! Ularning ko'pchiligi turmush qurgan, farzandli, biror narsaga qiziqadi va hokazo. Sizning yoshingizda hammamiz haqida hamma narsani eslab qolishning iloji yo'q. Sizga kerak bo'lgan narsa - yodlash tizimi!

Yaxshiyamki, I yo'q Mening tug'ilgan kunimni va muzqaymoqning sevimli ta'mini unutishingizni xohlayman, men yordam bera olaman. Shunday qilib, men eng yaqin do'konga yuguraman, daftarni olib, uyingizga qaytaman.

Birinchi qadam daftarim muqovasiga katta qalin harflar bilan “Nevaralar” deb yozish. Keyin men birinchi sahifaga o'girilib, men haqimda eslash kerak bo'lgan hamma narsani yozishni boshlayman. Bir necha daqiqadan so'ng sahifa shunday ko'rinadi.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: "Hammasi tayyor ko'rinadi!"
Katta: "Kutib turing, boshqa nevaralar-chi?"
Я: "Ha aniq. Keyin har biriga sahifa ajratamiz”.
Katta: "Siz uchun qilganim kabi hamma uchun bir xil ma'lumotlarni yozishim kerakmi?"
Я: "Yo'q, faqat xohlasangiz. Menga ko'rsatishga ruxsat bering."
Men buvimning qalamini olib, sahifani varaqlayman va eng kam sevgan qarindoshim haqidagi ma'lumotlarni tezda yozaman.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Qachonki buvisi nabiralaridan biri haqida biror narsani eslashi kerak bo'lsa, u faqat nabiralari daftarining to'g'ri sahifasiga o'tishi kerak. Ular haqidagi barcha ma'lumotlar o'sha erda o'z sahifasida saqlanadi, u tezda o'zgartirishi va yangilashi mumkin.

Hammasi tugagach, u sehrli savolni so'raydi: "Bularning barchasini qaerdan o'rgandingiz?"

NoSQL ma'lumotlar bazalari

ko'p bor NoSQL ma'lumotlar bazalari (“nafaqat SQL”). Bizning misollarimizda biz ko'rsatdik hujjatlar bazasi. NoSQL ma'lumotlar bazalari ma'lumotlarni relyatsion ma'lumotlar bazalarida ishlatiladigan jadval munosabatlarini yo'q qiladigan tarzda modellashtiradi. Ushbu ma'lumotlar bazalari 2000-yillarning boshlarida bulutga asoslangan ma'lumotlar bazasini klasterlashni talab qiladigan kompaniyalar orasida mashhur bo'lib, ularning aniq masshtablash talablari (masalan, Facebook) tufayli. Bunday ilovalarda ma'lumotlarning izchilligi unumdorlik va miqyosdan ko'ra kamroq ahamiyatga ega edi.

Dastlab, NoSQL ma'lumotlar bazalari ko'pincha ma'lumotlarni boshqarish vazifalari uchun ishlatilgan. Asosan, veb va bulut ilovalari haqida gap ketganda, NoSQL ma'lumotlar bazalari katta hajmdagi ma'lumotlarni qayta ishladi va tarqatdi. NoSQL muhandislariga ma'lumotlar sxemasining moslashuvchanligi (yoki uning yo'qligi) yoqdi, shuning uchun yangilanadigan ilovalarda tez o'zgarishlar mumkin edi.

NoSQL ning asosiy xususiyatlari:

  • Ma'lumotlarni saqlashning juda moslashuvchan usuli
  • Klasterlarga gorizontal masshtablash
  • Qat'iylik/tarqatish uchun mumkin bo'lgan ketma-ketlik
  • Noyob kalitlar yordamida aniqlangan hujjatlar

Batafsil taqqoslash

MySQL aniqlangan va tuzilgan sxemani talab qiladi.
NoSQL har qanday ma'lumotlarni "hujjat" da saqlash imkonini beradi.

MySQL katta hamjamiyat tomonidan qo'llab-quvvatlanadi.
NoSQL kichik va tez rivojlanayotgan jamoaga ega.

NoSQL-ni o'lchash oson.
MySQL ko'proq boshqaruvga muhtoj.

MySQL ko'p turdagi ma'lumotlar bazalarida qo'llaniladigan SQL-dan foydalanadi.
NoSQL - bu mashhur ilovalarga ega dizayn bo'yicha ma'lumotlar bazasi.

MySQL standart so'rovlar tilidan (SQL) foydalanadi.
NoSQL standart so'rovlar tilidan foydalanmaydi.

MySQL-da ko'plab ajoyib hisobot vositalari mavjud.
NoSQL standartlashtirish qiyin bo'lgan bir nechta hisobot vositalariga ega.

MySQL-da katta ma'lumotlar uchun ishlash muammolari bo'lishi mumkin.
NoSQL katta ma'lumotlarda mukammal ishlashni ta'minlaydi.

Fikrlar 8 asos

Kompaniyada 8 tayanch, men ishlayotgan joyda biz har bir loyihaning ish maydonini AWS da joylashtirilgan Aurora MySQL relyatsion maʼlumotlar bazasi bilan quvvatlaymiz. Ilova talablaringiz yuqori unumdorlik va miqyoslilikni talab qilganda NoSQL mantiqiy tanlov bo'lsa-da, SaaS ilovalari va boshqa biznes dasturlarini yaratishda ma'lumotlar bazasi ma'lumotlar bazasi tomonidan taqdim etilgan kuchli ma'lumotlar izchilligi muhim deb hisoblaymiz.

Hisobot, tranzaksiya yaxlitligi va aniq belgilangan ma’lumotlar modellarini talab qiluvchi biznes ilovalarini yaratuvchi startaplar va ishlab chiquvchilar uchun relyatsion ma’lumotlar bazalariga sarmoya kiritish, bizningcha, to‘g‘ri tanlovdir.

8base.com bilan Aurora, Serverless va GraphQL bilan ishlash haqida ko'proq bilib oling shu yerda.

Manba: www.habr.com

a Izoh qo'shish