پرش به مطلب اصلی

Replication

رپلیکا یعنی ما چندتا instance از دیتابیسمون بالا داشته باشیم برای Load Balance دیتابیسمون. حالا چند نوع رپلیکا داریم که هرکدوم مزایا و معایب خودشونو دارن.

Master/Backup Replica

این مدل، یه دیتابیس اصلی (Master) داریم که برای نوشتن داده‌ها استفاده می‌شه و یه یا چند رپلیکا (Backup) داریم که فقط برای خوندن داده‌ها ازشون استفاده می‌کنیم.

Pros:

  • پایداری بیشتر: اگه دیتابیس اصلی (Master) خراب بشه، یکی از رپلیکاها می‌تونه تبدیل به Master بشه.
  • بهینه‌سازی برای خوندن: می‌تونیم درخواست‌های خوندن رو بین رپلیکاها تقسیم کنیم و فشار رو از روی Master برداریم.

Cons:

  • مشکلات هماهنگی: اگه داده‌ای روی Master تغییر کنه، باید این تغییرات به رپلیکاها منتقل بشه که ممکنه یه کمی تاخیر داشته باشه.
  • یکطرفه بودن نوشتن: فقط یک دیتابیس برای نوشتن داریم و این ممکنه محدودیت ایجاد کنه.

Multi-Master Replica

در این مدل، همه دیتابیس‌ها (Master ها) می‌تونن همزمان هم برای نوشتن و هم برای خوندن داده‌ها استفاده بشن. یعنی همه دیتابیس‌ها به صورت همزمان و مستقل تغییرات رو اعمال می‌کنن.

Pros:

  • مقیاس‌پذیری بهتر: چون می‌تونیم داده‌ها رو در چندین Master بنویسیم، مقیاس‌پذیری خیلی بیشتره.
  • توزیع بار بیشتر: بار نوشتن و خوندن به طور مساوی تقسیم می‌شه.

Cons:

  • مشکلات هم‌زمانی: چون چندین Master داریم، ممکنه تغییرات هم‌زمان در دیتابیس‌ها ایجاد بشه و باعث تداخل و ناهماهنگی بشه.
  • پیچیدگی در هماهنگی: برای همگام‌سازی داده‌ها بین Master ها، نیاز به مکانیزم‌های پیچیده‌تری داریم.

Asynchronous vs Synchronous Replica

در رپلیکاها، دو نوع همگام‌سازی داریم: Asynchronous (آسنکرون) و Synchronous (سینکرون).

  • اAsynchronous Replica: در این حالت، داده‌هایی که روی Master نوشته می‌شن، فوراً به رپلیکاها منتقل نمی‌شن. ممکنه یه کمی تاخیر داشته باشه و رپلیکاها همیشه آخرین تغییرات رو نداشته باشن. Data Consistency

    مزایا:

    • عملکرد بالاتر: چون نیاز به همگام‌سازی فوری نیست، کارایی بهتره.
    • مقیاس‌پذیری بیشتر: می‌تونیم درخواست‌ها رو سریع‌تر پردازش کنیم.

    معایب:

    • ممکنه داده‌ها از دست برن: اگه دیتابیس اصلی خراب بشه، ممکنه تغییرات آخرین لحظه روی رپلیکاها منتقل نشده باشه.
  • اSynchronous Replica: در این حالت، هر تغییر روی Master بلافاصله باید به رپلیکاها منتقل بشه و تا زمانی که داده‌ها همگام‌سازی نشدن، عملیات نوشتن تایید نمی‌شه.

    مزایا:

    • اطمینان از هم‌سان بودن داده‌ها: رپلیکاها همیشه آخرین تغییرات رو دارن.

    معایب:

    • عملکرد پایین‌تر: چون منتظریم داده‌ها به رپلیکاها منتقل بشه، ممکنه کارایی کاهش پیدا کنه.
    • مشکلات در مقیاس‌پذیری: انتقال هم‌زمان داده‌ها بین Master و رپلیکاها فشار زیادی وارد می‌کنه.

در کل، انتخاب مدل رپلیکا بستگی به نیازهای شما داره. اگه می‌خواهید پایداری بالا و دسترسی سریع به داده‌ها داشته باشید، مدل Master/Backup می‌تونه مناسب باشه. ولی اگه نیاز به مقیاس‌پذیری بالا و نوشتن در چند نقطه دارید، Multi-Master بهتره. و در مورد سینکرون و آسنکرون، بستگی به این داره که آیا شما نیاز دارید داده‌ها همیشه به‌روز باشن یا اولویت شما کارایی بیشتره.