كيف تشرح لجدتك الفرق بين SQL و NoSQL

صورة

أحد أهم القرارات التي يتخذها المطور هي قاعدة البيانات التي يجب استخدامها. على مر السنين ، اقتصرت الخيارات على العديد من خيارات قواعد البيانات العلائقية التي تدعم لغة الاستعلام الهيكلية (SQL). ويشمل ذلك MS SQL Server و Oracle و MySQL و PostgreSQL و DB2 وغيرها الكثير.

على مدى السنوات الـ 15 الماضية ، ظهرت العديد من قواعد البيانات الجديدة في السوق كجزء من نهج عدم SQL. وتشمل هذه مخازن القيمة الرئيسية ، مثل Redis و Amazon DynamoDB ، وقواعد بيانات الأعمدة العريضة ، مثل Cassandra و HBase ، ومخازن الوثائق ، مثل MongoDB و Couchbase ، وكذلك قواعد بيانات الرسم البياني ومحركات البحث ، مثل Elasticsearch و Solr.

سنحاول في هذه المقالة فهم SQL و NoSQL ، دون الدخول في وظائفها.
بالإضافة إلى ذلك ، سيكون لدينا بعض المرح في هذه العملية.

شرح الجدة SQL


الجدة ، تخيل أنني لست حفيدك الوحيد. بدلا من ذلك ، أحب أمي وأبي بعضهما البعض مثل الأرانب ، وكان لديهم 100 طفل ، ثم تبنوا 50 آخرين.

إذاً أنت تحبنا جميعًا ولا تريد أن تنسى أيًا من أسماءنا وأعياد الميلاد وأذواق الآيس كريم المفضل لدينا وأحجام الملابس والهوايات وأسماء الزوجين وأسماء النسل وغيرها من الحقائق المهمة للغاية. ولكن دعونا نواجه الأمر. أنت تبلغ من العمر 85 عامًا ، والذاكرة القديمة الجيدة ليست قادرة على التعامل معها.

لحسن الحظ ، أنا ، أذكى أحفادك ، يمكنني المساعدة. لذا جئت إلى منزلك ، وأخرج بعض الأوراق وأطلب منك خبز الكعك قبل أن نبدأ.

في ورقة واحدة ، نقوم بعمل قائمة تسمى " الأحفاد ". يتم تسجيل كل حفيد مع بعض المعلومات الأساسية عنه ، بما في ذلك عدد فريد ، والتي سوف تشير الآن إلى أي نوع من حفيد هو. بالإضافة إلى ذلك ، من أجل المنظمة ، نكتب سمات مسماة في أعلى القائمة حتى نعرف دائمًا المعلومات التي تحتويها هذه القائمة.
الهويةاسمعيد ميلاداخر زيارةحجم الملابسالآيس كريم المفضلاعتمد
1جيمي1992/09/222019/01/09Lشوكولا بالنعناعزائف
2جيسيكا1992/07/212018/02/22Mطريق صخريصحيح
... تابع القائمة!
قائمة الأحفاد

بعد فترة من الوقت ، تفهم كل شيء ونحن على وشك الانتهاء من القائمة! ومع ذلك ، أنت تتجه إلي وتقول: "لقد نسينا أن نضيف مكانًا للأزواج والهوايات والأحفاد!" لكن لا ، لم ننس! هذا يذهب أبعد من ذلك ويتطلب ورقة جديدة.

لذلك أنا أسحب قطعة أخرى من الورق ، ونطلق عليها قائمة الأزواج . نضيف مرة أخرى السمات المهمة بالنسبة لنا في الجزء العلوي من القائمة ونبدأ في إضافة السطور.
الهويةgrandchild_idاسمعيد ميلاد
12جون1988/01/06
29فرناندا1985/03/05
... المزيد من الأزواج!
قائمة الأزواج

في هذه المرحلة ، أوضح لجدتي أنها إذا أرادت أن تعرف من هو متزوج ، فمن عليها فقط أن تطابق المعرف في قائمة الأحفاد مع الحفيد في قائمة الزوجين.

بعد بضع عشرات من ملفات تعريف الارتباط ، أحتاج إلى أخذ قيلولة. "هل يمكنك المتابعة ، الجدة؟" سأرحل لأخذ غفوة.

سأعود بعد بضع ساعات. وأنت رائع يا الجدة! كل شيء يبدو رائعا باستثناء قائمة هواية . هناك حوالي 1000 من الهوايات في القائمة. يتكرر معظمهم. ماذا حدث
grandchild_idهواية
1ركوب الدراجات
4ركوب الدراجات
3ركوب الدراجات
7تشغيل
11ركوب الدراجات
... تابع!

