اذهب إلى المحتوى

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

ما هي قواعد البيانات

تُعرّف قاعدة البيانات Database ببساطة على أنها مجموعة من البيانات المخزّنة بشكل منظم يتيح استرجاعها وتعديلها وحذفها. وانطلاقًا من هذا التعريف يمكن أن نفكّر بعدد من النقاط:

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

بناء على النقاط السابقة، تتكوّن قاعدة البيانات من المكوّنات التالية:

  • البيانات
  • وحدات التخزين
  • نظام إدارة قواعد البيانات

البيانات

تُعرّف البيانات بكل بساطة على أنها كل ما يُخزّن لاستراجعه والعمل عليه وتعديله وتحليله للوصول إلى المعلومات المطلوبة.

وحدات التخزين

وتعد البنية التحتية لقواعد البيانات، إذ تتوضع فيها البيانات بشكل محددٍ ومنظم يُسهّل الوصول إليها. ولهذا المكون بالطبع شقان رئيسيان: أولهما شق برمجي وهي ما يُعرف بالمعمارية Architcture ويحدد طريقة تمثيل البيانات وتخزينها والآخر يتعلق بوسائط تخزين البيانات وهي المكوّن المادي الذي تُخزَّن فيه البيانات وتقرأ وتعدل.

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

إذا لنفكرّ دائمًا بوحدات التخزين على أنها تجهيزات التخزين مع معمارية تخزين البيانات عليها.

نظام إدارة قواعد البيانات

يضم نظام إدارة البيانات Database management system واختصارًا DBMS الأقسام التالية:

  • برمجيات التحكم والإشراف
  • محركات قواعد البيانات
  • واجهات تخاطب برمجية API

برمجيات التحكم والإشراف

تدير هذه البرمجيات عددًا من الوظائف التي تختلف من قاعدة بيانات إلى أخرى، نذكر منها:

  • التحكم بمنح أذونات الدخول والعمل.
  • التأكد من صحة وسلامة البيانات.
  • التأكد من خضوع العمليات إلى قواعد محددة.
  • تسهيل استعادة البيانات في حال حدوث خلل.

محركات قواعد البيانات

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

واجهات تخاطب برمجية API

واجهات تخاطب برمجية هي مجموعة من البرمجيات التي تدير التخاطب بين محرّكات قواعد البيانات والعميل وبين محرّكات قواعد البيانات ووسائط التخزين.

إن أردت الاستزادة، فيمكنك الرجوع إلى مقال دليلك الشامل إلى قواعد البيانات.

ماهية محركات قواعد البيانات

محركات قواعد البيانات

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

ووفقًا لهذا التعريف إضافة إلى مفهوم نظام إدارة قواعد البيانات يمكننا أن نرى سبب وجود الكثير من مزودي قواعد البيانات والكثير من أنظمة قواعد البيانات التي تختلف أو تتشابه بطريقة عملها مثل Oracle DB و MS SQL Server و MySQL و PostgreSQL و Apache Cassandra و Google Bigtable.

الهيكليات التي تبنى عليها محركات قواعد البيانات

تُبنى قواعد البيانات عادة وفق إحدى هيكليتي (أو خوارزميتي) الفهرسة التاليتين:

  • هيكلية "شجرة بي B-tree" أو إحدى نسخها: وهي -باختصار شديد- هيكلية مخصصة لتحسين فعالية المحرّك في قراءة البيانات. تعتمد على هذه الهيكلية قواعد بيانات شهيرة مثل Oracle DB و MS SQL Server وIBM DB2 وPostgreSQL و MySQL ذات المحرّك InnoDB.
  • هيكلية "شجرة LSM": وهي هيكلية مصممة لتحسين فعالية المحرّك عندما تكون عمليات كتابة البيانات هي السائدة. تعتمد على هذه الهيكلية قواعد بيانات شهيرة مثل Apache Cassandra و Google Bigtable و LevelDB و RocksDB وقد ظهرت نسخة لقاعدة البيانات MySQL أخرى تعتمد على توزيعة من RocksDB تعرف بالاسم MyRocks بدلًا من المحرك InnoDB.

