
سنناقش بهذا المقال الخيارات المتنوعة للاتصال بخادم MongoDB، سواءً كان يتضمن قاعدة بيانات وحيدة، أو عدة قواعد بيانات تتمتع كل منها بمَنْفَذٍ خاص. سنعرض أيضًا طريقة الاتصال مع خوادم تعمل على أجهزة متعددة ضمن أمر اتصال واحد، لكن البداية ستكون من تشغيل خادم MongoDB.
تشغيل خادم MongoDB
يمكن تشغيل خادم MongoDB من الملف التنفيذي mongod
الموجود في المجلد bin
ضمن المجلد الخاص بملفات برنامج MongoDB، حيث بعد تنفيذ الأمر mongod
، لن تظهر أي معلومات جديدة على شاشة موجه الأوامر لبعض الوقت حتى يتأسس الاتصال مع خادم MongoDB. وبمجرد إنشاء الاتصال، سيبدأ سجل معلومات الخادم بالظهور.
يمكن الاتصال مع خادم MongoDB بواسطة الصدفة MongoDB Shell، وعند بدء التشغيل سيكون المنفذ 27017 هو المنفذ الافتراضي للاتصال بخادم MongoDB؛ أما إذا أردنا الوصول إلى الخادم من واجهة الويب فيمكننا ذلك باستخدام المنفذ الناتج عن إضافة 1000 إلى رقم منفذ بدء التشغيل، فنكتب عندها الرابط http://localhost:28017
في متصفحنا.
الاتصال بخادم MongoDB من الصدفة Shell
يبين السطر أبسط صيغة لكتابة أمر الاتصال مع خادم MongoDB بعد أن شغلناه، علمًا أننا اكتفينا بخيار واحد فقط من خيارات الاتصال المتعددة، وهو خيار لا غنى عنه؛ إذ إنه يشير إلى اسم الحاسوب المضيف hostname، وهو في حالتنا localhost
:
mongodb://localhost
وبمجرد تنفيذ الأمر سنحصل على الخرج التالي:
إذا عُدنا الآن إلى نافذة موجه الأوامر التي شغلنا فيها خادم MongoDB، وهو نفسه الملف التنفيذي mongod
، سنجد أنها تتضمن خرجًا يشبه التالي:
يمكننا ملاحظة السطر الأخير، فهو يشير إلى إنشاء اتصال جديد مع خادم MongoDB ويتضمن معلومات عن الجهة المتصلة.
ملاحظة: سيظهر هذا السطر عندما ينجح اتصالنا مع الخادم
صيغ متنوعة لأمر الاتصال مع خادم MongoDB
يمكن ذكر الصيغ الآتية لأوامر الاتصال مع خادم MongoDB
الاتصال بقاعدة البيانات الافتراضية باستخدام اسم مستخدم وكلمة مرور
يمكننا الاتصال مع خادم MongoDB بواسطة اسم مستخدم وكلمة مرور محددين وفق الصيغة العامة username@hostname/dbname
، بحيث نعدل اسم المستخدم username إلى اسم المستخدم الذي نود الاتصال بواسطته مع كلمة المرور الخاصة به، كما نبدل اسم الحاسوب المضيف hostname إلى اسم الحاسوب المضيف الفعلي، و dbname إلى اسم قاعدة البيانات؛ وإذا أردنا الاتصال بقاعدة البيانات الافتراضية، يكفي أن نترك اسم قاعدة البيانات فارغ، كما هو الحال في المثال التالي:
mongodb://mongo_admin:AxB6_w3r@localhost/
ولتوضيح الشيفرة أعلاه، يشير mongo_admin إلى اسم المستخدم، و AxB6_w3r إلى كلمة المرور الخاصة به؛ وهو يحاول الاتصال بقاعدة البيانات الافتراضية الموجودة على الحاسوب المحلي localhost
.
وسيكون الخرج كما يلي:
الاتصال بقاعدة بيانات معينة باستخدام اسم مستخدم وكلمة مرور
سنستخدم الصيغة العامة السابقة نفسها username@hostname/dbname
مع تعديل كلمة dbname إلى اسم قاعدة البيانات التي نريد بالاتصال بها، وفق التالي:
mongodb://mongo_admin:AxB6_w3r@localhost/w3r
وباستخدام هذا الأمر سيتصل المستخدم mongo_admin صاحب كلمة المرور AxB6_w3r بقاعدة البيانات w3r الموجودة على الحاسوب المحلي، وسيكون الخرج كما يلي:
وتجدر الإشارة هنا إلى أننا تستطيع الاتصال بأكثر من مُضيف hostname ضمن أمر اتصال واحد.
الاتصال بقاعدة بيانات معينة باستخدام اسم مستخدم وكلمة مرور ومَنفَذ معين
يجري هذا الاتصال بطريقة مشابهة للسابق، بحيث نستخدم الصيغة username@hostname/dbname
ونضع اسم المستخدم وكلمة المرور؛ وبدلًا من dbname، نكتب اسم قاعدة البيانات التي نريد الاتصال بها، يتبعها رقم المَنفَذ port الذي حددناه للاتصال معها، كما هو الحال في المثال التالي:
mongodb://mongo_admin:AxB6_w3r@localhost/w3r:29000
بمعنى أن المستخدم mongo_admin الذي كلمة مروره AxB6_w3r سيحاول الاتصال بقاعدة البيانات w3r الموجودة على الحاسوب المحلي، وذلك عبر المنفذ 29000. وفي الحالات التي لا نذكر فيها رقم منفذ محدد، سيجري الاتصال عبر المنفذ الافتراضي 27107، بحيث سيكون خرج الأمر كما يلي:
الاتصال بخوادم MongoDB متعددة تعمل على أجهزة متعددة
تعمل حالة الاتصال بخوادم MongoDB على أجهزة متعددة عند استخدام مجموعات النسخ المتماثلة replica sets، التي تتألف من عدة عقد تُعدّ نسخًا متطابقة عن بعضها؛ إذ تكتشف المجموعة العقدة الرئيسية Master node تلقائيًا وفي حال فشلت، فإن العقد الثانوية تنوب عنها، وتساعدنا على استرداد النظام من حالات الفشل.
في المثال التالي صيغة الأمر المناسب لهذا النوع من الاتصال:
mongodb://example_host1.com:27017,example_host2.com:27017
الاتصال بخوادم MongoDB متعددة تعمل على الجهاز نفسه ولكل منها منفذ خاص
سنستخدم الأمر التالي للاتصال بخوادم MongoDB المتعددة التي تعمل على الجهاز نفسه، لكن على منافذ ports مختلفة. سيفيدنا هذا أيضًا في مجموعات النسخ المتماثلة replica sets:
mongodb://example_host1.com:27110,example_host1.com:27111
الخيارات المرتبطة بالصيغ السابقة
يبين الجدول التالي الخيارات التي يمكننا استخدامها مع صيغ أوامر الاتصال السابقة:
الخيار Option | الوصف |
---|---|
replicaSet=name |
عند العمل مع أي لغة برمجة يدعمها MongoDB فإن مُشَغِّل driver لهذه اللغة سيستخدم اسم مجموعة النسخ المتماثلة ليعرف العقد التي تنتمي إليها؛ علمًا أن مُشَغِّل لغة البرمجة أو driver هو جزء التعليمات البرمجية المسؤول عن الاتصال بين لغة برمجة التطبيق ونظام MongoDB. |
slaveOk=true|false |
يستخدم هذا الخيار للتعامل مع حالتي الكتابة والقراءة في أنظمة النسخ المتماثلة ذات الخوادم المتعددة، فعند الكتابة تُرسل البيانات إلى الخادم الرئيسي primary وعند القراءة تُرسل البيانات إلى جميع الخوادم الاحتياطية أو الثانوية slaves. |
safe=true|false |
إذا كانت قيمة safe هي true ، فإن مُشَغِّل لغة البرمجة سيُرسل الأمر getLastError بعد تحديث للبيانات ليتأكد من إتمامه بدون أخطاء؛ أما إذا كانت قيمته false ، فلن يُرسل المشغل getLastError بعد التحديثات. |
w=n |
يُضاف { w : n } إلى الأمر getLastError الذي يرسله مُشَغِّل لغة البرمجة، وهو يفرض بطبيعة الحال إسناد القيمة true للخيار safe=true . |
wtimeoutMS=ms |
يُضاف { wtimeout : ms } إلى الأمر getLastError الذي يرسله مُشَغِّل لغة البرمجة، وهو يعني حكمًا أن safe=true . |
fsync=true|false |
إذا كانت قيمة هذا الخيار هي true ، فسيُضاف الخيار { wtimeout : ms } إلى الأمر getLastError الذي يُرسله مُشَغِّل لغة البرمجة، وهذا يفرض بالطبع أن تكون safe=true ؛ أما إذا أعطينا fsync القيمة false ، فإن الأمر getLastError لن يُرسل أبدًا. |
journal=true|false |
إذا أُعطيت القيمة true لهذا الخيار فستجري مزامنة مع يومية قاعدة البيانات journal التي تتضمن عادةً إدخالات قاعدة البيانات التي لم تُثَبَّت بعد uncommitted، وهذه الحالة تفرض دائمًا إسناد القيمة true للخيار safe=true . |
connectTimeoutMS=ms |
يُحدد الزمن الأقصى لمحاولة الاتصال مع خادم MongoDB قبل تصنيفه على أنه اتصال غير ممكن. |
socketTimeoutMS=ms |
يحدد الزمن الأقصى لمحاولة الإرسال أو الاستقبال على مِقبس التوصيل socket قبل إنهاء المحاولة. |
خاتمة
تعرفنا في هذا المقال على الطرق المتنوعة للاتصال مع خادم MongoDB عبر الصدفة mongo shell. وسواءٌ كان ذلك على مُضيف واحد أو على مضيفين متعددين، يرتكز الاتصال على تحديد أربع أمور أساسية هي بيانات المستخدم الذي سيُنجِز الاتصال، واسم قاعدة البيانات، والمَنْفَذ الخاص بها، واسم المُضيف؛ ويمكننا استخدام الخيارات التي عرضناها في الجدول حسب ما تقتضيه طبيعة مشروعنا.
ترجمة -وبتصرف- لمقال MongoDB connections من موقع w3resource.
تعليقات
إرسال تعليق