طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 121 · مبادئ قواعد البيانات
الدرس 4 · الوحدة 2: أنواع نماذج قواعد البيانات

قواعد NoSQL واختيار النموذج المناسب

ليست كل البيانات جداول. متى نختار غير العلائقي؟ ⏱ نحو 20 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تشرح سبب ظهور قواعد NoSQL.
  • تميّز أنواع NoSQL الأربعة وأمثلتها.
  • تقارن بين تخزين طلب في جداول وفي مستند JSON.
  • تختار النموذج المناسب لاحتياجات مشروع.

١لماذا ظهرت NoSQL؟

مع ظهور الشبكات الاجتماعية والتطبيقات العملاقة في الألفية الجديدة، واجهت الجداول ثلاثة تحديات:

فظهرت قواعد NoSQL، وتعني Not Only SQL، أي «ليست SQL فقط». وهي لا تعتمد على الجداول ذات الأعمدة الثابتة.

٢أربعة أنواع من NoSQL

النوعكيف يخزّن؟مثال لنظاميناسب
المستندات Documentكل سجل مستند JSON مستقل، وقد تختلف حقوله.MongoDBكتالوج منتجات متنوعة، ومحتوى المواقع.
مفتاح وقيمة Key-Valueقاموس ضخم: مفتاح ← قيمة.Redisجلسات الدخول، والتخزين المؤقت (Cache).
الأعمدة الواسعة Wide-Columnصفوف بأعمدة كثيرة جدًّا ومتغيرة، موزعة على خوادم كثيرة.Cassandraسجلات الحساسات، وبيانات ضخمة متتابعة زمنيًّا.
الرسوم Graphعقد وروابط بينها.Neo4jالأصدقاء والمتابعون، والتوصيات: «قد تعرف…».

٣مثال: طلب واحد بطريقتين

في النموذج العلائقي، الطلب رقم 3 موزّع على جدولين: orders و order_items، ونجمعه بالاستعلام:

query.sql
SELECT order_id, product_id, qty, priceFROM order_itemsWHERE order_id = 3;
النتيجة · 3 صفوف
order_idproduct_idqtyprice
37175
38140
39228

وفي قاعدة مستندات مثل MongoDB، الطلب كله مستند واحد بصيغة JSON، والأصناف بداخله:

order.json
{  "_id": 3,  "customer": { "id": 1, "name": "سعود العتيبي" },  "date": "2025-02-05",  "items": [    { "product": "دلة قهوة", "qty": 1, "price": 75 },    { "product": "فناجين", "qty": 1, "price": 40 },    { "product": "هيل 100غ", "qty": 2, "price": 28 }  ]}
العلائقيالمستندات
قراءة الطلب كاملًاتجمع من جدولينقراءة واحدة سريعة
تغيير اسم العميلفي مكان واحد فقطفي كل مستند ذُكر فيه (تكرار)
سؤال: «كم بعنا من الهيل هذا الشهر؟»سهل بلغة SQLأصعب: الأصناف مدفونة داخل المستندات
حقول جديدة لطلب واحدتحتاج عمودًا للجميعتضيفها لهذا المستند فقط

٤القواعد العلائقية تتعلم من NoSQL

الأنظمة العلائقية الحديثة صارت تقبل عمودًا بصيغة JSON داخل الجدول، لتجمع بين الطريقتين. MySQL فيه النوع JSON، و SQLite فيه دوال JSON. هذا جدول منتجات، ولكل منتج مواصفات مختلفة في عمود واحد:

query.sql
CREATE TABLE gadgets (  id    INTEGER PRIMARY KEY,  name  TEXT,  specs TEXT   -- مواصفات بصيغة JSON);INSERT INTO gadgets VALUES (1, 'جوال', '{"screen": 6.1, "storage": 128}'), (2, 'سماعة', '{"wireless": true, "battery": 30}'); SELECT name, json_extract(specs, '$.storage') AS storageFROM gadgets;
النتيجة · صفّان
namestorage
جوال128
سماعةNULL

الجوال له سعة تخزين، والسماعة ليس لها؛ فظهرت NULL، أي «لا قيمة». هذا المثال للاطلاع فقط؛ تركيزنا في المقرر على الجداول.

٥كيف تختار النموذج المناسب لمشروعك؟

اسأل هذه الأسئلة بالترتيب:

السؤالإن كانت الإجابة «نعم»
هل البيانات منظمة بوضوح، وبينها علاقات كثيرة؟ (طلاب ومقررات، عملاء وطلبات)علائقي
هل الدقة حرجة جدًّا؟ (أموال، حجوزات، درجات)علائقي: يضمن أن العملية تتم كلها أو لا تتم
هل شكل السجلات يختلف كثيرًا من سجل لآخر؟مستندات
هل تحتاج قراءة وكتابة فائقة السرعة لقيمة بمفتاحها؟مفتاح وقيمة
هل السؤال الأهم عن الروابط نفسها؟ (صديق صديقي)رسوم
هل البيانات ضخمة جدًّا ومتدفقة باستمرار من أجهزة؟أعمدة واسعة

توقّع وتحقّق

سجلات MongoDB تُخزَّن على شكل:

Document.

قاعدة تناسب «قد تعرف هؤلاء الأشخاص»:

روابط بين الأشخاص.

نظام تحويلات بنكية يحتاج غالبًا:

الدقة حرجة.

Redis مثال على:

Key-Value.

الخلاصة

تحدٍّ تصميمي: اختر النموذج المناسب

متوسط

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

المطلوب:
  • نظام القبول والتسجيل في الكلية.
  • متجر إلكتروني يبيع منتجات متنوعة جدًّا (جوالات وملابس وكتب) بمواصفات مختلفة.
  • حفظ سلة المشتريات المؤقتة لكل زائر لمدة ساعة.
  • تطبيق تواصل يقترح «أصدقاء أصدقائك».
  • قراءات حساسات الحرارة في مصنع، كل ثانية من 5000 حساس.
☑ راجع عملك قبل التسليم:
💡 تلميح 1
المشروع 3: البيانات مؤقتة وتُقرأ بمفتاح واحد (رقم الزائر).
💡 تلميح 2
المشروع 5: بيانات ضخمة متدفقة زمنيًّا.
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس