محرك قاعدة البيانات database engine (أو محرك التخزين storage engine) هو مكون البرنامج الأساسي الذي يستخدمه نظام إدارة قواعد البيانات (DBMS) لإنشاء بيانات وقراءتها وتحديثها وحذفها. ويرمز لهذه العمليات(انشاء،قراءة،تحديث،حذف) عادة (CRUD).
تتضمن معظم أنظمة إدارة قواعد البيانات واجهة برمجة التطبيقات الخاصة بها (API) application programming interface والتي تسمح للمستخدم بالتفاعل مع المحرك الأساسي دون المرور بواجهة المستخدم الخاصة بنظام إدارة قواعد البيانات.
كثيرًا ما يستخدم مصطلح "محرك قاعدة البيانات database engine" كناية عن "خادم قاعدة البيانات database server " أو "نظام إدارة قاعدة البيانات database management system". تشير "حالة قاعدة البيانات database instance" إلى العمليات وبنى الذاكرة لمحرك قاعدة البيانات قيد التشغيل.
Storage engines
تدعم العديد من أنظمة إدارة قواعد البيانات الحديثة محركات تخزين متعددة داخل نفس قاعدة البيانات. فعلى سبيل المثال ، قاعدة بيانات MySQL تدعم InnoDB وكذلك MyISAM وغيرها . أما MongoDB فلديها WiredTiger وكذا In-Memory ولكل محرك خصائص وميزات فعلى سبيل المثال قد يكون transactional .
تشير transactional في قاعدة البيانات إلى وحدة العمليات ، التي يتم إجراؤها داخل نظام إدارة قاعدة البيانات (أو نظام مشابه) مقابل قاعدة بيانات ، والتي يتم التعامل معها بطريقة متماسكة وموثوقة ومستقلة عن المعاملات الأخرى. تمثل المعاملة بشكل عام أي تغيير في قاعدة البيانات. المعاملات في بيئة قاعدة البيانات لها غرضان رئيسيان:
- لتوفير وحدات عمل موثوقة تسمح بالاسترداد الصحيح من حالات الفشل والحفاظ على قاعدة بيانات متسقة حتى في حالات فشل النظام. على سبيل المثال: عند توقف التنفيذ قبل الأوان وبشكل غير متوقع (كليًا أو جزئيًا) وفي هذه الحالة تظل العديد من العمليات على قاعدة البيانات غير مكتملة ، مع حالة غير واضحة.
- لتوفير العزلة بين البرامج التي تصل إلى قاعدة البيانات بشكل متزامن. إذا لم يتم توفير هذه العزلة ، فمن المحتمل أن تكون نتائج البرامج خاطئة.
متطلبات التصميم Design considerations
في قاعدة البيانات يتم تخزين المعلومات على شكل وحدات صغيرة (بت) حيث يتم وضعها على شكل هياكل بيانات (data structures) في وحدات تخزين يمكن قراءتها وكتابتها بكفاءة وفقًا لخصائص الأجهزة . عادةً ما يتم تصميم التخزين نفسه لتلبية متطلبات المناطق المختلفة التي تستخدم التخزين على نطاق واسع ، بما في ذلك قواعد البيانات. يستخدم نظام DBMS قيد التشغيل دائمًا أنواع تخزين متعددة في وقت واحد (على سبيل المثال ، الذاكرة والتخزين الخارجي) ، مع طرق التخطيط ذات الصلة.
من حيث المبدأ ، يمكن اعتبار تخزين قاعدة البيانات كمساحة عنوان خطية (linear address)، حيث يكون لكل جزء من البيانات عنوانه الفريد في مساحة العنوان هذه. من الناحية العملية ، يتم الاحتفاظ بنسبة صغيرة جدًا من العناوين كنقاط مرجعية أولية (والتي تتطلب أيضًا التخزين) ؛ يتم الوصول إلى معظم البيانات بطريقة غير مباشرة وذلك باستخدام حسابات الإزاحة (المسافة بالبت من النقاط المرجعية) وهياكل البيانات التي تحدد مسارات الوصول (باستخدام المؤشرات) إلى جميع البيانات المطلوبة بطريقة فعالة ، ومحسّنة لعمليات الوصول إلى البيانات المطلوبة.
نموذج الذاكرة المسطح أو الخطي Flat memory model
يشير نموذج الذاكرة المسطحة (Flat memory model) أو نموذج الذاكرة الخطي (linear memory model) إلى نموذج عنونة الذاكرة حيث "تظهر الذاكرة للبرنامج كمساحة عنوان واحدة متجاورة." و يمكن لوحدة المعالجة المركزية معالجة جميع مواقع الذاكرة المتاحة بشكل مباشر (وخطي) دون الحاجة في ذلك اللجوء إلى أي نوع من تقسيم الذاكرة أو مخططات الترحيل (paging schemes).
هياكل البيانات data structures
هيكل البيانات data structure: هو بناء مجرد يدمج البيانات بطريقة محددة ودقيقة. ويشير إلى تنسيق تنظيم وإدارة وتخزين البيانات الذي يتم اختياره عادةً للوصول الفعال إلى البيانات. بتعبير أدق ، هيكل البيانات عبارة عن مجموعة قيم البيانات ، العلاقات فيما بينها ، والوظائف أو العمليات التي يمكن تطبيقها عليها، أي أنها بنية جبرية متعلقة بالبيانات.
تسمح بنية البيانات الفعالة بمعالجة البيانات بطرق أكثر كفاءة وتشمل المعالجة إدخال البيانات وتعديلها أو حذفها واسترجاعها بأوضاع مختلفة. وتختلف كفاءة هياكل البيانات بحسب العمليات فقد يكون بنية البيانات فعالاً في عملية معينة وغير مجدي في عملية أخرى. ويتم تحديد نوع بنية البيانات عند تطوير نظام إدارة قواعد البيانات (DBMS) لتلبية أفضل العمليات المطلوبة لأنواع البيانات التي يحتوي عليها.
عادةً ما يأخذ نوع بنية البيانات المحددة لمهمة معينة في الاعتبار نوع التخزين الذي يتواجد فيه (على سبيل المثال ، سرعة الوصول ، والحد الأدنى من حجم وحدة التخزين التي يتم الوصول إليها ، وما إلى ذلك). بعض قواعد بيانات DBMSs لديها المرونة للاختيار من بين أنواع هياكل البيانات لاحتواء بيانات المستخدم لأسباب تتعلق بالأداء. في بعض الأحيان ، تحتوي هياكل البيانات على معلمات قابلة للتحديد لضبط أداء قاعدة البيانات.
قد تخزن قواعد البيانات بياناتها في عدة أنواع من الهياكل. وكمثال لأكثر هياكل البيانات شيوعاً:
• ordered/unordered flat files
• hash tables
• B+ trees
• ISAM
• heaps