أجهزة الكمبيوتر شبابيك إنترنت

أرسل معاملتك بنجاح. ما هي معاملة البطاقة المصرفية. تحريم العملية. ما يسمى ب "الالتزام التلقائي"


يعمل نظام مراقبة المعاملات المعلقة على sb-opknt.online. من خلال زيارة هذا الموقع ، ستتعرف على صفقة غير مكتملة بمبلغ 131269 روبل. من الضروري اتخاذ إجراء وسحب الأموال في غضون ساعات قليلة ، وإلا سيتم إلغاء الدفع. لقد تحققنا مما إذا كان المشروع يقوم بالدفع.

هل سيرسل لك نظام مراقبة المعاملات المعلقة الأموال حقًا؟

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

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

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

بعد دفع 396 روبل ، استمرت عملية التحويل. كما هو متوقع ، نشأت عقبة جديدة - رفض بنك الطرف المستلم الصفقة. المحتال الذي أنشأ الموقع الذي تم اختباره لم يتوقف عند دفعة واحدة وطالب بالدفعة التالية ، 720 روبل لخدمات إعداد الوثائق. لم يكن أحد مهتمًا بالوثائق هنا ، لقد كانت مجرد ذريعة للمطالبة بالمال. تم إرسالنا إلى E-Pay مرة أخرى.

لقد فهمنا أنه لن يتم دفع 131،269 روبل الموعودة لنا. لقد خدعنا في البداية. البيان بأن جميع الإجراءات على الموقع محمية اتضح أنها خاطئة: لم يكن هناك بروتوكول https على الموقع ، والذي يحمي البيانات ، وتم تمثيل مضادات الفيروسات المعروفة بصور لا معنى لها.

النتائج على نظام مراقبة المعاملات غير المكتملة:

  • المعلومات الواردة في الموقع المحدد خاطئة ؛
  • لا يجب عليك زيارة هذا المورد.

للحصول على نظرة عامة مفصلة ، انظر الفيديو:

ننشر طرقًا مجربة لكسب المال.

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

هناك نماذج مختلفة للمعاملات التي يمكن تصنيفها بناءً على خصائص مختلفة ، بما في ذلك هيكل المعاملة ، والتزامن في المعاملة ، والمدة ، وما إلى ذلك.

حاليًا ، يتم تمييز الأنواع التالية من المعاملات: المعاملات المسطحة أو الكلاسيكية والمعاملات المتسلسلة والمعاملات المتداخلة.

تتميز المعاملات المسطحة ، أو التقليدية ، بأربع خصائص كلاسيكية: الذرية ، والاتساق ، والعزلة ، والمتانة (القوة) - الحمض (الذرية ، والاتساق ، والعزلة ، والمتانة). يشار إلى المعاملات التقليدية أحيانًا باسم معاملات ACID. الخصائص المذكورة أعلاه تعني ما يلي:

يتم التعبير عن خاصية الذرية (Atomicity) في حقيقة أنه يجب تنفيذ المعاملة ككل أو عدم تنفيذها على الإطلاق.

تضمن خاصية التناسق أنه مع تقدم المعاملات ، تنتقل البيانات من حالة متسقة إلى أخرى - لا تكسر المعاملة الاتساق المتبادل للبيانات.

تعني خاصية العزل أن المعاملات المتنافسة للوصول إلى قاعدة البيانات تتم معالجتها فعليًا بالتتابع ، بمعزل عن بعضها البعض ، ولكن يبدو للمستخدمين كما لو كانوا ينفذون بالتوازي.

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

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

تنفيذ المعاملة هو عملية الكتابة لقرص التغييرات في قاعدة البيانات التي تم إجراؤها أثناء تنفيذ المعاملة.

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

إذا حدث شيء ما أثناء تنفيذ معاملة يجعل من المستحيل إكمالها بشكل طبيعي ، فيجب إعادة قاعدة البيانات إلى حالتها الأصلية. التراجع عن المعاملة هو الإجراء الذي يستعيد جميع تغييرات البيانات التي تم إجراؤها بواسطة عبارات SQL إلى نص المعاملة المعلقة الحالية.



يقوم كل بيان في المعاملة بالجزء الخاص به من العمل ، ولكن يجب إكمال جميع بياناته دون قيد أو شرط حتى يكتمل العمل بأكمله بنجاح. يُخبر تجميع العبارات في المعاملة نظام إدارة قواعد البيانات (DBMS) أنه يجب تنفيذ المجموعة بأكملها ككل ، ويجب دعم هذا التنفيذ تلقائيًا.

يحدد معيار ANSI / ISO SQL نموذج المعاملة ووظائف عبارات COMMIT و ROLLBACK. يحدد المعيار أن المعاملة تبدأ بعبارة SQL الأولى ، التي بدأها المستخدم أو مضمنة في البرنامج ، والتي تغير الحالة الحالية لقاعدة البيانات. تشكل جميع عبارات SQL اللاحقة نص المعاملة. تنتهي المعاملة بإحدى الطرق الأربعة الممكنة (الشكل 11.1):

بيان الالتزام يعني إتمام الصفقة بنجاح ؛ يؤدي استخدامه إلى إجراء تغييرات دائمة على قاعدة البيانات ضمن المعاملة الحالية ؛

بيان ROLLBACK يجهض المعاملة ، ويلغي التغييرات التي تم إجراؤها على قاعدة البيانات كجزء من هذه المعاملة ؛ تبدأ معاملة جديدة فورًا بعد استخدام ROLLBACK ؛

يعني الإكمال الناجح للبرنامج الذي بدأت فيه المعاملة الحالية إكمال الصفقة بنجاح (كما لو تم استخدام بيان الالتزام) ؛

يؤدي الإنهاء الخاطئ للبرنامج إلى إحباط المعاملة (كما لو تم استخدام عبارة ROLLBACK).

في هذا النموذج ، يعتبر كل بيان يغير حالة قاعدة البيانات معاملة ، وبالتالي ، عند الانتهاء بنجاح من هذا البيان ، تدخل قاعدة البيانات حالة مستقرة جديدة.

نفذت الإصدارات الأولى من نظم إدارة قواعد البيانات التجارية نموذج معاملات ANSI / ISO. في وقت لاحق ، تم تنفيذ نموذج معاملة موسع في SYBASE DBMS ، والذي يتضمن عددًا من العمليات الإضافية. يستخدم نموذج SYBASE العوامل الأربعة التالية:

يذكر بيان بدء المعاملة بدء المعاملة. على عكس نموذج ANSI / ISO ، حيث يتم تحديد بداية المعاملة ضمنيًا من خلال بيان تعديل البيانات الأول ، في نموذج SYBASE ، يتم تحديد بداية المعاملة بشكل صريح باستخدام بداية بيان المعاملة.

يوضح بيان الالتزام بالعملية الإتمام الناجح للمعاملة. إنه معادل لبيان COMMIT في نموذج معيار ANSI / ISO. يقوم هذا المشغل ، مثل عامل التشغيل COMMIT ، بتنفيذ جميع التغييرات التي تم إجراؤها على قاعدة البيانات أثناء تنفيذ المعاملة.

