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

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

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

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

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

شرح SQL للجدة

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

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

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

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

id
الاسم
عيد ميلاد
الزيارة الأخيرة
حجم الملابس
الآيس كريم المفضل
اعتمد

1
جيمي
09-22-1992
09-01-2019
L
شكولاطة النعناع
زائف

2
جيسيكا
07-21-1992
02-22-2018
M
طريق صخري
صحيح

…نواصل القائمة!

قائمة الأحفاد

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

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

id
grandchild_id
الاسم
عيد ميلاد

1
2
جون
06-01-1988

2
9
فرناندا
03-05-1985

…المزيد من الأزواج!

قائمة الأزواج

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

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

سأعود خلال ساعات قليلة. أنت رائع يا جدتي! كل شيء يبدو رائعًا باستثناء القائمة هواية. هناك حوالي 1000 هواية في القائمة. معظمها متكررة. ماذا حدث؟

grandchild_id
هواية

1
ركوب الدراجات

4
ركوب الدراجات

3
ركوب الدراجات

7
تشغيل

11
ركوب الدراجات

…نستمر!

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

id
هواية

1
ركوب الدراجات

2
تشغيل

3
سباحة

…المزيد من الهوايات!

قائمة الهوايات

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

grandchild_id
hobby_id

4
1

3
1

7
2

…أكثر!

القائمة العامة لهوايات الأحفاد

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

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

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

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

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

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

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

الآن ننسى ALL.

شرح 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:

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

مقارنة تفصيلية

يتطلب MySQL مخططًا محددًا ومنظمًا.
يسمح لك NoSQL بتخزين أي بيانات في "مستند".

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

من السهل توسيع نطاق NoSQL.
يحتاج MySQL إلى المزيد من قابلية الإدارة.

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

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

لدى MySQL العديد من أدوات إعداد التقارير الرائعة.
لدى NoSQL العديد من أدوات إعداد التقارير التي يصعب توحيدها.

يمكن لـ MySQL إظهار مشكلات الأداء للبيانات الضخمة.
يوفر NoSQL أداءً ممتازًا في التعامل مع البيانات الضخمة.

أفكار 8 قاعدة

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

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

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

المصدر: www.habr.com

إضافة تعليق