فهم اليومية في MongoDB



تقدم المدونة موجزًا ​​عن Journaling في MongoDB

العمل مع عملية كتابة Mongod

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





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

هنا ، تسمى هذه العملية بخيار No Journal ، مما يعني أنه في حالة وجود تأخير لمدة 60 ثانية لحفظ البيانات من الذاكرة إلى القرص أو إيقاف التشغيل المفاجئ ، فهذا يعني أنه قد لا يتم استرداد أي بيانات موجودة في الذاكرة. وبالتالي ، تصبح اليومية ذات صلة هنا.



فرز وظيفة c ++

من المهم معرفة أنه تم تعطيل ميزة Journaling قبل الإصدار 2.4.10 افتراضيًا ولكن تم تمكينها بعد ذلك.

في اللحظة التي تبدأ فيها عملية المنغود ، يمكن ملاحظة العبارة التالية:

Journal dir = D: Rana2custom datajournal



هنا ، دليل المجلة هو دليل فرعي داخل دليل البيانات ويتم تمكينه افتراضيًا.

ما هو يوميات في MongoDB؟

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

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

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

كيف تعمل؟

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

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

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

كيفية استخدام فئة الماسح الضوئي في جافا

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

الارتباط بين العرض الخاص والعرض المشترك

بعد حدوث الالتزام ، يتم تمييزه كعملية في دليل دفتر اليومية ، وهناك تعيين آخر تم إجراؤه للعرض الحالي للعرض المشترك / الخاص (بدون مشاركة البيانات).

في الرسم البياني ، توجد جميع العناصر الزرقاء في ذاكرة الوصول العشوائي (ذاكرة الوصول العشوائي) ويشير Saffron إلى القرص.

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

من النقاط المهمة التي يجب ملاحظتها أنه في السيناريو الذي يحدث فيه تعطل قبل التزام دفتر اليومية ، كانت البياناتملحقفي غضون 200 مللي ثانية سوف تضيع.

لاحظ أيضًا أنه في دليل المجلة ، نواصل كتابة العملية الفعلية.

في بيان المثال ، مثل 'Db.class.insert' وهي عملية إدراج ، يتم إدخال البيانات في عمليات الفصل. لذا فإن العملية الطبقية لا تبقى في الواقع ولكن العملية قائمة.

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

يمكن للمرء أيضًا أن يكون Journaling في الخلفية كعملية غير متزامنة وعدم القيام بأي شيء في العمليات بطريقة متزامنة. يوصى بتدوين المجلات في الإنتاج أيضًا.

ثانيًا ، يعد الإطار الزمني لفاصل الالتزام في المجلة '200 مللي ثانية' قابلاً للتكوين ، ويمكن تمكينه باستخدام '- - فاصل التزام دفتر اليومية' في أي مكان يتراوح بين 3 إلى 300 مللي ثانية ، والتي تعتمد جميعها على المتطلبات غير العاملة (عدد مرات حدوث عمليات الكتابة و كم مرة يريد المرء أن يكتب في دليل دفتر اليومية). في حالة استمرار عمليات الكتابة المكثفة ، فمن المستحسن أن يكون أقل من مللي ثانية.

لاحظ أيضًا أن العرض الخاص يحتفظ ببيانات فعلية حيث يتم تعيين العرض الخاص مع العرض المشترك. العرض المشترك هنا يومض إلى دليل البيانات.

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

لديك سؤال لنا؟ أذكرها في قسم التعليقات وسنعاود الاتصال بك.

المنشورات ذات الصلة:

سلسلة فيبوناتشي العودية في جافا