قاعدة البيانات غير العلائقية

**قاعدة البيانات غير العلائقية**  توفر آلية لتخزين واسترجاع البيانات التي يتم نمذجتها بوسائل أخرى غير العلاقات الجدولية المستخدمة في قواعد البيانات العلائقية. تعود أصول هذه القواعد إلى أواخر الستينيات من القرن الماضي، وابتكار مصطلح "**قاعدة البيانات غير العلائقية"** فقط في بداية القرن الحادي والعشرين نتيجة لاحتياجات شركات الويب 2.0. تزداد استخدامات **قواعد البيانات غير العلائقية** في تطبيقات البيانات الكبيرة وتطبيقات الويب في الوقت الحقيقي.

تَطوَّرَت **قواعد البيانات غير العلائقية** للتغلب على بعض القصور الموجود في قواعد البيانات العلائقية SQL أثناء عملية التوسع والتعامل مع البيانات الضخمة. حيث أنّ **قواعد البيانات غير العلائقية** تستخدم مجموعة متنوعة من نماذج البيانات للوصول إلى البيانات وإدارتها. تَحَسَّنَتْ أَنْوَاعُ قواعد البيانات هذه خصيصًا للتطبيقات التي تتطلب حجمًا كبيرًا للبيانات، وزمن وصول منخفض، ونماذج بيانات مرنة، والتي يتم تحقيقها عن طريق تخفيف بعض قيود تناسق البيانات لقواعد البيانات الأخرى.

حيث ان قواعد البيانات **قواعد البيانات غير العلائقية** تفضل الإستغناء عن مبدأ الـتناسق الذي يعتمد على جعل البيانات متشابهة تماماً في جميع نسخ قواعد البيانات المنتشرة على خوادم مختلفة، مقابل الحصول على أداء عالي وجعل البيانات متاحة في جميع الأوقات.
## ظهور قواعد البيانات غير العلائقية
ظهر المصطلح لأول مرة في أواخر التسعينات كاسم لقاعدة بيانات علائقية مفتوحة المصدر طوّرها كارلو ستروتزي، كانت تعتمد على ملفات أسكي وتميّزت بعدم استخدام لغة الإستعلامات المهيكلة، بل التعامل مع البيانات عبر إخطاط وجهة الأوامر، إلا أن هذه القاعدة لا تَمُتُّ بصلةٍ لما يُعرف اليوم بقواعد البيانات الغير علائقية. المعنى الحديث للمصطلح بدأ في 11 يونيو 2009، حين نظّم المطوّر  (يوهان أوسكارسون) لقاءً تقنيًا في سان فرانسيسكو، جَمع فيه مطوّري قواعد بيانات بديلة مستوحاة من بيغ تيبل وداينامو، واقترح (إريك إيفانز) استخدام قواعد البيانات غير العلائقية كوسم للقاء. رغم أن المصطلح انتشر بسرعة، فإنه لا يحظى بتعريف دقيق أو بجهة رسمية تُحدده، وقد ارتبط في بداياته بقواعد بيانات مفتوحة المصدر، موزّعة، وغير علائقية مثل (كاساندرا)،و(مونغو دي بي)، و(كاوتش دي بي)، و (إتش بيز). وتمتاز قواعد بيانات غير العلائقية بعدم اعتمادها على (لغة الاستعلامات المهيكلة)، أو باستخدام لغات مشابهة مثل لغة استعلام كاساندرا، كما أنها غالبًا ما تكون مفتوحة المصدر ومصممة للعمل ضمن مجموعات من الخوادم. وتُوفّر هذه القواعد مرونة عالية من خلال نماذج بيانات لا تعتمد على مخطط ثابت، مما يجعلها ملائمة لمعالجة البيانات غير المتجانسة أو المتغيرة باستمرار. كما أنها لا تعتمد على معاملات أسيد  بنفس الصرامة الموجودة في قواعد البيانات التقليدية، بل تتيح مرونة أكبر في التوزيع والاتساق. وعلى الرغم من أن اسم البيانات غير العلائقية يُفهم غالبًا بأنه "رفض لـ لغة الإستعلامات المهيكلة"، إلا أن تفسيره الشائع بأنه "Not Only SQL" يعبّر بشكل أدق عن كونه توجّهًا نحو تنويع أساليب تخزين البيانات. تُعد قواعد البيانات غير العلائقية حركة تقنية أكثر من كونها فئة قواعد بيانات، حيث تفتح المجال أمام استخدام حلول مختلفة لتخزين البيانات وفق الحاجة، وهو ما يُعرف بمفهوم "تعددية نظم التخزين". ويتم اللجوء إلى قواعد البيانات غير العلائقية إما لتلبية احتياجات أنظمة ضخمة تتطلب قابلية توسعة وأداءً عاليًا، أو لتحسين إنتاجية فرق التطوير من خلال تسهيل التفاعل مع البيانات، حتى في الحالات التي لا تستدعي التوسع على مستوى الخوادم.

## الخصائص العامة