حاولت بعض قواعد البيانات استخدام كلا الهيكليتين مثل MongoDB من خلال محركها WiredTiger الذي يأتي بإعدادين مختلفين لدعم B-tree و LSM Tree لكن الأمور لم تسر على ما يرام واختارت الشركة توزيع النسخة التي تعتمد على B-tree.

ما هو دور محركات قواعد البيانات؟

تؤدي محرّكات قواعد البيانات عمومًا معظم وظائف قواعد البيانات وأهمها:

  • إنشاء وقراءة وتحديث وحذف البيانات من قواعد البيانات واختصارًا CRUD.
  • التخزين المؤقت للبيانات ضمن ذواكر مؤقتة caches أو مخازن مؤقتة buffers.
  • ضمان تحقق ميزات ACID لقاعدة البيانات (الكلّية atomicity، التناسق consistency، العزل isolation، الاستمرارية durability).
  • التأكد من إنجاز العمليات المتزامنة بالشكل المطلوب Multiversion Concurrency Control (القراءة والكتابة إلى العنوان ذاته في نفس الوقت).
  • تنفيذ أية عملية ضرورية قبل العمل على البيانات (تحديد موقع التخزين، تهيئة بنية مناسبة، معالجة ما قبل التخزين،..).

هل محركات قواعد البيانات مستقلة عن قواعد البيانات؟

قد تتساءل، هل يتمتع محرك قاعدة البيانات باستقلالية عن منظومة إدارة قواعد البيانات؟ ليس بالضرورة في واقع الأمر. لا يمكن التمييز في كثير من الحالات بين محرّك قاعدة البيانات ومنظومة إدارة قواعد البيانات لعدم وجود فصل رسمي من قبل الشركة المطوّرة وخاصة في قواعد البيانات المدفوعة مثل أوراكل Oracle-DB أو Microsoft SQL Server. إن الغاية الأساسية من وجود محرّك قواعد بيانات مستقل أو قائم بذاته هو إمكانية نقله واستخدامه وتعديله ليناسب قاعدة بيانات أخرى، لذلك نجد توجهًا كهذا في قواعد البيانات مفتوحة المصدر مثل MySQL (انظر مقال مقارنة بين MySQL و MongoDB).

لهذا السبب لا تميز الكثير من الأدبيات المتعلقة بقواعد البيانات بين منظومة إدارة قواعد البيانات ومحرّكات قواعد البيانات، حتى أن بعضها يعد محركات قواعد البيانات هي نفسها قواعد البيانات.

العلاقة بين محركات قواعد البيانات والواجهات البرمجية

قلنا أن الواجهة البرمجية هي وسيلة للتخاطب بين المحرّكات وبين المستخدم أو بين المحرّكات ووسائط التخزين. تُستخدم عادة منهجيتين في تخاطب المستخدم مع محركات قواعد البيانات:

  • استخدام لغة استعلام بنيوية SQL وهي لغة خاصة تُستخدم في تعريف وإنشاء الجداول والسجلات والعمل عليها، وهذا النوع هو الأكثر شيوعًا وخاصة في قواعد البيانات المجدولة أو قواعد البيانات العلائقية Relational database مثل أوراكل و PostgreSQL.
  • استخدام أساليب لا تعتمد كليًا على SQL وتعرف بالاختصار NoSQL وقد ازدادت شعبية هذا النوع من الاستعلامات مع ظهور التخزين البعيد والسحابي والاتجاه نحو تحسين السرعة والتوفر الدائم للبيانات. تعتمد على هذه الواجهات قواعد بيانات عديدة نذكر منها قواعد بيانات الملفات مثل XML و MongoDB، وقواعد بيانات (مفتاح- قيمة) مثل MongoDB، وقواعد البيانات الرسومية مثل Azure Cosmos DB.
  • استخدام واجهات مخصصة للغات البرمجة، وهي مفيدة جدًا للمبرمجين الذين يرغبون بربط تطبيقاتهم مع قواعد بيانات محلية أو بعيدة على خوادم خاصة. صممت الكثير من المكتبات لربط البرمجيات المكتوبة بلغات برمجة مختلفة مع قواعد بيانات مختلفة نذكر منها Mongoose التي تربط تطبيقات React مع قاعدة البيانات MongoDB و ++SQLAPI لربط تطبيقات مكتوبة بلغة ++C مع قاعدة البيانات SQL Server.

