الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التزامن ومشاكله؟

بدأه Munir في 13 سبتمبر 2007 · 4 رد · 1,048 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل لازم نهتم بمشكلة التزامن او لا نبالي بها عندما نصمم برامج كبيرة ؟

هل تحدث مشاكل عندما يقوم مستخدمين باجراء معين في نفس الوقت على قاعدة البيانات مثل تسجيل فاتورة معينة او تعديل سجل معين؟

اتمنى ان يهتم الجميع بالموضوع اذا كان ذات أهمية.

#2

أضم صوتى لصوتك أخى

هل من مساعدة ؟

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

#3

بسم الله الرحمن الرحيم

لاجابة سؤالك يجب الاضطلاع على مضمون و محتوى البرنامج , لأن الحجم ليس هو المعيار فقد يكون كبير جداً و متفرع و لكن لا يؤثر كل جدول على الآخر و العكس صحيح

في الـ DBMS و عند تصميم العلاقات عليك تحديد المؤثرات لكل جدول على الآخر و أهمية حصولها و هل يقوم بعمل RollBack أم لا في حال انقطع الاتصال تبعاً لأولويات محددة مسبقاً

لنفرض مثلاً أنك تقوم بعملية سحب مبلغ من النقود من حسابك البنكي الذي به 100 درهم فقط بواسطة (ATM) الآن أنت فعلياً تقوم بعملية UPDATE للرصيد الخاص بك ... و لنفرض مثلاً و في نفس الوقت يقوم شخص آخر في فرع لنفس البنك بصرف شيك من حسابك الخاص و لتكن القيمة 100 درهم لكلا العمليتين , في هذه الحالة و اذا اهملنا عملية الـ Concurrent و تأثيرها سيؤول الحال

أ - جهاز الـ ATM يستعلم عن وجود 100 درهم في حسابك فيجيب بنعم و يصرف لك المبلغ

ب - موظف البنك يستعلم من الجهاز عن وجود 100 دهم فيجيب بنعم و يصرف لحامل الشيك المبلغ

(بفرض حدوث العمليتين بنفس الوقت) الناتج سيكون صرف 200 درهم لحساب لا يوجد به إلا 100 درهم ... النتيجة : البنك أفلس

اذاً, لتفادي هذه الكارثة يقوم السيرفر بعمل Lock على السجل الخاص بك , حتى انتهاء العملية فيقوم بـ Unlock لهذا السجل

في مثالنا السابق و حسب نظام البنك في تحديد الأولويات للعمليات (أعتقد في مثالنا الأولوية هي لصرف الشيك) فسيقوم بعمل Lock على حسابك و من ثم خصم القيمة 100 درهم , حينها نتيجة استعلام الـ ATM ستكون (رصيدك صفر) و رفض العملية

لتلخيص هذه الفكرة و في حال وجود أهمية و علاقة مؤثرة بين السجلات و حين حصولها في نفس الوقت نستنتج التالي

عمليات Read + Read لا تؤثر كل واحدة على الأخر فلا يتوجد عليك عمل Lock

عمليات Read + Write تؤثر و يجب عمل Lock

عمليات Write + Write تؤثر و يجب عمل Lock

و بهذا يحدد الـ Database Analyst مؤثرات كل سجل على الآخر تبعاً للعمليات و من بعد تحديدها يقوم المبرمج بتحديد الأولويات في حال حصل تضارب (حدوث عمليتين في نفس الوقت)

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

للاستزادة اقرأ عن Fundementals of Databases Management Systems (DBMS)

بالتوفيق

#4

أخى العزيز شكرا لك

أستخدم الأتصال المتصل ومستخدمى برنامجى لا يزيدون عن 5 أشخاص

ليس لأحدهم صلاحيات تحديث بيانات سوى 3

وأريد أن أعرف طريقة إضافة القفل للسجل الذى يتم تحديثة الأن

أنا أستخدم طريقة من تطويرى بوضع جدول لحالات قفل السجلات

ولكن أشك فى جديتة

لذلك هل تشرح لى أو تدلنى على الكود اللازم

وشكرا لك

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

#5

up

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

مواضيع مشابهة