قضیه 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 پاسخ میدهد) .
- قابلیت دردسترس بودن بالا (A): داده ها (حتی دادههایی که سازگار نیستند). این ویژگی بیان میکند که هر درخواستی که توسط گره ی سالمی (زنده) دریافت میشود، باید به درخواست پاسخ دهد. در واقع سیستم همیشه میتواند به درخواست خواندن یا نوشتن پاسخ دهد.
- همانطور که در ویژگی اول (سازگاری) بیان شد، میتوان سطوح مختلفی از سازگاری را بر اساس نیازمندیهای برنامه کاربردی مورد نظر، تعیین نمود. هر چه سیستم توزیعشده سازگاری قویتری را ارائه دهد (یعنی گرههای بیشتری در پاسخ به یک درخواست، دخیل باشند)، به قربانی شدن قابلیت دسترسی آن سیستم میانجامد، زیرا گرهها مجبورند برای حفظ سازگاری، ابتدا از بهنگام سازی یا نوشتن در نسخه های که در اختیار دارند، اطمینان حاصل کنند و سپس(عدم دسترسی به گرهی مورد نظر) به درخواستها پاسخ دهد.
- تحمل پذیری تقسیم شبکه(P): یعنی سیستم به کار خود ادامه میدهد حتی در صورتیکه در خوشه، ارتباط بین دو ماشین، قطع شود و شبکه به چند قسمت تقسیم شود.
- بر اساس قضیه CAP، هر DBMS تنها میتواند دو مورد از این سه مشخصه را ارائه کند. یکی از اهداف اولیه سیستم های NoSQL ارائه ی مقیاسپذیری افقی است. مقیاسپذیری افقی، تحملپذیری قوی تقسیم شبکه را میطلبد که خود نیازمند رها کردن یکی از دو مشخصه دیگر یعنی سازگاری(C) یا قابلیت دردسترسبودن(A) است.
قضیه 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 و مدل ساختار داده در پایگاه داده های غیر رابطه ای. (برای مطالعه بیشتر بر روی آنها کلیک کنید)
آدرس کانال تلگرام سایت بیگ دیتا:
آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel
جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.
بازدیدها: 3423
برچسبAvailability BASE CAP Consistency Partition tolerance اصل CAP انتخاب NOSQL تئوری CAP قانون CAP قضیه BASE قضیه CAP نظریه CAP
همچنین ببینید
ویژگی ACID و BASE در پایگاه داده چیست؟
ویژگی ACID چیست؟ چهار ویژگی اصلی در پایگاه داده که کمک میکند دستورات تراکنش به …
سازگاری خواندن و نوشتن داده در سرور های کاساندرا Consistency
کاساندرا از یک تعادل بین سازگاری و در دسترس بودن از طریق سطوح سازگاری ایجاد …