أنواع النسخ في MongoDB





مرحبا خابروفيتس! لقد قمنا بفك شفرة جزء من دروس MongoDB من Evgeny Aristov ، وهو مطور يبلغ من العمر 20 عامًا ومؤلف الدورة التدريبية عبر الإنترنت "قواعد البيانات غير العلائقية" . ستكون المادة ، مثل الدورة التدريبية نفسها ، مفيدة للمتخصصين الذين يأتون عبر NoSQL والذين يرغبون في تعلم كيفية تحسين قواعد بياناتهم والعمل معهم.



لماذا التكرار؟



  1. توافر عالية. النسخ الاحتياطي جيد ، لكن نشره يستغرق وقتًا.
  2. التحجيم الأفقي. في حالة نفاد النوى المادية والذاكرة للخادم.
  3. من الأفضل عمل نسخة احتياطية من نسخة متماثلة ، وليس من نسخة رئيسية.
  4. تحميل التوزيع الجغرافي.


في MongoDB ، لا توجد أنواع عديدة من النسخ المتماثل خارج الصندوق: أكثرها صلة في الوقت الحالي هو Replicaset ، والثاني هو Master-slave ، والذي يقتصر على الإصدار 3.6 ولن تتم مناقشته بالتفصيل في هذه المقالة.



# 1. الكتابة والقراءة من الخادم الرئيسي



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







# 2. القراءة من جديلة



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







3 طرق لجعل النسخة المتماثلة قابلة للقراءة:



  • حدد db.slaveOk()
  • حدد المعلمات المطلوبة في سلسلة اتصال برنامج التشغيل
  • حدد كل شيء ، ثم اكتب بشكل أكثر دقة في الاستعلام نفسه ، على سبيل المثال ، اقرأ من الثانوية في المنطقة الجنوبية: db.collection.find({}).readPref( “secondary”, [ { “region”: “South”} ] )


مشاكل قراءة النسخ المتماثلة



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

    , . MongoDB , , , .
  3. , () — «».




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







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







الملامح الرئيسية لهذا التكوين



  • النسخ المتماثل غير المتزامن
  • الحكم خالٍ من البيانات وبالتالي فهو خفيف الوزن للغاية
  • يمكن أن يصبح الابتدائي ثانويًا والعكس صحيح. لا يمكن أن يصبح الحكم إما أساسيًا أو ثانويًا
  • الحد الأقصى لعدد الردود هو 50 ردًا و 7 منهم فقط مؤهلون للتصويت
  • Arbiter Primary Secondary, , .. , Arbiter .


إذا كنت مهتمًا بمعرفة المزيد حول إمكانيات التجميع في MongoDB ، فيمكنك مشاهدة تسجيل للدرس التجريبي بأكمله هنا . في الدرس ، يوضح Evgeny Aristov الاختلافات بين Replicaset و Master-slave ، ويشرح عملية النصاب ، والقياس ، والتجزئة ، والاختيار الصحيح لمفتاح التجزئة.



يعد استكشاف قدرات MongoDB جزءًا من الدورة التدريبية عبر الإنترنت لقواعد البيانات غير العلائقية. الدورة مخصصة للمطورين والمسؤولين وغيرهم من المهنيين الذين يصادفون NoSQL. في الفصل الدراسي ، يتقن الطلاب عمليًا الأدوات الأكثر صلة اليوم: Cassandra و MongoDB و Redis و ClickHouse و Tarantool و Kafka و Neo4j و RabbitMQ.



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



All Articles