ما مقدار التسويق في ACID؟

تحية للجميع. على اتصال فلاديسلاف رودين. حاليًا ، أنا رئيس دورة High Load Architect في OTUS ، وأدرس أيضًا دورات في هندسة البرمجيات.

بالإضافة إلى التدريس ، كما لاحظت ، أنا أيضًا أكتب مواد حقوق الطبع والنشر لمدونة OTUS على هابر وأريد أن أتزامن مع مقالة اليوم لإطلاق دورة "قواعد البيانات" ، وهي الآن مفتوحة للتوظيف.




مقدمة


ظهرت المعاملات في السبعينيات وتم تقديمها كأداة قاعدة بيانات لحل مشاكل تحمل الخطأ والوصول إلى البيانات في بيئة تنافسية. ثم تمت صياغة عدد من الخصائص التي يجب أن تمتلكها المعاملة من أجل إنجاز المهام الموكلة إليها ، والحروف الكبيرة لهذه الخصائص ، التي تم تعيينها بالترتيب الصحيح ، تتكون من الاختصار الجميل ACID.

تميزت الفترة الزمنية التي حدثت فيها هذه الأحداث بغياب الأحمال العالية والإنترنت ومشاكل الأداء ، والتي لا يمكن حلها إلا من خلال أساليب القياس الرأسي. بعد ذلك ، في أوائل العقد الأول من القرن الحادي والعشرين ، ظهر اتجاه في قواعد بيانات NoSQL ، ظهر الاختصار BASE ، والذي كان يعارض في الواقع ACID الكلاسيكي (ACID - acid ، BASE - alkali). الآن هناك اتجاه عكسي لحمض. حتى MongoDB's NoSQL يدعم الآن ACID.

دعونا نلقي نظرة على ما يعنيه هذا الاختصار ومقدار تسويقه.

يمثل ACID 4 خصائص:

A = الذرية
C = التناسق
I = العزل
D = المتانة

الآن لنتحدث عن كل خاصية على حدة.

A = الذرية


الذرية مصطلح مفرط ويمكن في سياق المعاملات في قاعدة البيانات أن تصاغ على أنها مبدأ "كل شيء أو لا شيء". إذا كانت معاملتك تحتوي على 10 عمليات إدراج ، فسيتم تنفيذ جميع العمليات العشر (سيتم تنفيذ المعاملات الملزمة) ، أو لن يتم تنفيذ أي منها (سيتم تنفيذ معاملات الاستعادة).

كيف يتم توفير هذا العقار؟ والحقيقة أنه عندما تأتي معاملة تحتوي على نفس 10 إدخالات إلى قاعدة البيانات ، فإن البيانات لا تبدأ في التغيير. قبل المعاملة ، تتم كتابة المعاملة مباشرة إلى البيانات الموجودة في السجل ، والتي يتم فيها تسجيل التغييرات التي تم إجراؤها. يمكن استخدام هذه المجلة أيضًا لنسخ البيانات ، أو يمكن أن تكون غير مرتبطة بها تمامًا ، كما وصفت ، على سبيل المثال ، هنا. بفضل هذه المجلة ، يمكن الالتزام بالمعاملات مباشرة للبيانات ، أو ، في هذه الحالة ، التراجع عنها. تتبع القاعدة التي يجب إغلاق المعاملة في أقرب وقت ممكن مباشرة من فهم مبادئ تنفيذ هذه الخاصية: غالبًا ما يُحظر على قواعد البيانات تنظيف هذا السجل أثناء فتح المعاملة ، لذلك يمكن أن تصبح مسدودة ، مما يؤدي بدوره إلى عواقب غير سارة للغاية.

C = الاتساق (الاتساق أو النزاهة)


من حيث ACID ، لا يعني الاتساق نفس الشيء كما في نظرية CAP (في نظرية الأنظمة الموزعة ، هناك درجات عديدة من هذا الاتساق). بالاتساق نعني ما يلي: يجب تنفيذ بعض الثوابت المحددة مسبقًا للنظام قبل وبعد معاملة الالتزام. يمكن تمثيل أمثلة ثوابت النظام: يتقارب المدين مع القرض ، ولا يتجاوز الراتب الإجمالي للموظفين الميزانية ، وعدد الموظفين في الشركة يساوي عدد الشواغر المفتوحة سابقًا ، وما إلى ذلك. بلغة قاعدة البيانات ، هذا يعني فقط الوفاء بجميع القيود.

