في هذا الدرس 8تصفّح المواضيع
عرفنا في الدرسين الأول والثاني أن خادم الواجهة الخلفية يعالج منطق العمل باستخدام لغات وأطر برمجية مثل أو . ونصل الآن إلى الركن الثالث الحاسم في الواجهة الخلفية: قاعدة البيانات (). أين يحتفظ الموقع بحسابات ملايين المستخدمين والطلبات والرسائل والدروس بحيث لا تضيع أبداً عند إعادة تشغيل الخادم، ويمكن البحث فيها خلال أجزاء من الألف من الثانية؟ هذه هي مهمة قواعد البيانات العلائقية () وغير العلائقية ().
قبل الغوص في تفاصيل هذا الدرس، استعرض جدول المصطلحات الأساسية التالية:
| المصطلح بالعربية | المصطلح بالإنجليزية | النطق التقني | المعنى المبسط |
|---|---|---|---|
| قاعدة بيانات دائمة | بيرسيستنت داتا بيز | نظام برمجي يحفظ البيانات بشكل دائم ومنظم ويسمح لآلاف المستخدمين بالبحث والتعديل في نفس اللحظة بأمان. | |
| قواعد البيانات العلائقية | ريليشنال داتا بيز / إس كيو إل | قواعد بيانات (مثل MySQL وPostgreSQL) تنظم السجلات في جداول دقيقة ذات أعمدة وصفوف مترابطة. | |
| المفتاح الأساسي | برايمري كي | رقم تعريفي فريد لا يتكرر يُمنح لكل صف داخل الجدول (مثل رقم الهوية) لتمييزه بدقة. | |
| قواعد البيانات غير العلائقية | نو إس كيو إل | قواعد بيانات مرنة (مثل MongoDB وRedis) تخزن البيانات كمستندات JSON أو أزواج مفتاح وقيمة خارج قيود الجداول. | |
| العمليات الأربع الأساسية | كرَد أوبريشنز | اختصار للعمليات الأربع التأسيسية على البيانات: الإنشاء (Create)، القراءة (Read)، التحديث (Update)، والحذف (Delete). | |
| أداة الربط الكائني | أو آر إم | أداة داخل إطار العمل الخلفي تتيح للمبرمج التعامل مع جداول قاعدة البيانات بسهولة وأمان عبر كود اللغة نفسها. |
يتساءل كثير من المبتدئين: «لماذا لا يحفظ الخادم حسابات المستخدمين في متغيرات داخل الذاكرة العشوائية ()، أو يكتبها في ملف نصي عادي مثل ؟» في الواقع، لا يصلح أيٌّ من هذين الخيارين لبناء تطبيقات الويب الحقيقية لثلاثة أسباب جوهرية:
- 1. الذاكرة العشوائية () مؤقتة وتفقد محتواها: أي بيانات تُحفظ في متغيرات الذاكرة المؤقتة تتبخر وتُمحى بالكامل بمجرد إعادة تشغيل الخادم؛ بينما تحتاج حسابات المستخدمين إلى تخزين دائم ().
- 2. الملفات النصية تنهار عند التزاحم المتزامن (): لو ضغط 500 زائر على زر «شراء» في نفس الجزء من الثانية وحاول الخادم فتح ملف نصي واحد والكتابة فيه في آنٍ واحد، فسيتلف الملف أو تضيع طلبات الزوار.
- 3. السرعة الفائقة في البحث الفوري: البحث داخل ملف نصي عادي يضم مليوني مستخدم سطراً بسطر يستغرق وقتاً طويلاً جداً؛ بينما تستخدم أنظمة إدارة قواعد البيانات () فهارس ذكية تجلب السجل المطلوب في أقل من جزء من الألف من الثانية.
تُعدّ قواعد البيانات العلائقية () — وتُعرف أيضاً باسم قواعد بيانات نسبةً للغة الاستعلام الهيكلي — النوع الأكثر انتشاراً واعتماداً في تطبيقات الويب، ومن أشهر أمثلتها عالمياً MySQL وPostgreSQL:
- الجداول المنظمة (): تقسّم قاعدة البيانات العلائقية بيانات المشروع إلى جداول واضحة ومستقلة، مثل جدول المستخدمين ()، وجدول الدورات ()، وجدول الطلبات ().
- الأعمدة الثابتة (): يحدد كل عمود نوع البيانات المسموح بحفظها بدقة (مثل عمود الرقم التعريفي ، وعمود الاسم ، وعمود البريد الإلكتروني ).
- الصفوف أو السجلات (): يمثل كل صف أفقي داخل الجدول سجلاً كاملاً لعنصر واحد (مثل بيانات طالب واحد مسجل في الموقع).
شاهد في الشكل الجدولي المبسط الآتي كيف ينظم جدول في قاعدة بيانات علائقية بيانات الأعضاء في أعمدة وصفوف:
Table: users (Relational SQL Table in MySQL / PostgreSQL)
+-----+---------------+-----------------------+---------+
| id | name | email | role |
+-----+---------------+-----------------------+---------+
| 101 | Sara Ahmed | [email protected] | student |
| 102 | Omar Khaled | [email protected] | student |
| 103 | Nadia Hassan | [email protected] | admin |
+-----+---------------+-----------------------+---------+
لماذا سُمّيت قواعد البيانات العلائقية بهذا الاسم؟ لأنها تنشئ علاقات ربط دقيقة بين الجداول المستقلة دون تكرار البيانات، وذلك عبر نوعين أساسيين من المفاتيح:
- 1. المفتاح الأساسي (): يمتلك كل جدول عموداً مميزاً (يُسمى غالباً ) يمنح كل صف رقماً تعريفياً فريداً لا يتكرر أبداً (مثل رقم الهوية الوطنية). فحتى لو تشابه اسما طالبين، يظل لكل طالب رقم خاص به وحده.
- 2. المفتاح الأجنبي (): عندما يشتري الطالب رقم دورة تدريبية، لا نعيد كتابة اسمه وبريده وعنوانه في جدول الطلبات في كل مرة؛ بل نضع في جدول الطلبات عموداً صغيراً يُسمى (وهو المفتاح الأجنبي) يشير مباشرةً إلى صاحب الرقم في جدول المستخدمين!
ماذا لو كان التطبيق يتعامل مع بيانات مرنة تختلف تفاصيلها من عنصر لآخر ولا تناسبها الأعمدة الصارمة الثابتة؟ هنا يظهر دور قواعد البيانات غير العلائقية المعروفة باسم NoSQL ()، وأشهر نوعين ستقابلهما في سوق العمل هما:
- 1. قواعد بيانات المستندات ( مثل ): بدلاً من الجداول والصفوف، تحفظ كل سجل كمستند مستقل يشبه صيغة ؛ مما يتيح مرونة عالية حين تختلف خصائص المنتجات عن بعضها دون التقيد بأعمدة موحدة.
- 2. قواعد المفتاح والقيمة الفورية ( مثل ): تخزن البيانات على هيئة «مفتاح وقيمته» بسرعة فائقة جداً، وتُستخدم بكثرة للتخزين المؤقت السريع () وحفظ الجلسات النشطة والعدادات اللحظية.
لاحظ في المثال الآتي كيف يبدو المستند المرن داخل قاعدة بيانات :
{
"_id": "doc_901",
"productName": "Wireless Keyboard",
"price": 45.00,
"specs": {
"layout": "Arabic/English",
"batteryLifeDays": 180
}
}
هل جاءت قواعد لتلغي قواعد البيانات العلائقية ؟ كلا على الإطلاق؛ فقواعد لا تزال العمود الفقري لمعظم تطبيقات الويب والأنظمة المالية، بينما تحل قواعد احتياجات خاصة بالمرونة والسرعة اللحظية. قارن بينهما في الجدول الآتي:
| وجه المقارنة | قواعد البيانات العلائقية () | قواعد البيانات غير العلائقية () |
|---|---|---|
| طريقة تنظيم البيانات | جداول منظمة ذات أعمدة ثابتة وصفوف مترابطة | مستندات مرنة أو أزواج مفتاح وقيمة |
| أشهر الأمثلة العالمية | و و | و و |
| متى نختارها؟ | الحسابات، الفواتير المالية، المتاجر، والبيانات المترابطة بدقة | البيانات المتغيرة باستمرار، سجل المحادثات الضخم، والتخزين المؤقت الفوري |
والأجمل أن كثيراً من المشاريع الاحترافية تجمع بينهما معاً؛ فتستخدم أو لحفظ الحسابات والطلبات المالية بأمان، وتستخدم بجانبها لتسريع عرض الصفحات الأكثر زيارة. تأمل المخطط المعماري الشامل لقواعد البيانات أدناه:
سواء اعتمدت الواجهة الخلفية على قاعدة بيانات علائقية () أو غير علائقية ()، فإن جميع العمليات التي يجريها أي تطبيق على البيانات تتلخص في أربع عمليات تأسيسية شهيرة تُعرف عالمياً باختصار CRUD:
- 1. الإنشاء والإضافة (): إضافة سجل جديد كلياً إلى قاعدة البيانات (مثل إنشاء حساب مستخدم جديد أو نشر مقال جديد).
- 2. القراءة والاسترجاع (): جلب البيانات المحفوظة لعرضها على الشاشة دون تعديلها (مثل فتح صفحة ملفك الشخصي أو البحث عن منتج).
- 3. التحديث والتعديل (): تعديل بيانات سجل موجود مسبقاً (مثل تغيير الصورة الشخصية أو تحديث حالة الطلب إلى «تم التوصيل»).
- 4. الحذف والإزالة (): إزالة سجل من قاعدة البيانات (مثل حذف تعليق قديم أو إزالة منتج من سلة التسوق).
جرّب محاكي التفاعلي الآتي لتشاهد كيف تنفذ الواجهة الخلفية كل عملية من العمليات الأربع على سجل طالب في قاعدة البيانات:
كيف يتخاطب كود الواجهة الخلفية المكتوب بلغة أو مع نظام قاعدة البيانات مثل ؟ توفر أطر العمل الحديثة للمطورين أداة ذكية تُسمى أداة الربط الكائني ():
- وظيفة أداة : بدلاً من كتابة نصوص استعلامات طويلة ومعقدة يدوياً في كل مرة، تربط أداة (مثل أداة المدمجة في إطار ) كل جدول في قاعدة البيانات بملف مقابل له داخل الكود.
- سهولة القراءة والأمان التلقائي: عندما يطلب المبرمج من الـ جلب بيانات المستخدم رقم أو حفظ فاتورة جديدة، تتولى أداة ترجمة هذا الأمر تلقائياً إلى استعلام آمن وسريع تنفذه قاعدة البيانات وتعيد نتيجته فوراً.
نظراً لأن قاعدة البيانات تضم أثمن ما يملكه أي موقع — من حسابات الأعضاء وسجلاتهم المالية ورسائلهم الخاصة — فإن تأمين قاعدة البيانات يقف على رأس أولويات هندسة الواجهة الخلفية والأمن السيبراني عبر ثلاث قواعد ذهبية:
- 1. عزل قاعدة البيانات عن الإنترنت العام: لا يُسمح أبداً بجعل خادم قاعدة البيانات متاحاً للاتصال المباشر من الإنترنت العام؛ بل يُوضع داخل شبكة داخلية خاصة لا يتصل بها سوى خادم الواجهة الخلفية الموثوق.
- 2. استخدام الاستعلامات المُعَلمة الآمنة (): لا تدمج النصوص التي يكتبها المستخدم مباشرةً داخل نص أمر قاعدة البيانات؛ بل استخدم دائماً الاستعلامات المُعَلمة أو أداة التي تفصل تماماً بين الأمر البرمجي وبين النص المدخل لمنع أي تلاعب بالاستعلامات.
- 3. النسخ الاحتياطي المشفر والدوري (): تحسباً لأي عطل طارئ في الأقراص، تُبرمَج عملية أخذ نسخ احتياطية مشفرة يومياً وتُحفظ في مكان آمن ومستقل.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعرّفنا في هذا الدرس على أهمية قواعد البيانات الدائمة للخادم، وكيف تنظم قواعد البيانات العلائقية () مثل و السجلات في جداول مترابطة عبر المفتاح الأساسي () والمفتاح الأجنبي ()، وقارنّاها مع قواعد البيانات غير العلائقية () مثل و، وطبّقنا العمليات الأربع الأساسية CRUD، وتعرّفنا على دور أداة وقواعد تأمين البيانات. الخطوة التالية: انتقل الآن إلى الدرس الرابع (واجهات API والمصادقة والصلاحيات) لنكتشف كيف يبني الخادم واجهات ويختبرها بأداة ويميز بين المصادقة () والترخيص ()!
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات8
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Database Management System (DBMS) نظام إدارة قواعد البيانات (DBMS)
- برنامج خادم متخصص (مثل MySQL أو PostgreSQL أو MongoDB) يتولى حفظ البيانات الدائمة وفهرستها وإدارتها بأمان.
- للمراجعة
- 02 Relational Database (SQL) قاعدة البيانات العلائقية (SQL)
- قاعدة بيانات تنظم المعلومات في جداول تتكون من أعمدة ثابتة وصفوف مترابطة عبر المفاتيح.
- للمراجعة
- 03 Primary Key (PK) المفتاح الأساسي (Primary Key)
- عمود يحتوي على رقم تعريفي فريد لا يتكرر لكل صف داخل الجدول لتمييز كل سجل بدقة تامة.
- للمراجعة
- 04 Foreign Key (FK) المفتاح الأجنبي (Foreign Key)
- عمود في جدول يشير إلى المفتاح الأساسي في جدول آخر لربط السجلات المتعلقة ببعضها دون تكرار البيانات.
- للمراجعة
- 05 Non-Relational Database (NoSQL) قاعدة البيانات غير العلائقية (NoSQL)
- نظام قواعد بيانات مرن يخزن البيانات خارج قيود الجداول التقليدية، مثل مستندات JSON في MongoDB أو المفتاح والقيمة في Redis.
- للمراجعة
- 06 CRUD Operations العمليات الأربع الأساسية (CRUD)
- العمليات الأربع التأسيسية التي تُجرى على البيانات في أي تطبيق: الإنشاء (Create)، والقراءة (Read)، والتحديث (Update)، والحذف (Delete).
- للمراجعة
- 07 Object-Relational Mapping (ORM) أداة الربط الكائني (ORM)
- طبقة برمجية في أطر العمل تتيح للمطور التعامل مع جداول قاعدة البيانات بأمان وسهولة عبر نماذج الكود (Models).
- للمراجعة
- 08 Prepared Statement (Parameterized Query) الاستعلام المُعَلم الآمن (Prepared Statement)
- تقنية استعلام آمنة تفصل بين هيكل الأمر البرمجي لقاعدة البيانات وبين المدخلات النصية القادمة من المستخدم.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 SQL SQL
- Structured Query Language
- لغة الاستعلام الهيكلي القياسية المستخدمة للتعامل مع قواعد البيانات العلائقية مثل MySQL وPostgreSQL.
- للمراجعة
- 02 NoSQL NoSQL
- Not Only SQL (Non-Relational Database)
- فئة قواعد البيانات غير العلائقية المصممة لنماذج البيانات المرنة مثل المستندات والتخزين الفوري بالمفتاح والقيمة.
- للمراجعة
- 03 CRUD CRUD
- Create, Read, Update, Delete
- العمليات الأربع الأساسية لإدارة السجلات الدائمة: الإنشاء، والقراءة، والتحديث، والحذف.
- للمراجعة
- 04 PK / FK PK / FK
- Primary Key / Foreign Key
- المفتاح الأساسي الفريد للسجل والمفتاح الأجنبي المرجعي المستخدمان لربط الجداول العلائقية ببعضها.
- للمراجعة
- 05 ORM ORM
- Object-Relational Mapping
- أداة الربط الكائني داخل أطر العمل الخلفية التي تربط جداول قاعدة البيانات بنماذج الكود البرمجية.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
تنقّل بين عمليات Create وRead وUpdate وDelete في محاكي الموضوع السادس، ولاحظ كيف يُستخدم المفتاح الأساسي (id = 105) لتحديد سجل الطالب بدقة.
-
راجع الموضوع الثالث واشرح لماذا يُعد تخزين رقم المستخدم (user_id كمفتاح أجنبي) في جدول الطلبات أفضل هندسياً من تكرار اسم العميل وبريده في كل فاتورة.
-
بناءً على الموضوع الخامس، اشرح لماذا قد يستخدم متجر إلكتروني قاعدة بيانات MySQL أو PostgreSQL لحفظ الفواتير المالية، بينما يستخدم Redis بجانبها للتخزين المؤقت السريع.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.