وبالتالي لا علاقة لمحركات قواعد البيانات بلغات الاستعلام أو واجهات البرمجة المستخدمة فالغاية في النهاية هي التخاطب مع هذه المحرّكات لتنفيذ المطلوب.

العلاقة بين محركات قواعد البيانات ونوع قاعدة البيانات

تُصمم قواعد البيانات لتتعامل بالطريقة الأمثل مع هيكلية تخزين البيانات في قواعد البيانات، نذكر من هذه الهيكليات:

  • قواعد البيانات العلائقيّة ويُشار إلى منظومتها بالاختصار RDBMS: وتخزن فيها البيانات على شكل جداول مترابطة من صفوف (سجلات) وأعمدة (قيم).
  • قواعد بيانات ملفات Document Database: وتخزّن فيها البيانات ضمن ملفات بأسلوب محدد يسهّل استخلاص البيانات والتعامل معها مثل أسلوب الوسوم tags في ملفات XML.
  • قواعد بيانات قاموسية Dictionary Database: وتخزّن فيها البيانات على شكل مفتاح-قيمة، أي يمكن الوصول إلى أي قيمة بمجرد معرفة مفتاحها والعكس بالعكس.
  • قواعد بيانات كائنية التوجّه Object-oriented Databases: ويجري فيها تخزين البيانات على شكل كائنات مختلفة وتستخدم لتخزين الملفات ومقاطع الصوت والفيديو وهي حديثة العهد نسبيًا.

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

قواعد البيانات الأكثر شعبية وميزات محركاتها

نورد تاليًا لمحة عن أكثر قواعد البيانات استخدامًا في مختلف المجالات وبعض الميزات الخاصة بمحركاتها:

  • قاعدة البيانات Oracle-DB
  • قاعدة البيانات MySQL
  • قاعدة البيانات Microsoft SQL Server
  • قاعدة البيانات PostgreSQL
  • قاعدة البيانات MongoDB

قاعدة البيانات Oracle-DB

تُعد هذه القاعدة من أكثر قواعد البيانات شهرة واستخدامًا في شتى المجالات وإليك بعضًا من ميزاتها:

  • هيكلية التخزين الأساسية: علائقية RDBMS.
  • هيكلية التخزين الثانوية: قواعد بيانات ملفات وقواعد بيانات رسومية وقواعد علائقية فراغية spatial RDBMS.
  • مفتوحة المصدر: لا.
  • الشركة المصممة: Oracle.
  • الأنظمة التي تتعامل معها (بما فيها الخوادم): AIX و HP-UX و Linux و OS X و Solaris و Windows.
  • لغات البرمجة التي تدعمها: معظم اللغات الشعبية ++C و بايثون و جافا و PHP وغيرها الكثير.
  • الواجهات البرمجية وغيرها من طرق الوصول: JDBC و ODBC و ODP.NET و Oracle Call Interface ‏(OCI).
  • لغات الاستعلام: PL/SQL

ميزات المحرّك:

  • دعم عمليات CRUD
  • دعم ميزات ACID
  • دعم إقامة البيانات في الذاكرة
  • دعم الحفاظ على البيانات واستعادتها
  • دعم التعديل المتزامن للبيانات
  • الدعم المباشر للتناسق Immediate Consistency

قاعدة البيانات MySQL

لا تقل هذه القاعدة شهرة من ناحية الميزات والاستخدامات وعدد المستخدمين عن Oracle وتستخدم في شتى المجالات وإليك بعضًا من ميزاتها:

  • هيكلية التخزين الأساسية: علائقية RDBMS.
  • هيكلية التخزين الثانوية: قواعد بيانات ملفات وقواعد علائقية فراغية spatial RDBMS.
  • مفتوحة المصدر: نعم.
  • الشركة المصممة: Oracle.
  • الأنظمة التي تتعامل معها (بما فيها الخوادم): FreeBSD و Linux و OS X و Solaris و Windows
  • لغات البرمجة التي تدعمها: معظم اللغات الشعبية ++C و بايثون و جافا و PHP وغيرها الكثير.
  • الواجهات البرمجية وغيرها من طرق الوصول: JDBC و ODBC و Proprietary native API و ADO.NET.
  • لغات الاستعلام: SQL.

