الاتساق النهائي
الاتساق النهائي هو نموذج اتساق يُستخدم في الحوسبة الموزعة لتحقيق توافر عالٍ . يضمن النظام المتسق نهائيًا أنه في حال عدم إجراء أي تحديثات جديدة على عنصر بيانات معين، فإن جميع عمليات قراءة هذا العنصر ستُعيد في النهاية آخر قيمة مُحدثة. [ 1 ] يُعرف الاتساق النهائي أيضًا باسم النسخ المتفائل ، [ 2 ] وهو مُنتشر على نطاق واسع في الأنظمة الموزعة، ويعود أصله إلى مشاريع الحوسبة المتنقلة المبكرة. [ 3 ] يُقال إن النظام الذي حقق الاتساق النهائي قد تقارب ، أو حقق تقارب النسخ . [ 4 ] يُعد الاتساق النهائي ضمانًا ضعيفًا، إذ أن معظم النماذج الأقوى، مثل قابلية الترتيب الخطي ، تتسم بالاتساق النهائي بشكل بديهي.
تُصنّف الخدمات المتسقة في النهاية عادةً على أنها توفر دلالات BASE (التوافر الأساسي، الحالة المرنة، الاتساق النهائي)، على عكس دلالات ACID التقليدية (الذرية، الاتساق، العزل، المتانة). وفيما يلي التعريفات التقريبية لكل مصطلح في BASE: [ 5 ] [ 6 ]
- متاح بشكل أساسي : وهو إمكانية وصول المستخدمين إلى قاعدة البيانات في وقت واحد وفي جميع الأوقات. لا يحتاج المستخدم إلى انتظار الآخرين لإنهاء المعاملة قبل تحديث السجل. [ 7 ]
- الحالة المرنة : تشير إلى فكرة أن البيانات قد تكون لها حالات عابرة أو مؤقتة قد تتغير بمرور الوقت، حتى بدون محفزات أو مدخلات خارجية. وبالتالي، حتى بدون تحديثات خارجية إضافية، وإلى حين اكتمال التحديث، من الممكن أن ترى استعلامات مختلفة لسجل ما قيمًا مختلفة. [ 7 ]
- الاتساق النهائي : يعني هذا أن السجل سيصل إلى حالة الاتساق عند اكتمال جميع التحديثات المتزامنة. عند هذه النقطة، سترى التطبيقات التي تستعلم عن السجل القيمة نفسها. [ 7 ]
يواجه مفهوم الاتساق النهائي انتقادات [ 8 ] لإضافته تعقيدًا إلى تطبيقات البرمجيات الموزعة. ينشأ هذا التعقيد لأن الاتساق النهائي لا يوفر سوى ضمانة حيوية (ضمان أن عمليات القراءة تُعيد في النهاية نفس القيمة) دون ضمانات أمان ، مما يسمح بأي قيمة وسيطة قبل التقارب. يجد مطورو التطبيقات هذا الأمر صعبًا لأنه يختلف عن البرمجة أحادية الخيوط، حيث تُعيد المتغيرات قيمها المُخصصة لها فورًا وبشكل موثوق. مع ضمانات الاتساق الضعيفة، يجب على المطورين مراعاة هذه القيود بعناية، حيث يمكن أن تؤدي الافتراضات غير الصحيحة حول مستويات الاتساق إلى أخطاء دقيقة لا تظهر إلا أثناء أعطال الشبكة أو التزامن العالي. [ 9 ]
حل النزاعات
لضمان تقارب النسخ المتماثلة، يجب على النظام التوفيق بين الاختلافات بين نسخ متعددة من البيانات الموزعة. ويتكون هذا من جزأين:
- تبادل نسخ أو تحديثات البيانات بين الخوادم (المعروف غالبًا باسم مكافحة الإنتروبيا )؛ [ 10 ] و
- اختيار الحالة النهائية المناسبة عند حدوث تحديثات متزامنة، وهو ما يسمى بالتوفيق .
يعتمد النهج الأمثل للتوفيق بين التحديثات على التطبيق. أحد الأساليب الشائعة هو "الفوز للكاتب الأخير". [ 1 ] وهناك أسلوب آخر يتمثل في استدعاء معالج تعارض يحدده المستخدم. [ 4 ] غالبًا ما تُستخدم الطوابع الزمنية وساعات المتجهات للكشف عن التزامن بين التحديثات. يلجأ البعض إلى "الفوز للكاتب الأول" في الحالات التي يكون فيها "الفوز للكاتب الأخير" غير مقبول. [ 11 ]
يجب أن تتم عملية التوفيق بين عمليات الكتابة المتزامنة في وقت ما قبل القراءة التالية، ويمكن جدولتها في لحظات مختلفة: [ 3 ] [ 12 ]
- إصلاح القراءة: يتم إجراء التصحيح عندما يكتشف برنامج القراءة عدم اتساق. وهذا يبطئ عملية القراءة.
- إصلاح الكتابة: يتم إجراء التصحيح أثناء عملية الكتابة، مما يؤدي إلى إبطاء عملية الكتابة.
- الإصلاح غير المتزامن: لا يُعد التصحيح جزءًا من عملية القراءة أو الكتابة.
اتساق نهائي قوي
بينما يضمن الاتساق النهائي فقط استمرارية البيانات (أي ستُلاحظ التحديثات في النهاية)، يُضيف الاتساق النهائي القوي (SEC) ضمانًا إضافيًا يتمثل في أن أي عقدتين تلقتا نفس مجموعة التحديثات (غير المرتبة) ستكونان في نفس الحالة. ومن الأساليب الشائعة لضمان الاتساق النهائي القوي استخدام أنواع بيانات مُكررة خالية من التعارضات . [ 13 ]
انظر أيضاً
مراجع
- 1 2 فوغلز، دبليو. (2009). "متسق في النهاية" . اتصالات رابطة آلات الحوسبة . 52 : 40-44 . doi : 10.1145/1435417.1435432 .
- ↑ فوغلز، دبليو. (2008). "متسق في النهاية" . مجلة ACM Queue . 6 (6): 14-19 . doi : 10.1145/1466443.1466448 .
- 1 2 تيري، د.ب.؛ ثايمر، م.م.؛ بيترسن، ك.؛ ديمرز، أ.ج.؛ سبريتزر، م.ج.؛ هاوزر، س.هـ. (1995). "إدارة تعارضات التحديث في بايو، وهو نظام تخزين مكرر ضعيف الاتصال". وقائع الندوة الخامسة عشرة لجمعية الحوسبة الآلية حول مبادئ أنظمة التشغيل - SOSP '95 . ص 172. CiteSeerX 10.1.1.12.7323 . doi : 10.1145/224056.224070 . ISBN 978-0897917155. S2CID 7834967 .
- 1 2 بيترسن، ك.؛ سبريتزر، م. ج.؛ تيري، د. ب.؛ ثايمر، م. م.؛ ديمرز، أ. ج. (1997). "نشر التحديثات المرن للتكرار المتسق بشكل ضعيف". مراجعة أنظمة التشغيل ACM SIGOPS . 31 (5): 288. CiteSeerX 10.1.1.17.555 . doi : 10.1145/269005.266711 .
- ↑ بريتشيت، د. (2008). "القاعدة: بديل للحمض" . مجلة ACM Queue . 6 (3): 48-55 . doi : 10.1145/1394127.1394128 .
- ↑ بايليس، ب.؛ غودسي، أ. (2013). "الاتساق النهائي اليوم: القيود والتوسعات وما بعدها" . مجلة ACM Queue . 11 (3): 20. doi : 10.1145/2460276.2462076 .
- 1 2 3 "ما الفرق بين قاعدة بيانات ACID وقاعدة بيانات BASE؟ "
- ↑ هـ. يانيف بيساخ (2013)، التخزين الموزع (التخزين الموزع: المفاهيم والخوارزميات والتطبيقات ، طبعة)، أمازون، OL 25423189M ،
تؤدي الأنظمة التي تستخدم الاتساق النهائي إلى انخفاض حمل النظام وزيادة توافره، ولكنها تؤدي إلى زيادة التعقيد المعرفي للمستخدمين والمطورين.
- ↑ كليمان، مارتن (2017). تصميم التطبيقات كثيفة البيانات: الأفكار الرئيسية وراء الأنظمة الموثوقة والقابلة للتوسع والصيانة ( الطبعة الأولى). بكين، بوسطن، فارنهام، سيباستوبول، طوكيو: أورايلي. ISBN 978-1449373320.
- ↑ ديمرز، أ.؛ غرين، د.؛ هاوزر، س.؛ آيرش، و.؛ لارسون، ج. (1987). "خوارزميات وبائية لصيانة قواعد البيانات المكررة". وقائع الندوة السنوية السادسة لجمعية ACM حول مبادئ الحوسبة الموزعة - PODC '87 . ص 1. doi : 10.1145/41840.41841 . ISBN 978-0-89791-239-6. S2CID 1889203 .
- ↑ روكفورد لوتكا. "تقنيات التزامن" مؤرشف في 11 مايو 2018 في Wayback Machine . 2003.
- ↑ أوليفييه مالاسي (9 يونيو 2010). "لنلعب مع كاساندرا... (الجزء 1/3)" . OCTO Talks! . تم الاطلاع عليه في 23 مارس 2011.
بالطبع، في أي وقت، من المرجح أن يكون لكل عقدة نسختها الخاصة من البيانات. يتم حل التعارضات أثناء طلبات القراءة (وتسمى إصلاح القراءة)، ولا يوفر الإصدار الحالي من كاساندرا آليات لحل تعارضات Vector Clock (من المفترض أن تكون متاحة في الإصدار 0.7). يعتمد حل التعارضات على الطابع الزمني (الذي يتم تعيينه عند إدراج الصف أو العمود): الطابع الزمني الأعلى هو المعتمد، والعقدة التي تقرأ منها البيانات هي المسؤولة عن ذلك. هذه نقطة مهمة لأن الطابع الزمني يتم تحديده من قِبل العميل، في اللحظة التي يتم فيها إدراج العمود. وبالتالي، يجب مزامنة جميع عملاء كاساندرا...
- ↑ شابيرو، مارك؛ بريغويسا، نونو؛ باكيرو، كارلوس؛ زافيرسكي، ماريك (10-10-2011). "أنواع البيانات المكررة الخالية من التعارض". وقائع المؤتمر الدولي الثالث عشر حول استقرار وسلامة وأمن الأنظمة الموزعة (SSS'11) . سبرينغر-فيرلاغ برلين، هايدلبرغ: 386-400 .
للمزيد من القراءة
- بوركهارت، سيباستيان (9 أكتوبر 2014). "مبادئ الاتساق النهائي" . أسس واتجاهات في لغات البرمجة . 1 ( 1-2 ): 1-150 . doi : 10.1561/2500000011 . ISSN 2325-1107 .
- نماذج الاتساق