### لا تعتمد على مخطط ثابت
تُعد خاصية "عدم وجود مخطط ثابت" من السمات البارزة في قواعد بيانات غير العلائقية، حيث تتيح تخزين بيانات غير متجانسة دون الحاجة لتعريف بنية مسبقة كما في القواعد العلائقية. وتختلف طرق تمثيل البيانات بين الأنواع المختلفة: **فالمفتاحية** *تسمح بتخزين أي قيمة تحت مفتاح*، و**المستندية** *تدعم مستندات متفاوتة البنية*، وقواعد الأعمدة تتيح حرية إدخال القيم، بينما البيانية تتيح نمذجة مرنة للعلاقات. تمنح هذه المرونة قابلية عالية لتكييف البنية مع تغيّر المتطلبات، لكنها قد تؤدي إلى صعوبة فهم البيانات أو فرض القيود عليها، خاصة عند تعدد التطبيقات المتصلة. ولتفادي ذلك، يُوصى بتوحيد واجهات الوصول أو فصل البيانات بوضوح. ورغم إمكانية تعديل المخطط في القواعد العلائقية، فإن قواعد البيانات غير العلائقية تبقى خيارًا مفضلًا عند التعامل مع بيانات ديناميكية أو غير متجانسة.
```pseudo
foreach (Record r in records) {
   foreach (Field f in r.fields) {
      print (f.name, f.value)
   }
}
```


على الرغم من أن قواعد البيانات غير العلائقية تُعتبر "بلا مخطط" ، إلا أن التطبيقات التي تتعامل مع هذه البيانات تعتمد غالبًا على **مخطط ضمني**. يشير هذا إلى أن البرامج تفترض وجود بنية معينة للبيانات أثناء الوصول إليها، حتى في غياب مخطط رسمي صريح في قاعدة البيانات. فعلى سبيل المثال، قد يتوقع البرنامج أن يحتوي كل سجل على مجموعة من الحقول (`fields`)، وأن يكون لكل حقل اسم وقيمة محددين (`name` و`value`). هذا الاعتماد الضمني على بنية البيانات يُعد جزءًا أساسيًا من كيفية تعامل البرامج مع قواعد البيانات التي لاتعتمد على مخطط ثابت، ويبرز أهمية فهم البنية المتوقعة للبيانات ضمن التطبيق نفسه، وليس فقط على مستوى قاعدة البيانات.

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

#### '''1. التكرار'''
تُعتبر تقنية **التكرار** خطوة أساسية في توزيع حمل قواعد البيانات غير العلائقية عبر عدة خوادم، حيث تُمكّن من توزيع عمليات القراءة على نسخ متعددة من البيانات لتحسين الأداء وزيادة قدرة النظام على التعامل مع أعداد كبيرة من الطلبات، بينما تظل عمليات الكتابة والمعاملات مركزية وتُنفذ عادةً على النسخة الرئيسية لضمان اتساق وسلامة البيانات، مما يعزز من توافر النظام ومرونته دون المساس بدقة المعلومات.

#### 2. آليات التقسيم
تصغير
يتم توزيع البيانات عبر الأقسام في قواعد البيانات غير العلائقية بطريقتين رئيسيتين: **التقسيم حسب النطاق ** و**التقسيم حسب التجزئة**. في التقسيم حسب النطاق، تُخصص لكل قسم مجموعة محددة من قيم مفتاح التقسيم، وتقوم بعض الأنظمة مثل مونغو دي بي بتحليل توزيع القيم لضمان تساوي تقريبي في عدد المفاتيح بين الأقسام. أما في التقسيم حسب التجزئة، فتُوزع المفاتيح بناءً على نتيجة تطبيق دالة تجزئة على مفتاح التقسيم. لكل منهما مزاياه وتحدياته، حيث تختلف آليات الأداء في عمليات الإدراج والاستعلام حسب النطاق، مما يتطلب موازنة بين متطلبات النظام المختلفة لتحقيق أفضل أداء.

## أنواع قواعد البيانات غير العلائقية

### '''1. قواعد بيانات الوثائق '''
تعتمد **قواعد بيانات الوثائق** على نموذج هيكلي شجري يسمح بتخزين البيانات بشكل مرن وغير مقيد بمخطط  ثابت كما هو الحال في قواعد البيانات العلائقية. فبينما تتطلب قواعد بيانات مثل الجدول الكبير تعريف اسم الجدول وعائلات الأعمدة مسبقًا، تتيح قواعد بيانات الوثائق مثل مونغو دي بي و (مارك لوجيك) تخزين مستندات بصيغ مثل JSON ولغة التأشير الوسوعة دون الحاجة إلى معرفة مسبقة ببنيتها. هذه المرونة تجعلها مثالية لتطوير البرمجيات بأساليب رشيقة (Agile)، وتمكّن من التعديل على بنية البيانات بعد تشغيل النظام دون الحاجة لإعادة تصميم المخطط. في (الجدول الكبير)، تمثل البيانات ضمن مستويات ثلاثية: الصف، عائلة الأعمدة، والعمود، وهو ما يُحاكي بنية شجرية، أما في قواعد بيانات الوثائق، فيمكن النزول إلى مستويات أعمق داخل الشجرة، وتخزين علاقات أكثر تعقيدًا بشكل مباشر.
مثال على مستند طلب شراء بصيغة JSON:

```json
{ "id": 1, "customer": "Adam", "items": [ { "title": "Book", "price": 9.99 } ] }
```


### 2. '''قواعد بيانات الأعمدة '''
**قواعد البيانات العمودية** أو "قواعد البيانات ذات التوجه العمودي" هي نوع من قواعد البيانات يُخزَّن فيه كل عمود من البيانات بشكل مستقل، بخلاف قواعد البيانات العلائقية التقليدية التي تُخزِّن الصفوف كوحدة متكاملة. على الرغم من أن هذا الفرق يبدو بسيطًا، إلا أن له تأثيرًا جوهريًا على الأداء وطريقة التخزين والاستعلام. يسمح النموذج العمودي بتخزين بيانات الأعمدة بشكل مضغوط، ويُسهل تنفيذ الاستعلامات التحليلية التي تُركّز على أعمدة محددة دون الحاجة لقراءة الصفوف الكاملة.

يُعدّ هذا النوع من القواعد مثاليًا للبيانات "الضخمة" والتطبيقات التي تعتمد على تحليل البيانات، مثل ذكاء الأعمال وتخزين البيانات. من أبرز الأمثلة على هذه القواعد: Apache HBase وApache Cassandra، وهما يوفّران خصائص مثل تخزين البيانات الموزع والدعم للبيانات غير المتجانسة. يمكن أن تحتوي كل صف على مجموعة مختلفة من الأعمدة، مما يتيح مرونة هيكلية مع توفير في المساحة بسبب عدم الحاجة لتخزين القيم الفارغة.

مثال مبسط على تمثيل قاعدة بيانات عمودية بصيغة JSON:


```json
{ "row1": { "name": "Ali", "age": 25 }, "row2": { "name": "Lina" }, "row3": { "age": 30, "country": "Jordan" } }
```


كما يُظهر المثال، ليس من الضروري أن تحتوي كل صفوف الجدول على نفس الأعمدة، مما يجعل قاعدة البيانات العمودية مرنة جدًا ومناسبة للبيانات المتغيرة.

### 3. قواعد بيانات المفتاح-القيمة
تُعد قواعد بيانات المفتاح-القيمة من أبسط نماذج قواعد البيانات غير العلائقية، حيث تخزن البيانات في شكل أزواج مكونة من «مفتاح» و«قيمة». هذا النموذج يُشبه المفاهيم البرمجية مثل القواميس أو الجداول الترابطية، ويتميز بالبساطة والسرعة. لا تُفرض قيود على بنية القيم، ما يمنح مرونة عالية في تخزين البيانات غير المهيكلة. تُستخدم هذه القواعد بشكل كبير في التطبيقات التي تتطلب أداءً عاليًا وزمن استجابة منخفض، مثل التخزين المؤقت وجلسات المستخدم. استلهمت العديد من قواعد البيانات من تصميم *Dynamo* الذي طورته شركة أمازون، والذي قدَّم مفاهيم مثل التكرار القابل للتكوين، والتوافر العالي، والتسامح مع الأخطاء. ومن أبرز أنظمة هذا النوع: Redis، وRiak، وAmazon DynamoDB، حيث تختلف في مدى دعمها للتناسق، والتوافر، وسرعة الوصول إلى البيانات.

### 4. المبيان
تُعد **قواعد بيانات الرسم البياني** أحد فروع قواعد البيانات غير العلائقية، وتتميّز بتركيزها على تمثيل البيانات والعلاقات فيما بينها من خلال بُنية بيانية تتكوّن من (عُقد) تمثل الكيانات، و (حواف) تمثل العلاقات بين تلك الكيانات. تختلف هذه القواعد جذريًا عن النماذج التقليدية من حيث كون العلاقة جزءًا أساسيًا ومباشرًا من بنية البيانات، مما يجعلها مناسبة جدًا للبيانات التي تتصف بالترابط العالي أو البنية الشبكية.

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

تعتمد قواعد بيانات الرسم البياني على لغات استعلام مخصصة، أبرزها **Cypher** التي تُستخدم في قاعدة البيانات **Neo4j**، وهي من أوائل وأكثر قواعد البيانات الرسومية استخدامًا. ومن الأنظمة الأخرى الشائعة: **ArangoDB**، و**OrientDB**، و**AllegroGraph**. تتميز هذه النظم بمرونتها في التوسع الأفقي، ودعمها لميزات متقدمة مثل تتبع المسارات، والتحليل السياقي للعلاقات، وأنماط الاستعلام التنبؤية.

## مراجع

تصنيف:قواعد بيانات غير علائقية
تصنيف:إدارة البيانات
تصنيف:تحليل البيانات