عذرا ، لقد نسيت تماما أن أقول! باستخدام قائمة واحدة ، يمكنك تتبع الهوايات فقط. ثم في قائمة أخرى نحتاج إلى تتبع الأحفاد الذين يشاركون في هذه الهواية . سوف نسميها "القائمة العامة" . رؤية أنك لا تحب ذلك ، أبدأ في القلق والعودة إلى وضع القائمة.
الهويةهواية
1ركوب الدراجات
2تشغيل
3سباحة
... أكثر هواية!
هواية قائمة

بمجرد أن تتوفر لدينا قائمة الهوايات ، نضع قائمتنا الثانية ونطلق عليها " هوايات الأحفاد ".
grandchild_idhobby_id
41
31
72
... المزيد!
قائمة عامة من أحفاد الهوايات

بعد كل هذا العمل ، لدى جدتي الآن نظام تحفيظ رائع لتتبع أسرتها الكبيرة بشكل مدهش. وبعد ذلك - من أجل احتجازي لفترة أطول - سألت السؤال السحري: "من أين تعلمت أن تفعل كل هذا؟"

قواعد البيانات العلائقية


قاعدة البيانات العلائقية هي مجموعة من الجداول الموصوفة رسميًا (في مثالنا ، هذه أوراق) يمكنك من خلالها الوصول إلى البيانات أو جمعها بطرق مختلفة دون الحاجة إلى إعادة تنظيم جداول قاعدة البيانات . هناك العديد من أنواع قواعد البيانات العلائقية المختلفة ، لكن لسوء الحظ ، فإن القائمة على قطعة من الورق ليست واحدة منها.

ميزة مميزة لقواعد البيانات العلائقية الأكثر شيوعًا هي لغة استعلام SQL (لغة الاستعلام الهيكلية). بفضله ، إذا نقلت جدتي نظام الحفظ إلى جهاز كمبيوتر ، فستتمكن من الحصول بسرعة على إجابات لأسئلة مثل: "من لم يزرني العام الماضي ، وهو متزوج وليس لديه هوايات؟"

أحد أكثر أنظمة إدارة قواعد بيانات SQL شيوعًا هو MySQL مفتوح المصدر. يتم تطبيقه بشكل أساسي كنظام إدارة قواعد البيانات العلائقية (RDBMS) لتطبيقات البرامج المستندة إلى الويب.

بعض الميزات الرئيسية في MySQL:

  • انها مشهورة جدا ، وتستخدم على نطاق واسع واختبارها بدقة.
  • هناك العديد من المطورين المؤهلين ذوي الخبرة في العمل مع SQL وقواعد البيانات العلائقية.
  • يتم تخزين البيانات في جداول مختلفة ، مما يجعل من السهل إقامة اتصال باستخدام المفاتيح الأولية والأجنبية (معرفات).
  • إنه سهل الاستخدام وفعال ، مما يجعله مثاليًا للمؤسسات الكبيرة والصغيرة.
  • كود المصدر يخضع لرخصة جنو العمومية.

الآن نسيت الكل.

شرح الجدة NoSQL


الجدة ، لدينا عائلة ضخمة. لديها 150 أحفاد! كثير منهم متزوجون ، ولديهم أطفال ، وهم مولعون بشيء ، وما إلى ذلك. في عمرك ، من المستحيل أن نتذكر كل شيء عنا جميعًا. ما تحتاجه هو نظام تحفيظ!

لحسن الحظ ، أنا ، لا أريد أن أنسى عيد ميلادي وطعم الآيس كريم المفضل لدي ، يمكن أن يساعدني. لذلك ، أركض إلى أقرب متجر وأخذ دفتر ملاحظات وأرجع إلى منزلك.

الخطوة الأولى التي أتخذها هي كتابة "الأحفاد" بأحرف كبيرة وجريئة على غلاف دفتر ملاحظات. ثم أنتقل إلى الصفحة الأولى وأبدأ في كتابة كل ما يجب أن تتذكره عني. بعد بضع دقائق ، تبدو الصفحة مثل هذا.

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

