ماهي قاعدة بيانات الـMongoDB
ماهي قاعدة بيانات الـMongoDB؟
في السابق كان الحديث حول قواعدة البيانات المعروفه و المتوارد بين اقطاب المبرمجين من مختلف الأصعدة ابتدا من web developers إلى الـsoftware developers على مختلف المنصات windows, OSX, Linux و جل الحديث كان يدور حول نوع واحد فقط وهو RDBMS Relational database management system مثل MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access التي تعتمد في حفظ البيانات داخل جداول ولكن في الآونة الأخيرة و بعد صدور عدد من JS Frameworks و ارتفاع عدد مستخدمي لغة الجافاسكربت بدأت شركة 10GEN في العمل على قاعدة بيانات من نوع مختلف تماما عما سبق ذكرة وهي NoSQL تحت اسم MongoDB اي قاعدة بيانات لا توجد بها علاقة بين الجداول وتعتمد في حفظ البيانات كمستندات BOSN ويعد هذا النوع الأشهر بين عائلة الـNoSQL وهنا ننوه بأن جميع ما تعرفه عن الـSQL Databases قد يتغير فبالتاكيد لن يكون هناك كوريز بالطريقة التي اعتدت العمل عليها.
1- أمثله
وبما ان الكثير من المبرمجين لديه خلفية في الـMySQL سأقوم بمقارنة سريعة حول الأختلافات السطحية بين المونجو والـMySQL:
- اسم الـTable في الـMongoDB هو Collection
- اسم الـRow في الـMongoDB هو Document
تعتمد قواعد بيانات الـRDBMS على الجداول كالنحو التالي:
بينما قاعدة بيانات الـMongoDB تعتمد على BSON وهذا يعني Binary Encoding Of JSON Objects وتكون كالنحو التالي:
{
"_id" : ObjectId("57fe832b13e6a51130a23d2a"),
"ID" : 1,
"username" : "abdulla",
"email" : "[email protected]"
}
{
"_id" : ObjectId("57fe832b13e6a51130a23d2b"),
"ID" : 2,
"username" : "omar",
"email" : "[email protected]"
}
{
"_id" : ObjectId("57fe832b13e6a51130a23d2c"),
"ID" : 3,
"username" : "mohammed",
"email" : "[email protected]"
}
امثلة حول الفروقات في عمليات الـQueries مابين الـMongoDB و الـMySQL OR RDBMS ولنفترض بأن لدينا جدول و كولكشن يحتويان على عدد من الصفوف والدوكيومنتس فيهم معلومات حول مستخدمين
- عرض جميع المستخدمين من هم دون السن الـ24
SELECT * FROM users WHERE age < 24
db.users.find({"age": { $lt: 24 }})
// $lt = less than
- عرض جميع المستخدمين الذين اعمارهم مابين الـ20 والـ30
SELECT * FROM `users` WHERE `age` BETWEEN 20 AND 30
db.users.find({ age: { $gt: 20, $lt: 30 }})
// $gt = greater than
- عرض المستخدمين الذين اسمائهم تحتوي على حرف A في الاول او الاخير او المنتصف لايهم
SELECT * FROM `users` WHERE username LIKE %A%
db.users.find({username: /A/})
- و في حالة الإضافة
INSERT INTO `users` (username,age,status) VALUES ('abdulla',25,'active')
db.users.insertOne({username: "abdulla", age: 25, status: "active"})
ولكن هناك فارق كبير في هذه الكويري و بما ان قاعدة بيانات الـMongoDB ليست Relational بالتالي ليس هناك Schema محدده عند الإضافه فتستطيع مثلا إضافة document بمتغير col,field ليس موجود في الـdocument السابق او التالي في نفس الـCollection وبهذا يقال للـMongoDB بأن اهم مميزات هذا النوع من قواعد البيانات بأنه Flexible او Dynamic Schema ومثال على ذلك:
db.users.insert([
{
username: {
fname: "abdulla",
lname: "bahraini"
},
age: 25,
status: "active"
},
{
username: "mohammed",
age: 19,
status: "not active"
}
])
2- لماذا التحول الى MongoDB ( وجهة نظر )
كما اسلفنا سابقا ومع صدور عدد من js frameworks وبالاخص Meanjs المعني ب expressjs , angularjs & nodejs بالاضافه الmongodb و توسع هذه الفريموركس بشكل ضخم و رهيب جدا ومنها النود التي اصبحت خطر داهم على لغة الphp مقارنة بالسرعة, الاداء الرهيب وتناغم المونجو مع هذه الفريموركس بشكل افضل سبب في توجه الكثير من المطورين الى المونجو.
ليس عند هذا الحد وحسب بل نظرا الى سرعة المونجو حسب الاحصائيات تبين اهمه الانتقال من قواعد البيانات الاعتيادية الى المونجو.
تجربة اضافه 10000 صف و دوكيومنت في MySQL و MongoDB .. نلاحظ الفرق في سرعة الاداء احتاج المونجو الى ثانتين لتنفيذ المهمه بينما الMySQL احتاج الى 3 دقائق تقريبا.
3-التثبيت
لتثبيت الـMongoDB قم بالدخول على الرابط واختر ما يناسب نظام جهازك
اقتباس
بعد التثبيت إن كنت من متسخدمي الوندوز انشأ مجلد في داخل الـC (في حال تم تثبيت المونجو في السي)
اقتباسC:\data\db
أضف المتغير التالي في PATH Environment وتجده في المسار التالي
this pc >> proprieties >> Advanced System Settings >> Advanced tab >> Environment Variables >> in System Variables find PATH then Click Edit
اقتباسC:\Program Files\MongoDB\Server\3.2\bin
افتح الـCMD واكتب الكوماند التالي لتفعيل خدمه الـMongoDB في جهازك وستعمل على بورت 27017 بشكل افتراضي
اقتباسmongod
ثم افتح CMD أخر واكتب الكوماند التالي للدخول على MongoDB SHELL
اقتباسmongo
بالتالي ستكون داخل الـMongoDB SHELL وتستطيع التعامل معه من خلال الاوامر المباشرة وللإطلاع اكثر اكتب help
اقتباس
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !