SQL vs. NoSQL – Növbəti Layihəniz üçün hansından istifadə etməlisiniz?

Ən çox verilən suallardan biri – hansı bazadan istifadə etməliyəm …


SQL, Strukturlaşdırılmış Sorgulamış Dili deməkdir. İlk dəfə 1970-ci illərdə IBM tədqiqatçılarının bir qrupu tərəfindən hazırlanmışdır, digər tərəfdən NoSQL verilənlər bazası ilk dəfə 1998-ci ildə Carlo Strozzi tərəfindən istifadə edilmişdir.

Bu iki verilənlər bazası (DB) sistemləri arasındakı ən çox görülən fərq SQL-nin əlaqəli və NoSQL-nin əlaqəsiz olmasıdır.

Növbəti layihəniz üçün bir verilənlər bazası nəzərdən keçirildikdə qərarınızı daha yaxşı məlumatlandırmaq üçün bu iki verilənlər bazasına dərin dalış edək.

Verilənlər bazasının quruluşu

Quruluş haqqında danışaq.

SQL

SQL verilənlər bazasında müəyyən bir sxem quruluşu var.

Bir sxemdə cədvəllər var və hər cədvəldə müəyyən sayda sütun var. Yəni bir istifadəçi cədvəldə göstərilən sütun sayından artıq cədvəlini yeniləyə bilməz. Bu, məlumat bütövlüyünü qorumaq və verilənlər bazasına daxil olan məlumatların növünə əmin olmaq üçün xüsusilə faydalıdır.

Bir SQL verilənlər bazasındakı hər bir masa əlaqəli ola bilər. yəni masalar arasında münasibətləriniz ola bilər. Bu əlaqələr çoxdan birinə, bir çoxuna çoxdan və ya birinə birdən ola bilər. Tətbiq etdiyiniz əlaqənin növü tələb etdiyinizdən asılıdır.

Məsələn, hipotetik vəziyyəti nəzərdən keçirək; istifadəçilərlə bir şirkətimiz var və istifadəçilər məhsullara sifariş verə bilər. Sonra, istifadəçilərin birdən çox sifariş yarada biləcəyinə qərar verə bilərik, lakin hər sifariş yalnız bir istifadəçi tərəfindən yarana bilər. Bu bir çox əlaqəyə, yəni bir çox sifariş üçün bir istifadəçi ola bilər. Beləliklə, hər iki masa üçün masa quruluşu aşağıda göstərilənlərə bənzəyəcəkdir.

MB-da aşağıdakı kimi qurulmuş bir istifadəçi cədvəli ola bilər,

users_table
—————————————————-
id | adı | e-poçt
—————————————————–
1 İdris [e-poçt qorunur]

Ayrıca, sifariş cədvəli də ola bilər

sifarişlər_təd
———————————————————————————
id | istifadəçi_id | sifariş_Nömrə
———————————————————————————
1 1 20000001

Sifarişlər masasındakı user_id, sifarişlər cədvəlindəki hər sifarişin aid olduğu istifadəçiyə xəritəni asanlaşdırır. Birdən birinə münasibət halında, istifadəçi ilə əlaqəli sifariş id tərəfindən istifadə etməyi qərara alsaq, sifarişçilər_idelində də istifadəçilər_table-da ola bilər..

Üçün, Bir çoxundan Bir çoxuna Pivot masası adlanan əlavə bir masa adətən iştirak edir. Bu, bir çox qeydin bir-birinə xəritələnməsinə imkan verir. Yuxarıdakı misaldan istifadə. Bizdə olardı,

users_table
————————————————————————————-
id | adı | e-poçt
————————————————————————————-
1 İdris [e-poçt qorunur]

və sifariş cədvəli olacaq

sifarişlər_təd
———————————————————
id | sifariş_Nömrə
———————————————————
1 2000001

sonra Pivot cədvəli hər iki şəxsiyyət sənədini xarici açar kimi saxlayacaqdır.

users_orders_table
——————————————————————————
id | sifariş_id | İstifadəçi adı
——————————————————————————
1 1 1

SQL tərəfindən verilən bu quruluşa əsasən rahatlıqla bir sorğuda birləşdirilmiş müxtəlif cədvəllərdən məlumat verəcək cədvəllər arasına yaza bilərsiniz..

NoSQL

NoSQL verilənlər bazası SQL DB-lərdən daha çevik, daha çox məlumat ehtiva etmək üçün qurulmuşdur.

