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

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

يُعرف أيضًا بـ قاعدة بيانات مستندية قاعدة بيانات NoSQL مونجو

التعريف

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

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

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

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

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

أسئلة حول قاعدة بيانات MongoDB

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

ما زلت غير متأكد كيف ينطبق هذا على مشروعك؟

أخبرنا بما تبنيه وسنجيبك بلغة واضحة.