قضیه CAP

در این نوشته تصمیم دارم شما را با یک مسئله روبه‌رو کنم.

حالت فرضی اول: فرض کنید یک کتاب‌فروشی دو شعبه دارد که یکی در شهر ایلام و دیگری در شیراز قرار دارد و نیز فرض کنید هر دو یک مخزن کتاب یکسان دارند و کتاب‌های خریداری شده را از آن‌جا برای خریداران پست می‌کنند.

حالا اگر یکی از این دو مغازه بخواهند کتابی بفروشند باید چه‌کار کنند؟
احتمالاً درست حدس زدید! او با این که از موجودیِ انبار مطلع است؛ اما باید با شعبه دیگر هماهنگ کند که مبادا شعبه دیگر آن کتاب را فروخته باشد! اگر این کار را نکند، ممکن است یک نسخه کتاب را به دو نفر بفروشند.


در رویداد اخیر و نیز در نوشتۀ بلاکچین از شماره دو نشریه نیم‌خط، کمی با سیستم‌های غیرمتمرکز و اهمیت آن‌ها آشنا شدیم و دیدیم در بسیاری از از مواقع، به دلایل متعددی می‌خواهیم سیستم خود را از حالت مرکزی خارج کنیم.

حالت فرضی دوم: در همین مثال بالا، اگر بخواهیم سیستم را به دو قسمت تقسیم کنیم؛ یعنی، کتاب‌فروشی‌ها ارتباطی با هم نداشته باشند اما کماکان از مخزن مشترک استفاده کنند، چه می‌شود؟

کمی به آن فکر کنید،

چگونه می‌توان مطمئن شد یک کتاب به دو نفر فروخته نشود؟


احتمالا درست فکر کرده‌اید، کار خاصی نمی‌توان کرد!

بیایید کمی علمی‌تر به قضیه نگاه کنیم.

تا کنون درباره سه ویژگی صحبت کردیم:

  1. تقسیم پذیری سیستم
  2. در دسترس بودن خدمت
  3. خدمت درست دادن

قضیه‌ای به نام cap theorem وجود دارد که نشان می‌دهد فقط می‌توان دو تا از این سه ویژگی را به صورت همزمان داشت.

در حالت اولی که بررسی کردیم، سیستم تقسیم نشده بود و ارتباط بین قسمت‌های آن وجود داشت و بنابراین می‌توانستیم همواره خدمت درست ارائه دهیم.

در حالت بعد سیستم را تقسیم کردیم و دیدیم نمی‌توانیم همزمان هم در دسترس باشیم و هم خدمت درست ارائه دهیم.

پس باید انتخاب کنیم!

در سیستم‌های غیرمتمرکز ما همواره ویژگی اول را نیاز داریم و بنابراین فقط می‌توانیم یکی از دو ویژگی دیگر را داشته باشیم!
کمی فکر کنید که در هر موردی داشتن کدام یک منطقی‌تر است؟

مثلاً کمی درباره بانک فکر کنید،

اگر بخواهد غیرمتمرکز شود از دو ویژگی دیگر کدام را باید داشته باشیم؟

به عبارت دقیق‌تر اگر بخواهیم چند شعبه بانک داشته باشیم که ارتباطی با یکدیگر نداشته باشند، از دو ویژگی دیگر کدام را باید فدا کرد؟

* تصاویر از اسلایدهای درس بلاکچین دکتر مداح علی برداشته شده است.

Copyright: Sharif Blockchain Labs,

Dr. Maddah-Ali