NoSQL DB-də əvvəlcədən müəyyən edilmiş bir sxem və ya cədvəl yoxdur. Koleksiyonlar var və hər Kolleksiyada Sənədlər var. Bu, məlumatları gəldikləri zaman müxtəlif formalarda saxlamağa imkan verir. Bir Kolleksiyada müxtəlif sahələri olan çoxsaylı sənədlərin olmasını seçə bilərsiniz. Koleksiyonlar arasındakı əlaqələri əl ilə düzəltmək də mümkündür. Ancaq bu məqsəd üçün uyğun deyillər. Bunun əvəzinə, bir sorğu üçün lazım olanların hamısını eyni Kolleksiya içərisində saxlaya bilərsiniz.

Bir SQL insansınız, Koleksiyonları cədvəl və sənədlər cədvəl ilə satır kimi düşünə bilərsiniz. Bununla birlikdə, masa ilə əlavə edə biləcəyiniz məlumat sütunlarında heç bir məhdudiyyət yoxdur.

İstifadəçilər və sifarişləri olan bir şirkətin əvvəllər təyin edilmiş hipotetik nümunəsinə qayıdaq.

İstifadəçilər kolleksiyası kimi müəyyən edilə bilər,

{id: 1, adı: ‘idris’, e-poçt: ‘[e-poçt qorunur]‘}

Və Sifarişlər Toplusu olaraq təyin edilə bilər,

{id: 1, sifariş_nömrə: 2000001, user_id: 1}

Bununla birlikdə, bu vəziyyətdə hər iki Koleksiyona əl ilə qoşulmaqdan çəkinmək istəyirik (bu vəziyyətdə etməməliyik). Ən çox oxunan kolleksiyaya girişləri saxlaya bilərik. Sifarişlər toplusu olacağına qərar verdim (bu nümunə üçün).

{id: 1, sifariş_nömrə: 200001, istifadəçi {id: 1, adı: ‘idris’, e-poçt: ‘[e-poçt qorunur]‘}}

Bu vəziyyətdə, artıq İstifadəçilər Kolleksiyasından oxumağa ehtiyac duymuruq və yalnız indi lazım olan bütün məlumatları özündə saxlayan Sifarişlər toplusundan oxumalıyıq..

Burada qeyd ediləcək bir əsas şey: Yazmaqdan çox oxuyan bir tətbiq qurursan, bir NoSQL seçimi sizin üçün daha uyğun gəlir. Çünki məlumatlarınızın hamısını eyni kolleksiyada saxlaya bilərdiniz və lazım olan bütün məlumatları əldə etmək üçün həmin mənbədən rahat oxuya bilərsiniz.

Bununla birlikdə, həmin miqyasda çox sayda yazı yazmağı tələb edən (saniyədə təxminən 10.000 yazı yazmaq) tələb olunan bir tətbiq üçün eyni məlumatları birdən çox yerə yazmağın lazım olduğu NoSQL seçiminin olması yaxşı bir fikir deyil. Bu vəziyyətdə, bir masa üstü ilə əlaqəniz olduğu bir SQL seçimi daha uyğundur və eyni məlumatları bir neçə yerə yazmaq lazım deyil, bir məkanda məlumatları yeniləmə çıxış yolu ilə digər cədvəllərə mövcud ola bilər münasibətlər. Bu, əlbəttə ki, bu məlumat bazalarının hər birinin miqyası idarə edə biləcəyi demək deyil.

Ölçəkləmə

Ölçəyin necə işlədiyini araşdıraq.

SQL

SQL DB-ləri üfüqi, ancaq şaquli olaraq ölçülə bilməz. Bunun nə mənası var?

Üfüqi ölçülmə, yükü asanlaşdırmaq üçün məlumatların bir MB-dən çox verilənlər bazasına bölünməsi deməkdir. Bununla birlikdə SQL məlumatları sərt təbiətinə görə ayrıca MB-lara bölünə bilməz. Bir SQL DB miqyaslandırmaq üçün uyğun olan, mövcud DB serverinin CPU, Yaddaş və Disk sahəsini artırmaqdır və bu şaquli olaraq miqyaslandırmağın mənası budur.

üfüqi tərəzi

şaquli tərəzi


NoSQL

NoSQL DB-ləri həm üfüqi, həm də şaquli olaraq ölçülə bilər. Bu, məlumatların saxlanmasında çevikliyə bağlıdır. Bu, buna görə də üfüqi miqyaslı miqyasda olduğu kimi məlumatlarının da çox verilənlər bazasında bölüşdürülməsinə imkan verir. Lazım gələrsə şaquli olaraq ölçülə bilər.