ميزات المحرّك:

  • دعم عمليات CRUD
  • دعم ميزات ACID
  • دعم إقامة البيانات في الذاكرة
  • دعم الحفاظ على البيانات واستعادتها
  • دعم التعديل المتزامن للبيانات
  • الدعم المباشر للتناسق Immediate Consistency

قاعدة البيانات Microsoft SQL Server

وهي قاعدة البيانات الشهيرة من مايكروسوفت وتُعد من أكثر قواعد البيانات شعبية وإليك بعضًا من ميزاتها:

  • هيكلية التخزين الأساسية: علائقية RDBMS.
  • هيكلية التخزين الثانوية: قواعد بيانات ملفات وقواعد بيانات رسومية و قواعد علائقية فراغية spatial RDBMS.
  • مفتوحة المصدر: لا.
  • الشركة المصممة: مايكروسوفت.
  • الأنظمة التي تتعامل معها (بما فيها الخوادم): Linux و Windows.
  • لغات البرمجة التي تدعمها: معظم اللغات الشعبية ++C و بايثون و جافا و PHP ودعمًا خاصًا للغات (NET.) مثل #C وفيجوال بيسك.
  • الواجهات البرمجية وغيرها من طرق الوصول: JDBC و ODBC و ADO.NET و OLE DB و Tabular Data Stream ‏(TDS)
  • لغات الاستعلام ولغات سكربت الخادم: لغات NET. و بايثون و R و Transact SQLو جافا (في الإصدار 2019 وما بعد).

ميزات المحرّك:

  • دعم عمليات CRUD
  • دعم ميزات ACID
  • دعم إقامة البيانات في الذاكرة
  • دعم الحفاظ على البيانات واستعادتها
  • دعم التعديل المتزامن للبيانات
  • الدعم المباشر للتناسق Immediate Consistency

قاعدة البيانات PostgreSQL

إليك بعضًا من ميزات هذه القاعدة الشهيرة:

  • هيكلية التخزين الأساسية: علائقية RDBMS.
  • هيكلية التخزين الثانوية: قواعد بيانات ملفات وقواعد علائقية فراغية spatial RDBMS.
  • مفتوحة المصدر: نعم.
  • الشركة المصممة: PostgreSQL Global Development Group .
  • الأنظمة التي تتعامل معها (بما فيها الخوادم): FreeBSD و Linux و OS X و Solaris و Windows و NetBSD و Unix و Hp-UX.
  • لغات البرمجة التي تدعمها: معظم اللغات الشعبية ++C و بايثون و جافا و PHP ولغات (NET.).
  • الواجهات البرمجية وغيرها من طرق الوصول: native C library و streaming API for large objects و JDBC و ODBC ADO.NET.
  • لغات الاستعلام: SQL.

ميزات المحرّك:

  • دعم عمليات CRUD
  • دعم ميزات ACID
  • دعم الحفاظ على البيانات واستعادتها
  • دعم التعديل المتزامن للبيانات
  • الدعم المباشر للتناسق Immediate Consistency

قاعدة البيانات MongoDB

إليك بعضًا من ميزات هذه القاعدة الشهيرة:

  • هيكلية التخزين الأساسية: قواعد بيانات ملفات.
  • هيكلية التخزين الثانوية: قواعد علائقية فراغية spatial RDBMS وقواعد علائقية مرتبطة بالسلاسل الزمنية Time Serieses RDBMS.
  • مفتوحة المصدر: نعم.
  • الشركة المصممة: MongoDB, Inc.
  • الأنظمة التي تتعامل معها (بما فيها الخوادم): Linux و OS X و Solaris و Windows
  • لغات البرمجة التي تدعمها: معظم اللغات الشعبية.
  • الواجهات البرمجية وغيرها من طرق الوصول: بروتوكول خاص باستخدام JSON
  • لغات الاستعلام: Read-only SQL وجافاسكربت.

ميزات المحرّك:

  • دعم عمليات CRUD
  • دعم محدود لميزات ACID
  • دعم إقامة البيانات في الذاكرة
  • دعم الحفاظ على البيانات واستعادتها
  • دعم التعديل المتزامن للبيانات
  • الدعم المباشر للتناسق Immediate Consistency والتنسيق العرضي Eventual Consistency

خاتمة

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

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...