كيفية إنشاء قاعدة بيانات MongoDB: 6 جوانب مهمة يجب معرفتها

نشرت: 2022-11-07

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

كيف يتم تنظيم قاعدة بيانات MongoDB؟

MongoDB هي قاعدة بيانات NoSQL بدون مخطط. هذا يعني أنك لا تحدد بنية للجداول / قواعد البيانات كما تفعل مع قواعد بيانات SQL.

هل تعلم أن قواعد بيانات NoSQL هي في الواقع أسرع من قواعد البيانات العلائقية؟ ويرجع ذلك إلى خصائص مثل خطوط أنابيب الفهرسة والتجزئة والتجميع. تشتهر MongoDB أيضًا بتنفيذ الاستعلام السريع. هذا هو سبب تفضيله من قبل شركات مثل Google و Toyota و Forbes.

أدناه ، سوف نستكشف بعض الخصائص الرئيسية لـ MongoDB.

وثائق

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

في جدول قاعدة البيانات الارتباطية ، يجب إضافة عمود لإضافة حقل جديد. هذا ليس هو الحال مع الحقول في مستند JSON. يمكن أن تختلف الحقول في مستند JSON من مستند إلى آخر ، لذلك لن يتم إضافتها إلى كل سجل في قاعدة البيانات.

يمكن للمستندات تخزين هياكل مثل المصفوفات التي يمكن أن تتداخل للتعبير عن العلاقات الهرمية. بالإضافة إلى ذلك ، يحول MongoDB المستندات إلى نوع JSON ثنائي (BSON). يضمن ذلك وصولاً أسرع ودعمًا متزايدًا لأنواع البيانات المختلفة مثل السلسلة والعدد الصحيح والرقم المنطقي وغير ذلك الكثير!

مجموعات النسخ المتماثلة

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

المجموعات

المجموعة هي مجموعة من الوثائق المرتبطة بقاعدة بيانات واحدة. إنها تشبه الجداول في قواعد البيانات العلائقية.

المجموعات ، مع ذلك ، أكثر مرونة بكثير. لأحد ، لا يعتمدون على مخطط. ثانيًا ، لا يلزم أن تكون المستندات من نفس نوع البيانات!

لعرض قائمة المجموعات التي تنتمي إلى قاعدة بيانات ، استخدم الأمر listCollections .

تجميع خطوط الأنابيب

يمكنك استخدام إطار العمل هذا لربط العديد من العوامل والتعبيرات. إنه مرن لأنه يسمح لك بمعالجة وتحويل وتحليل بيانات أي بنية.

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

فهارس

يمكنك فهرسة أي حقل في مستند MongoDB لزيادة كفاءته وتحسين سرعة الاستعلام. توفر الفهرسة الوقت عن طريق مسح الفهرس للحد من المستندات التي تم فحصها. أليس هذا أفضل بكثير من قراءة كل مستند في المجموعة؟

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

يمكنك الاستفادة من أدوات مثل Performance Advisor لفهم الاستعلام الذي يمكن أن يستفيد من الفهارس.

التقسيم

توزع التجزئة مجموعة بيانات واحدة عبر قواعد بيانات متعددة. يمكن بعد ذلك تخزين مجموعة البيانات هذه على أجهزة متعددة لزيادة سعة التخزين الإجمالية للنظام. هذا لأنه يقسم مجموعات البيانات الأكبر إلى أجزاء أصغر ويخزنها في عقد بيانات مختلفة.

تقوم MongoDB بتقسيم البيانات على مستوى التجميع ، وتوزيع المستندات في مجموعة عبر الأجزاء الموجودة في مجموعة. وهذا يضمن قابلية التوسع من خلال السماح للهندسة المعمارية بمعالجة أكبر التطبيقات.

كيفية إنشاء قاعدة بيانات MongoDB

ستحتاج إلى تثبيت حزمة MongoDB المناسبة لنظام التشغيل الخاص بك أولاً. انتقل إلى صفحة "تنزيل MongoDB Community Server". من الخيارات المتاحة ، حدد أحدث "إصدار" ، وتنسيق "الحزمة" كملف مضغوط ، و "النظام الأساسي" مثل نظام التشغيل الخاص بك وانقر فوق "تنزيل" كما هو موضح أدناه:

توضح هذه الصورة الخيارات المتاحة - الإصدار والنظام الأساسي والحزمة أثناء تنزيل MongoDB Community Server.
عملية تنزيل خادم مجتمع MongoDB. (مصدر الصورة: MongoDB Community Server)

هذه العملية واضحة تمامًا ، لذلك سيكون لديك برنامج MongoDB مثبتًا في نظامك في لمح البصر!

بمجرد الانتهاء من التثبيت ، افتح موجه الأوامر واكتب mongod -version للتحقق منه. إذا لم تحصل على الإخراج التالي وشاهدت بدلاً من ذلك سلسلة من الأخطاء ، فقد تضطر إلى إعادة تثبيته:

هذا مقتطف رمز للتحقق من إصدار MongoDB بعد التثبيت.
التحقق من نسخة MongoDB. (مصدر الصورة: configserverfirewall)

باستخدام شل MongoDB

قبل أن نبدأ ، تأكد مما يلي:

  • عميلك لديه أمان طبقة النقل وهو مدرج في قائمة السماح IP الخاصة بك.
  • لديك حساب مستخدم وكلمة مرور على كتلة MongoDB المطلوبة.
  • لقد قمت بتثبيت برنامج MongoDB على جهازك.

الخطوة 1: الوصول إلى MongoDB Shell

للوصول إلى MongoDB shell ، اكتب الأمر التالي:

 net start MongoDB

يجب أن يعطي هذا الناتج التالي:

هذا مقتطف رمز لتهيئة خادم MongoDB
تهيئة خادم MongoDB. (مصدر الصورة: c-sharpcorner)

