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

BASE

"به‌جای اینکه همیشه داده‌ها کاملاً درست و هماهنگ باشن، بهتره سریع‌تر به کاربرا پاسخ بدیم، حتی اگه بعضی از داده‌ها موقتی ناهماهنگ باشن!"


مفهوم BaSE به زبان خودمونی:

اBasically Available:

یعنی سیستم همیشه در دسترسه، حتی اگه بعضی از گره‌ها (Nodes) مشکل داشته باشن.
📌 مثلاً تو یه فروشگاه اینترنتی، حتی اگه بعضی از سرورها داون باشن، باز هم کاربرا بتونن خرید کنن و اطلاعات کلی رو ببینن.

Soft state:

  • یعنی ممکنه داده‌ها توی لحظه دقیقاً هماهنگ نباشن، ولی کم‌کم خودشون اصلاح می‌شن.
    📌 مثلاً اگه تو یه سیستم رزرو بلیط، دوتا نفر هم‌زمان یه صندلی رو انتخاب کنن، ممکنه یه لحظه سیستم هر دو رو قبول کنه، ولی بعد یکی‌شونو لغو کنه.

Eventual consistency:

  • یعنی به جای اینکه همیشه داده‌ها فوراً هماهنگ باشن، سیستم کم‌کم اونارو هماهنگ می‌کنه.
    📌 مثلاً توی اینستاگرام، وقتی یه پست رو لایک می‌کنی، شاید یه لحظه عدد لایک توی گوشی دوستت آپدیت نشه، ولی بعد چند ثانیه درست می‌شه.

    توی این حالت هم consistency در نوشتن داریم (no broken intergrity and wrong db state) فقط برای خوندن و سینک کردن مقدار eventual هستیم

فرق اصلی BaSE با ACID:

  • اACID: داده‌ها همیشه دقیق، درست و هماهنگ باشن، حتی اگه کمی کند بشه. (بانک‌ها، سیستم‌های مالی)
  • اBaSE: کاربر سریع جواب بگیره، حتی اگه داده‌ها یه لحظه ناهماهنگ باشن. (سیستم‌های مقیاس‌پذیر مثل شبکه‌های اجتماعی و فروشگاه‌های آنلاین)

یه مثال واقعی از BASE

تلگرام → وقتی یه پیام می‌فرستی، ممکنه برای چند لحظه "یه تیک" بخوره و بعد که به سرور دیگه‌ای هم برسه، "دو تیک" بشه. یعنی اولش اطلاعات کامل هماهنگ نیست ولی بعدش درست می‌شه.

اینستاگرام → وقتی یه پست لایک می‌کنی، ممکنه چند لحظه طول بکشه تا دوستت لایک رو ببینه، ولی بعدش همه‌جا آپدیت می‌شه.