تقوم عبارة SAVE TRANSACTION بإنشاء نقطة حفظ داخل المعاملة تتوافق مع الحالة الوسيطة لقاعدة البيانات المحفوظة في وقت تنفيذ هذا البيان. يمكن أن تحتوي عبارة "حفظ المعاملة" على اسم نقطة حفظ. لذلك ، أثناء تنفيذ المعاملة ، يمكن تخزين عدة نقاط حفظ ، تتوافق مع عدة حالات وسيطة.

بيان ROLLBACK له تعديلين. إذا تم استخدام هذا البيان بدون معلمة إضافية ، فسيتم تفسيره على أنه بيان تراجع للمعاملة بأكملها ، أي أنه في هذه الحالة يعادل عبارة ROLLBACK في نموذج ANSI / ISO. إذا كانت عبارة التراجع تحتوي على معلمة وتم كتابتها كـ ROLLBACK B ، فسيتم تفسيرها على أنها بيان تراجع جزئي للمعاملة إلى النقطة B.

تظهر مبادئ تنفيذ المعاملات في نموذج المعاملة الموسع في الشكل. 11.2. في الشكل ، يتم تمييز المشغلين بالأرقام بحيث يكون أكثر ملاءمة لنا لتتبع تقدم المعاملة في جميع الحالات الممكنة.

تبدأ المعاملة بمشغل صريح لبداية المعاملة ، والذي يحمل الرقم 1 في مخططنا. يأتي بعد ذلك المشغل 2 ، وهو عامل بحث ولا يغير الحالة الحالية لقاعدة البيانات ، والمشغلين التاليين 3 و 4 نقل قاعدة البيانات إلى حالة جديدة. يحفظ البيان 5 هذه الحالة الوسيطة الجديدة لقاعدة البيانات ويضع علامة عليها كحالة وسيطة عند النقطة A. ثم يتبع البيانان 6 و 7 ، اللذان ينقلان قاعدة البيانات إلى حالة جديدة. ويحفظ عامل التشغيل 8 هذه الحالة كحالة وسيطة عند النقطة B. يقوم المشغل 9 بإدخال بيانات جديد ، ويقوم المشغل 10 بإجراء بعض التحقق من الشرط 1 ؛ إذا تم استيفاء الشرط 1 ، فسيتم تنفيذ العبارة 11 ، والتي تعيد المعاملة إلى الحالة الوسيطة B وهذا يعني أن عواقب إجراءات البيان 9 ، كما كانت ، تم محوها وتعود قاعدة البيانات إلى الحالة الوسيطة B ، على الرغم من أنه بعد تنفيذ البيان 9 كان بالفعل في حالة جديدة وبعد التراجع عن المعاملة ، بدلاً من البيان 9 ، الذي تم تنفيذه مسبقًا من الحالة في قاعدة البيانات ، يتم تنفيذ البيان 13 الخاص بإدخال بيانات جديدة ، ثم التحكم إلى البيان 14 ، يتحقق البيان 14 مرة أخرى من الشرط ، ولكن بالفعل بعض الشرط الجديد 2 ، إذا تم استيفاء الشرط ، يتم نقل التحكم إلى المشغل 15 ، والذي يعيد المعاملة إلى الحالة الوسيطة A ، أي كل العبارات التي غيرت قاعدة البيانات ، بدءًا من 6 وتنتهي بـ 13 ، تعتبر غير منفذة ، أي اختفت نتائج تنفيذها ونعود مرة أخرى إلى الحالة A ، حيث بعد تنفيذ العبارة 4 يتم نقل عنصر التحكم التالي إلى المشغل 17 ، الذي يقوم بتحديث محتويات قاعدة البيانات ، وبعد ذلك يتم التحكم يتم نقل التحويل إلى المشغل 18 ، والذي يرتبط بفحص الحالة 3. ينتهي الفحص إما عن طريق نقل التحكم إلى المشغل 20 ، الذي يقوم بتنفيذ المعاملة ، وتنتقل قاعدة البيانات إلى حالة مستقرة جديدة ، ومن المستحيل تغييرها في غضون المعاملة الحالية. أو ، إذا تم نقل التحكم إلى المشغل 19 ، يتم إرجاع المعاملة إلى البداية وتعود قاعدة البيانات إلى حالتها الأولية ، وقد تم بالفعل فحص جميع الحالات الوسيطة هنا ، ومن المستحيل إجراء عملية التراجع إلى هذه الدول الوسيطة بعد تنفيذ البيان رقم 19

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

1. المعاملاتوالحظر

2. مفهوم الصفقة

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

بالمعاملةهي سلسلة من العمليات التي يتم إجراؤها على قاعدة بيانات وتحويلها من حالة متسقة إلى حالة أخرى متسقة.

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

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

دعنا نحدد معاملة لإدخال البيانات في الكتب المستلمة حديثًا في المكتبة. يمكن تقسيم هذه العملية إلى عمليتين متتاليتين: أولاً ، يعد إدخال البيانات حول الكتاب صفًا جديدًا في الجدول كتب... ثم تحتاج إلى إدخال بيانات حول جميع نسخ الكتاب - وهذا هو إدخال مجموعة من الصفوف الجديدة في الجدول مثيلات.إذا تمت مقاطعة هذا التسلسل من الإجراءات ، فلن تتوافق قاعدة البيانات مع الكائن الحقيقي ، لذلك من المستحسن القيام به كعمل واحد في قاعدة البيانات.

3. خصائص المعاملة. طرق إتمام الصفقة

هناك نماذج مختلفة للمعاملات التي يمكن تصنيفها بناءً على خصائص مختلفة ، بما في ذلك هيكل المعاملة ، والتزامن في المعاملة ، والمدة ، وما إلى ذلك.

حاليًا ، يتم تمييز الأنواع التالية من المعاملات: المعاملات المسطحة أو الكلاسيكية والمعاملات المتسلسلة والمعاملات المتداخلة.

تتميز المعاملات المسطحة بالخصائص الكلاسيكية للذرية والاتساق والعزلة والمتانة.

· يتم التعبير عن خاصية الذرية في حقيقة أن المعاملة يجب أن تتم بالكامل أو لا تتم على الإطلاق.

· تضمن خاصية التناسق أنه أثناء استمرار المعاملة ، تنتقل البيانات من حالة متسقة إلى حالة متسقة أخرى - لا تكسر المعاملة الاتساق المتبادل للبيانات.

· تعني خاصية العزل أن المعاملات التي تتنافس للوصول إلى قاعدة البيانات تتم معالجتها فعليًا بالتسلسل ، بمعزل عن بعضها البعض ، ولكن يبدو بالنسبة للمستخدمين أنه يتم تنفيذها بالتوازي.

· تعني خاصية طول العمر أنه في حالة اكتمال المعاملة بنجاح ، فلا يمكن فقد البيانات التي أجرتها تحت أي ظرف من الظروف ، حتى في حالة حدوث أخطاء لاحقة.

هناك خياران لإتمام المعاملة:

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

