SQL və NoSQL arasındakı fərqi nənənizə necə izah etmək olar

SQL və NoSQL arasındakı fərqi nənənizə necə izah etmək olar

Tərtibatçının verdiyi ən vacib qərarlardan biri hansı verilənlər bazasından istifadə etməkdir. Uzun illərdir ki, seçimlər Strukturlaşdırılmış Sorğu Dilini (SQL) dəstəkləyən müxtəlif əlaqəli verilənlər bazası seçimləri ilə məhdudlaşırdı. Bunlara MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 və daha çoxu daxildir.

Son 15 il ərzində No-SQL yanaşması altında bir çox yeni verilənlər bazası bazara daxil olub. Bunlara Redis və Amazon DynamoDB kimi əsas dəyərli mağazalar, Cassandra və HBase kimi geniş sütun verilənlər bazaları, MongoDB və Couchbase kimi sənəd anbarları, Elasticsearch və Solr kimi qrafik verilənlər bazaları və axtarış motorları daxildir.

Bu yazıda SQL və NoSQL-i onların funksionallığına girmədən anlamağa çalışacağıq.
Üstəlik, yol boyu əylənəcəyik.

Nənəyə SQL-i izah etmək

Nənə, təsəvvür et ki, mən sənin tək nəvənin deyiləm. Əvəzində ana və ata bir-birlərini dovşan kimi sevirdilər, 100 uşaq dünyaya gətirdilər, sonra daha 50 uşaq övladlığa götürdülər.

Beləliklə, siz hamımızı sevirsiniz və adlarımızı, ad günlərimizi, sevimli dondurma ləzzətlərimizi, geyim ölçülərimizi, hobbinizi, həyat yoldaşınızın adlarını, övlad adlarını və digər super vacib faktları unutmaq istəmirsiniz. Bununla belə, gəlin etiraf edək. Sənin 85 yaşın var və yaxşı köhnə yaddaş bunu idarə edə bilmir.

Xoşbəxtlikdən, nəvələrinizin ən ağıllısı olduğum üçün kömək edə bilərəm. Beləliklə, evinizə gəlirəm, bir neçə vərəq çıxarıram və başlamazdan əvvəl bir neçə peçenye bişirməyinizi xahiş edirəm.

Bir vərəqdə "adlı bir siyahı düzəldirik"nəvələri". Hər nəvəsi Onun haqqında bəzi əhəmiyyətli məlumatlar, o cümlədən indi necə göstəriləcək unikal bir nömrə qeyd edildi nəvə odur. Həmçinin, təşkilatçılıq naminə, siyahının yuxarı hissəsində adları çəkilən atributları yazırıq ki, biz həmişə siyahıda hansı məlumatları ehtiva etdiyini bilək.

id
ad
Ad günü
son səfər
geyim ölçüsü
sevimli dondurma
qəbul

1
Jimmy
09-22-1992
09-01-2019
L
nanə şokolad
saxta

2
Jessica
07-21-1992
02-22-2018
M
qayalı yol
doğru

...siyahıya davam edirik!

Nəvələrin siyahısı

Bir müddət sonra hər şeyi başa düşürsən və biz siyahı ilə demək olar ki, bitmişik! Ancaq mənə dönüb deyirsən: "Həyat yoldaşları, hobbiləri, nəvələri üçün yer əlavə etməyi unutmuşuq!" Amma yox, unutmadıq! Bu daha sonra davam edir və yeni bir vərəq tələb edir.

Beləliklə, mən başqa bir vərəq çıxarıram və onun üzərində siyahı adlandırırıq Həyat yoldaşları. Yenidən bizim üçün vacib olan atributları siyahının yuxarı hissəsinə əlavə edirik və sətirlərə əlavə etməyə başlayırıq.

id
nəvənin kimliyi
ad
Ad günü

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…daha çox həyat yoldaşları!

Həyat yoldaşlarının siyahısı

Bu mərhələdə nənəmə başa salıram ki, əgər o, kimin kiminlə evli olduğunu bilmək istəyirsə, o zaman ona yalnız uyğunlaşmaq lazımdır. id siyahıda nəvələri с nəvənin kimliyi həyat yoldaşlarının siyahısında.

Bir neçə onlarla peçenyedən sonra bir az yatmalıyam. – Davam edə bilərsən, nənə? Mən yatmağa gedirəm.

Bir neçə saatdan sonra qayıdıram. Sən gözəlsən, nənə! Siyahıdan başqa hər şey əla görünür hobbi. Siyahıda 1000-ə yaxın hobbi var. Onların əksəriyyəti təkrarlanır; Nə baş verdi?

