تئوری CAP (که به عنوان قضیه CAP نیز شناخته میشود) توسط اریک بروئر در سال 2000 معرفی شد. این تئوری سه ویژگی اساسی سیستمهای توزیعشده را تعریف میکند که شامل Consistency (یکپارچگی)، Availability (دسترسیپذیری) و Partition Tolerance (تحمل پارتیشن) است. طبق تئوری CAP، در یک سیستم توزیعشده، تنها میتوان به دو مورد از این سه ویژگی به طور همزمان دست یافت. به عبارت دیگر، نمیتوان هر سه ویژگی را به صورت همزمان به طور کامل در یک سیستم داشت. این سه ویژگی به شرح زیر هستند:
یکپارچگی (Consistency) : همه کاربران و یا تراکنشها نسخه یکسانی از دادهها را داشته باشند.
دسترسیپذیری (Availability) : سیستم همیشه برای خواندن و نوشتن در دسترس هستش، حتی اگر یک یا چند node از سیستم از کار بیفتد .
تحمل پارتیشن (Partition Tolerance) : در سیستمهای توزیع شده پارتیشن یک قطع ارتباط است . در صورت خرابی شبکه سیستم میتواند همچنان به کار خود ادامه دهد و دادهها را مدیریت کند، حتی اگر برخی nodeها نتوانند با هم ارتباط برقرار کنند.
هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.
تئوری CAP بیان میکند که در یک سیستم توزیعشده، تنها میتوان دو مورد از این سه ویژگی را به صورت همزمان داشت :
یکپارچگی - دسترسیپذیری (CA) : اگر سیستم شما بخواهد یکپارچگی و دسترسیپذیری را حفظ کند، باید از تحمل پارتیشنبندی شبکه صرفنظر کند. در این حالت، سیستم در صورت وقوع قطعی شبکه قادر به ادامه کار نخواهد بود.
یکپارچگی - تحمل پارتیشن (CP) : اگر سیستم شما بخواهد یکپارچگی و تحمل پارتیشن را حفظ کند، باید از دسترسیپذیری صرفنظر کند. در این حالت، در صورت وقوع قطعی شبکه، برخی از nodeها ممکن است در دسترس نباشند.
دسترسیپذیری - تحمل پارتیشن (AP) : اگر سیستم شما بخواهد دسترسیپذیری و تحمل پارتیشن را حفظ کند، باید از یکپارچگی صرفنظر کند. در این حالت، در صورت وقوع قطعی شبکه، دادهها ممکن است ناسازگار باشند.

کلمه ACID در پایگاه داده از حروف اول چهار کلمه تشکیل شده است که تعریفشون به صورت زیر میباشد :

این خواص با هم تضمین میکنند که تراکنشهای پایگاه دادهها به صورت ایمن و قابل اعتماد انجام شوند و دادهها همیشه در یک حالت صحیح و قابل پیشبینی باقی بمانند.