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 بهتره. و در مورد سینکرون و آسنکرون، بستگی به این داره که آیا شما نیاز دارید دادهها همیشه بهروز باشن یا اولویت شما کارایی بیشتره.