nəvənin kimliyi
tərlan

1
Velosiped

4
Velosiped

3
Velosiped

7
çalışan

11
Velosiped

…davam edirik!

Bağışlayın, deməyi tamamilə unutdum! Bir siyahıdan istifadə edərək, yalnız izləyə bilərsiniz hobbi. Sonra başqa bir siyahıda izləməliyik nəvələribunu kim edir hobbi. Biz onu çağıracağıq "Ümumi siyahı". Sizin bəyənmədiyinizi görüb narahat oluram və siyahı rejiminə qayıdıram.

id
tərlan

1
Velosiped

2
çalışan

3
üzgüçülük

…daha çox hobbi!

Hobbilərin siyahısı

Hobbi siyahımızı əldə etdikdən sonra ikinci siyahımızı yaradırıq və onu adlandırırıq "Nəvələrin hobbiləri.

nəvənin kimliyi
hobby_id

4
1

3
1

7
2

…daha çox!

Nəvə hobbilərinin ümumi siyahısı

Bütün bu işlərdən sonra nənənin bütün heyrətamiz dərəcədə böyük ailəsini izləmək üçün əla yaddaş sistemi var. Və sonra - məni daha çox saxlamaq üçün - sehrli sual verir: "Bütün bunları etməyi haradan öyrəndin?"

Əlaqəli verilənlər bazaları

Əlaqəli verilənlər bazası, daxil ola biləcəyiniz rəsmi təsvir edilmiş cədvəllər toplusudur (bizim nümunəmizdə bunlar vərəqlərdir). Uyğun olaraq və ya cədvəlləri yenidən təşkil etmədən onları müxtəlif yollarla toplayın məlumat bazaları. Əlaqəli verilənlər bazalarının bir çox müxtəlif növləri var, lakin təəssüf ki, kağız üzərindəki siyahı onlardan biri deyil.

Ən populyar relational verilənlər bazalarının əlamətdar xüsusiyyəti SQL (Structured Query Language) sorğu dilidir. Onun sayəsində nənə yaddaş sistemini kompüterə köçürsə, “Keçən il kim məni ziyarət etməyib, evlidir və hobbisi yoxdur?” kimi suallara tez cavab ala bilir.

Ən məşhur SQL verilənlər bazası idarəetmə sistemlərindən biri açıq mənbəli MySQL-dir. O, ilk növbədə veb-əsaslı proqram təminatı tətbiqləri üçün əlaqəli verilənlər bazası idarəetmə sistemi (RDBMS) kimi həyata keçirilir.

MySQL-in bəzi əsas xüsusiyyətləri:

  • Bu kifayət qədər yaxşı tanınır, geniş istifadə olunur və geniş şəkildə sınaqdan keçirilir.
  • SQL və əlaqəli verilənlər bazaları ilə təcrübəsi olan bir çox təcrübəli tərtibatçı var.
  • Məlumatlar müxtəlif cədvəllərdə saxlanılır ki, bu da ilkin və xarici açarlardan (identifikatorlardan) istifadə edərək əlaqələr qurmağı asanlaşdırır.
  • İstifadəsi asan və səmərəlidir, onu böyük və kiçik bizneslər üçün ideal edir.
  • Mənbə kodu GNU General Public License şərtlərinə uyğundur.

İndi unut Bütün.

Nənəyə NoSQL-i izah etmək

Nənə, bizim böyük ailəmiz var. Onun 150 nəvəsi var! Onların çoxu ailəlidir, uşaqları var, nəyisə sevir və s. Sizin yaşınızda hamımız haqqında hər şeyi xatırlamaq mümkün deyil. Sizə lazım olan yaddaş sistemidir!

Xoşbəxtlikdən, İ heç bir ad günümü və ən sevdiyim dondurma ləzzətini unutmanızı istəyərək kömək edə bilərəm. Ona görə də ən yaxın mağazaya qaçıram, dəftər götürüb evinizə qayıdıram.

İlk addımım dəftərimin üz qabığına böyük qalın hərflərlə “Nəvələr” yazmaqdır. Sonra birinci səhifəni çevirirəm və mənim haqqımda xatırlamağınız lazım olan hər şeyi yazmağa başlayıram. Bir neçə dəqiqədən sonra səhifə belə görünür.

{ 
  "_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!"
}