قام الأمر السابق بتهيئة خادم MongoDB. لتشغيله ، سيتعين علينا كتابة mongo في موجه الأوامر.

هذا مقتطف رمز لتشغيل خادم MongoDB.
تشغيل خادم MongoDB. (مصدر الصورة: bmc)

هنا في MongoDB shell ، يمكننا تنفيذ أوامر لإنشاء قواعد البيانات ، وإدخال البيانات ، وتحرير البيانات ، وإصدار الأوامر الإدارية ، وحذف البيانات.

الخطوة 2: أنشئ قاعدة البيانات الخاصة بك

على عكس SQL ، لا يحتوي MongoDB على أمر إنشاء قاعدة بيانات. بدلاً من ذلك ، هناك كلمة أساسية تسمى use والتي تقوم بالتبديل إلى قاعدة بيانات محددة. إذا لم تكن قاعدة البيانات موجودة ، فسوف تُنشئ قاعدة بيانات جديدة ، وإلا فسوف ترتبط بقاعدة البيانات الحالية.

على سبيل المثال ، لبدء قاعدة بيانات تسمى "الشركة" ، اكتب:

 use Company
هذا مقتطف رمز لإنشاء قاعدة بيانات في MongoDB.
إنشاء قاعدة بيانات في MongoDB.

يمكنك كتابة db لتأكيد قاعدة البيانات التي أنشأتها للتو في نظامك. إذا انبثقت قاعدة البيانات الجديدة التي أنشأتها ، فقد نجحت في الاتصال بها.

إذا كنت تريد التحقق من قواعد البيانات الموجودة ، فاكتب show dbs وستقوم بإرجاع جميع قواعد البيانات في نظامك:

هذا مقتطف رمز لعرض قواعد البيانات الموجودة في النظام.
عرض قواعد البيانات في MongoDB.

بشكل افتراضي ، يؤدي تثبيت MongoDB إلى إنشاء قواعد بيانات المسؤول والتكوين والمحلية.

هل لاحظت أن قاعدة البيانات التي أنشأناها غير معروضة؟ هذا لأننا لم نحفظ القيم في قاعدة البيانات حتى الآن! سنناقش الإدراج ضمن قسم إدارة قاعدة البيانات.

استخدام واجهة مستخدم Atlas

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

قبل أن نبدأ ، تأكد مما يلي:

  1. عنوان IP الخاص بك موجود في قائمة السماح.
  2. لديك حساب مستخدم وكلمة مرور في مجموعة MongoDB التي تريد استخدامها.

لإنشاء قاعدة بيانات MongoDB باستخدام AtlasUI ، افتح نافذة متصفح وقم بتسجيل الدخول إلى https://cloud.mongodb.com. من صفحة المجموعة الخاصة بك ، انقر فوق استعراض المجموعات . إذا لم تكن هناك قواعد بيانات في المجموعة ، فيمكنك إنشاء قاعدة البيانات الخاصة بك عن طريق النقر فوق الزر "إضافة بياناتي الخاصة" .

سيطلب منك الموجه توفير قاعدة بيانات واسم المجموعة. بمجرد تسميتها ، انقر فوق إنشاء ، والانتهاء من ذلك! يمكنك الآن إدخال مستندات جديدة أو الاتصال بقاعدة البيانات باستخدام برامج التشغيل.

إدارة قاعدة بيانات MongoDB الخاصة بك

في هذا القسم ، سنتعرف على بعض الطرق الرائعة لإدارة قاعدة بيانات MongoDB الخاصة بك بشكل فعال. يمكنك القيام بذلك إما باستخدام MongoDB Compass أو من خلال المجموعات.

استخدام المجموعات

بينما تمتلك قواعد البيانات العلائقية جداول محددة جيدًا مع أنواع وأعمدة بيانات محددة ، فإن NoSQL لديها مجموعات بدلاً من الجداول. لا تحتوي هذه المجموعات على أي بنية ، ويمكن أن تختلف المستندات - يمكن أن يكون لديك أنواع بيانات وحقول مختلفة دون الحاجة إلى مطابقة تنسيق مستند آخر في نفس المجموعة.

للتوضيح ، دعنا ننشئ مجموعة تسمى "الموظف" ونضيف مستندًا إليها:

 db.Employee.insert( { "Employeename" : "Chris", "EmployeeDepartment" : "Sales" } )

إذا كان الإدراج ناجحًا ، فسيتم إرجاع WriteResult({ "nInserted" : 1 }) :

