قواعد 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، ونجمعه بالاستعلام:
SELECT order_id, product_id, qty, priceFROM order_itemsWHERE order_id = 3;
| order_id | product_id | qty | price |
|---|---|---|---|
| 3 | 7 | 1 | 75 |
| 3 | 8 | 1 | 40 |
| 3 | 9 | 2 | 28 |
وفي قاعدة مستندات مثل MongoDB، الطلب كله مستند واحد بصيغة 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. هذا جدول منتجات، ولكل منتج مواصفات مختلفة في عمود واحد:
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;
| name | storage |
|---|---|
| جوال | 128 |
| سماعة | NULL |
الجوال له سعة تخزين، والسماعة ليس لها؛ فظهرت NULL، أي «لا قيمة». هذا المثال للاطلاع فقط؛ تركيزنا في المقرر على الجداول.
٥كيف تختار النموذج المناسب لمشروعك؟
اسأل هذه الأسئلة بالترتيب:
| السؤال | إن كانت الإجابة «نعم» |
|---|---|
| هل البيانات منظمة بوضوح، وبينها علاقات كثيرة؟ (طلاب ومقررات، عملاء وطلبات) | علائقي |
| هل الدقة حرجة جدًّا؟ (أموال، حجوزات، درجات) | علائقي: يضمن أن العملية تتم كلها أو لا تتم |
| هل شكل السجلات يختلف كثيرًا من سجل لآخر؟ | مستندات |
| هل تحتاج قراءة وكتابة فائقة السرعة لقيمة بمفتاحها؟ | مفتاح وقيمة |
| هل السؤال الأهم عن الروابط نفسها؟ (صديق صديقي) | رسوم |
| هل البيانات ضخمة جدًّا ومتدفقة باستمرار من أجهزة؟ | أعمدة واسعة |
توقّع وتحقّق
سجلات MongoDB تُخزَّن على شكل:
Document.قاعدة تناسب «قد تعرف هؤلاء الأشخاص»:
نظام تحويلات بنكية يحتاج غالبًا:
Redis مثال على:
Key-Value.الخلاصة
NoSQL: ليستSQLفقط؛ ظهرت للحجم الهائل والبنية المتغيرة والسرعة.- أنواعها: مستندات
(MongoDB)، مفتاح وقيمة(Redis)، أعمدة واسعة(Cassandra)، رسوم(Neo4j). - المستند يجمع الطلب كله في مكان واحد، لكنه يكرر البيانات ويصعّب التحليل.
- العلائقي هو الاختيار الأول حين تهم العلاقات والدقة.
تحدٍّ تصميمي: اختر النموذج المناسب
متوسطأنت مستشار تقني. اكتب في دفترك أو في ملف نصي النموذج المناسب لكل مشروع من المشاريع الخمسة، مع سبب في سطر واحد، ثم سلّمه لمعلمك.
- نظام القبول والتسجيل في الكلية.
- متجر إلكتروني يبيع منتجات متنوعة جدًّا (جوالات وملابس وكتب) بمواصفات مختلفة.
- حفظ سلة المشتريات المؤقتة لكل زائر لمدة ساعة.
- تطبيق تواصل يقترح «أصدقاء أصدقائك».
- قراءات حساسات الحرارة في مصنع، كل ثانية من 5000 حساس.