تجاوز إلى المحتوى
العربية
المستوى 3: عالم البرمجيات
الدرس 6 · +15 XP

الـ databases — حيث تعيش البيانات

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

إذن هناك شيء آخر يحتفظ بها. ذلك الشيء database.

الـ database برنامج مهمته الوحيدة هي تخزين البيانات بطريقة منظّمة والإجابة عن الأسئلة المتعلقة بها.

ليست خزنة سحرية. وليست جدول بيانات عملاقًا. إنها برنامج — يعمل على server في مكان ما — يحدث له أمران باستمرار: أشياء تُدخَل إليه، وأشياء تُسحَب منه.

النقطة التي تربك الناس عادةً

يتخيّل الناس الـ database صندوق تخزين سلبيًّا، مثل خزانة ملفات. لكنها العكس.

الـ database آلة سؤال وجواب. أنت لا تتصفّحها؛ بل تسألها.

حين يريد الـ backend معرفة «ما المنشورات التي نشرها المستخدم رقم 42 في مارس؟» — فهو لا يذهب ليتصفّح الملفات. بل يرسل query (سؤالًا محدّدًا)، فيمسح الـ database ملايين الصفوف ويعيد الإجابة في أجزاء من الألف من الثانية.

تلك هي القيمة بأكملها. التخزين سهل. أما الإجابة السريعة المنظّمة عن الأسئلة فهي الجزء الصعب، وهو ما تفعله الـ databases.

ما الموجود فيها فعلًا

النوع الأكثر شيوعًا من الـ databases — الـ relational database — يخزّن البيانات في جداول. مثل جداول البيانات، بصفوف وأعمدة، لكنها أكبر بكثير وأسرع بكثير.

مثال صغير، لتطبيق متخيَّل:

users table:
| id | name        | email             |
| 1  | Sam Carter  | sam@example.com   |
| 2  | Lin Park    | lin@example.com   |

posts table:
| id | user_id | text              | created_at  |
| 1  | 1       | Hello world       | 2026-01-01  |
| 2  | 2       | My first post     | 2026-01-02  |
| 3  | 1       | Second one        | 2026-01-03  |

حين يريد الـ backend منشورات سام، يستعلم: «أعطني كل صفّ في posts حيث user_id يساوي 1.» يمسح الـ database جدول posts، ويُرجِع الصفّين 1 و3، ويسلّمهما إلى الـ backend، الذي يسلّمهما إلى الـ frontend، الذي يعرضهما على شاشتك.

اضرب ذلك في مليار مستخدم، وتحصل على الشكل الأساسي لإنستغرام.

الأسماء التي سترَاها

لست بحاجة إلى اختيار database، لكنك ستسمع الأسماء. الشائعة منها:

  • Postgres (تُكتب أيضًا PostgreSQL) — مفتوحة المصدر، وشائعة، وهي الخيار الافتراضي للكثير من المشاريع الجديدة.
  • MySQL — الـ relational database الأخرى الكبيرة مفتوحة المصدر، وهي أقدم قليلًا.
  • SQLite — database صغيرة تعيش في ملف واحد، تُستخدم غالبًا في التطبيقات التي لا تحتاج إلى server.
  • MongoDB — أسلوب مختلف («NoSQL»)، يخزّن البيانات على نحو أقرب إلى JSON منه إلى جداول البيانات.
  • Redis — database سريعة في الذاكرة، تُستخدم غالبًا للتخزين المؤقت.

حين يخبرك Claude بأن «هذا المشروع يستخدم Postgres»، صرت الآن تعرف: هناك database server في مكان ما، يخزّن البيانات في جداول، والـ backend يطرح عليه الأسئلة.

ما التالي

غطّينا ما هي البرمجيات، وكيف تنقسم، وكيف يتحدث النصفان، وأين تعيش البيانات. والآن: أين يعيش الكود نفسه بينما يُكتَب؟ ذلك codebase — تُسمّى أيضًا repo.