مفهوم الـ Atomicity 💯
.
.
تخيل إنك شغال على سيستم تحويل فلوس. العميل حول 1000 جنيه من حسابه، السيستم خصم الفلوس…
وقبل ما يضيفهم في حساب الشخص التاني، الكهرباء قطعت.
كده الفلوس طارت؟ ولا هترجع؟ ولا هتتحول؟
السؤال ده بيجاوب عليه مفهوم مهم جدًا في البرمجة والـ Databasese وهو الـ Atomicity
يا إما كل الخطوات تتم بالكامل...يا مفيش ولا خطوة تتم.
———
🤔 يعني إيه Atomicity؟
تخيل إنك بتسحب فلوس من الـ ATM.
العملية دي فيها خطوتين:
1- البنك يخصم المبلغ من حسابك.
2- الماكينة تطلع لك الفلوس.
لو حصل إن السيستم عمل الخطوة الأولى بس، ووقف فجأة قبل ما يوصلك الفلوس…
أنت كده خسرت فلوسك؟
هنا بقى ييجي دور الـ Atomicity.
الـ Atomicity معناها إن العملية كلها تتنفذ بالكامل من أولها لآخرها، أو ما تتنفذ خالص.
يعني All or Nothing.
في مثال الـ ATM: يا البنك يخصم وتاخد الفلوس، يا ميحصلش أي حاجة أصلًا.
مفيش نص عملية.
———
💡 إزاي ده بيتم؟
الـ Atomicity هي واحدة من الـ ACID Properties اللي بتضمن سلامة البيانات خصوصًا في الـ Databases.
علشان تحقق الـ Atomicity، السيستم بيستخدم حاجة اسمها Transactions.
كل Transaction بتتكون من مجموعة عمليات (زي insert، update، delete)،
والمفروض إن كل العمليات دي يحصلها commit في نفس الوقت، أو يحصلها rollback لو حصل أي خطأ.
مثال:
لو أي واحدة من الـ 2 updates فشلت، الـ transaction كلها هتتفك، والداتا ترجع زي ما كانت كأن مفيش حاجة حصلت.
———
⚠️ إيه اللي ممكن يبوّظ الـ Atomicity؟
- الـ Exceptions أو الـ Errors في جزء من الـ transaction.
- إنك تنفذ queries من غير transaction أصلًا
ولو السيستم مش بيطبق الـ Atomicity صح، الداتا ممكن تبقى corrupted، وساعتها ربنا يستر.
———
📌 إيه الفرق بين الـ Atomicity وبين الـ Consistency؟
الـ Atomicity بتتكلم عن هل العملية كلها تمت أو لا؟
الـ Consistency بتسأل هل الداتا بعد العملية في حالة صحيحة؟
يعني:
- الـ Atomicity = حصل commit كامل ولا لا؟
- الـ Consistency = لو حصل، الداتا بقت consistent ولا لا؟
الاتنين مكملين بعض، بس مش نفس الحاجة.
———
وفقكم الله لكل خير 🌿
.
.
تخيل إنك شغال على سيستم تحويل فلوس. العميل حول 1000 جنيه من حسابه، السيستم خصم الفلوس…
وقبل ما يضيفهم في حساب الشخص التاني، الكهرباء قطعت.
كده الفلوس طارت؟ ولا هترجع؟ ولا هتتحول؟
السؤال ده بيجاوب عليه مفهوم مهم جدًا في البرمجة والـ Databasese وهو الـ Atomicity
يا إما كل الخطوات تتم بالكامل...يا مفيش ولا خطوة تتم.
———
🤔 يعني إيه Atomicity؟
تخيل إنك بتسحب فلوس من الـ ATM.
العملية دي فيها خطوتين:
1- البنك يخصم المبلغ من حسابك.
2- الماكينة تطلع لك الفلوس.
لو حصل إن السيستم عمل الخطوة الأولى بس، ووقف فجأة قبل ما يوصلك الفلوس…
أنت كده خسرت فلوسك؟
هنا بقى ييجي دور الـ Atomicity.
الـ Atomicity معناها إن العملية كلها تتنفذ بالكامل من أولها لآخرها، أو ما تتنفذ خالص.
يعني All or Nothing.
في مثال الـ ATM: يا البنك يخصم وتاخد الفلوس، يا ميحصلش أي حاجة أصلًا.
مفيش نص عملية.
———
💡 إزاي ده بيتم؟
الـ Atomicity هي واحدة من الـ ACID Properties اللي بتضمن سلامة البيانات خصوصًا في الـ Databases.
علشان تحقق الـ Atomicity، السيستم بيستخدم حاجة اسمها Transactions.
كل Transaction بتتكون من مجموعة عمليات (زي insert، update، delete)،
والمفروض إن كل العمليات دي يحصلها commit في نفس الوقت، أو يحصلها rollback لو حصل أي خطأ.
مثال:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
لو أي واحدة من الـ 2 updates فشلت، الـ transaction كلها هتتفك، والداتا ترجع زي ما كانت كأن مفيش حاجة حصلت.
———
⚠️ إيه اللي ممكن يبوّظ الـ Atomicity؟
- الـ Exceptions أو الـ Errors في جزء من الـ transaction.
- إنك تنفذ queries من غير transaction أصلًا
ولو السيستم مش بيطبق الـ Atomicity صح، الداتا ممكن تبقى corrupted، وساعتها ربنا يستر.
———
📌 إيه الفرق بين الـ Atomicity وبين الـ Consistency؟
الـ Atomicity بتتكلم عن هل العملية كلها تمت أو لا؟
الـ Consistency بتسأل هل الداتا بعد العملية في حالة صحيحة؟
يعني:
- الـ Atomicity = حصل commit كامل ولا لا؟
- الـ Consistency = لو حصل، الداتا بقت consistent ولا لا؟
الاتنين مكملين بعض، بس مش نفس الحاجة.
———
وفقكم الله لكل خير 🌿
❤12
دردشة سريعة عن الـ ACID في الـ Database ⚡️
.
.
تخيل إنك شغال على system ضخم زي تطبيق بنكي أو موقع بيع أونلاين…
في اللحظة اللي المستخدم بيحوّل فيها فلوس أو بيأكد عملية شراء، لازم تكون متأكد إن البيانات دي محفوظة صح، ومفيش أي احتمال يحصل فيها خلل أو تضارب، حتى لو السيرفر وقع أو الكهرباء قطعت! ⚠️
وهنا ييجي دور الـ ACID وهو ده العمود الفقري اللي بيخلي الـ Database تكون ثابتة، موثوقة، ومتوقعة السلوك في كل الحالات، سواء كان عندك عملية واحدة بسيطة أو آلاف الـ transactions في نفس الثانية.
الـ ACID بيحط أربع قواعد أساسية بتخلي أي Database system يعرف يتصرف وقت المشاكل ويحافظ على البيانات من غير ما يحصل chaos أو data corruption.
———
يعني لو عندك transaction بتنقل فلوس من حساب لحساب:
- تسحب 1000 جنيه من حساب A
- وتضيف 1000 لحساب B
لو أول خطوة نجحت والتانية فشلت لأي سبب (مثلًا السيرفر وقع)، المفروض الـ Database ترجع كل حاجة زي الأول، كأن العملية محصلتش.
———
الـ Consistency معناها إن الـ Database تفضل دايمًا في state صحيحة ومظبوطة.
يعني كل القواعد (constraints, rules, triggers) اللي أنت محددها لازم تفضل متطبقة بعد أي عملية.
مثلًا: لو عندك rule بيقول إن الرصيد مينفعش يكون بالسالب، فـ بعد أي transaction لازم الـ DB تفضل محافظة على القاعدة دي.
لو حصل violation للقواعد دي، العملية كلها تتلغي.
———
تخيل معايا كذا transaction شغالين في نفس الوقت...
واحد بيضيف بيانات، والتاني بيعدّل، والتالت بيقرأ.
لو مفيش Isolation، الدنيا هتبقى فوضى، وكل transaction هيشوف الـ data وهي لسه بتتغير!
لكن مع وجود الـ Isolation، كل transaction بتتعامل كأنها العملية الوحيدة اللي بتتنفذ.
يعني حتى لو كذا transaction شغالين في نفس اللحظة، النتائج اللي بيشوفوها مضمونة ومفيهاش تداخل أو corruption.
وطبعًا فيه مستويات مختلفة للـ Isolation (زي Read Uncommitted, Read Committed, Repeatable Read, Serializable)، وكل واحدة لها trade-offs بين الأداء والدقة.
———
الـ Durability معناها إن بمجرد ما الـ Database تقولك "تمت العملية بنجاح"، يبقى خلاص الـ data دي محفوظة ومش هتضيع حتى لو السيرفر وقع أو الكهرباء قطعت.
إزاي؟
لأن الـ DB بتكتب التغييرات على الـ disk (أو الـ log files) قبل ما تقولك العملية نجحت، علشان تقدر تسترجعها لو حصل أي failure.
———
الـ ACID هو اللي بيخلي الأنظمة البنكية، الـ e-commerce systems، والـ booking platforms تشتغل بثقة بدون ما يحصل فيها chaos.
———
وفقكم الله لكل خير 🌿
.
.
تخيل إنك شغال على system ضخم زي تطبيق بنكي أو موقع بيع أونلاين…
في اللحظة اللي المستخدم بيحوّل فيها فلوس أو بيأكد عملية شراء، لازم تكون متأكد إن البيانات دي محفوظة صح، ومفيش أي احتمال يحصل فيها خلل أو تضارب، حتى لو السيرفر وقع أو الكهرباء قطعت! ⚠️
وهنا ييجي دور الـ ACID وهو ده العمود الفقري اللي بيخلي الـ Database تكون ثابتة، موثوقة، ومتوقعة السلوك في كل الحالات، سواء كان عندك عملية واحدة بسيطة أو آلاف الـ transactions في نفس الثانية.
الـ ACID بيحط أربع قواعد أساسية بتخلي أي Database system يعرف يتصرف وقت المشاكل ويحافظ على البيانات من غير ما يحصل chaos أو data corruption.
———
📌 أولًا: Atomicity
يعني لو عندك transaction بتنقل فلوس من حساب لحساب:
- تسحب 1000 جنيه من حساب A
- وتضيف 1000 لحساب B
لو أول خطوة نجحت والتانية فشلت لأي سبب (مثلًا السيرفر وقع)، المفروض الـ Database ترجع كل حاجة زي الأول، كأن العملية محصلتش.
———
📌 ثانيًا: Consistency
الـ Consistency معناها إن الـ Database تفضل دايمًا في state صحيحة ومظبوطة.
يعني كل القواعد (constraints, rules, triggers) اللي أنت محددها لازم تفضل متطبقة بعد أي عملية.
مثلًا: لو عندك rule بيقول إن الرصيد مينفعش يكون بالسالب، فـ بعد أي transaction لازم الـ DB تفضل محافظة على القاعدة دي.
لو حصل violation للقواعد دي، العملية كلها تتلغي.
———
ثالثًا: Isolation
تخيل معايا كذا transaction شغالين في نفس الوقت...
واحد بيضيف بيانات، والتاني بيعدّل، والتالت بيقرأ.
لو مفيش Isolation، الدنيا هتبقى فوضى، وكل transaction هيشوف الـ data وهي لسه بتتغير!
لكن مع وجود الـ Isolation، كل transaction بتتعامل كأنها العملية الوحيدة اللي بتتنفذ.
يعني حتى لو كذا transaction شغالين في نفس اللحظة، النتائج اللي بيشوفوها مضمونة ومفيهاش تداخل أو corruption.
وطبعًا فيه مستويات مختلفة للـ Isolation (زي Read Uncommitted, Read Committed, Repeatable Read, Serializable)، وكل واحدة لها trade-offs بين الأداء والدقة.
———
رابعًا: Durability
الـ Durability معناها إن بمجرد ما الـ Database تقولك "تمت العملية بنجاح"، يبقى خلاص الـ data دي محفوظة ومش هتضيع حتى لو السيرفر وقع أو الكهرباء قطعت.
إزاي؟
لأن الـ DB بتكتب التغييرات على الـ disk (أو الـ log files) قبل ما تقولك العملية نجحت، علشان تقدر تسترجعها لو حصل أي failure.
———
الـ ACID هو اللي بيخلي الأنظمة البنكية، الـ e-commerce systems، والـ booking platforms تشتغل بثقة بدون ما يحصل فيها chaos.
———
وفقكم الله لكل خير 🌿
❤10
Slow server components?
Don’t let users stare at a blank screen. React Suspense lets you load content progressively with smart fallbacks for a faster-feeling UI.
❤2