قضیه CAP (ویژگیهایConsistency,Partition tolerance,Availability)

قضیه CAP : عبارت CAP ترکیب سرنام مفاهیم زیر است:

  • سازگاری (Consistency): در هنگام توزیع شدگی، بخش‌ها اطلاعات یکسانی را در لحظه داشته باشند.
  • دسترسی‌پذیری (Availability): هر درخواست خواندن و نوشتنی همیشه بدون پاسخ نباشد.
  • تحمل بخش‌ها(Partition tolerance): در هنگام توزیع شدگی هر بخشی از داده‌ها جداگانه به کار خود ادامه دهد.

در ادامه توضیحات بیشتری برای هر یک از موارد فوق ( قضیه CAP ) ارائه خواهیم نمود.

1-)سازگاری (C): معادل داشتن یک نسخه واحدِ به­ روز از داده ­ها در تمام سرویس­ دهنده­ ها است. در واقع هردرخواستی که به سیستم ارسال می­شود، داده ­ی یکسانی را بدون توجه به سرویس­ دهنده­ای که درخواست مورد نظر را پاسخ می­دهد، دریافت خواهند کرد.

سیستم­های NoSQL، سطوح مختلفی از سازگاری (برای اعمال خاص) را ارائه می­دهند :

1-1) Replication factor: تعداد گره­ هایی که باید یک نسخه از هر قلم داده را نگهداری کنند. به هر گره­ای که یک نسخه­ ای از داده را دارد، replica گفته می­شود. RF بزرگتر بیان­گر میزان تحمل­پذیری خطای بیشتر است.

2-1) سازگاری نوشتن(W): به ازای هر درخواست نوشتن بر روی هر قلم داده، پس از عمل نوشتن موفقیت آمیز، تاییدیه­ای باید به برنامه کاربردی ارسال گردد. قبل از ارسال این تاییدیه، به تعداد replica هایی که نیاز است تا تایید کنند عمل نوشتن را دریافت کرده­اند، سازگاری نوشتن گویند.

3-1) سازگاری خواندن (R): تعداد replica هایی که باید به یک درخواست خواندن پاسخ دهند تا داده مورد نظر به برنامه مشتری برگردانده شود.

  • اگر W+R>RF باشد، DBMS تضمین می­کند که برنامه کاربردی همیشه مقدار اخیرا نوشته شده (به­روزترین مقدار) را می­خواند. در مقابل اگر سرعت نوشتن و خواندن مهم باشد، می­توان مقدار 1 را برای سازگاری خواندن و نوشتن در نظر گرفت (برای مثال، RF=3، W=1 و R=1، در نتیجه تاییدیه نوشتن پس از نوشتن بر روی تنها یک replica ارسال می­شود و به درخواست خواندن نیز تنها یک replica پاسخ می­دهد) .
  1. قابلیت دردسترس بودن بالا (A): داده ­ها (حتی داده­هایی که سازگار نیستند). این ویژگی بیان می­کند که هر درخواستی که توسط گره ­­ی سالمی (زنده) دریافت می­شود، باید به درخواست پاسخ دهد. در واقع سیستم همیشه می­تواند به درخواست خواندن یا نوشتن پاسخ دهد.
  • همانطور که در ویژگی اول (سازگاری) بیان شد، می­توان سطوح مختلفی از سازگاری را بر اساس نیازمندی­های برنامه کاربردی مورد نظر، تعیین نمود. هر چه سیستم توزیع­شده سازگاری قوی­تری را ارائه دهد (یعنی گره­های بیشتری در پاسخ به یک درخواست، دخیل باشند)، به قربانی شدن قابلیت دسترسی آن سیستم می­انجامد، زیرا گره­ها مجبورند برای حفظ سازگاری، ابتدا از بهنگام ­سازی یا نوشتن در نسخه­ های که در اختیار دارند، اطمینان حاصل کنند و سپس(عدم دسترسی به گره­ی مورد نظر) به درخواست­ها پاسخ دهد.
  1. تحمل­ پذیری تقسیم شبکه(P): یعنی سیستم به کار خود ادامه می­دهد حتی در صورتی­که در خوشه، ارتباط بین دو ماشین، قطع شود و شبکه به چند قسمت تقسیم شود.
  • بر اساس قضیه CAP، هر DBMS تنها می­تواند دو مورد از این سه مشخصه را ارائه کند. یکی از اهداف اولیه سیستم­ های NoSQL ارائه­ ی مقیاس­پذیری افقی است. مقیاس­پذیری افقی، تحمل­پذیری قوی تقسیم شبکه­ را می­طلبد که خود نیازمند رها کردن یکی از دو مشخصه دیگر یعنی سازگاری(C) یا قابلیت دردسترس­بودن(A) است.