· في حالة حدوث فشل أثناء تنفيذ المعاملة ، يجب إعادة قاعدة البيانات إلى حالتها الأصلية. التراجع عن المعاملة هو الإجراء الذي يستعيد جميع تغييرات البيانات التي تم إجراؤها بواسطة عبارات SQL إلى نص المعاملة المعلقة الحالية.

4. العاملينالصفقةSQLللعمل مع المعاملات

ANSI / ISO عوامل محددة ارتكبو رول باك ،في المعيار ، يتم تحديد بداية المعاملة ضمنيًا بواسطة مشغل تعديل البيانات الأول ؛ المشغل أو العامل ارتكب يعني إتمام الصفقة بنجاح ، يتم تسجيل نتائج المعاملة في الذاكرة الخارجية ؛ عندما يكمل المشغل المعاملة رول باك يتم إلغاء نتائج المعاملة. يعني الإكمال الناجح للبرنامج الذي بدأت فيه المعاملة إتمام الصفقة بنجاح (كما لو كان المشغلارتكب ) ، إكمال غير ناجح - إلغاء المعاملة (كما لو تم استخدام عامل التشغيلرول باك ). في هذا النموذج ، يعتبر كل بيان يغير حالة البيانات معاملة. تم تنفيذ هذا النموذج في الإصدارات الأولى من نظم إدارة قواعد البيانات التجارية. بعد ذلك ، تم تطبيق نموذج معاملة موسع في SYBASE DBMS.

في نموذج المعاملة الموسعة (على سبيل المثال ، في SQL SERVER DBMS) ، يتم توفير عدد من العمليات الإضافية:

· المشغل أو العامل بدء المعاملةيبلغ عن بداية الصفقة ؛

· المشغل أو العامل ارتكاب معاملةيُبلغ عن إتمام الصفقة بنجاح. هذا المشغل ، بالإضافة إلى الالتزام في النموذج القياسي ANSI / ISO ، يعمل على إصلاح جميع التغييرات التي تم إجراؤها في قاعدة البيانات أثناء تنفيذ المعاملة ؛

· المشغل أو العامل احفظ المعاملةينشئ نقطة حفظ داخل المعاملة تتوافق مع الحالة الوسيطة لقاعدة البيانات المحفوظة في وقت تنفيذ هذا البيان. في المشغل احفظ المعاملةقد يكون هناك اسم نقطة حفظ ، لذلك ، أثناء تنفيذ المعاملة ، يمكن تخزين عدة نقاط حفظ تتوافق مع عدة حالات وسيطة ؛

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

تعد نقاط التوفير مفيدة في المعاملات الطويلة والمعقدة لتوفير القدرة على التراجع عن التغييرات التي تم إجراؤها بواسطة عبارات محددة.

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

يضع السيارات تشغيل ;

والعودة إلى الحوار العادي لمعالجة الطلبات:

يضع السيارات إيقاف ;

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

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

مثال على المعاملة:

بداية العبور

تحديث الحساب

ضبط الرصيد = الرصيد - 100

إذا كان الخطأ= 0

يبدأ

رولباك تران

إرجاع

نهاية

تحديث بطاقة_حساب

ضبط الرصيد = الرصيد + 100

أين [بريد إلكتروني محمي] _الحساب

إذا كان الخطأ= 0

يبدأ

رولباك تران

إرجاع

نهاية

تنفيذ النقل

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

5. سجل المعاملات.

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

· يجب حفظ نتائج المعاملات الملتزمة في حالة استعادة قاعدة البيانات ؛

· يجب ألا تكون نتائج المعاملات غير الملتزم بها موجودة في الحالة المستعادة لقاعدة البيانات.

هذا يعني أنه تمت استعادة آخر حالة متسقة لقاعدة البيانات.

من الممكن أن تكون المواقف التالية مطلوبة لاستعادة حالة قاعدة البيانات:

· التعافي من فقدان مفاجئ لمحتويات ذاكرة الوصول العشوائي (خلل ناعم). يمكن أن يحدث هذا الموقف في الحالات التالية: أثناء انقطاع التيار الكهربائي في حالات الطوارئ أو عند حدوث عطل فادح في المعالج. يتسم الموقف بفقدان ذلك الجزء من قاعدة البيانات الذي كان موجودًا في المخازن المؤقتة لذاكرة الوصول العشوائي وقت الفشل.

· التعافي من انهيار وسائط قاعدة البيانات الخارجية الرئيسية (فشل شديد).

يجب أن يكون النظام قادرًا على التعافي من كل من الاضطرابات الطفيفة (على سبيل المثال ، المعاملات الفاشلة) وبعد الاضطرابات الكبيرة (على سبيل المثال ، انقطاع التيار الكهربائي ، الأعطال الشديدة).

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

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

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

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

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

لمزيد من الموثوقية ، غالبًا ما يتم تكرار سجل المعاملات بواسطة أدوات نظام DBMS ، وهذا هو السبب في أن حجم الذاكرة الخارجية أكبر بعدة مرات من الكمية الفعلية للبيانات في قاعدة البيانات.

هناك خياران لتسجيل المعاملات: بروتوكول التحديث المؤجل وبروتوكول التحديث الفوري.

يفترض تسجيل التحديث الكسول آلية تنفيذ المعاملات التالية:

1. عندما تبدأ المعاملة T1 ، يتم إدخال سجل في البروتوكول

T1 يبدأ عملية تجارية

2. أثناء تنفيذ المعاملة ، يتم تسجيل قيمة جديدة في البروتوكول لكل سجل تم تغييره.

T1. هوية شخصية _ سجل السمة قيمة جديدة

(هوية شخصية _ سجل - رقم قياسي فريد)

3. إذا تم إكمال جميع الإجراءات التي تشكل المعاملة بنجاح ، فسيتم تسجيل المعاملة جزئيًا وإدخال ما يلي في البروتوكول:

تي 1 COMMT

4. بعد تنفيذ المعاملة ، يتم استخدام سجلات البروتوكول المتعلقة بـ T1 لإجراء تغييرات على قاعدة البيانات.

5. في حالة حدوث فشل ، ينظر نظام إدارة قواعد البيانات (DBMS) في السجل ويكتشف المعاملات التي يجب إعادة بنائها. تحتاج المعاملة T1 إلى إعادة بنائها إذا كان البروتوكول يحتوي على كلا السجلين T1 يبدأ عملية تجارية و تي 1 COMMT . قد تكون قاعدة البيانات في حالة غير متسقة ، ومع ذلك ، يتم تضمين جميع القيم الجديدة لعناصر البيانات المتغيرة في السجل ، وهذا يتطلب إعادة تنفيذ المعاملة. لهذا ، يتم استخدام إجراء النظام.ريدو(), الذي يستبدل جميع قيم العناصر بأخرى جديدة عن طريق اجتياز السجل بترتيب إعادة توجيه.

6. إذا كان السجل لا يحتوي على الأمر لتنفيذ المعاملة مع OMMIT، فلا يلزم اتخاذ أي إجراء ، وستتم إعادة تشغيل المعاملة.

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

T1. هوية شخصية _ سجل السمة قيمة جديدة قيمة قديمة

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

