مهندس نرم افزار در اسنپ اکسپرس و سابقا در زرینپال
مفهوم تئوری Cap و مفهوم ACID در پایگاه داده چیست؟
تئوری CAP (که به عنوان قضیه CAP نیز شناخته میشود) توسط اریک بروئر در سال 2000 معرفی شد. این تئوری سه ویژگی اساسی سیستمهای توزیعشده را تعریف میکند که شامل Consistency (یکپارچگی)، Availability (دسترسیپذیری) و Partition Tolerance (تحمل پارتیشن) است. طبق تئوری CAP، در یک سیستم توزیعشده، تنها میتوان به دو مورد از این سه ویژگی به طور همزمان دست یافت. به عبارت دیگر، نمیتوان هر سه ویژگی را به صورت همزمان به طور کامل در یک سیستم داشت. این سه ویژگی به شرح زیر هستند:
یکپارچگی (Consistency) : همه کاربران و یا تراکنشها نسخه یکسانی از دادهها را داشته باشند.
دسترسیپذیری (Availability) : سیستم همیشه برای خواندن و نوشتن در دسترس هستش، حتی اگر یک یا چند node از سیستم از کار بیفتد .
تحمل پارتیشن (Partition Tolerance) : در سیستمهای توزیع شده پارتیشن یک قطع ارتباط است . در صورت خرابی شبکه سیستم میتواند همچنان به کار خود ادامه دهد و دادهها را مدیریت کند، حتی اگر برخی nodeها نتوانند با هم ارتباط برقرار کنند.
هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.
تئوری CAP بیان میکند که در یک سیستم توزیعشده، تنها میتوان دو مورد از این سه ویژگی را به صورت همزمان داشت :
یکپارچگی - دسترسیپذیری (CA) : اگر سیستم شما بخواهد یکپارچگی و دسترسیپذیری را حفظ کند، باید از تحمل پارتیشنبندی شبکه صرفنظر کند. در این حالت، سیستم در صورت وقوع قطعی شبکه قادر به ادامه کار نخواهد بود.
یکپارچگی - تحمل پارتیشن (CP) : اگر سیستم شما بخواهد یکپارچگی و تحمل پارتیشن را حفظ کند، باید از دسترسیپذیری صرفنظر کند. در این حالت، در صورت وقوع قطعی شبکه، برخی از nodeها ممکن است در دسترس نباشند.
دسترسیپذیری - تحمل پارتیشن (AP) : اگر سیستم شما بخواهد دسترسیپذیری و تحمل پارتیشن را حفظ کند، باید از یکپارچگی صرفنظر کند. در این حالت، در صورت وقوع قطعی شبکه، دادهها ممکن است ناسازگار باشند.
کلمه ACID در پایگاه داده از حروف اول چهار کلمه تشکیل شده است که تعریفشون به صورت زیر میباشد :
- اتمی بودن (Atomicity) : به معنای این است که هر تراکنش یا باید به طور کامل انجام شود یا به طور کامل شکست بخورد. به عبارت دیگر، اگر بخشی از تراکنش ناموفق باشد، تمام تراکنش باید لغو شود و دادهها به حالت قبل از تراکنش بازگردند.
- یکپارچگی (Consistency) : این خاصیت تضمین میکند که یک تراکنش باید دادهها را از یک حالت معتبر به حالت معتبر دیگری منتقل کند. یعنی پس از اجرای تراکنش، تمام قوانین جامعیت (constraints) باید برقرار باشند.
- ایزوله بوده (Isolation) : ایزولاسیون تضمین میکند که اجرای همزمان تراکنشها به گونهای انجام شود که انگار هر تراکنش به تنهایی و بدون تأثیر از تراکنشهای دیگر اجرا شده است. این خاصیت از تأثیرات منفی تراکنشهای همزمان بر یکدیگر جلوگیری میکند.
- پایداری (Durability) : پایداری تضمین میکند که وقتی یک تراکنش با موفقیت کامل شد، تغییرات آن به صورت دائمی ذخیره شوند، حتی اگر سیستم دچار خرابی شود.
این خواص با هم تضمین میکنند که تراکنشهای پایگاه دادهها به صورت ایمن و قابل اعتماد انجام شوند و دادهها همیشه در یک حالت صحیح و قابل پیشبینی باقی بمانند.
مطلبی دیگر از این انتشارات
تفاوت دیتابیسهای MySql,PostgreSQL,Cassandra,Mongo
مطلبی دیگر از این انتشارات
سوالات مصاحبه استخدامی برنامه نویس گولنگ golang
مطلبی دیگر از این انتشارات
اموزش مقدماتی تا پیشرفته گولنگ پروژه محور(قسمت اول)