لمحه سريعه عن ال MongoDB

12027594_1061741907204309_3605365387745417797_n
تعريف : MongoDB هي عبارة عن نظام لإدارة قواعد البيانات باستخدم ملفات BSON و هي اختصار لــ Binary JSON. يتميز MongoDB بخاصية الــ ShemaLess إذ لا يلتزم بـــ schema معين لذا قد يختلف محتوى الملفات من حين لآخر. يُعتبر Mongo أيضا نظام scalable حيث يُمكنه التأقلم مع آلاف الطلبات في آن واحد دون أن يؤثر ذلك على سرعة الأداء.

– المميزات
1- يُوفر لغة استعلام غنية و مليئة بالدوال الجاهزة.
2- يتميز بسرعة الأداء و الكفاءة العالية خصوصاً عند إدخال بيانات ذات حجم كبير جداً باستخدام الـــ batch mode حيث يُمكن إدراج مائة ألف عنصر في الثانية الواحدة.
3- يسمح بعمل indexing لخصائص الملفات من أجل تسريع عمليات البحث.
4- يُوفر العديد من الدوال التي نجدها في الــ RDBMS التقليدية (مثل count, group by, …) و يُضيف مميزات أخرى متقدمة مثل استخدام سكربتات MapReduce بلغة JavaScript لزيادة سرعة الأداء بالإضافة إلى إمكانية البحث عن بيانات معينة اعتماداً على الــ geolocation.
5- القدرة على عمل Replication و Partitioning في عدة instances.

تتكون قواعد بيانات الــ mongo من مجموعة من الــ collections, تحتوي كل collection على عدد غير مُحدد من الـ documents حيث يعتمد حجم الــ collection على عدد الملفات الموجودة داخلها فعند إضافة ملف جديد تتم زيادة الحجم بشكل تلقائي ويتم تقليصه عند حذف أحد الملفات. أحد أهم الفروق بين الــ mongo و قواعد البيانات التقليدية هو أن بنية الملف لا تلتزم بقواعد معينة على عكس الـــ MySQL مثلا, حيث نجد أن مكونات الــ rows هي نفسها في الجدول الواحد إذ يجب أن تخضع لقواعد الــ schema الذي تم تعريفه أما الــ mongo فلا يعتمد أي مخطط و بالتالي يُمكن لبنية الملف أن تتغير من وقت لأخر داخل نفس الــ collection.
ملاحظة : الملفات في الــ mongo تُقابل الصفوف في الــ MySQL.

المثال التالي يُوضح كيفية الاعلان عن ملفات في الــ mongo :


{
 "Nom": "Chikoo",
 "Prénom": "Banderas",
 "Âge": 23
}
 
{
 "_id": "C04507",
 "Nom": "Mohamed",
 "Prénom": "AHMED",
 "Pays": "Mauritanie",
 "Adresse Electronique":
 { 
 "E-mail" : " Snack3R@yahoo.fr", 
 "Password": " #*MonGoDb-N0$Q!_" 
 }
}

في هذا المثال لدينا ملفان, يحتوي الأول منهما على 3 حقول بينما يحتوي الثاني على 5, الحقل الأخير يُمثل ملفا حيث يُسمى هذا النوع من التخزين : الملفات المتداخلة أو الــ nested documents.

بالنسبة للمعرف (ID) فيجب دائما أن يكون مسبوقاً بــ underschool, إذا لم نقم بتوفير الــ ID سيقوم الــ mongo بتوليده تلقائيا.

نلاحظ أيضا أن حقول الملفات تتميز بخاصية الـــ strongly-typed إذ لا نحتاج إلى تحديد نوع كل متغير حيث يقوم الــ mongo بتحديد النوع وفقا لمحتوى المتغير.

العيوب:
1-عدم الاستقرار والثبات كتقنية جديدة لقواعد البيانات نظرا لظهورها حديثا وبالتالي فهي ما زالت في فترة  التطوير
2-عدم وجود علاقات
3-لا تدعم ACID المعنية بالحفاظ علي ثبات ووحدة البيانات بعد اجراء العديد من عمليات عليها في آن واحد وتعتبر عيب مشترك لكل التقنيات القائمة علي فكرة قواعد البيانات التي لا تعتمد علي العلاقات في بنائه ولكنها من جهة اخرت تعتمد علي نظرية CAPكمحاولة للحفاظ علي ثبات البيانات

بعض الشركات الداعمة:

SAP,SourceForge,MTV,Disnyp,Theguardian,Forbes.

 ختاما :لقد قمنا بجولة سريعة جداً عن MongoDB ، أتمنى أن تعجبكم. كلما تقدمتم في العمل على MongoDB ستحتاجون إلى أشياء أخرى ربما أكثر تعقيداً ليس بكثير يمكنكم الدخول للموقع الرسمي لل Mongo .

 

  • Mubarak Alsoudi

    عمل رائع