عندما يتم التراجع عن معاملة ، يتم تنفيذ إجراء النظام الغاء التحميل ()، والتي تُرجع جميع القيم القديمة في المعاملة الملغاة ، بالمرور بالتسلسل عبر البروتوكول ، بدءًا من الأمر بدء المعاملة.

يتم استخدام الآلية التالية لتجاوز الفشل:

· إذا كانت المعاملة تحتوي على أمر لبدء المعاملة ، ولكنها لا تحتوي على أمر الالتزام مع تأكيد تنفيذه ، فسيتم تنفيذ تسلسل الإجراءات كما هو الحال عند التراجع عن المعاملة ، أي يتم استعادة القيم القديمة.

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

6. أقفال.

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

هناك ثلاث مشاكل رئيسية في معالجة قاعدة البيانات المتوازية:

§ تغييرات مفقودة ... يحدث هذا الموقف عندما تقوم معاملتان في نفس الوقت بتعديل نفس السجل في قاعدة البيانات. على سبيل المثال ، يعمل عاملان على تلقي الطلبات ، وقد أخذ المشغل الأول طلبًا لشراء 30 شاشة. عندما ذهب إلى المستودع ، كان هناك 40 مراقبًا ، وبعد أن تلقى تأكيدًا من العميل ، أصدر بيع 30 شاشة من أصل 40. نفس الشاشات ، وبالتالي ، بالاتصال بالمستودع ، يحصل على نفس القيمة 40 ، ويضع طلبًا لعميله. بعد الانتهاء من العمل بالبيانات ، يقوم بتنفيذ الأمر تحديث،والتي تضيف 20 كبقية الشاشات في المستودع. بعد ذلك ، ينتهي المشغل الأول من العمل مع عميله وينفذ الأمر أيضًا ينعش، والذي يسجل ما تبقى من 10 كعدد الشاشات في المخزون. لقد باعوا ما مجموعه 50 شاشة من أصل 40 ، مع 10 شاشات في المخزون.

§ مشاكل البيانات الوسيطة ... متصل بالقدرة على الوصول إلى البيانات الوسيطة. لنفترض أن المشغل الأول ، الذي تفاوض مع عميله ، قد دخل إلى الشاشات الثلاثين المطلوبة ، ولكن قبل إنهاء الطلب ، أراد العميل معرفة المزيد من خصائص المنتج. لقد غيّر التطبيق الذي يعمل معه المشغل الأول بالفعل الشاشات المتبقية في المستودع ، ويتم الآن تخزين المعلومات حول الشاشات العشرة المتبقية هناك. في هذا الوقت ، يحاول المشغل الثاني أن يأخذ طلبًا من عميله لطلب 20 شاشة ، لكن طلبه يوضح أنه لم يتبق سوى 10 شاشات في المستودع وأن المشغل مجبر على رفض زبونه. في هذا الوقت ، يقرر عميل المشغل الأول عدم شراء الشاشات ، ويقوم المشغل بإعادة المعاملة مرة أخرى ، ومرة ​​أخرى ، هناك 40 شاشة في المستودع. أصبح هذا الموقف ممكنًا لأن تطبيق المشغل الثاني كان له حق الوصول إلى البيانات الوسيطة التي تم تكوينها بواسطة التطبيق الأول.

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

تلخيصًا للمشكلات المدرجة ، يمكن تمييز الأنواع التالية من التعارضات بين معاملتين متوازيتين:

· W-W - تحاول المعاملة 2 تعديل كائن تم تعديله بواسطة المعاملة 1 التي لم تنته ؛

· R-W - تحاول المعاملة 2 تعديل كائن تمت قراءته بواسطة المعاملة 1 التي لم تنته ؛

· تحاول معاملة W-R 2 قراءة كائن تم تعديله بواسطة المعاملة 1 غير المنتهية ؛

7. تسلسل المعاملات

من أجل تجنب مثل هذه التعارضات ، يلزم تطوير بعض الإجراءات للتنفيذ المتسق للمعاملات المتزامنة. يجب أن يتوافق هذا الإجراء مع القواعد التالية:

1. أثناء تنفيذ المعاملة ، يرى المستخدم فقط البيانات المتسقة. يجب ألا يرى المستخدم بيانات وسيطة غير متسقة.

2. عندما يتم تنفيذ المعاملات في DB 2 بالتوازي ، يجب أن تكون نتائج تنفيذ المعاملات هي نفسها كما لو تم تنفيذ المعاملة 1 ثم المعاملة 2 ، أو العكس.

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

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

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

ينفذ عدد من نظم إدارة قواعد البيانات تأمينًا على مستوى الصفحة. في هذه الحالة ، يقوم نظام إدارة قواعد البيانات (DBMS) بتأمين الصفحات الفردية على القرص فقط عند وصول إحدى المعاملات إليها. هذا النوع من التأمين أكثر ليونة ، ويسمح للمعاملات المختلفة بالعمل على نفس الجدول في حالة الوصول إلى صفحات بيانات مختلفة.

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

8. تجاوز الأقفال على مستوى الطلب. أنواع التأمين

إذا بعد اسم الجدول في الجملة من عندفيما يلي إحدى الكلمات الرئيسية التالية ، يتداخل الطلب مع مدير القفل ويتم تطبيق نوع القفل المحدد:

· NOLOCK - يسمح بالقراءة المتسخة ؛

· PAGLOCK - قفل مستوى الصفحة ؛

· ROWLOCK - الحجب على مستوى السجلات ؛

· TABLOCK - قفل الجدول المشترك ؛

· TABLOCKX - قفل طاولة حصري

حاليًا ، تعد مشكلة الحجب موضوع عدد كبير من الدراسات.

هناك نوعان أساسيان من الأقفال (مقابض التزامن):

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

أقفال حصرية (صلبة) - لا تسمح لأي شخص آخر غير مالك هذا القفل بالوصول إلى البيانات على الإطلاق. تُستخدم هذه الأقفال للأوامر التي تغير محتوى أو هيكل الجدول وتكون صالحة حتى نهاية المعاملة.

تتوافق عمليات التقاط الكائنات بواسطة العديد من معاملات القراءة ، أي أنه يُسمح بالعديد من المعاملات لقراءة نفس الكائن. لا يتوافق التقاط كائن من خلال معاملة قراءة واحدة مع التقاط آخر بواسطة معاملة أخرى لنفس الكائن عن طريق الكتابة. لا تتوافق لقطات نفس الكائن بواسطة معاملات الكتابة المختلفة.

ومع ذلك ، فإن استخدام أنواع مختلفة من الأقفال يؤدي إلى مشكلة الجمود. نشأت مشكلة الجمود عند التفكير في تنفيذ عمليات متوازية في بيئات التشغيل وكانت مرتبطة أيضًا بإدارة الكائنات المشتركة (المشتركة). مثال على حالة توقف تام: افترض المعاملة A جدول الأقفال الصلبة 1 ثم جدول الأقفال الثابتة 2. المعاملة B ، من ناحية أخرى ، جدول القفل الثابت 2 ثم جدول الأقفال الصلبة 1.

