Data Replication - Single Leader Replication

مع مرور الوقت وزيادة حجم البيانات لا يمكن لجهاز واحد أن يتحمل كل هذه البيانات، فلا بد من زيادة عدد الأجهزة وتخزين البيانات عليها، وهنا يمكننا توزيع الـ Read Requests على أكثر من جهاز فبدلًا من قراءة البيانات من جهاز واحد فقط
Data Replication - Single Leader Replication

في هذه الصفحة

مع مرور الوقت وزيادة حجم البيانات لا يمكن لجهاز واحد أن يتحمل كل هذه البيانات، فلا بد من زيادة عدد الأجهزة وتخزين البيانات عليها، وهنا يمكننا توزيع الـ Read Requests على أكثر من جهاز فبدلًا من قراءة البيانات من جهاز واحد فقط، يمكنك قراءة البيانات من أكثر من جهاز والذي يجعل النظام أو التطبيق يخدم عدد أكثر من الـ Requests.

ويوجد لدينا بعض الأجهزة الموزعة أو distributed devices بشكل تلقائي مثل الهاتف المحمول.

لماذا نحتاج إلى توزيع البيانات؟

الأجهزة الموزعة توفر لنا الموثوقية أو ما يعرف بالـ Reliability بمعنى إذا حدث خطأ في Node أو أكثر يستمر التطبيق في العمل دون حدوث عطل أو مشكلة وهذا بسبب وجود Redundant Node تقوم بعمل هذه الـ Node، وهذا يجعل التطبيق Fault Tolerant أي متسامح مع وجود الأخطاء.

لا بُد من توزيع الـ Servers أو الخوادم بطريقة سليمة لتقليل وقت استجابة الخادم والذي يسمى بالـ Latency، خصوصًا عندما يكون التطبيق يعمل في أماكن ومناطق جغرافية مختلفة، فعندما يرسل المستخدم Request فيتم إرسال هذا إلى مكان قريب منه؛ والذي يسرع عملية إسترجاع البيانات. 

توزيع البيانات يتيح لنا حل مشاكل أكبر مثل عمل معالجة بيانات كثيرة  -الـProcessing- على عدد من الأجهزة بشكل أسرع بكثير من معالجتها على جهاز واحد أو عدد أقل من الأجهزة. 

ومع كل هذه المميزات للأنظمة الموزعة يوجد عيوب كذلك. 

عيوب الأنظمة الموزعة:

1- اعتماد الأنظمة الموزعة على شبكة غير معتمد عليها -Unreliable network-، يجعل من الوارد جدًا حدوث مشاكل في الشبكة تسبب عدم اكتمال الـ Request.

2- عمل تطبيق أو نظام يكون قابل لتحمل الأخطاء Fault Tolerant ليس بالشئ السهل وقد يواجهك العديد من التحديات. 

يوجد شكلين للبيانات الموزعة 

  1. إما أن تكون نفس البيانات موجودة على أكثر من جهاز ويطلق عليها “Replication”.
  2. وإما أن تكون البيانات مقسمة أو مجزأة على أكثر من جهاز ويطلق عليها  “Sharding”. 

ما هي الـ Data Replication أو تكرار البيانات؟

وجود أكثر من نسخة من نفس البيانات على أكثر من جهاز متصلين بنفس الشبكة.

لماذا نحتاج إلى تكرار البيانات؟

  • تقليل وقت الاستجابة – Reduce Latency: بجعل البيانات مخزنة على خادم أو Server قريب جغرافيًا من المستخدم بحيث يجعل الـ  Request أسرع.
  • زيادة الإتاحة أو التوفر – Increase Availability: إذا حدث عطل في أي جهاز يوجد بديل له يقوم بنفس المهام ومخزن عليه نفس البيانات حتى لا يحدث عطل للنظام.
  • زيادة عمليات القراءة – Increase Read Throughput: عندما يوجد Read Load فيمكنك توزيع الـ Reads على أكثر من جهاز، فكل جهاز ينفذ عدد من الـ Requests فيمكنني خدمة عدد أكبر من الـ Requests. 

ما هي المشكلة التي نواجهها في عمل تكرار للبيانات؟

دعنا نعرض المشكلة أولًا ثم فيما بعد نعرض حل هذه المشكلة.

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

مثال أولي لتوضيح المشكلة وكيفية حلها:

يوجد لدينا قاعدة بيانات ونحتاج إلى عمل Replica 1 و Replica 2 أي نسختين طبق الأصل منها على جهازين.

ولكن أولًا ما معنى Replica؟

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

اشترك الآن بنشرة اقرأ-تِك الإخبارية

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