إن السؤال حول الحاجة إلى الاتساق على مستوى قاعدة البيانات مثير للجدل تمامًا ، لأن وجود قيود يمكن أن يشير إلى أن جزءًا من منطق الأعمال قد انتقل من التطبيق إلى مستوى قاعدة البيانات ، وهو أمر غير معترف به عالميًا كممارسة جيدة. في النهاية ، قد يقرر التطبيق نفسه عدم الالتزام ببيانات غير صالحة. هناك رأي بأنه تمت إضافة الاتساق فقط لجعل الاختصار جميلًا (تسويق).

أنا = عزلة


العزلة هي خاصية قاعدة بيانات تسمح بتنفيذ المعاملات المتوازية على أنها متسلسلة. بعد كل شيء ، لا أحد يمنع قاعدة البيانات من تنفيذ العديد من المعاملات في نفس الوقت ، فمن الضروري التأكد من أنها لا تؤثر على بعضها البعض ، بحيث لا تحدث حالات شاذة من نوع حالة السباق. في الواقع ، إن العزلة هي التي تحل مشكلة الوصول إلى البيانات في بيئة تنافسية.

الكشف عن مفهوم العزلة بسبب حجمه يستحق مادة منفصلة.، لأنه عزل دقيق يمكن أن يسمى قلب حمض. غالبًا ما ينخفض ​​سعر المعاملات إلى سعر ضمان العزل ، وهذا هو السبب في أن للعزلة مستويات مختلفة ، كل منها يوفر مستوى الحماية الخاص به ضد ظروف العرق ويحمل واحدًا أو آخرًا. يتم ضمان العزل بالكامل فقط على المستوى القابل للتسلسل ، والذي يصعب تنفيذه بشدة ونادراً ما يحتاج إليه.

D = المتانة


تقول لنا المتانة أنه إذا تم تطبيق المعاملة ، فلا يجب أن تختفي بأي حال من الأحوال. في الواقع ، هذا يعني ما يلي: إذا ردت قاعدة البيانات على أن المعاملة قد ارتكبت ، فإن المعاملة كانت ملتزمة بذاكرة غير متقلبة. هذا يعني أن استدعاء نظام fsync حدث ، أي أنه تم مسح المخازن المؤقتة إلى محرك الأقراص الثابتة ، وأجاب بـ "موافق".

المتانة هي أيضًا مصطلح تسويقي ، لأنه لا يمكن توفيره بالكامل. حتى إذا تجاهلنا السيناريوهات المصطنعة لـ "حرق الأرض من قبل الأجانب" ، وبعد ذلك لن تكون هناك قواعد بيانات أو معاملات على الإطلاق ، إلا أن السيناريوهات الأكثر ترجيحًا ولكنها شديدة التدمير المادي لمحرك أقراص ثابت معين تم تسجيل المعاملة عليه ، يمكننا أن نتذكر أن ضمانات نظام fsync ضرب محرك أقراص ثابت في وحدة التحكم ، والذي بدوره لا يزال يحتوي على مخزن مؤقت متقلب. الوقت الذي تقضيه فيه قصير ، لكنه لا يساوي 0. ونتيجة لذلك ، إذا قمت بإيقاف تشغيل الكهرباء بالضبط في اللحظة "الصحيحة" ، فقد تظل المعاملة مفقودة!

على الرغم من أن مشكلة fsync قد تم حلها في قاعدة بيانات أوراكل باهظة الثمن ، إلا أنه لا يوجد شيء يمكن أن يحمينا من المشاكل المرتبطة بالتدمير المادي للجهاز. يمكننا فقط زيادة الضمانات باستخدام النسخ الاحتياطية والنسخ المتماثل .

الموجودات


على الرغم من حقيقة أن ACID يوفر خصائص مثيرة للاهتمام تمامًا ، مثل الذرية والعزلة ، فإن بعض هذه الخصائص هي مجرد تسويق ، وحتى أنها معروفة بصرامة قيادتها مقارنة بـ BASE ، إلا أن ACID لا يضمن تمامًا غياب فرص خسارة المعاملات ، فضلاً عن تأثير النتائج تنفيذ المعاملات المتزامنة على بعضها البعض (يجب الاستمرار في تكوين العزل!).


ندعو الجميع إلى درس مجاني حول هذا الموضوع: "نموذج للعمل مع البيانات في PostgreSQL . "



All Articles