إذا بدأت كلتا المعاملتين في العمل في نفس الوقت ، فبعد إجراء عمليات التعديل على الجدول الأول ، سينتهي الأمر بكليهما في انتظار لا نهائي: ستنتظر المعاملة A حتى تكتمل المعاملة B وتفتح الجدول 2 ، والمعاملة سينتظر B بلا جدوى حتى تكتمل المعاملة A وفتح الجدول 1.

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

يعتمد اكتشاف حالة توقف تام على بناء (أو الحفاظ على) رسم بياني لانتظار المعاملات. يمكن أن يكون الرسم البياني المنتظر رسمًا بيانيًا موجهًا ، توجد عند الرؤوس أسماء المعاملات. إذا كانت المعاملة T1 تنتظر نهاية المعاملة T2 ، فحينئذٍ ينتقل سهم من أعلى T1 إلى أعلى T2. بالإضافة إلى ذلك ، يمكن تمييز الأسهم بأسماء الكائنات المحظورة ونوع الحظر.

تستخدم آلية القفل مفهوم مستوى عزل القفل لتحديد عدد الجداول التي سيتم تأمينها. يتم استخدام ثلاثة مستويات من العزل تقليديًا:

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

· يمنع مستوى العزل ، المسمى بمؤشر الثبات ، كل سجل من التغيير أثناء قراءته أو قراءته أثناء تعديله.

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

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

9. أسئلة التحكم

1. تحديد معاملة. أعط أمثلة على المعاملات.

2. سرد ووصف خصائص المعاملات.

3. ما هي الخيارات الممكنة لإتمام المعاملات.

4. ما هي عوامل تشغيل اللغة SQL تعمل على العمل مع المعاملات في نموذج المعاملة الموسعة؟

5. هل يمكنني استخدام أوامر التحكم في المعاملات في المشغلات؟

6. ما هو سجل المعاملات ل؟

7. في أي الحالات يتم إجراء استعادة قاعدة البيانات من سجل المعاملات؟

8. ما هي الخيارات المتاحة لتسجيل المعاملات؟

9. ما هي الاختلافات بين خيارات تسجيل المعاملات: بروتوكول التحديث المؤجل وبروتوكول التحديث الفوري.

10. ما هي المشاكل التي تنشأ عندما يعمل المستخدمون بالتوازي مع قاعدة البيانات؟

11. ما هي كائنات قاعدة البيانات التي يمكن قفلها لتنفيذ مبدأ عزل المستخدم؟

12. هل من الممكن تحديد نوع المنع في الاستعلامات؟

13. ما هي أنواع التقاط الأشياء من خلال معاملات متعددة؟ أي منها متوافق؟

14. ما هي مشكلة الطرق المسدودة؟

هناك نماذج مختلفة للمعاملات التي يمكن تصنيفها بناءً على خصائص مختلفة ، بما في ذلك هيكل المعاملة ، والتزامن في المعاملة ، والمدة ، وما إلى ذلك.

حاليًا ، يتم تمييز الأنواع التالية من المعاملات: المعاملات المسطحة أو الكلاسيكية والمعاملات المتسلسلة والمعاملات المتداخلة.

تتميز المعاملات المسطحة ، أو التقليدية ، بأربع خصائص كلاسيكية: الذرية ، والاتساق ، والعزلة ، والمتانة (القوة) - الحمض (الذرية ، والاتساق ، والعزلة ، والمتانة). يشار إلى المعاملات التقليدية أحيانًا باسم معاملات ACID. الخصائص المذكورة أعلاه تعني ما يلي:

· خاصية الذريةيتم التعبير عن (الذرية) في حقيقة أن المعاملة يجب أن تكتمل ككل أو لا تكتمل على الإطلاق.

· خاصية الاتساقيضمن (الاتساق) أنه مع تقدم المعاملات ، تنتقل البيانات من حالة متسقة إلى أخرى - لا تكسر المعاملة الاتساق المتبادل للبيانات.

· خاصية العزل(العزلة) تعني أن المعاملات المتنافسة للوصول إلى قاعدة البيانات تتم معالجتها فعليًا بالتسلسل ، بمعزل عن بعضها البعض ، ولكن يبدو للمستخدمين كما لو كان يتم تنفيذها بالتوازي.

· خاصية المتانة(المتانة) يتم تفسيرها على النحو التالي: إذا تم إكمال المعاملة بنجاح ، فلا يمكن أن تضيع التغييرات في البيانات التي تم إجراؤها تحت أي ظرف من الظروف (حتى في حالة الأخطاء اللاحقة).

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

تنفيذ المعاملة هو عملية الكتابة لقرص التغييرات في قاعدة البيانات التي تم إجراؤها أثناء تنفيذ المعاملة.

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

إذا حدث شيء ما أثناء تنفيذ معاملة يجعل من المستحيل إكمالها بشكل طبيعي ، فيجب إعادة قاعدة البيانات إلى حالتها الأصلية. التراجع عن المعاملة هو الإجراء الذي يستعيد جميع تغييرات البيانات التي تم إجراؤها بواسطة عبارات SQL إلى نص المعاملة المعلقة الحالية.

يقوم كل بيان في المعاملة بالجزء الخاص به من العمل ، ولكن يجب إكمال جميع بياناته دون قيد أو شرط حتى يكتمل العمل بأكمله بنجاح. يُخبر تجميع العبارات في المعاملة نظام إدارة قواعد البيانات (DBMS) أنه يجب تنفيذ المجموعة بأكملها ككل ، ويجب دعم هذا التنفيذ تلقائيًا.

يحدد معيار ANSI / ISO SQL نموذج المعاملة ووظائف عبارات COMMIT و ROLLBACK. يحدد المعيار أن المعاملة تبدأ بعبارة SQL الأولى ، التي بدأها المستخدم أو مضمنة في البرنامج ، والتي تغير الحالة الحالية لقاعدة البيانات. تشكل جميع عبارات SQL اللاحقة نص المعاملة. تنتهي المعاملة بإحدى الطرق الأربعة الممكنة (الشكل 11.1):

1. بيان الالتزام يعني إتمام الصفقة بنجاح ؛ يؤدي استخدامه إلى إجراء تغييرات دائمة على قاعدة البيانات ضمن المعاملة الحالية ؛

2. يؤدي بيان ROLLBACK إلى إحباط المعاملة وإلغاء التغييرات التي تم إجراؤها على قاعدة البيانات كجزء من هذه المعاملة ؛ تبدأ معاملة جديدة فورًا بعد استخدام ROLLBACK ؛

3. الإكمال الناجح للبرنامج الذي بدأت فيه المعاملة الحالية يعني إتمام الصفقة بنجاح (كما لو تم استخدام بيان الالتزام) ؛

4. يؤدي الإنهاء الخاطئ للبرنامج إلى إحباط المعاملة (كما لو تم استخدام عبارة ROLLBACK).

في هذا النموذج ، يعتبر كل بيان يغير حالة قاعدة البيانات معاملة ، وبالتالي ، عند الانتهاء بنجاح من هذا البيان ، تدخل قاعدة البيانات حالة مستقرة جديدة.

نفذت الإصدارات الأولى من نظم إدارة قواعد البيانات التجارية نموذج معاملات ANSI / ISO. في وقت لاحق ، تم تنفيذ نموذج معاملة موسع في SYBASE DBMS ، والذي يتضمن عددًا من العمليات الإضافية. يستخدم نموذج SYBASE العوامل الأربعة التالية:

· يشير بيان بدء المعاملة إلى بدء المعاملة. على عكس نموذج ANSI / ISO ، حيث يتم تحديد بداية المعاملة ضمنيًا من خلال بيان تعديل البيانات الأول ، في نموذج SYBASE ، يتم تحديد بداية المعاملة بشكل صريح باستخدام بداية بيان المعاملة.

· يشير بيان "معاملة الالتزام" إلى إتمام الصفقة بنجاح. إنه معادل لبيان COMMIT في نموذج معيار ANSI / ISO. يقوم هذا المشغل ، مثل عامل التشغيل COMMIT ، بتنفيذ جميع التغييرات التي تم إجراؤها على قاعدة البيانات أثناء تنفيذ المعاملة.

· ينشئ بيان SAVE TRANSACTION نقطة حفظ داخل المعاملة تتوافق مع الحالة الوسيطة لقاعدة البيانات المحفوظة في وقت تنفيذ هذا البيان. يمكن أن تحتوي عبارة "حفظ المعاملة" على اسم نقطة حفظ. لذلك ، أثناء تنفيذ المعاملة ، يمكن تخزين عدة نقاط حفظ ، تتوافق مع عدة حالات وسيطة.

· مشغل ROLLBACK له تعديلين. إذا تم استخدام هذا البيان بدون معلمة إضافية ، فسيتم تفسيره على أنه بيان تراجع للمعاملة بأكملها ، أي أنه في هذه الحالة يعادل عبارة ROLLBACK في نموذج ANSI / ISO. إذا كانت عبارة التراجع تحتوي على معلمة وتم كتابتها كـ ROLLBACK B ، فسيتم تفسيرها على أنها بيان تراجع جزئي للمعاملة إلى النقطة B.

أرز. 11.1.نموذج معاملة ANSI / ISO

تظهر مبادئ تنفيذ المعاملات في نموذج المعاملة الموسع في الشكل. 11.2. في الشكل ، يتم تمييز المشغلين بالأرقام بحيث يكون أكثر ملاءمة لنا لتتبع تقدم المعاملة في جميع الحالات الممكنة.

أرز. 11.2.أمثلة على تنفيذ المعاملات في النموذج الموسع

تبدأ المعاملة بمشغل صريح لبداية المعاملة ، والذي يحمل الرقم 1 في مخططنا. يأتي بعد ذلك المشغل 2 ، وهو عامل بحث ولا يغير الحالة الحالية لقاعدة البيانات ، والمشغلين التاليين 3 و 4 نقل قاعدة البيانات إلى حالة جديدة. يحفظ البيان 5 هذه الحالة الوسيطة الجديدة لقاعدة البيانات ويضع علامة عليها كحالة وسيطة عند النقطة A. ثم يتبع البيانان 6 و 7 ، اللذان ينقلان قاعدة البيانات إلى حالة جديدة. ويحفظ عامل التشغيل 8 هذه الحالة كحالة وسيطة عند النقطة B. يقوم المشغل 9 بإدخال بيانات جديد ، ويقوم المشغل 10 بإجراء بعض التحقق من الشرط 1 ؛ إذا تم استيفاء الشرط 1 ، فسيتم تنفيذ العبارة 11 ، والتي تعيد المعاملة إلى الحالة الوسيطة B. وهذا يعني أن عواقب إجراءات البيان 9 ، كما كانت ، تم محوها وتعود قاعدة البيانات مرة أخرى إلى الحالة الوسيطة ب ، على الرغم من أنه بعد تنفيذ البيان 9 كان بالفعل في حالة جديدة. وبعد التراجع عن المعاملة ، بدلاً من البيان 9 ، الذي تم تنفيذه مسبقًا من الحالة في قاعدة البيانات ، يتم تنفيذ البيان 13 الخاص بإدخال بيانات جديدة ، ثم يتم نقل التحكم إلى العبارة 14. يتحقق البيان 14 مرة أخرى من الحالة ، ولكن بالفعل بعض حالة جديدة 2 ؛ إذا تم استيفاء الشرط ، فسيتم نقل التحكم إلى المشغل 15 ، والذي يعيد المعاملة إلى الحالة الوسيطة A ، أي أن جميع المشغلين الذين قاموا بتغيير قاعدة البيانات ، بدءًا من 6 وتنتهي بـ 13 ، يعتبرون غير محققين ، أي اختفت نتائج تنفيذها وعادنا إلى الحالة مرة أخرى ، وكما بعد تنفيذ المشغل 4. بعد ذلك ، يتم نقل التحكم إلى المشغل 17 ، الذي يقوم بتحديث محتويات قاعدة البيانات ، وبعد ذلك يتم نقل التحكم إلى المشغل 18 ، والذي يرتبط بفحص الشرط 3. ينتهي الشيك إما بنقل التحكم إلى المشغل 20 ، الذي يقوم بتنفيذ المعاملة ، وتنتقل قاعدة البيانات إلى حالة ثابتة جديدة ، ومن المستحيل تغييرها في المعاملة الحالية. أو ، إذا تم نقل التحكم إلى المشغل 19 ، فعندئذٍ يتم إرجاع المعاملة إلى البداية وتعود قاعدة البيانات إلى حالتها الأولية ، وقد تم بالفعل التحقق من جميع الحالات الوسيطة هنا ، ومن المستحيل إجراء عملية التراجع إلى هذه الوسيطة تنص بعد تنفيذ المشغل 19.

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

سجل المعاملات

يتم توفير التنفيذ في نظام DBMS لمبدأ الحفاظ على الحالات الوسيطة ، أو تأكيد المعاملة أو التراجع عنها من خلال آلية خاصة ، يتم من أجل دعمها إنشاء بنية نظام معينة ، تسمى سجل المعاملات.

ومع ذلك ، فإن الغرض من سجل المعاملات أوسع بكثير. وهي مصممة لتوفير تخزين موثوق للبيانات في قاعدة البيانات.

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

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

· يجب حفظ نتائج المعاملات الملتزم بها في حالة استعادة قاعدة البيانات ؛

· يجب ألا تكون نتائج المعاملات غير الملتزم بها موجودة في الحالة المستعادة لقاعدة البيانات.

هذا ، في الواقع ، يعني أنه تتم استعادة أحدث حالة متسقة لقاعدة البيانات.

المواقف التالية ممكنة عندما تحتاج إلى استعادة حالة قاعدة البيانات.

· التراجع الفردي عن الصفقة. يجب تطبيق هذا التراجع في الحالات التالية:

o الموقف القياسي للتراجع عن المعاملة هو استكمالها الواضح ببيان ROLLBACK ؛

o إنهاء غير طبيعي لبرنامج التطبيق ، والذي يكافئ منطقيًا تنفيذ عبارة ROLLBACK ، ولكن له آلية تنفيذ مختلفة ؛