قضیه CAP بیانگر این موضوع است که در پایگاه های توزیع‌شده شما فقط امکان فراهم کردن دو گزینه از سه گزینه بالا را خواهید داشت و گزینه باقیمانده قربانی فراهم کردن سایر گزینه‌ها خواهد شد. به بیان دیگر هر پایگاه داده، فقط و فقط در یکی از اضلاع مثلث زیر می تواند بهترین کارایی را داشته باشد. و در اضلاع دیگر ناقص یا ضعیف خواهد بود. علت این امر این است که این خواص با هم متضاد هسد و در یک زمان  بیشتر از دو مورد آنها امکان کنار هم بودن را ندارند.

قضیه CAP
قضیه CAP

با توجه به مشکلات شبکه‌ای که در هر سامانه‌ای امکان بروز آن وجود دارد، توصیه متخصصین انتخاب قطعی Partition tolerant  به عنوان یکی از فاکتورهای گزینش‌شده است. انتخاب گزینه بعدی از بین Consistency و Availability کاملاً به ماهیت نرم‌افزار و اولویت‌ها کارفرمای شبکه بستگی دارد. در ادامه توضیحات وضعیت گزینشی  AP و CP را مشاهده می‌کنید:

  • انتخاب گزینه  A و P در قضیه CAP

انتخاب Availability و  Partition tolerance به معنی آن است که هر درخواستی، پاسخی دریافت خواهد کرد. این پاسخ تا جای ممکنه شامل جدیدترین اطلاعات خواهد بود ولی امکان قدیمی بودن آن نیز وجود دارد. از طرفی نوشتن اطلاعات جدید بر روی گره‌ها ممکن است در لحظه امکان‌پذیر نباشد (Partition tolerance). بااین‌وجود سیستم به کار خود ادامه خواهد داد و درنهایت به ثبات اطلاعات خواهد رسید (Eventually Consistent). گزینش AP نشان‌دهنده این موضوع است که برای تجارت شما در دسترس بودن سیستم و سرعت بیشتر آن، اولویت بالاتری نسبت به ثبات و دوام اطلاعات در لحظه دارد.

  • انتخاب گزینه  C و P در قضیه CAP

گزینش این دو ویژگی به معنی آن است که هر درخواستی برای دریافت اطلاعات، دقیقاً و حتماً باید آخرین نسخه موجود را به‌عنوان پاسخ ارسال نماید. از طرفی، این آخرین نسخه موجود از هر اطلاعاتی بر روی سیستم کاملاً مشخص و واضح است. یعنی اگر دو درخواست یکسان از دو مکان مختلف به سیستم ارسال شود، سیستم جواب یکسان و مشخصی را به هر دو خواهد داد. نکته دیگر اینکه با افزایش Consistency، شما مدت رکود (Latency Time) را نیز افزایش می‌دهید. هر میزان که Consistency موردنیاز خود را افزایش دهید، سیستم دچار رکورد شده و سرعت پاسخ‌دهی کاهش می‌یابد.

هر پایگاه‌ داده‌ای برای گزینش متفاوتی از خاصیت CAP  مناسب‌تر است. پایگاه‌های داده RDBMS به خاطر نوع طراحی و ماهیتی که دارند (ACID)، لزوماً گزینش CA را انجام می‌دهند. بعضی از پایگاه‌های داده مانند Apache Cassandra انتخاب بین Availability و Consistency را بر عهده مدیر سیستم قرار داده است ولی به‌صورت بیش فرض خود گزینش AP را انجام می‌دهد. در شکل بالا دسته‌بندی برخی از پایگاه دادهای مهم در این مدل آورده شده است.

به جز قضیه CAP ویژگی های دیگری در انتخاب پایگاه داده اهمیت دارد که مهم ترین آن ها عبارتند از: اصل ACID ، قانون 3V و مدل ساختار داده  در پایگاه داده های غیر رابطه ای. (برای مطالعه بیشتر بر روی آنها کلیک کنید)

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

بازدیدها: 3018

همچنین ببینید

ACID

ویژگی ACID و BASE در پایگاه داده چیست؟

ویژگی ACID چیست؟ چهار ویژگی اصلی در پایگاه داده که کمک میکند دستورات تراکنش به …

خواندن و نوشتن در کاساندرا

سازگاری خواندن و نوشتن داده در سرور های کاساندرا Consistency

کاساندرا از یک تعادل بین سازگاری و در دسترس بودن از طریق سطوح سازگاری ایجاد …

دیدگاهتان را بنویسید