Я: "Deyəsən hər şey hazırdır!"
Nənə: "Gözləyin, qalan nəvələr necə olacaq?"
Я: "Dəqiq bəli. Sonra hər biri üçün bir səhifə ayırın”.
Nənə: "Sizin üçün etdiyim kimi, hamı üçün eyni məlumatları yazmalıyam?"
Я: “Xeyr, yalnız istəsən. Qoy göstərim”.
Nənəmin qələmini əlimə alıb vərəqləyirəm və ən az sevdiyim əmim oğlu haqqında məlumatları cəld qeyd edirəm.

{ 
  "_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"
}

Nə vaxt ki, nənə nəvələrindən biri haqqında nəyisə xatırlamağa ehtiyac duyarsa, o, yalnız nəvələrinin dəftərinin düzgün səhifəsinə keçməlidir. Onlarla bağlı bütün məlumatlar dərhal onların səhifəsində saxlanılacaq, o, tez dəyişdirə və yeniləyə bilər.

Hər şey bitdikdən sonra o, sehrli sual verir: "Bütün bunları etməyi haradan öyrəndin?"

NoSQL verilənlər bazası

Çox var NoSQL verilənlər bazası (“yalnız SQL deyil”). Nümunələrimizdə göstərdik sənədlər bazası. NoSQL verilənlər bazaları verilənlər bazalarında istifadə olunan cədvəl əlaqələrini istisna edən şəkildə məlumatları modelləşdirir. Bu verilənlər bazaları 2000-ci illərin əvvəllərində açıq miqyas tələblərinə görə (məsələn, Facebook) bulud əsaslı verilənlər bazası qruplaşmasına ehtiyacı olan şirkətlərlə məşhurlaşdı. Bu cür tətbiqlərdə məlumatların ardıcıllığı performans və miqyaslılıqdan daha az əhəmiyyət kəsb edirdi.

Başlanğıcda NoSQL verilənlər bazaları çox vaxt niş məlumatların idarə edilməsi tapşırıqları üçün istifadə olunurdu. Əsasən, veb və bulud proqramlarına gəldikdə, NoSQL verilənlər bazası əhəmiyyətli miqdarda məlumatları emal edir və paylayır. NoSQL mühəndisləri də çevik məlumat sxemini (və ya onun olmaması) bəyəndilər ki, yenilənmiş tətbiqlərdə sürətli dəyişikliklər mümkün olsun.

NoSQL-in əsas xüsusiyyətləri:

  • Məlumatları saxlamaq üçün çox çevik yol
  • Klasterlərə üfüqi miqyaslama
  • Davamlılıq/yayılma üzrə mümkün ardıcıllıq
  • Unikal açarlardan istifadə etməklə müəyyən edilən sənədlər

Ətraflı müqayisə

MySQL müəyyən edilmiş və strukturlaşdırılmış sxem tələb edir.
NoSQL istənilən məlumatı “sənəddə” saxlamağa imkan verir.

MySQL-in böyük bir icması var.
NoSQL kiçik və sürətlə böyüyən bir cəmiyyətə malikdir.

NoSQL-i miqyaslaşdırmaq asandır.
MySQL daha çox idarəolunma tələb edir.

MySQL bir çox verilənlər bazasında istifadə olunan SQL-dən istifadə edir.
NoSQL populyar tətbiqləri olan verilənlər bazası əsaslı dizayndır.

MySQL standart sorğu dilindən (SQL) istifadə edir.
NoSQL standart sorğu dilindən istifadə etmir.

MySQL çoxlu əla hesabat alətlərinə malikdir.
NoSQL standartlaşdırılması çətin olan bir neçə hesabat alətinə malikdir.

MySQL böyük verilənlər üçün performans problemlərini göstərə bilər.
NoSQL böyük verilənlər üzərində əla performans təmin edir.

Düşüncələr 8 əsas

Şirkət 8 bazaişlədiyim yerdə AWS-də yerləşdirilmiş Aurora MySQL əlaqəli verilənlər bazası ilə hər bir layihə üçün iş sahəsi təqdim edirik. Tətbiqiniz yüksək performans və miqyaslılıq tələb etdikdə NoSQL məntiqi seçim olsa da, biz inanırıq ki, DBMS tərəfindən təmin edilən güclü məlumat ardıcıllığı SaaS proqramları və digər biznes proqramlarını qurarkən vacibdir.

Hesabat, tranzaksiya bütövlüyü və dəqiq müəyyən edilmiş məlumat modelləri tələb edən biznes proqramları quran startaplar və tərtibatçılar üçün, bizim fikrimizcə, əlaqəli verilənlər bazalarına investisiya qoymaq düzgün seçimdir.

8base.com saytında Aurora, Serverless və GraphQL ilə inkişaf haqqında ətraflı məlumat əldə edin burada.

Mənbə: www.habr.com

Добавить комментарий