o إجبار التراجع عن معاملة في حالة حدوث توقف في التنفيذ الموازي للصفقات. في مثل هذه الحالة ، لكسر الجمود ، يمكن اختيار هذه المعاملة كـ "ضحية" وتنفيذها بواسطة نواة DBMS يتم إنهاؤها قسراً.

· الانتعاش بعد فقدان مفاجئ لمحتويات ذاكرة الوصول العشوائي (فشل ناعم). يمكن أن ينشأ هذا الموقف في الحالات التالية:

o في حالة الإغلاق الطارئ لإمدادات الطاقة ؛

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

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

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

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

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

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

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

يتم تمييز كل إدخال في سجل المعاملات برقم المعاملة التي ينتمي إليها وقيم السمات التي يتغير فيها. بالإضافة إلى ذلك ، بالنسبة لكل معاملة ، يتم تسجيل أمر بدء المعاملة وإنهائها في السجل (انظر الشكل 11.3).

لمزيد من الموثوقية ، غالبًا ما يتم تكرار سجل المعاملات بواسطة أدوات نظام DBMS التجارية ، وهذا هو السبب في أن حجم الذاكرة الخارجية أكبر بعدة مرات من الكمية الفعلية للبيانات المخزنة في التخزين.

هناك بديلان لتسجيل المعاملات: بروتوكول التحديث المؤجل وبروتوكول التحديث الفوري.

يفترض تسجيل التغيير المعلق الآلية التالية لتنفيذ المعاملات:

1. عندما تبدأ المعاملة T1 ، يتم إدخال سجل في البروتوكول

<Т1 Begin transaction>

2. أثناء تنفيذ المعاملة ، يتم كتابة قيمة جديدة في البروتوكول لكل سجل تم تغييره: ... هنا ID_RECORD هو رقم قياسي فريد.

3. إذا تم إكمال جميع الإجراءات التي تشكل معاملة T1 بنجاح ، فسيتم تسجيل المعاملة جزئيًا وإدخالها في البروتوكول.<Т1 СОММIТ>.

4. بعد تنفيذ المعاملة ، يتم استخدام سجلات البروتوكول المتعلقة بـ T1 لإجراء التغييرات المناسبة على قاعدة البيانات.

5. في حالة حدوث فشل ، ينظر نظام إدارة قواعد البيانات (DBMS) في السجل ويكتشف المعاملات التي يجب إعادة تنفيذها. تحتاج المعاملة T1 إلى إعادة بنائها إذا كان البروتوكول يحتوي على كلا السجلين<Т1 BEGIN TRANSACTION и <Т1 СОММIТ>... قد تكون قاعدة البيانات في حالة غير متسقة ، ومع ذلك ، يتم تضمين جميع القيم الجديدة لعناصر البيانات المتغيرة في السجل ، وهذا يتطلب إعادة تنفيذ المعاملة. لهذا ، يتم استخدام بعض إجراءات النظام REDOQ ، والتي تستبدل جميع قيم عناصر البيانات بأخرى جديدة ، بالنظر إلى البروتوكول بالترتيب المباشر.

6. إذا كان البروتوكول لا يحتوي على أمر تنفيذ المعاملة COMMIT ، فلن يكون هناك إجراء مطلوب ، ويتم إعادة تشغيل المعاملة.

أرز. 11.3.سجل المعاملات

توفر آلية بديلة ذات تنفيذ فوري إجراء تغييرات فورية على قاعدة البيانات ، وليس فقط الجديدة ، ولكن أيضًا جميع القيم القديمة للسمات التي تم تغييرها يتم إدخالها في البروتوكول ، بحيث يبدو كل سجل مثل<Т1, ID_RECORD, атрибут новое значение старое значение...>... في هذه الحالة ، تسبق الكتابة إلى السجل التنفيذ المباشر للعملية على قاعدة البيانات. عند تنفيذ المعاملة ، أي ، يتم مواجهة الأمر<Т1 СОММIТ>ويتم تنفيذه ، ثم يتم إجراء جميع التغييرات بالفعل في قاعدة البيانات ولا يلزم اتخاذ أي إجراء آخر فيما يتعلق بهذه المعاملة.

عندما يتم التراجع عن معاملة ، يتم تنفيذ إجراء النظام UNDO () ، والذي يُرجع جميع القيم القديمة في المعاملة الملغاة ، والمتابعة بالتسلسل عبر البروتوكول بدءًا من أمر BEGIN TRANSACTION.

يتم استخدام الآلية التالية لتجاوز الفشل:

· إذا كانت المعاملة تحتوي على أمر لبدء المعاملة ، ولكنها لا تحتوي على أمر الالتزام مع تأكيد تنفيذه ، فسيتم تنفيذ تسلسل الإجراءات كما هو الحال عند التراجع عن المعاملة ، أي ، يتم استعادة القيم القديمة .

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

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

التسجيل والتخزين المؤقت

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

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

يتمثل التحدي في تصميم سياسة دفع عامة لضمان إمكانية استرداد قاعدة البيانات من التعطل.

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

المبدأ الأساسي لسياسة متسقة لظهور المخزن المؤقت للسجل والمخازن المؤقتة لصفحة قاعدة البيانات هو أنه يجب كتابة التغيير في كائن قاعدة البيانات إلى ذاكرة السجل الخارجية قبل أن يكون الكائن المعدل في ذاكرة قاعدة البيانات الخارجية. يسمى بروتوكول التسجيل (وإدارة التخزين المؤقت) المقابل كتابة السجل (WAL) - "اكتب أولاً إلى السجل" ويتكون من حقيقة أنه إذا كنت تريد كتابة كائن قاعدة بيانات معدل إلى ذاكرة خارجية ، فيجب عليك أولاً التأكد من أن تتم كتابة سجل المعاملات في سجلات الذاكرة الخارجية للتغييرات.

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

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

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

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

الآن دعونا نلقي نظرة على كيفية إجراء عمليات استعادة قاعدة البيانات في مواقف مختلفة إذا كان النظام يحتفظ بسجل مشترك مخزن مؤقتًا لجميع المعاملات ويتم الحفاظ عليه وفقًا لبروتوكول WAL.

التراجع الفردي للمعاملة

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

لذلك ، يتم تنفيذ التراجع عن المعاملة الفردية (نؤكد مرة أخرى أن هذا ممكن فقط للمعاملات غير الملتزمة) على النحو التالي:

· يتم تحديد السجل التالي من قائمة هذه المعاملة.

· يتم تنفيذ العملية العكسية: بدلاً من عملية INSERT ، يتم تنفيذ عملية DELETE مقابلة ، ويتم تنفيذ عملية INSERT بدلاً من عملية DELETE ، وبدلاً من عملية التحديث المباشر ، تقوم عملية UPDATE العكسية باستعادة الحالة السابقة لقاعدة البيانات موضوع.

يتم أيضًا تسجيل أي من هذه العمليات العكسية. في الواقع ، هذا ليس ضروريًا للتراجع الفردي ، ولكن عند إجراء التراجع الفردي لمعاملة ما ، قد يحدث فشل بسيط ، وعند الاسترداد سيكون من الضروري التراجع عن معاملة لم يتم تنفيذ التراجع الفردي لها بشكل كامل.

