تثبيت وإدارة قاعدة بيانات MongoDB في ServBay
يُعد MongoDB من أبرز قواعد بيانات NoSQL الوثائقية، ويشتهر بمرونته وقدراته القوية في الاستعلام وقابليته العالية للتوسع الأفقي، ما جعله خيارًا شائعًا لتطوير التطبيقات الحديثة. يقدم ServBay للمطورين على نظام macOS بيئة تكاملية غير مسبوقة، تُسهّل بدرجة كبيرة تثبيت، تكوين، وإدارة عدة إصدارات من MongoDB، مع مجموعة متكاملة من أدوات السطر الأوامر الأساسية، لتتمكن من بناء محطة تطوير واختبار محلية متكاملة وفعالة.
نظرة عامة: لماذا تستخدم MongoDB عبر ServBay؟
ServBay ليس مجرد مشغل للتطبيقات، بل هو مدير بيئة تطوير متكامل. ومع MongoDB، هذا يعني:
- تعدد الإصدارات وإمكانية التبديل السريع: يمكنك تثبيت وتشغيل أكثر من إصدار من MongoDB (مثل 5.0 ،6.0 ،7.0 وغيرها) بضغطة زر واحدة، والتبديل بينها بسهولة حسب احتياج المشروع، دون أي تعارض في البيئة.
- تكوين رسومي: وداعًا لتحرير ملفات الإعدادات المملة يدويًا. في واجهة ServBay الرسومية، يمكنك ضبط منافذ MongoDB، عنوان IP، ومسار بياناتها وغيرها من المعاملات الجوهرية بشكل مرئي وسهل.
- سلسلة أدوات متكاملة: يدير ServBay تلقائيًا الأدوات الرسمية مثل MongoDB Shell (
mongosh
) وأدوات قواعد بيانات MongoDB، لتتمكن من استخدام أدوات مثلmongostat
,mongotop
,mongodump
, وmongorestore
فورًا دون إعدادات معقدة.
يوفر لك هذا الدليل إرشادًا شاملًا خطوةً بخطوة، من التثبيت إلى التحكم الكامل، ليغطي جميع الجوانب الأساسية: الإعداد، الإدارة التفاعلية، المراقبة اللحظية للأداء، النسخ الاحتياطي للبيانات والاستعادة والمزيد.
1. تثبيت وتكوين خدمة MongoDB
الخطوة 1: تثبيت حزمة MongoDB
تُعد عملية تثبيت خدمة MongoDB على ServBay هي البداية الأساسية.
افتح تطبيق ServBay.
من شريط التنقل على اليسار، اضغط على الحزم (Packages).
من قائمة الحزم، انتقل للأسفل إلى تصنيف
Databases
وابحث عن قسمMongoDB
.اختر الإصدار الذي يحتاجه مشروعك (مثل
MongoDB 7.0
) واضغط زر التثبيت على يمينه. سيقوم ServBay بتنزيله وتثبيته تلقائيًا.
الخطوة 2: تخصيص إعدادات خدمة MongoDB
بعد التثبيت، يمكنك إعداد خدمة MongoDB بتفصيل أكبر.
من شريط التنقل على اليسار، انتقل إلى Databases -> MongoDB -> الإصدار الذي قمت بتثبيته (مثلاً
MongoDB 7.0
).في هذه الشاشة يمكنك تخصيص الإعدادات الأساسية التالية:
- Bind IP (عنوان IP المربوط): هذا هو عنوان IP الذي يقوم MongoDB بالاستماع عليه لطلبات الشبكة. القيمة الافتراضية
127.0.0.1, ::1
توفّر أعلى درجات الأمان للتطوير المحلي، بما يعني أن التطبيقات المحلية فقط يمكنها الاتصال بقاعدة البيانات. - Bind Port (منفذ الربط): منفذ الاتصال بقاعدة البيانات. المنفذ الافتراضي في MongoDB هو
27017
، ويُنصح بالإبقاء عليه ما لم توجد حاجة خاصة للتغيير. - Socket: هذا هو مسار ملف مأخذ يونكس. للاتصالات المحلية، يوفر Socket أداءً أعلى من TCP/IP، حيث يتجنب طبقة الشبكة.
- Data dir (دليل البيانات): هو المسار المحلي على القرص حيث تُخزن جميع ملفات MongoDB (المجموعات والفهارس وغيرها). يقوم ServBay بضبط قيمة افتراضية ملائمة تلقائيًا، ويمكنك النقر على أيقونة المجلد للانتقال السريع إليه عبر Finder.
- Additional Parameters (معلمات إضافية): منطقة متقدمة للإعدادات. يمكنك هنا إدخال معلمات بدء تشغيل إضافية لـMongoDB، مثل
--auth
إذا كنت تريد تفعيل التحكم في الوصول.
- Bind IP (عنوان IP المربوط): هذا هو عنوان IP الذي يقوم MongoDB بالاستماع عليه لطلبات الشبكة. القيمة الافتراضية
الخطوة 3: تشغيل خدمة MongoDB
- بعد إتمام الإعدادات، لا تنس الضغط على زر حفظ (Save) أسفل يمين الشاشة.
- عُد إلى صفحة الحزم (Packages)، وابحث عن إصدار MongoDB الذي قمت بتكوينه، اضغط زر التبديل الرمادي لتشغيل الخدمة.
- عند تحول الزر إلى اللون الأخضر وظهور إشارة الحالة، فهذا يعني أن مثيل MongoDB قد بدأ بنجاح وهو جاهز لاستقبال الاتصالات.
2. الإدارة التفاعلية: إتقان MongoDB Shell (mongosh
)
يُعد mongosh
واجهة السطر الأوامر الرسمية والمحدثة لـMongoDB، ويوفر إبرازًا للغة، إكمالًا تلقائيًا ذكيًا، سجل أوامر، وإمكانات نصية موسعة، مما يجعله الخيار الأمثل لإدارة قاعدة البيانات بشكل تفاعلي.
تثبيت MongoDB Shell
يوفر ServBay mongosh
كحزمة منفصلة يمكنك تثبيتها عند الحاجة.
- في صفحة الحزم (Packages)، ابحث عن
MongoDB Shell
. - اضغط زر التثبيت على يمينه. بعد التثبيت، يصبح أمر
mongosh
متوفرًا عالميًا ضمن بيئة الطرفية التي يديرها ServBay.
كيف تستخدم mongosh
يمكنك استخدام mongosh
ضمن أي طرفية تدعم بيئة ServBay (مثل Terminal في macOS أو iTerm2).
الاتصال الأساسي: افتح الطرفية، واكتب أبسط أمر للاتصال بمثيل MongoDB المحلي على المنفذ
27017
:bashmongosh
1يمكنك أيضًا استخدام سلسلة اتصال صريحة:
bashmongosh "mongodb://127.0.0.1:27017"
1أمثلة متقدمة للإدخال التفاعلي (تطبيق CRUD): بعد النجاح في الاتصال، ستدخل بيئة JavaScript تفاعلية قوية. لنجرّب مثالاً عمليًا كاملًا:
الخطوة 1: اختيار أو إنشاء قاعدة بيانات
javascript// هذا الأمر يبدل إلى قاعدة البيانات servbay-demo. إذا لم تكن موجودة، سيتم إنشاؤها تلقائيًا عند أول عملية كتابة. use servbay-demo
1
2الخطوة 2: إنشاء مجموعة وإدخال بيانات (Create)
javascript// إدخال مستند مستخدم فردي db.users.insertOne({ _id: 1, name: "Alice", email: "alice@servbay.demo", age: 30, tags: ["developer", "php", "backend"], joined_date: new Date("2023-01-15") }) // إدخال عدة مستخدمين، لإثراء الاستعلامات لاحقًا db.users.insertMany([ { _id: 2, name: "Bob", email: "bob@servbay.demo", age: 25, tags: ["designer", "ui", "frontend"] }, { _id: 3, name: "Charlie", email: "charlie@servbay.demo", age: 35, tags: ["developer", "python", "data"] }, { _id: 4, name: "Diana", email: "diana@servbay.demo", age: 29, tags: ["developer", "nodejs", "backend"] } ])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16الخطوة 3: الاستعلام عن البيانات (Read)
javascript// استعلام جميع المستندات في المجموعة، مع إظهار النتائج بشكل منسق db.users.find().pretty() // استعلام بشرط: العثور على جميع المطورين ممن أعمارهم أكبر من 28 سنة db.users.find({ age: { $gt: 28 }, tags: "developer" }) // إرجاع حقول محددة فقط (الاسم والبريد) db.users.find({}, { name: 1, email: 1, _id: 0 })
1
2
3
4
5
6
7
8الخطوة 4: تحديث البيانات (Update)
javascript// تحديث مستند فردي: إضافة وسم 'lead' إلى Alice وتحديث عمرها db.users.updateOne( { name: "Alice" }, { $set: { age: 31 }, $addToSet: { tags: "lead" } } // $addToSet يضمن عدم التكرار في الوسوم ) // تحديث عدة مستندات: إضافة الحالة 'active' لجميع مطوري backend db.users.updateMany( { tags: "backend" }, { $set: { status: "active" } } )
1
2
3
4
5
6
7
8
9
10
11الخطوة 5: حذف البيانات (Delete)
javascript// حذف مستند مستخدم واحد db.users.deleteOne({ name: "Bob" }) // التحقق من نتيجة الحذف db.users.find({ name: "Bob" }).count() // يفترض أن يُرجع 0
1
2
3
4
5
3. المراقبة اللحظية والإدارة: إتقان أدوات MongoDB Database Tools
يأتي ServBay مدمجًا مع حزمة MongoDB Database Tools
، والتي تشمل أدوات مثل mongostat
, mongotop
, mongodump
, وmongorestore
والتي تُعتبر أساسية للإدارة المتقدمة والصيانة.
تثبيت MongoDB Database Tools
- في صفحة الحزم (Packages)، ابحث عن
MongoDB Database Tools
. - اضغط زر التثبيت على اليمين.
3.1 استخدام mongostat
لمراقبة الحالة اللحظية
يُشبه mongostat
بمخطط القلب لمراقبة MongoDB، حيث يعرض مؤشرات الأداء الرئيسية كمخططات عالية التردد، وهو أداة مثالية لتشخيص عنق الزجاجة في الأداء ومراقبة التحميل.
الاستخدام الأساسي: افتح طرفية جديدة، شغل الأمر التالي وسيعمل على تحديث المؤشرات كل ثانية تلقائيًا:
bashmongostat
1سترى مخرجات مشابهة لما يلي، حيث يمثل كل سطر لقطة لحظية:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 103b 501b 4 Nov 26 15:30:00.001 *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 71b 501b 4 Nov 26 15:30:01.001
1
2
3شرح الأعمدة المهمة:
insert
,query
,update
,delete
: عدد كل عملية في الثانية.dirty
: نسبة البيانات المعدلة التي لم تتم كتابتها بعد للقرص.used
: نسبة الذاكرة المؤقتة المُستخدمة بواسطة محرك التخزين.vsize
,res
: استخدام الذاكرة الافتراضية والذاكرة المقيمة.qrw
,arw
: عدد العملاء المنتظرين للقراءة/الكتابة في قائمة الانتظار.net_in
,net_out
: كمية نقل البيانات الداخلة والخارجة عبر الشبكة.conn
: عدد الاتصالات الحالية.
سيناريو عملي: مراقبة حمل إدخال عالٍ
- افتح طرفية (A)، واتصل بـ
mongosh
، ونفذ السكريبت التالي لمحاكاة إدخالات سجلات متكررة:javascript// يُشغل داخل mongosh use log_system print("Starting high-frequency log insertion...") while (true) { db.app_logs.insertOne({ level: "INFO", message: "User activity detected.", timestamp: new Date() }); sleep(50); // إدخال كل 50 مللي ثانية (20 مرة في الثانية) }
1
2
3
4
5
6
7 - افتح طرفية ثانية (B)، وشغل
mongostat
، واضبط التحديث كل ثانيتين لتجميع القراءات:bashmongostat 2
1 - راقب مخرجات الطرفية B، حيث سترى عمود
insert
يعرض تقريباً*40
(20 عملية إدخال في الثانية × كل 2 ثانية)، ما يُظهر واضحًا أن معظم النشاط الحالي هو كتابة بيانات.
- افتح طرفية (A)، واتصل بـ
3.2 استخدام mongotop
لتعقب استهلاك الوقت لكل مجموعة
في حين يُبيّن لك mongostat
مدى ازدحام قاعدة البيانات، يُوضح لك mongotop
أي المجموعات تستهلك الوقت الأكبر، من خلال تتبع زمن القراءة والكتابة لكل مجموعة (collection).
الاستخدام الأساسي: شغل
mongotop
في الطرفية. يعمل على التحديث كل ثانية بشكل افتراضي.bashmongotop
1مثال مخرجات:
ns total read write time local.oplog.rs 1101ms 155ms 946ms Nov 26 15:35:00.000 servbay-app.sessions 210ms 1ms 209ms Nov 26 15:35:00.000 servbay-app.articles 15ms 15ms 0ms Nov 26 15:35:00.000
1
2
3
4تفسير الأعمدة المهمة:
ns
: مساحة الاسم (اسم قاعدة البيانات.اسم المجموعة).total
: الزمن الإجمالي لعمليات القراءة والكتابة على المجموعة.read
: زمن عمليات القراءة.write
: زمن عمليات الكتابة.
سيناريو عملي: تحديد المجموعات الأكثر استهلاكا للأداء
- في طرفية (A) باستخدام
mongosh
، شغل محاكاة لتطبيق يُحدّث جلسات المستخدمين باستمرار ويقرأ المقالات أحيانًا:javascript// يشغل داخل mongosh use servbay_app print("Simulating application load...") // تحديث الجلسات بشكل متكرر setInterval(() => { db.sessions.updateOne({ sid: "session_abc" }, { $set: { data: Math.random() } }, { upsert: true }); }, 50); // كل 50 مللي ثانية // قراءة مقالات بشكل أقل تكرارا setInterval(() => { db.articles.find({ tags: "featured" }).limit(5).toArray(); }, 500); // كل 500 مللي ثانية
1
2
3
4
5
6
7
8
9
10
11
12 - في طرفية (B)، شغل
mongotop
واضبط التحديث لكل 5 ثوانٍ لاستقرار القراءات:bashmongotop 5
1 - راقب مخرجات الطرفية B، ستلاحظ أن مجموعة
servbay_app.sessions
تستحوذ على زمن كبير في الكتابة والإجمالي، بينما تكونservbay_app.articles
منخفضة في زمن القراءة، ما يقودك لاستنتاج أن عنق الزجاجة في التطبيق هو كثافة الكتابة في الجلسات، وربما يتوجب تحسين استراتيجية إدارة الجلسات.
- في طرفية (A) باستخدام
3.3 استخدام mongodump
للنسخ الاحتياطي
أداة mongodump
تتيح لك إنشاء نسخة احتياطية ثنائية (BSON) لبيانات MongoDB بسرعة وموثوقية.
- نسخ احتياطي لقاعدة بيانات واحدة:bash
mongodump --db servbay-demo --out /Applications/ServBay/backup/mongodb/servbay-demo-backup-$(date +%F)
1 - نسخ احتياطي لمجموعة واحدة:bash
mongodump --db servbay-demo --collection users --out /Applications/ServBay/backup/mongodb/users-backup
1 - نسخ احتياطي كامل لكل مثيلات MongoDB (جميع القواعد):bash
mongodump --out /Applications/ServBay/backup/mongodb/full-instance-backup
1
3.4 استخدام mongorestore
لاستعادة البيانات
تُستخدم أداة mongorestore
للاستعادة من نسخ mongodump
، حيث تعيد البيانات بسهولة إلى مثيلات MongoDB.
- استعادة قاعدة بيانات كاملة:bash
# خيار --drop يحذف المجموعات ذات الأسماء المطابقة قبل الاستعادة لضمان عملية نظيفة mongorestore --drop --db servbay-demo /Applications/ServBay/backup/mongodb/servbay-demo-backup-2023-11-26/servbay-demo/
1
2 - استعادة مجموعة واحدة إلى مجموعة جديدة:bash
mongorestore --db servbay-demo --collection users_restored /Applications/ServBay/backup/mongodb/users-backup/users.bson
1
4. الاتصال بأدوات واجهة المستخدم الرسومية (GUI)
بالإضافة لأوامر الطرفية، يمكنك إدارة قاعدة بياناتك من خلال أي أداة رسومية شهيرة مثل MongoDB Compass، TablePlus، أو Studio 3T. يُعد هذا مفيدًا لتصفح البيانات أو بناء أنابيب التجميع المعقدة.
عند ربط أداة GUI الخاصة بك بقاعدة بيانات ServBay، استخدم الإعدادات التالية:
- Host (المضيف):
127.0.0.1
- Port (المنفذ):
27017
- Authentication (المصادقة): اترك هذا الحقل فارغًا إلا إذا فعَّلت المصادقة يدويًا في الإعدادات الإضافية (
--auth
) وأنشأت مستخدمًا.
الخلاصة
يجمع ServBay بين قوة MongoDB وتجربة macOS الأنيقة لتوفير بيئة تطوير محلية لا مثيل لها للمطورين. من خلال هذا الدليل، تعلمت كيفية الإعداد والتشغيل السريع لـMongoDB، كما أصبحت قادرًا على إدارة قاعدة البيانات تفاعليًا عبر mongosh
، مراقبة الأداء باستعمال mongostat
و mongotop
، وإجراء نسخ احتياطي واستعادة للبيانات بشكل موثوق باستخدام mongodump
وmongorestore
. الآن، يمكنك العمل بكفاءة وثقة على مشروعك القادم مع MongoDB!