Forwarded from اللجنة العلمية CS 22 (Osama Dammag)
سلام 👋
إذا حصل crash لل database وفيه transaction يتنفذ أيش الذي يحصل ؟؟؟
لو حصل crash فيه شويه طرق نعملها علشان نحمي الداتا ونضمن انها ترجع بعد رجوع ال database
اول حاجه بيتم تسجيل التغييرات ف حاجه اسمها Transaction Log
أول حاجة الـ database بتستخدم حاجة اسمها Transaction Log الـ Transaction Log وهي عبارة عن ملف أو مجموعة ملفات بتسجل كل التغييرات اللي بتحصل على الـ transaction.
كل عملية تعديل، إضافة، أو حذف تتسجل في الـ Transaction Log قبل ما التغيير يحصل فعلًا في الـ database نفسها.
لو حصل crash الـ Transaction Log بيساعد في استعادة الـ database للحالة اللي كانت عليها قبل الـ crash
ثاني حاجه ال Crash Recovery Process
بعد ما الـ database ترجع تشتغل مرة ثانية بيبدأ حاجة اسمها Crash Recovery.
الـ Crash Recovery هي عملية بيتم من خلالها قراءة الـ Transaction Log عشان نشوف إيش الذي حصل قبل الـ crash.
العملية بتشمل عمليتيين رئيسيتين
ال Redo : إعادة تنفيذ العمليات اللي كانت في النص و عاده ما خلصت وقت الـ crash يعني لو كان في عمليات تمت واكتتبت في الـ Transaction Log بس ما زالت متنفذتش في الـ database الـ database بتعيد تنفيذها.
ال Undo : التراجع عن أي عمليات تمت بس ما خلصت يعني لو كان في عمليات بدأت وما خلصت وقت الـ crash بيتم التراجع عنها عشان يرجع كل حاجة مثل ما كانت.
تعال نوضح بمثال بسيط عشان نكون فاهمين 😁
تخيل إنك بتعمل عملية نقل فلوس بين حسابين في البنك:
بداية الـ Transaction:
بتبدأ transaction عشان تنقل الفلوس.
ال Execution :
الفلوس بتتخصم من حسابك.
بيحصل crash قبل ما الفلوس تدخل الحساب الثاني.
ال Crash Recovery :
بعد ما الـ database ترجع تشتغل بتشوف إيش الذي كان بيحصل قبل الـ crash.
بتشوف إن الفلوس انخصمت بس ما وصلتش للحساب التاني.
هنا لو الـ Transaction Log مسجل الخصم بس مش مسجل الإضافة هتعمل Undo وترجع الفلوس لحسابك.
ولو مسجل الخصم والإضافة بس العملية ما اكتملتش هتعمل Redo وتكمل نقل الفلوس للحساب الثاني.
ال Atomicity and ACID Properties
في الـ database في حاجة اسمها ACID Properties اللي بتضمن إن أي transaction لازم تكون Atomical يعني إما ينفذ بالكامل أو ماينفذش ب الخالص.
الـ database بتستخدم الـ Transaction Log وCrash Recovery عشان تحقق الـ Atomicity وتضمن إن لو حصل crash تقدر ترجع كل حاجة مثل ما كانت أو تكمل التغييرات اللي كانت تحصل
ال Checkpointing :
في أوقات معينة الـ database بتعمل حاجة اسمها Checkpoint وهي عبارة عن نقطة حفظ مؤقتة بتسجل كل التغييرات الذي قد حصلت ل نقطة معينة في الـ database.
لما بيحصل crash الـ database بتبدأ عملية الـ Crash Recovery من آخر Checkpoint عشان تسرع العملية
خلاصة الموضوع
لو حصل crash أثناء تنفيذ الـ transaction في الـ database بتستخدم الـ Transaction Log عشان تسترجع الحالة اللي كانت عليها قبل الـ crash بعد ما ترجع تشتغل بتعيد تنفيذ أو تلغي العمليات اللي كانت في النص عشان تضمن إن البيانات تبقى سليمة ومافيش حاجة تروح هدرا.
كل هذا بيحصل بفضل الـ Crash Recovery والـ ACID Properties اللي بتضمن إن الـ transactions إما تنفذ بالكامل أو ترجع كل حاجة مثل ما كانت
وبس كذا ي اصدقائي 🤍 نكون رجعنا عملنا 👍
#مساعد
#sql
#database
إذا حصل crash لل database وفيه transaction يتنفذ أيش الذي يحصل ؟؟؟
لو حصل crash فيه شويه طرق نعملها علشان نحمي الداتا ونضمن انها ترجع بعد رجوع ال database
اول حاجه بيتم تسجيل التغييرات ف حاجه اسمها Transaction Log
أول حاجة الـ database بتستخدم حاجة اسمها Transaction Log الـ Transaction Log وهي عبارة عن ملف أو مجموعة ملفات بتسجل كل التغييرات اللي بتحصل على الـ transaction.
كل عملية تعديل، إضافة، أو حذف تتسجل في الـ Transaction Log قبل ما التغيير يحصل فعلًا في الـ database نفسها.
لو حصل crash الـ Transaction Log بيساعد في استعادة الـ database للحالة اللي كانت عليها قبل الـ crash
ثاني حاجه ال Crash Recovery Process
بعد ما الـ database ترجع تشتغل مرة ثانية بيبدأ حاجة اسمها Crash Recovery.
الـ Crash Recovery هي عملية بيتم من خلالها قراءة الـ Transaction Log عشان نشوف إيش الذي حصل قبل الـ crash.
العملية بتشمل عمليتيين رئيسيتين
ال Redo : إعادة تنفيذ العمليات اللي كانت في النص و عاده ما خلصت وقت الـ crash يعني لو كان في عمليات تمت واكتتبت في الـ Transaction Log بس ما زالت متنفذتش في الـ database الـ database بتعيد تنفيذها.
ال Undo : التراجع عن أي عمليات تمت بس ما خلصت يعني لو كان في عمليات بدأت وما خلصت وقت الـ crash بيتم التراجع عنها عشان يرجع كل حاجة مثل ما كانت.
تعال نوضح بمثال بسيط عشان نكون فاهمين 😁
تخيل إنك بتعمل عملية نقل فلوس بين حسابين في البنك:
بداية الـ Transaction:
بتبدأ transaction عشان تنقل الفلوس.
ال Execution :
الفلوس بتتخصم من حسابك.
بيحصل crash قبل ما الفلوس تدخل الحساب الثاني.
ال Crash Recovery :
بعد ما الـ database ترجع تشتغل بتشوف إيش الذي كان بيحصل قبل الـ crash.
بتشوف إن الفلوس انخصمت بس ما وصلتش للحساب التاني.
هنا لو الـ Transaction Log مسجل الخصم بس مش مسجل الإضافة هتعمل Undo وترجع الفلوس لحسابك.
ولو مسجل الخصم والإضافة بس العملية ما اكتملتش هتعمل Redo وتكمل نقل الفلوس للحساب الثاني.
ال Atomicity and ACID Properties
في الـ database في حاجة اسمها ACID Properties اللي بتضمن إن أي transaction لازم تكون Atomical يعني إما ينفذ بالكامل أو ماينفذش ب الخالص.
الـ database بتستخدم الـ Transaction Log وCrash Recovery عشان تحقق الـ Atomicity وتضمن إن لو حصل crash تقدر ترجع كل حاجة مثل ما كانت أو تكمل التغييرات اللي كانت تحصل
ال Checkpointing :
في أوقات معينة الـ database بتعمل حاجة اسمها Checkpoint وهي عبارة عن نقطة حفظ مؤقتة بتسجل كل التغييرات الذي قد حصلت ل نقطة معينة في الـ database.
لما بيحصل crash الـ database بتبدأ عملية الـ Crash Recovery من آخر Checkpoint عشان تسرع العملية
خلاصة الموضوع
لو حصل crash أثناء تنفيذ الـ transaction في الـ database بتستخدم الـ Transaction Log عشان تسترجع الحالة اللي كانت عليها قبل الـ crash بعد ما ترجع تشتغل بتعيد تنفيذ أو تلغي العمليات اللي كانت في النص عشان تضمن إن البيانات تبقى سليمة ومافيش حاجة تروح هدرا.
كل هذا بيحصل بفضل الـ Crash Recovery والـ ACID Properties اللي بتضمن إن الـ transactions إما تنفذ بالكامل أو ترجع كل حاجة مثل ما كانت
وبس كذا ي اصدقائي 🤍 نكون رجعنا عملنا 👍
#مساعد
#sql
#database