PDA

View Full Version : چرا در تئوری cap هر 3 مورد رو نمیتونیم در کنار هم داشته باشیم؟



vb8334
سه شنبه 24 آذر 1394, 16:55 عصر
سلام

قضیه CAP بیانگر این موضوع است که در سیستم‌های توزیع شده شما فقط امکان فراهم کردن دو گزینه از سه گزینه

Consistency, Availability و Partition tolerance را خواهید داشت و گزینه باقیمانده قربانی فراهم کردن سایر گزینه‌ها خواهد شد. چرا ؟

در واقع چرا نمیتونیم این 3 تا رو در کنار هم داشته باشیم؟

با تشکر

phoenix87
چهارشنبه 07 بهمن 1394, 19:12 عصر
در دیتابیس های توزیع شده چون نودها در کلاستر باید با هم مکاتبه کنند باید P باشه در نتیجه شما باید بین CوA یکی رو انتخاب کنید.به این دلیل که برای بدست آوردن A باید داده ها رو replicate کنید.یعنی اگر سه نود به نام a,b,c دارید باید یک کپی در همه نود ها باشه.به این ترتیب اگر هر کدام از نود ها خراب شد کپی دیگه در دسترس باشه که همان ویژگی Availability هست.فرض کنید داده جدید در حال نوشته شدن در a هست اما هنوز فرصت نشده که در b,c نوشته بشه،یک عملیات خواندن در b یا c صورت می گیره در نتیجه نود a داده جدید داره اما بقیه نود ها داده قدیمی در نتیجه اصل consistency که میگه داده های همه نود ها باید یکسان باشه زیر سوال میره.پس اگر قصد دارید برای دسترس پذیری یعنی همان A چند کپی از داده را داشته باشید باید قید C را بزنید.اما هرچند این نوع دیتابیس های AP مکانیزیمی در نظر گرفتند که بتوانند C را هم ساپورت کنند که بهش می گن eventually consistency.
پس شما بر اساس نیازتان بین C و A یکی را انتخاب کنید.