Burada qeyd ediləcək bir əsas şey: Ölçələşməyə gəldikdə, həm SQL, həm də NoSQL Verilənlər Bazalarını təsirli şəkildə ölçmək olar. Bununla birlikdə, SQL DB-lər üçün şaquli ölçülmə məhdudiyyət ola bilər; tək bir DB serverində daşıya biləcəyi hesablama gücünün məhdudluğu olacaqdır.

Burada qeyd etməyiniz vacibdir ki, quracağınız tətbiqlərin əksəriyyəti üçün serverinizin hesablama qabiliyyətinin maksimumunu vura bilməyəcəksiniz, ancaq bunu yadda saxlamağınız faydalıdır. Bununla birlikdə, SQL tətbiq edən böyük iş tətbiqetmələri üçün bu məhdudiyyəti məğlub etmək üçün məşhur bir seçim Şarding tərəfindəndir.

Şardinq nədir?

Sarsıdıcılıq, böyük masaların şardalar adlandırılan kiçik hissələrə parçalanması prosesidir. Sarsıdıcı bir verilənlər bazasını yatay şəkildə bölməklə edilə bilər. Bu üfüqi və şaquli ölçülmə ilə qarışdırılmamalıdır. Üfüqi bölmə, bir cədvəl satırlarının çox verilənlər bazası qovşaqlarında saxlanması prosesinə aiddir. Şaquli bölmə, digər tərəfdən bir masanın sütunlarını müxtəlif qovşaqlarda qənaət etməyi tələb edir. Bu, verilənlər bazasının səmərəli miqyasını artırmağa və işini artırmağa imkan verir.

Verilənlər bazası nümunələri

SQL

  • MySQL – Çox məşhur bir açıq mənbə məlumat bazası. Bir çox PHP inkişaf etdiricisi üçün asanlıqla seçilən məlumat bazası, eyni zamanda Node.js, C #, C ++, Java, Perl, Ruby və Python ilə də istifadə edilə bilər..
  • MSSQL – Microsoft SQL bir çox sabitlik təmin edir, çünki onun inkişafı birbaşa Microsoft-dan, fəlakətlərin bərpası baxımından da dəstək verir..
  • MariaDB – Bu MySQL istehsalçıları tərəfindən MySQL-də qurulmuşdur, MariaDB-ni pulsuz bir əbədi versiya kimi saxlamaq niyyətində idi.
  • PostgresSQL – Çox məşhur bir açıq mənbə məlumat bazası. Dünyanın ən qabaqcıl açıq mənbə məlumat bazası kimi özündən qürur duyur
  • Oracle – Bu adətən pulsuz versiyasında bəzi məhdudiyyətlərlə Oracle-ın müəssisə həllərinə uyğunlaşdırılır.

NoSQL

  • MongoDB – Yəqin ki, MERN yığını (MongoDB, Express, React, Node) və ya MEAN yığını (MongoDB, Express, Bucaqlı, Node) ilə işləyən tətbiq hazırlayıcıları arasında ən çox tanınan NoSQL DB.
  • Firebase – 2011-ci ildə təqdim edilmiş və 2014-cü ildə Google tərəfindən əldə edilmiş, veb və mobil tətbiqetmə tərtibatçıları tərəfindən geniş istifadə olunur.
  • Apache Couch DB – Məlumatları JSON kimi saxlayan sənəd əsaslı NoSQL DB.
  • Redis: Bu NoSQL DB, ehtimal ki, yaşamaq üçün əlavə vaxtı ilə məlumatların saxlanmasında istifadəsi ilə məşhurdur. Həm də sürəti ilə məşhurdur.

Nəticə

SQL və ya NoSQL verilənlər bazası ilə hər hansı bir tətbiq yarada bilərsiniz. Bu, tələblərinizdən asılıdır. Daha çox oxuduğunuz və daha az yazdığınız bir verilənlər bazasını nəzərdən keçirirsinizsə, NoSQL yaxşı bir seçim ola bilər. Lakin, oxunanlardan daha çox yazmaqla bir tətbiq qurmağı düşünürsənsə, SQL daha yaxşı bir həll ola bilər. Ölçülenebilecekte, tətbiqiniz çox böyük bir miqyas aldıqda, hər iki DB-dən istifadə edə bilərsiniz.

TAGS:

  • Verilənlər bazası

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map