أنا : "كل شيء يبدو جاهزًا!"
الجدة : "انتظر ، ماذا عن الأحفاد الآخرين؟"
أنا : "نعم ، بالضبط. ثم حدد صفحة لكل منها. "
الجدة : " وسأحتاج إلى تسجيل جميع المعلومات نفسها للجميع ، كما فعلت لك؟"
أنا : "لا ، فقط إذا كنت تريد. دعني أريك. "
بعد أن أخذت قلمي من جدتي ، أقلب الصفحة وسرعان ما كتب معلومات عن ابن عمتي غير المحبوب.

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

كلما احتجت الجدة إلى تذكر شيء عن أحد أحفادها ، فإنها تحتاج فقط إلى الانتقال إلى الصفحة الصحيحة في دفتر أحفادها. سيتم تخزين جميع المعلومات المتعلقة بهم هناك على صفحتهم ، والتي يمكن أن تتغير بسرعة وتحديثها.

عندما يتم كل شيء بالفعل ، تسأل السؤال السحري: "من أين تعلمت أن تفعل كل هذا؟"

قواعد بيانات NoSQL


هناك العديد من قواعد بيانات NoSQL ("ليس فقط SQL"). في الأمثلة لدينا ، أظهرنا قاعدة بيانات للمستندات . قواعد بيانات قواعد بيانات NoSQL بطرق تستبعد العلاقات الجدولية المستخدمة في قواعد البيانات العلائقية. أصبحت قواعد البيانات هذه شائعة في أوائل العقد الأول من القرن العشرين بين الشركات التي احتاجت إلى تجميع قائم على السحابة لقواعد البيانات بسبب متطلبات قابلية التوسع الواضحة لها (مثل Facebook). في مثل هذه التطبيقات ، كان تناسق البيانات أقل أهمية بكثير من الأداء وقابلية التوسع.

في البداية ، كانت قواعد بيانات NoSQL تستخدم غالبًا لمهام إدارة البيانات المتخصصة. في الأساس ، عندما يتعلق الأمر بتطبيقات الويب والسحابة ، عالجت قواعد بيانات NoSQL ووزعت كميات كبيرة من البيانات. كما أحب المهندسون الذين يعملون مع NoSQL نظام البيانات المرن (أو الغياب التام) ، بحيث كانت التغييرات السريعة في التطبيقات المحدثة ممكنة.

الملامح الرئيسية ل NoSQL:

  • طريقة مرنة جدا لتخزين البيانات.
  • مقياس إلى مجموعات
  • ممكن الاتساق / تسلسل التوزيع
  • المستندات التي تم تحديدها باستخدام مفاتيح فريدة

مقارنة مفصلة


الخلية يتطلب إطارا محددا ومنظمة.
NoSQL يسمح لك بحفظ أي بيانات في "وثيقة".

MySQL يدعم مجتمع ضخم.
NoSQL لديه مجتمع صغير وسريع النمو.

NoSQL سهل القياس.
الخلية يحتاج الى مزيد من الإدارة.

يستخدم MySQL SQL ، والذي يستخدم في العديد من أنواع قواعد البيانات.
NoSQL هي قاعدة بيانات تستند إلى التصميم مع تطبيقات شعبية.

يستخدم MySQL لغة الاستعلام القياسية (SQL).
لا يستخدم NoSQL لغة الاستعلام القياسية.

الخلية لديها العديد من أدوات الإبلاغ كبيرة.
NoSQL لديها العديد من أدوات التقارير التي يصعب توحيدها.

MySQL قد تصدر مشاكل في الأداء للبيانات الكبيرة.
يوفر NoSQL أداءً رائعًا على البيانات الكبيرة.

الأفكار 8base


في 8base ، حيث أعمل ، نوفر مساحة عمل كل مشروع بقاعدة بيانات Aurora MySQL المستضافة على AWS. على الرغم من أن NoSQL يعد اختيارًا منطقيًا عندما تتطلب متطلبات التطبيق الخاص بك أداءً عاليًا وقابلية للتوسعة ، فإننا نعتقد أن تماسك البيانات الصارم الذي توفره DBMS ضروري عند إنشاء تطبيقات SaaS وبرامج الأعمال الأخرى.

بالنسبة للشركات الناشئة والمطورين الذين يقومون بإنشاء تطبيقات الأعمال هذه التي تحتاج إلى إعداد التقارير وسلامة المعاملات ونماذج البيانات المحددة جيدًا ، فإن الاستثمار في قواعد البيانات العلائقية هو الخيار الصحيح.

تعرف على المزيد حول التطوير باستخدام Aurora و Serverless و GraphQL باستخدام 8base.com هنا .

Source: https://habr.com/ru/post/ar467283/


All Articles