أنواع قواعد البيانات: دليل شامل للمطورين

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

دعونا نتحدث عن أنواع قواعد البيانات التي نستخدمها اليوم في عملنا كمهندسي برمجيات.

الأقسام الرئيسية لقواعد البيانات

هناك قسمان كبيران تندرج تحتهما كل أنواع قواعد البيانات اليوم، وهي محركات قواعد البيانات إما أن تكون قواعد بيانات علائقية (Relational) أو قواعد بيانات غير علائقية (Non-Relational).

أولاً: قواعد البيانات العلائقية (Relational Databases)

لنبدأ بأنواع قواعد البيانات العلائقية، لأنها غالبًا المستخدمة منذ زمن بعيد، حيث بدأت في الظهور في السبعينيات وتُستخدم حتى يومنا هذا في معظم التطبيقات.

1. المخطط القائم على الجداول (Table-Based Schema)

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

أنواع العلاقات:

ملاحظة هامة: عند التعامل مع الجداول، ضع دائمًا المفتاح الأجنبي (Foreign Key) عند جانب “المتعدد” (Many) في العلاقة. في مثال الطالب والدرجات، ستضع المفتاح الأجنبي في جدول الدرجات. أما في حالة علاقة “متعدد إلى متعدد” بين الطالب والمقررات، فسيحتوي الجدول الوسيط على مفتاحين أجنبيين: واحد للطالب والآخر للمقرر.

أشهر المحركات: من أشهر الأمثلة على هذا النوع، والتي تُعرف أيضًا بالمخططات القائمة على المعاملات (ACID Transactions)، هي محركات مثل:

2. قواعد بيانات الرسم البياني (Graph Database)

هذا النوع ظهر حديثًا في بداية الألفية، حوالي عام 2007-2008، وبدأ في الانتشار. يُستخدم في العلاقات المعقدة بين البيانات. فكرته ببساطة هي أنك بدلًا من تخزين البيانات في جداول، تقوم بإنشاء “عُقد” (Nodes).

تخيل أن العقدة (Node) تمثل الطالب. لكن هذه المرة، لا تقتصر بيانات الطالب على الدرجات والمقررات فقط، بل يمكنك إضافة علاقات معقدة جدًا:

المحور هنا هو العقدة التي تحمل البيان، والحواف (Edges) التي تربطها هي التي تمثل العلاقات. يمكنك وصف العلاقة بلغة بسيطة، كأن تقول:

أفضل مثال: تُعد وسائل التواصل الاجتماعي أفضل مثال على استخدام قواعد بيانات الرسم البياني. ملفك الشخصي هو عقدة، ولديك أصدقاء (علاقة)، وأصدقاء الأصدقاء (علاقة متعدية)، ولديك منشورات، وكلها مرتبطة ببعضها في شبكة معقدة من العلاقات متعددة المستويات.

استخدامات شائعة:

أشهر المحركات:

ثانيًا: قواعد البيانات غير العلائقية (Non-Relational / NoSQL)

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

1. قواعد البيانات القائمة على المستندات (Document-Based)

تتكون من مجموعة من المستندات (Documents). تخيل أن لديك أرشيف مستشفى؛ كل ملف مريض هو مستند قائم بذاته ومحفوظ في رف معين. لا توجد علاقة مباشرة بين ملف مريض وملف مريض آخر.

بنفس الطريقة، في هذا النوع من قواعد البيانات، يكون لديك مستندات بصيغة JSON تخزن فيها البيانات بشكل متداخل. مثال: يمكنك تخزين طلب طعام كمستند واحد يحتوي على كل شيء:

{
  "orderId": "12345",
  "customerName": "أحمد علي",
  "items": [
    { "name": "بيتزا", "quantity": 1 },
    { "name": "سلطة", "quantity": 1 }
  ],
  "paymentDetails": {
    "method": "Credit Card",
    "amount": 150
  },
  "deliveryAddress": {
    "street": "شارع 123",
    "city": "الرياض"
  }
}

الميزة هنا أنك لست مقيدًا بمخطط (Schema) صارم. إذا كان هناك طلب آخر لا يحتوي على كل هذه التفاصيل، فلا مشكلة.

أشهر المحركات:

2. محركات البحث (Search Engines)

هذا النوع مخصص لتخزين توصيف للبيانات بهدف استخدامها في البحث النصي الكامل (Full-Text Search). بدلاً من البحث في كل حقل داخل مستند JSON، يقوم محرك البحث بإنشاء فهرس (Index) للكلمات الرئيسية (Keywords) ويحدد في أي مستند توجد. هذا يجعل البحث سريعًا وفعالًا، خاصة مع البيانات التي يتم البحث عنها بكثرة مثل الأخبار المتداولة أو الكلمات الرائجة.

أشهر المحركات:

3. قواعد بيانات المفتاح-القيمة (Key-Value)

هي من أبسط أنواع مخازن البيانات. تقوم بإنشاء مفتاح (Key) وتحدد القيمة (Value) المقابلة له. "name": "يحيى"

الاستخدامات الرئيسية:

  1. التخزين المؤقت (Caching): بدلاً من جلب البيانات المستخدمة بكثرة من قاعدة البيانات الرئيسية في كل مرة، يتم تخزينها في الذاكرة (In-Memory) كـ “مفتاح-قيمة” للوصول السريع إليها.
  2. قوائم الانتظار (Queues): يمكن استخدامها كقائمة انتظار بسيطة عن طريق وضع البيانات المراد معالجتها في القيمة. تدعم نموذج النشر والاشتراك (Pub/Sub).

مشكلة: بما أن البيانات تُخزن في الذاكرة، فإنها تُفقد إذا تم إعادة تشغيل الخادم.

أشهر المحركات:

4. قواعد البيانات ذات الأعمدة الواسعة (Wide-Column)

فكرتها تشبه “المفتاح-القيمة”، لكن القيمة (Value) هنا ليست مجرد نص بسيط، بل هي مجموعة من الأعمدة (Columns). هذا يسمح للمفتاح الواحد بالإشارة إلى بيانات مخزنة في عدة أعمدة.

مثال: يمكن أن يشير مفتاح واحد إلى شخص، وتكون القيمة هي أعمدة متعددة مثل: الاسم، العمر، العنوان.

الميزة الأساسية: هذا النوع مصمم لعمليات الكتابة الكثيفة والسريعة (High-Write Intensity). إذا كان تطبيقك يقرأ بيانات من مكان ويحتاج إلى كتابتها بسرعة في قاعدة بيانات، فهذا هو الخيار الأمثل.

العيب: بما أنها مُحسَّنة للكتابة، فهي ليست الخيار الأفضل لعمليات القراءة الكثيفة (High-Read)، حيث قد تكون القراءة بطيئة.

الاستخدام: تُستخدم بكثرة في مجالات هندسة البيانات وتحليلها (Data Engineering & Analytics)، خاصة مع البيانات التاريخية والمتسلسلة زمنيًا.

أشهر المحركات:

النهج الهجين: قواعد البيانات متعددة النماذج (Multi-Model)

اليوم، لم يعد نمط البيانات موحدًا وبسيطًا. مع الكم الهائل من المعلومات المتاحة، أصبح من الصعب تخزين كل شيء في نموذج علائقي فقط. لذلك، لا يقتصر المطورون على استخدام نوع واحد فقط، بل يستخدمون ما يسمى بالنموذج المتعدد (Multi-Model) أو الهجين (Hybrid).

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

شارك المقال

أحدث المقالات

CONNECTED
ONLINE: ...
SECURE
00:00:00