Fintech Product & Biz

تخيل لو عندك عملية تحويل أموال بين حسابين: يتم خصم المبلغ من الحساب الأول وإضافته للثاني. لو…

تخيل لو عندك عملية تحويل أموال بين حسابين: يتم خصم المبلغ من الحساب الأول وإضافته للثاني. لو تعطل النظام بعد الخصم وقبل الإضافة، كيف قاعدة البيانات تحافظ على consistent state؟ في هذه الحالة يجي دور تقنية Write-Ahead…

تخيل لو عندك عملية تحويل أموال بين حسابين: يتم خصم المبلغ من الحساب الأول وإضافته للثاني. لو تعطل النظام بعد الخصم وقبل الإضافة، كيف قاعدة البيانات تحافظ على consistent state؟ في هذه الحالة يجي دور تقنية Write-Ahead Logging (WAL).
الـ WAL يضمن تسجيل كل عملية أولاً في ملف log قبل تعديل البيانات الفعلية. الفكرة ببساطة: اكتب أولاً، نفذ لاحقًا. لو حصل أي عطل النظام بيروح يستخدم الـ log عشان يسترجع الحالة الأخيرة الصحيحة أو إكمال العملية.
من الميزات الكبيرة في ال WAL هي ضمان خاصية Atomicity. واللي بتقول أن العملية يا إما تتم بالكامل أو تُلغى تمامًا. عشان ننفذ حاجة زي كذه في بقواعد البيانات حاجة اسمه Transaction هو اللي بيضمن أن العملية بتكون Atomicity.
طبعاً عملية الكتابة في log أسرع لأنها مرتبة ومتسلسلة. وهذا يحسن الأداء مقارنة بالكتابة المباشرة.
قواعد بيانات زي PostgreSQL تعتمد على هذا الأسلوب لتسريع العمليات وضمان ال consistent state.
في حالة حصلت أعطال. النظام بيروح يراجع الـ log لمعرفة العمليات المكتملة وغير المكتملة. ويسترجع البيانات بناء على ذلك.
يتم تقليل حجم الـ log بشكل دوري باستخدام checkpoints لدمج البيانات المسجلة مع البيانات الفعلية.
حاجة زي الأنظمة الموزعة، الـ WAL يضمن اتساق البيانات بين العُقد عن طريق نقل العمليات المسجلة بدل البيانات الأصلية.
التحدي الوحيد هو زيادة استهلاك القرص بسبب الكتابة المزدوجة. لكن لو قارنا ذا الشيء بالميزة اللي يمنحها ال WAL بيكون بسيط لضمان استقرار واتساق قواعد البيانات.

LinkedIn

Original source

This content was originally published as a LinkedIn post. Open it in a new tab.

Open on LinkedIn