يعرض مقتطف الشفرة هذا WriteResult ({
الإدراج الناجح في MongoDB.

هنا ، يشير "db" إلى قاعدة البيانات المتصلة حاليًا. "الموظف" هي المجموعة التي تم إنشاؤها حديثًا في قاعدة بيانات الشركة.

لم نقم بتعيين مفتاح أساسي هنا لأن MongoDB يقوم تلقائيًا بإنشاء حقل مفتاح أساسي يسمى "_id" وتعيين قيمة افتراضية له.

قم بتشغيل الأمر أدناه للتحقق من المجموعة بتنسيق JSON:

 db.Employee.find().forEach(printjson)

انتاج:

 { "_id" : ObjectId("63151427a4dd187757d135b8"), "Employeename" : "Chris", "EmployeeDepartment" : "Sales" }

أثناء تعيين قيمة "_id" تلقائيًا ، يمكنك تغيير قيمة المفتاح الأساسي الافتراضي. هذه المرة ، سنقوم بإدراج مستند آخر في قاعدة بيانات "الموظف" ، مع قيمة "_id" كـ "1":

 db.Employee.insert( { "_id" : 1, "EmployeeName" : "Ava", "EmployeeDepartment" : "Public Relations" } )

عند تشغيل الأمر db.Employee.find().forEach(printjson) نحصل على المخرجات التالية:

يعرض الإخراج المستندات الموجودة في مجموعة الموظف مع مفتاحهم الأساسي
المستندات الموجودة في المجموعة بمفتاحها الأساسي.

في الإخراج أعلاه ، تم تعيين قيمة "_id" لـ "Ava" على "1" بدلاً من تعيين قيمة تلقائيًا.

الآن بعد أن أضفنا القيم بنجاح إلى قاعدة البيانات ، يمكننا التحقق مما إذا كانت تظهر ضمن قواعد البيانات الموجودة في نظامنا باستخدام الأمر التالي:

 show dbs
يُظهر الإخراج مجموعة الموظف في قواعد البيانات الموجودة في نظامنا.
عرض قائمة قواعد البيانات.

وفويلا! لقد نجحت في إنشاء قاعدة بيانات في نظامك!

باستخدام بوصلة MongoDB

على الرغم من أنه يمكننا العمل مع خوادم MongoDB من Mongo shell ، إلا أنه قد يكون مملاً في بعض الأحيان. قد تواجه هذا في بيئة الإنتاج.

ومع ذلك ، هناك أداة بوصلة (تسمى بشكل مناسب Compass) تم إنشاؤها بواسطة MongoDB والتي يمكن أن تجعل الأمر أسهل. يحتوي على واجهة مستخدم رسومية أفضل ووظائف مضافة مثل تصور البيانات وتوصيف الأداء ووصول CRUD (إنشاء وقراءة وتحديث وحذف) إلى البيانات وقواعد البيانات والمجموعات.

يمكنك تنزيل Compass IDE لنظام التشغيل الخاص بك وتثبيته من خلال عمليته المباشرة.

بعد ذلك ، افتح التطبيق وقم بإنشاء اتصال بالخادم عن طريق لصق سلسلة الاتصال. إذا لم تتمكن من العثور عليه ، يمكنك النقر فوق تعبئة حقول الاتصال بشكل فردي . إذا لم تقم بتغيير رقم المنفذ أثناء تثبيت MongoDB ، فما عليك سوى النقر فوق زر الاتصال ، وستكون في! عدا ذلك ، فقط أدخل القيم التي قمت بتعيينها وانقر فوق اتصال .

تُظهر هذه الصورة نافذة الاتصال الجديد ، حيث يمكنك اختيار لصق عنوان url الخاص بالاتصال.
نافذة اتصال جديدة في MongoDB .. (مصدر الصورة: mongodb)

بعد ذلك ، قم بتوفير اسم المضيف والمنفذ والمصادقة في نافذة الاتصال الجديد.

في MongoDB Compass ، يمكنك إنشاء قاعدة بيانات وإضافة مجموعتها الأولى في وقت واحد. إليك كيف تفعل ذلك:

  1. انقر فوق إنشاء قاعدة بيانات لفتح الموجه.
  2. أدخل اسم قاعدة البيانات ومجموعتها الأولى.
  3. انقر فوق إنشاء قاعدة بيانات .

يمكنك إدراج المزيد من المستندات في قاعدة البيانات الخاصة بك عن طريق النقر فوق اسم قاعدة البيانات الخاصة بك ، ثم النقر فوق اسم المجموعة لرؤية علامة التبويب " المستندات" . يمكنك بعد ذلك النقر فوق الزر " إضافة بيانات " لإدراج مستند واحد أو أكثر في مجموعتك.

أثناء إضافة مستنداتك ، يمكنك إدخالها واحدة تلو الأخرى أو كمستندات متعددة في صفيف. إذا كنت تضيف مستندات متعددة ، فتأكد من تضمين هذه المستندات المفصولة بفواصل بين أقواس مربعة. فمثلا:

 { _id: 1, item: { name: "apple", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }, { _id: 2, item: { name: "banana", code: "123" }, qty: 20, tags: [ "B" ] }, { _id: 3, item: { name: "spinach", code: "456" }, qty: 25, tags: [ "A", "B" ] }, { _id: 4, item: { name: "lentils", code: "456" }, qty: 30, tags: [ "B", "A" ] }, { _id: 5, item: { name: "pears", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }, { _id: 6, item: { name: "strawberry", code: "123" }, tags: [ "B" ] }

أخيرًا ، انقر فوق " إدراج " لإضافة المستندات إلى مجموعتك. هذا ما سيبدو عليه نص المستند:

 { "StudentID" : 1 "StudentName" : "JohnDoe" }

هنا ، أسماء الحقول هي "StudentID" و "StudentName". قيم الحقل هي "1" و "JohnDoe" على التوالي.

أوامر مفيدة

يمكنك إدارة هذه المجموعات من خلال إدارة الأدوار وأوامر إدارة المستخدم.

أوامر إدارة المستخدم

أوامر إدارة مستخدم MongoDB تحتوي على أوامر خاصة بالمستخدم. يمكننا إنشاء وتحديث وحذف المستخدمين باستخدام هذه الأوامر.

قطرة المستخدم

يزيل هذا الأمر مستخدمًا واحدًا من قاعدة البيانات المحددة. فيما يلي بناء الجملة:

 db.dropUser(username, writeConcern)

هنا ، username هو حقل مطلوب يحتوي على المستند مع معلومات المصادقة والوصول حول المستخدم. يحتوي الحقل الاختياري writeConcern على مستوى الاهتمام بالكتابة لعملية الإنشاء. يمكن تحديد مستوى القلق بشأن الكتابة من خلال الحقل الاختياري writeConcern .

قبل إسقاط مستخدم لديه دور userAdminAnyDatabase ، تأكد من وجود مستخدم آخر على الأقل لديه امتيازات إدارة المستخدم.

في هذا المثال ، سنقوم بإسقاط المستخدم "user26" في قاعدة بيانات الاختبار:

 use test db.dropUser("user26", {w: "majority", wtimeout: 4000})

انتاج:

 > db.dropUser("user26", {w: "majority", wtimeout: 4000}); true
createUser

ينشئ هذا الأمر مستخدمًا جديدًا لقاعدة البيانات المحددة على النحو التالي:

 db.createUser(user, writeConcern)

هنا ، يعد user حقلاً مطلوبًا يحتوي على المستند الذي يحتوي على معلومات المصادقة والوصول حول المستخدم الذي يجب إنشاؤه. يحتوي الحقل الاختياري writeConcern على مستوى الاهتمام بالكتابة لعملية الإنشاء. يمكن تحديد مستوى القلق بشأن الكتابة من خلال الحقل الاختياري ، writeConcern .

createUser خطأ مستخدم مكررًا إذا كان المستخدم موجودًا بالفعل في قاعدة البيانات.

يمكنك إنشاء مستخدم جديد في قاعدة بيانات الاختبار على النحو التالي:

 use test db.createUser( { user: "user26", pwd: "myuser123", roles: [ "readWrite" ] } );

الإخراج كالتالي:

 Successfully added user: { "user" : "user26", "roles" : [ "readWrite", "dbAdmin" ] }
منح الأدوار للمستخدم

يمكنك الاستفادة من هذا الأمر لمنح أدوار إضافية للمستخدم. لاستخدامها ، يجب أن تضع في اعتبارك الصيغة التالية:

 db.runCommand( { grantRolesToUser: "<user>", roles: [ <roles> ], writeConcern: { <write concern> }, comment: <any> } )

يمكنك تحديد كل من الأدوار المحددة من قبل المستخدم والأدوار المضمنة في الأدوار المذكورة أعلاه. إذا كنت ترغب في تحديد دور موجود في نفس قاعدة البيانات حيث يتم تشغيل grantRolesToUser ، فيمكنك إما تحديد الدور باستخدام مستند ، كما هو مذكور أدناه:

 { role: "<role>", db: "<database>" }

أو يمكنك ببساطة تحديد الدور باسم الدور. على سبيل المثال:

 "readWrite"

إذا كنت تريد تحديد الدور الموجود في قاعدة بيانات مختلفة ، فسيتعين عليك تحديد الدور بمستند مختلف.

لمنح دور في قاعدة بيانات ، أنت بحاجة إلى إجراء grantRole الدور على قاعدة البيانات المحددة.

هذا مثال يعطيك صورة واضحة. خذ ، على سبيل المثال ، منتج مستخدم UserUser00 في قاعدة بيانات المنتجات بالأدوار التالية:

 "roles" : [ { "role" : "assetsWriter", "db" : "assets" } ]

توفر عملية grantRolesToUser "productUser00" دور readWrite في قاعدة بيانات المخزون ودور القراءة في قاعدة بيانات المنتجات:

 use products db.runCommand({ grantRolesToUser: "productUser00", roles: [ { role: "readWrite", db: "stock"}, "read" ], writeConcern: { w: "majority" , wtimeout: 2000 } })

أصبح المستخدم productUser00 في قاعدة بيانات المنتجات يمتلك الآن الأدوار التالية:

 "roles" : [ { "role" : "assetsWriter", "db" : "assets" }, { "role" : "readWrite", "db" : "stock" }, { "role" : "read", "db" : "products" } ]
المستخدمينمعلومات

يمكنك استخدام الأمر usersInfo لإرجاع معلومات حول مستخدم واحد أو أكثر. ها هي البنية:

 db.runCommand( { usersInfo: <various>, showCredentials: <Boolean>, showCustomData: <Boolean>, showPrivileges: <Boolean>, showAuthenticationRestrictions: <Boolean>, filter: <document>, comment: <any> } ) { usersInfo: <various> }

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

عند تشغيل الأمر userInfo ، يمكنك الحصول على المعلومات التالية وفقًا للخيارات المحددة:

 { "users" : [ { "_id" : "<db>.<username>", "userId" : <UUID>, // Starting in MongoDB 4.0.9 "user" : "<username>", "db" : "<db>", "mechanisms" : [ ... ], // Starting in MongoDB 4.0 "customData" : <document>, "roles" : [ ... ], "credentials": { ... }, // only if showCredentials: true "inheritedRoles" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedPrivileges" : [ ... ], // only if showPrivileges: true or showAuthenticationRestrictions: true "inheritedAuthenticationRestrictions" : [ ] // only if showPrivileges: true or showAuthenticationRestrictions: true "authenticationRestrictions" : [ ... ] // only if showAuthenticationRestrictions: true }, ], "ok" : 1 }

الآن بعد أن أصبحت لديك فكرة عامة عما يمكنك إنجازه باستخدام الأمر usersInfo ، فإن السؤال التالي الواضح الذي قد ينبثق هو ، ما هي الأوامر التي ستكون مفيدة للنظر إلى مستخدمين محددين ومستخدمين متعددين؟

فيما يلي مثالان مفيدان لتوضيح الشيء نفسه:
للنظر في الامتيازات والمعلومات المحددة لمستخدمين محددين ، ولكن ليس بيانات الاعتماد ، لمستخدم "أنتوني" المحدد في قاعدة بيانات "المكتب" ، قم بتنفيذ الأمر التالي:

 db.runCommand( { usersInfo: { user: "Anthony", db: "office" }, showPrivileges: true } )

إذا كنت تريد إلقاء نظرة على مستخدم في قاعدة البيانات الحالية ، فيمكنك فقط ذكر المستخدم بالاسم. على سبيل المثال ، إذا كنت في قاعدة البيانات الرئيسية وكان هناك مستخدم باسم "Timothy" موجود في قاعدة البيانات الرئيسية ، يمكنك تشغيل الأمر التالي:

 db.getSiblingDB("home").runCommand( { usersInfo: "Timothy", showPrivileges: true } )

بعد ذلك ، يمكنك استخدام مصفوفة إذا كنت ترغب في إلقاء نظرة على المعلومات الخاصة بمختلف المستخدمين. يمكنك إما تضمين الحقول الاختيارية showCredentials و showPrivileges ، أو يمكنك اختيار تركها بالخارج. هذا ما سيبدو عليه الأمر:

 db.runCommand({ usersInfo: [ { user: "Anthony", db: "office" }, { user: "Timothy", db: "home" } ], showPrivileges: true })
إبطال RolesFromUser

يمكنك الاستفادة من الأمر revokeRolesFromUser لإزالة واحد أو أكثر من الأدوار من مستخدم في قاعدة البيانات حيث توجد الأدوار. يحتوي الأمر revokeRolesFromUser على بناء الجملة التالي:

 db.runCommand( { revokeRolesFromUser: "<user>", roles: [ { role: "<role>", db: "<database>" } | "<role>", ], writeConcern: { <write concern> }, comment: <any> } )

في الصيغة المذكورة أعلاه ، يمكنك تحديد كل من الأدوار المحددة من قبل المستخدم والمضمنة في حقل roles . بشكل مشابه للأمر grantRolesToUser ، يمكنك تحديد الدور الذي تريد إبطاله في مستند أو استخدام اسمه.

لتنفيذ الأمر revokeRolesFromUser بنجاح ، يجب أن يكون لديك إجراء revokeRole على قاعدة البيانات المحددة.

إليك مثال لتوجيه هذه النقطة إلى المنزل. كيان productUser00 في قاعدة بيانات المنتجات له الأدوار التالية:

 "roles" : [ { "role" : "assetsWriter", "db" : "assets" }, { "role" : "readWrite", "db" : "stock" }, { "role" : "read", "db" : "products" } ]

سيؤدي الأمر revokeRolesFromUser التالي إلى إزالة اثنين من أدوار المستخدم: دور "القراءة" من products assetsWriter الأصول من قاعدة بيانات "الأصول":

 use products db.runCommand( { revokeRolesFromUser: "productUser00", roles: [ { role: "AssetsWriter", db: "assets" }, "read" ], writeConcern: { w: "majority" } } )

المستخدم "productUser00" في قاعدة بيانات المنتجات لديه الآن دور واحد فقط متبقي:

 "roles" : [ { "role" : "readWrite", "db" : "stock" } ]

أوامر إدارة الدور

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

إسقاط الدور

باستخدام الأمر dropRole ، يمكنك حذف دور محدد من قبل المستخدم من قاعدة البيانات التي تقوم بتشغيل الأمر عليها. لتنفيذ هذا الأمر ، استخدم بناء الجملة التالي:

 db.runCommand( { dropRole: "<role>", writeConcern: { <write concern> }, comment: <any> } )

للتنفيذ الناجح ، يجب أن يكون لديك إجراء dropRole في قاعدة البيانات المحددة. ستزيل العمليات التالية دور writeTags من قاعدة بيانات "products":

 use products db.runCommand( { dropRole: "writeTags", writeConcern: { w: "majority" } } )
خلق الدور

يمكنك الاستفادة من الأمر createRole لإنشاء دور وتحديد امتيازاته. سيتم تطبيق الدور على قاعدة البيانات التي تختار تشغيل الأمر عليها. قد يُرجع الأمر createRole خطأ دور مكررًا إذا كان الدور موجودًا بالفعل في قاعدة البيانات.

لتنفيذ هذا الأمر ، اتبع بناء الجملة المحدد:

 db.adminCommand( { createRole: "<new role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ], writeConcern: <write concern document>, comment: <any> } )

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

لإنشاء دور في قاعدة بيانات ، يجب أن يكون لديك شيئين:

  1. إجراء grantRole على قاعدة البيانات تلك لذكر امتيازات الدور الجديد بالإضافة إلى ذكر الأدوار المراد التوريث منها.
  2. إجراء createRole على مورد قاعدة البيانات هذا.

سينشئ الأمر createRole التالي دور clusterAdmin في قاعدة بيانات المستخدم:

 db.adminCommand({ createRole: "clusterAdmin", privileges: [ { resource: { cluster: true }, actions: [ "addShard" ] }, { resource: { db: "config", collection: "" }, actions: [ "find", "remove" ] }, { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert" ] }, { resource: { db: "", collection: "" }, actions: [ "find" ] } ], roles: [ { role: "read", db: "user" } ], writeConcern: { w: "majority" , wtimeout: 5000 } })
منح الأدوار

باستخدام الأمر منح grantRolesToRole ، يمكنك منح الأدوار لدور محدد من قبل المستخدم. سيؤثر الأمر grantRolesToRole على الأدوار في قاعدة البيانات حيث يتم تنفيذ الأمر.

يحتوي الأمر grantRolesToRole هذا على بناء الجملة التالي:

 db.runCommand( { grantRolesToRole: "<role>", roles: [ { role: "<role>", db: "<database>" }, ], writeConcern: { <write concern> }, comment: <any> } )

تتشابه امتيازات الوصول مع أمر grantRolesToUser - فأنت بحاجة إلى إجراء grantRole على قاعدة بيانات من أجل التنفيذ الصحيح للأمر.

في المثال التالي ، يمكنك استخدام الأمر grantRolesToUser لتحديث دور productsReader في قاعدة بيانات "products" لتوريث امتيازات دور productsWriter :

 use products db.runCommand( { grantRolesToRole: "productsReader", roles: [ "productsWriter" ], writeConcern: { w: "majority" , wtimeout: 5000 } } )
إبطال الامتيازات من الدور

يمكنك استخدام revokePrivilegesFromRole لإزالة الامتيازات المحددة من الدور المحدد من قبل المستخدم في قاعدة البيانات حيث يتم تنفيذ الأمر. للتنفيذ السليم ، يجب أن تضع في اعتبارك الصيغة التالية:

 db.runCommand( { revokePrivilegesFromRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ], writeConcern: <write concern document>, comment: <any> } )

لسحب امتياز ، يجب أن يتطابق نمط "مستند المورد" مع حقل "المورد" الخاص بهذا الامتياز. يمكن أن يكون حقل "الإجراءات" مطابقة تامة أو مجموعة فرعية.

على سبيل المثال ، ضع في اعتبارك الدور manageRole في قاعدة بيانات المنتجات بالامتيازات التالية التي تحدد قاعدة بيانات "المديرين" كمورد:

 { "resource" : { "db" : "managers", "collection" : "" }, "actions" : [ "insert", "remove" ] }

لا يمكنك إبطال إجراءات "الإدراج" أو "الإزالة" من مجموعة واحدة فقط في قاعدة بيانات المديرين. العمليات التالية لا تسبب أي تغيير في الدور:

 use managers db.runCommand( { revokePrivilegesFromRole: "manageRole", privileges: [ { resource : { db : "managers", collection : "kiosks" }, actions : [ "insert", "remove" ] } ] } )
 db.runCommand( { revokePrivilegesFromRole: "manageRole", privileges: [ { resource : { db : "managers", collection : "kiosks" }, actions : [ "insert" ] } ] } )

لإلغاء إجراءات "الإدراج" و / أو "الإزالة" من دور manageRole ، تحتاج إلى مطابقة مستند المورد تمامًا. على سبيل المثال ، تلغي العملية التالية إجراء "الإزالة" فقط من الامتياز الحالي:

 use managers db.runCommand( { revokePrivilegesFromRole: "manageRole", privileges: [ { resource : { db : "managers", collection : "" }, actions : [ "remove" ] } ] } )

ستزيل العملية التالية امتيازات متعددة من الدور "التنفيذي" في قاعدة بيانات المديرين:

 use managers db.runCommand( { revokePrivilegesFromRole: "executive", privileges: [ { resource: { db: "managers", collection: "" }, actions: [ "insert", "remove", "find" ] }, { resource: { db: "managers", collection: "partners" }, actions: [ "update" ] } ], writeConcern: { w: "majority" } } )
الأدوار

سيعيد الأمر rolesInfo معلومات الامتياز والوراثة لأدوار محددة ، بما في ذلك الأدوار المضمنة والمعرفة من قبل المستخدم. يمكنك أيضًا الاستفادة من الأمر rolesInfo لاسترداد جميع الأدوار المحددة في قاعدة البيانات.

للتنفيذ السليم ، اتبع بناء الجملة هذا:

 db.runCommand( { rolesInfo: { role: <name>, db: <db> }, showPrivileges: <Boolean>, showBuiltinRoles: <Boolean>, comment: <any> } )

لإرجاع معلومات دور من قاعدة البيانات الحالية ، يمكنك تحديد اسمه على النحو التالي:

 { rolesInfo: "<rolename>" }

لإرجاع معلومات لدور ما من قاعدة بيانات أخرى ، يمكنك ذكر الدور في مستند يشير إلى الدور وقاعدة البيانات:

 { rolesInfo: { role: "<rolename>", db: "<database>" } }

على سبيل المثال ، يُرجع الأمر التالي معلومات توريث الدور للدور التنفيذي المحدد في قاعدة بيانات المديرين:

 db.runCommand( { rolesInfo: { role: "executive", db: "managers" } } )

سيعيد هذا الأمر التالي معلومات توريث الدور: accountManager في قاعدة البيانات التي يتم تنفيذ الأمر عليها:

 db.runCommand( { rolesInfo: "accountManager" } )

سيعيد الأمر التالي كلاً من الامتيازات ووراثة الدور للدور "تنفيذي" كما هو محدد في قاعدة بيانات المديرين:

 db.runCommand( { rolesInfo: { role: "executive", db: "managers" }, showPrivileges: true } )

لذكر أدوار متعددة ، يمكنك استخدام مصفوفة. يمكنك أيضًا ذكر كل دور في المصفوفة كسلسلة أو وثيقة.

يجب استخدام سلسلة فقط إذا كان الدور موجودًا في قاعدة البيانات التي يتم تنفيذ الأمر عليها:

 { rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ] }

على سبيل المثال ، سيعيد الأمر التالي معلومات عن ثلاثة أدوار في ثلاث قواعد بيانات مختلفة:

 db.runCommand( { rolesInfo: [ { role: "executive", db: "managers" }, { role: "accounts", db: "departments" }, { role: "administrator", db: "products" } ] } )

يمكنك الحصول على كل من الامتيازات ووراثة الدور على النحو التالي:

 db.runCommand( { rolesInfo: [ { role: "executive", db: "managers" }, { role: "accounts", db: "departments" }, { role: "administrator", db: "products" } ], showPrivileges: true } )

تضمين مستندات MongoDB لتحسين الأداء

تتيح لك قواعد بيانات المستندات مثل MongoDB تحديد مخططك وفقًا لاحتياجاتك. لإنشاء مخططات مثالية في MongoDB ، يمكنك تداخل المستندات. لذلك ، بدلاً من مطابقة التطبيق الخاص بك مع نموذج البيانات ، يمكنك إنشاء نموذج بيانات يتوافق مع حالة الاستخدام الخاصة بك.

هل تعاني من مشاكل التوقف و WordPress؟ Kinsta هو حل الاستضافة المصمم لتوفير الوقت! تحقق من ميزاتنا

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

تأكد من أن عبء العمل يمكنه استرداد مستند كلما تطلب الأمر. في الوقت نفسه ، يجب أن يحتوي المستند أيضًا على جميع البيانات التي يحتاجها. هذا أمر محوري للأداء الاستثنائي لتطبيقك.

ستجد أدناه بعض الأنماط المختلفة لتضمين المستندات:

نمط الوثيقة المضمنة

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

نمط المجموعة الفرعية المضمنة

نمط المجموعة الفرعية المضمن هو حالة هجينة. يمكنك استخدامه لمجموعة منفصلة من قائمة طويلة من العناصر ذات الصلة ، حيث يمكنك الاحتفاظ ببعض هذه العناصر في متناول اليد للعرض.

إليك مثال يسرد تقييمات الأفلام:

 > db.movie.findOne() { _id: 321475, title: "The Dark Knight" } > db.review.find({movie_id: 321475}) { _id: 264579, movie_id: 321475, stars: 4 text: "Amazing" } { _id: 375684, movie_id: 321475, stars:5, text: "Mindblowing" }

الآن ، تخيل ألف تقييم مشابه ، لكنك تخطط فقط لعرض أحدثهما عند عرض فيلم. في هذا السيناريو ، من المنطقي تخزين هذه المجموعة الفرعية كقائمة داخل مستند الفيلم:

 > db.movie.findOne({_id: 321475}) { _id: 321475, title: "The Dark Knight", recent_reviews: [ {_id: 264579, stars: 4, text: "Amazing"}, {_id: 375684, stars: 5, text: "Mindblowing"} ] }</code

ببساطة ، إذا كنت تقوم بالوصول بشكل روتيني إلى مجموعة فرعية من العناصر ذات الصلة ، فتأكد من تضمينها.

الوصول المستقل

قد ترغب في تخزين المستندات الفرعية في مجموعتها لفصلها عن المجموعة الأصلية.

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

إذا كنت تتلاعب أو تصل إلى كيان بشكل مستقل ، فأنشئ مجموعة لتخزينها بشكل منفصل للحصول على أفضل الممارسات.

قوائم غير مقيدة

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

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

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

Extended Reference Pattern

The extended reference pattern is like the subset pattern. It also optimizes information that you regularly access to store on the document.

Here, instead of a list, it's leveraged when a document refers to another that is present in the same collection. At the same time, it also stores some fields from that other document for ready access.

For instance:

 > db.movie.findOne({_id: 245434}) { _id: 245434, title: "Mission Impossible 4 - Ghost Protocol", studio_id: 924935, studio_name: "Paramount Pictures" }

As you can see, “the studio_id” is stored so that you can look up more information on the studio that created the film. But the studio's name is also copied to this document for simplicity.

To embed information from modified documents regularly, remember to update documents where you've copied that information when it is modified. In other words, if you routinely access some fields from a referenced document, embed them.

How To Monitor MongoDB

You can use monitoring tools like Kinsta APM to debug long API calls, slow database queries, long external URL requests, to name a few. You can even leverage commands to improve database performance. You can also use them to inspect the ase/” data-mce-href=”https://kinsta.com/knowledgebase/wordpress-repair-database/”>health of your database instances.

Why Should You Monitor MongoDB Databases?

A key aspect of database administration planning is monitoring your cluster's performance and health. MongoDB Atlas handles the majority of administration efforts through its fault-tolerance/scaling abilities.

Despite that, users need to know how to track clusters. They should also know how to scale or tweak whatever they need before hitting a crisis.

By monitoring MongoDB databases, you can:

  • Observe the utilization of resources.
  • Understand the current capacity of your database.
  • React and detect real-time issues to enhance your application stack.
  • Observe the presence of performance issues and abnormal behavior.
  • Align with your governance/data protection and service-level agreement (SLA) requirements.

Key Metrics To Monitor

While monitoring MongoDB, there are four key aspects you need to keep in mind:

1. MongoDB Hardware Metrics

Here are the primary metrics for monitoring hardware:

Normalized Process CPU

It's defined as the percentage of time spent by the CPU on application software maintaining the MongoDB process.

You can scale this to a range of 0-100% by dividing it by the number of CPU cores. It includes CPU leveraged by modules such as kernel and user.

High kernel CPU might show exhaustion of CPU via the operating system operations. But the user linked with MongoDB operations might be the root cause of CPU exhaustion.

Normalized System CPU

It's the percentage of time the CPU spent on system calls servicing this MongoDB process. You can scale it to a range of 0-100% by dividing it by the number of CPU cores. It also covers the CPU used by modules such as iowait, user, kernel, steal, etc.

User CPU or high kernel might show CPU exhaustion through MongoDB operations (software). High iowait might be linked to storage exhaustion causing CPU exhaustion.

Disk IOPS

Disk IOPS is the average consumed IO operations per second on MongoDB's disk partition.

Disk Latency

This is the disk partition's read and write disk latency in milliseconds in MongoDB. High values (>500ms) show that the storage layer might affect MongoDB's performance.

System Memory

Use the system memory to describe physical memory bytes used versus available free space.

The available metric approximates the number of bytes of system memory available. You can use this to execute new applications, without swapping.

Disk Space Free

This is defined as the total bytes of free disk space on MongoDB's disk partition. MongoDB Atlas provides auto-scaling capabilities based on this metric.

Swap Usage

You can leverage a swap usage graph to describe how much memory is being placed on the swap device. A high used metric in this graph shows that swap is being utilized. This shows that the memory is under-provisioned for the current workload.

MongoDB Cluster's Connection and Operation Metrics

Here are the main metrics for Operation and Connection Metrics:

Operation Execution Times

The average operation time (write and read operations) performed over the selected sample period.

Opcounters

It is the average rate of operations executed per second over the selected sample period. Opcounters graph/metric shows the operations breakdown of operation types and velocity for the instance.

روابط

This metric refers to the number of open connections to the instance. High spikes or numbers might point to a suboptimal connection strategy either from the unresponsive server or the client side.

Query Targeting and Query Executors

This is the average rate per second over the selected sample period of scanned documents. For query executors, this is during query-plan evaluation and queries. Query targeting shows the ratio between the number of documents scanned and the number of documents returned.

تشير نسبة عدد عالية إلى العمليات دون المستوى الأمثل. تقوم هذه العمليات بمسح الكثير من المستندات لإرجاع جزء أصغر.

مسح وطلب

يصف متوسط ​​المعدل في الثانية خلال فترة العينة المختارة من الاستعلامات. تقوم بإرجاع النتائج التي تم فرزها والتي لا يمكنها تنفيذ عملية الفرز باستخدام فهرس.

قوائم الانتظار

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

مقاييس النسخ المتماثل MongoDB

فيما يلي المقاييس الأساسية لمراقبة النسخ المتماثل:

نافذة Oplog النسخ المتماثل

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

تأخر النسخ المتماثل

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

إرتفاع النسخ المتماثل

يشير هذا المقياس إلى الفرق بين نافذة oplog للنسخ المتماثل الأساسي وتأخر النسخ المتماثل الثانوي. إذا ذهبت هذه القيمة إلى الصفر ، فقد يتسبب ذلك في انتقال ثانوي إلى وضع الاسترداد.

Opcounters -repl

يتم تعريف Opcounters -repl على أنه متوسط ​​معدل عمليات النسخ المتماثل المنفذة في الثانية لفترة العينة المختارة. باستخدام opcounters -graph / metric ، يمكنك إلقاء نظرة على سرعة العمليات وتفصيل أنواع العمليات للمثيل المحدد.

Oplog جيجابايت / ساعة

يتم تعريف هذا على أنه متوسط ​​معدل الجيجابايت من oplog الذي يولده الأساسي في الساعة. قد تشير الأحجام الكبيرة غير المتوقعة من oplog إلى حمل عمل كتابة غير كافٍ للغاية أو مشكلة في تصميم المخطط.

أدوات مراقبة أداء MongoDB

يحتوي MongoDB على أدوات واجهة مستخدم مضمنة في Cloud Manager و Atlas و Ops Manager لتتبع الأداء. كما يوفر بعض الأوامر والأدوات المستقلة للنظر في المزيد من البيانات القائمة على الخام. سنتحدث عن بعض الأدوات التي يمكنك تشغيلها من مضيف لديه وصول وأدوار مناسبة للتحقق من بيئتك:

mongotop

يمكنك الاستفادة من هذا الأمر لتتبع مقدار الوقت الذي يقضيه مثيل MongoDB في كتابة البيانات وقراءتها لكل مجموعة. استخدم الصيغة التالية:

 mongotop <options> <connection-string> <polling-interval in seconds>

rs.status ()

يقوم هذا الأمر بإرجاع حالة مجموعة النسخ المتماثلة. يتم تنفيذه من وجهة نظر العضو حيث يتم تنفيذ الطريقة.

mongostat

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

استفد من هذا الأمر لمراقبة إحصائيات الخادم الأساسية مثل قوائم انتظار القفل ، وتعطل العملية ، وإحصائيات ذاكرة MongoDB ، والاتصالات / الشبكة:

 mongostat <options> <connection-string> <polling interval in seconds>

dbStats

يقوم هذا الأمر بإرجاع إحصائيات التخزين لقاعدة بيانات محددة ، مثل عدد الفهارس وحجمها وإجمالي بيانات المجموعة مقابل حجم التخزين والإحصاءات المتعلقة بالمجموعة (عدد المجموعات والوثائق).

db.serverStatus ()

يمكنك الاستفادة من الأمر db.serverStatus() للحصول على نظرة عامة على حالة قاعدة البيانات. يمنحك مستندًا يمثل عدادات قياس المثيل الحالي. نفّذ هذا الأمر على فترات منتظمة لجمع الإحصائيات حول المثيل.

كولستاتس

يجمع الأمر collStats إحصائيات مشابهة لتلك التي يقدمها dbStats على مستوى المجموعة. يتكون ناتجها من عدد العناصر في المجموعة ، ومقدار مساحة القرص التي تستهلكها المجموعة ، وحجم المجموعة ، والمعلومات المتعلقة بفهارسها لمجموعة معينة.

يمكنك استخدام كل هذه الأوامر لتقديم تقارير في الوقت الفعلي ومراقبة لخادم قاعدة البيانات مما يتيح لك مراقبة أداء قاعدة البيانات والأخطاء والمساعدة في اتخاذ قرارات مستنيرة لتحسين قاعدة البيانات.

كيفية حذف قاعدة بيانات MongoDB

لإسقاط قاعدة البيانات التي قمت بإنشائها في MongoDB ، تحتاج إلى الاتصال بها من خلال استخدام الكلمة الأساسية.

لنفترض أنك أنشأت قاعدة بيانات باسم "المهندسين". للاتصال بقاعدة البيانات ، ستستخدم الأمر التالي:

 use Engineers

بعد ذلك ، اكتب db.dropDatabase() للتخلص من قاعدة البيانات هذه. بعد التنفيذ ، هذه هي النتيجة التي يمكنك توقعها:

 { "dropped" : "Engineers", "ok" : 1 }

يمكنك تشغيل الأمر showdbs للتحقق مما إذا كانت قاعدة البيانات لا تزال موجودة.

ملخص

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

ما رأيك في أوامر MongoDB هذه؟ هل فاتنا جانب أو طريقة كنت تود رؤيتها هنا؟ اسمحوا لنا أن نعرف في التعليقات!