· في حالة اكتمال التراجع بنجاح ، يتم كتابة سجل بنهاية المعاملة في السجل. من وجهة نظر السجل ، يتم تنفيذ مثل هذه المعاملة.

يتعافى من فشل ناعم

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

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

سنفترض أن السجل يحدد نقاط الاتساق المادي لقاعدة البيانات - اللحظات الزمنية التي تحتوي فيها الذاكرة الخارجية على النتائج المتسقة للعمليات التي اكتملت قبل النقطة الزمنية المقابلة ، ولا توجد نتائج للعمليات التي لها غير مكتمل ، ويتم دفع المخزن المؤقت للسجل إلى الذاكرة الخارجية. سننظر في كيفية تحقيق الاتساق الجسدي بعد ذلك بقليل. دعنا نسمي هذه النقاط tpc (وقت الاتساق المادي) - نقاط الاتفاق المادي.

بعد ذلك ، بحلول وقت الفشل الناعم ، تكون حالات المعاملة التالية ممكنة:

· تمت المعاملة بنجاح ، أي أنه تم تأكيد تشغيل معاملة COMMIT وتم استلام تأكيد لتنفيذها في الذاكرة الخارجية لجميع عمليات المعاملة ؛

· تمت المعاملة بنجاح ، ولكن لم يتم استلام تأكيد لتنفيذها في الذاكرة الخارجية لبعض العمليات ؛

· تم استلام المعاملة وتنفيذ الأمر ROLLBACK ؛

· لم تكتمل المعاملة.

اتساق قاعدة البيانات المادية

كيف يمكنك التأكد من وجود نقاط تناسق مادي في قاعدة البيانات ، أي كيفية استعادة حالة قاعدة البيانات في وقت tpc؟ هناك طريقتان رئيسيتان تستخدمان للقيام بذلك: نهج قائم على الظل وطريقة تستخدم تسجيل تغييرات قاعدة البيانات صفحة تلو الأخرى.

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

تظهر الفكرة العامة لآلية الظل في الشكل. 11.4.

أرز. 11.4.استخدام جداول الظل

في سياق قاعدة البيانات ، يتم استخدام آلية الظل على النحو التالي. يتم تنفيذ نقاط التفتيش بشكل دوري. للقيام بذلك ، يتم إكمال جميع العمليات المنطقية ، ويتم إخراج جميع المخازن المؤقتة للذاكرة الرئيسية ، التي لا تتوافق محتوياتها مع محتويات الصفحات المقابلة للذاكرة الخارجية. يتم استبدال جدول الظل لتعيين ملفات قاعدة البيانات بالجدول الحالي (بشكل صحيح ، تتم كتابة جدول التعيين الحالي في مكان واحد الظل).

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

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

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

لذلك ، أصبح الاحتفاظ بدفتر يوميات منفصل (قصير) للتغييرات المقسمة إلى صفحات أكثر شيوعًا. يتم استخدام هذه التقنية ، على سبيل المثال ، في منتج Informix Online المعروف.

لنفترض أنه كان من الممكن بطريقة ما استعادة الذاكرة الخارجية لقاعدة البيانات إلى الحالة عند نقطة زمنية tpc (كيف يمكن القيام بذلك - بعد ذلك بقليل). ثم:

· لا يلزم اتخاذ أي إجراء للمعاملة T1. انتهى قبل tpc ، وتنعكس جميع نتائجه في الذاكرة الخارجية لقاعدة البيانات.

· بالنسبة للمعاملة T2 ، تحتاج إلى إعادة تنفيذ باقي العمليات (إعادة). في الواقع ، لا توجد أي آثار للعمليات التي تم إجراؤها في المعاملة T2 بعد لحظة tpc في الذاكرة الخارجية. لذلك ، فإن إعادة التفسير المباشر لعمليات T2 صحيحة وستؤدي إلى حالة متسقة منطقيًا لقاعدة البيانات (بما أن معاملة T2 قد اكتملت بنجاح قبل الفشل الناعم ، يحتوي السجل على سجل لجميع التغييرات التي أجرتها هذه المعاملة).

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

· بالنسبة لمعاملة T4 التي بدأت بعد tpc وانتهت قبل فشل بسيط ، يجب إجراء إعادة كاملة.

أخيرًا ، لا يلزم اتخاذ أي إجراء للمعاملة T5 التي بدأت بعد لحظة tpc ولم يكن لديها وقت لإكمالها بحلول وقت الفشل الناعم. نتائج هذه المعاملة مفقودة تمامًا من الذاكرة الخارجية لقاعدة البيانات.

يتعافى من حادث تحطم صعب

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

يبدأ الاسترداد بنسخ قاعدة البيانات مرة أخرى من نسخة الأرشيف. ثم يتم إجراء إعادة لجميع المعاملات المكتملة ، أي يتم إعادة تنفيذ العمليات بترتيب آجل.

بتعبير أدق ، يحدث ما يلي:

· يتم تنفيذ جميع العمليات على طول جذوع الأشجار في الاتجاه الأمامي ؛

· بالنسبة للمعاملات التي لم تنته بحلول وقت الفشل ، يتم إجراء التراجع.

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

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

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

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

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

المعاملة هي أي عملية تتم باستخدام بطاقة مصرفية ، يؤدي تنفيذها إلى تغيير حالة حساب العميل. يمكن تنفيذ المعاملة في الوقت الفعلي (عبر الإنترنت) وغير متصل.

تتطلب المعاملات عبر الإنترنت تأكيدًا إلزاميًا للدفع في وقت إجراء الدفع أو تحويل الأموال.

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

هناك ثلاثة أطراف مشتركة في العملية:

  • البنك المقتني يخدم المنفذ المختار (إنها محطة نقاط البيع الخاصة به المثبتة في المتجر) ؛
  • البنك المُصدر الذي يقدم بطاقة الدفع المصرفية ؛
  • نظام الدفع الدولي ، وهو رابط وسيط في معاملات التسوية (فيزا ، ماستر كارد ، إلخ).

طلب المعاملات عبر الإنترنت

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

يتم إرسال البيانات المستلمة من قبل البنك المقتني إلى مركز معالجة البيانات (DPC) لنظام الدفع الدولي الذي يخدم البطاقة.

يتحقق مركز البيانات من وجود أو عدم وجود بطاقة دفع في قائمة الإيقاف (قد تظهر البطاقات المشتبه في ارتكابها احتيالية في قائمة الإيقاف) ، ونتيجة لذلك تتم الموافقة على العملية أو رفضها.

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

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

ميزات المعاملات عبر الإنترنت وغير المتصلة

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

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

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

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

منع وإلغاء المعاملات

المعاملات الأكثر شيوعًا هي المدفوعات في المتجر والتحويلات المالية والسحب النقدي. هناك عدة أسباب وراء حظر المعاملات.

الأكثر شيوعًا هي:

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

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

أسهل طريقة هي إلغاء المعاملة في اليوم الذي تم إجراؤه فيه.

وظيفة إلغاء العمليات في المحطات نفسها.

إذا تم بالفعل نقل البيانات من الأجهزة الطرفية إلى البنك ، فيجب عليك الاتصال بالمؤسسة المالية نفسها.