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

بخصوص - مشكلة تزامن تحديث البيانات / التعارضات

بدأه vbm في 22 مايو 2008 · 13 رد · 1,640 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الأخوة الأعزاء بعد التحية

فى برنامج لى مطور بالفيجوال بيزك دوت نت 2005

وقاعدة بيانات سيكوال سيرفر 2005 إكسبريس

ويعمل على شبكة محلية

والبرنامج لا يسمح سوى ب 5 مستخدمين

3 منهم لهم كل صلاحيات إدارة البرنامج

من خلال البرنامج وليس من خلال السيكوال

وهذة الطرق التى أتبعها

فقط أريد رأيكم بها وإنتقاداتكم لها

----------------------------------

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

وهى عمل rule وتكون حقل فى قاعدة البيانات

عند عمل أى من التحديث فى البيانات

يقوم إجراء get rule بالبحث عن كود العميل فى الرول

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

وإلا يبدأ فى عملة ويستدعى إجراء set rule

والذى يقوم بدورة بعمل قفل على سجل العميل بوضع كودة فى الرول

وعند الانتهاء من عملية التحديث يقوم الأجراء delete rule

بفتح قفل السجل بعد حذفة من الرول

--------------------------------

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

ولكنها لن تجدى مع برنامج أكبر

أرجو مناقشة الفكرة وإنتقادها

وأريد معرفة رأيكم بها

وشكرا لكم

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

#2

up

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

#3

المشكلة ستحدث لو كانت هناك عمليتا set rule في نفس الوقت. الحل الأصح هو استخدام Transaction مع عملية locking.

http://www.codeproject.com/KB/database/transactions.aspx

#4

أخى العزيز كل set rule تقوم بوضع كود السجل الذى يتم تحديثة الأن

إلى جدول مخصص لذلك بالقاعدة كيف سيحدث التضارب إذا

أرجو مناقشة ذلك

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

#5

هل من رد

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

#6

uP

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

#7

مش فاهم يعنى هو الموضوع تافة لهذة الدرجة :thumb_down: :thumb_down: :tantrum: :tantrum:

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

#8

up

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

#9

السلام عليكم

كما ذكر الاخ System down فالحل الافضل هو استخدام ال Transaction مع استخدام طريقة عزل مناسبة isolation levels

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

#10

شكرا لك أخى طارق

ولكن لم تقل لى رأيك بطريقتى

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

#11

السلام عليكم

اقتباس
ولكن لم تقل لى رأيك بطريقتى

ما دامت تفي بالغرض فهي جيدة لكن عليك الانتباه الى بعض الحالات منها:

خروج مستخدم من النظام مثلا بسبب خلل ما بالتالي سيبقى السجل معلق الى ما لانهاية

#12
TareqVB كتب:
السلام عليكم

ما دامت تفي بالغرض فهي جيدة لكن عليك الانتباه الى بعض الحالات منها:

خروج مستخدم من النظام مثلا بسبب خلل ما بالتالي سيبقى السجل معلق الى ما لانهاية

شكرا لك أخى طارق

وبالنسبة لخروج المستخدم

قمت بمنع ذلك وإلا يقوم البرنامج بمسح الرول المستخدمة

وكذلك يمكن للمدير مسح جميع الرول من برنامج الأدارة

فى أى حالة وخصوصا الححالة التى تحدثت عنها وجود خلل بالنظام

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

#13

لا تطنيش و لا حاجة. و لكن لنهاية الأسبوع أحكامه :)

المشكلة التي أراها في طريقتك:

تخيل أن لدينا موظفان أ و ب، و تخيل سير الأحداث التالية:

ب يقرأ getRule و يجدها فارغة

أ يقرأ getRule و يجدها فارغة

ب يسجل setRule

أ يسجل setRule

أ يعدل البيانات

ب يعدل البيانات

#14
System Down كتب:
لا تطنيش و لا حاجة. و لكن لنهاية الأسبوع أحكامه :)

المشكلة التي أراها في طريقتك:

تخيل أن لدينا موظفان أ و ب، و تخيل سير الأحداث التالية:

ب يقرأ getRule و يجدها فارغة

أ يقرأ getRule و يجدها فارغة

ب يسجل setRule

أ يسجل setRule

أ يعدل البيانات

ب يعدل البيانات

شكرا لك أخى

System Down على الرد

---------------------

الرول التى أقصدها تكون على حساب العميل

وفى هذا البرنامج من النادر ما يجتمع

إثنين من مدخلى البيانات على حساب عميل واحد

وبالنسبة لمثالك

عندما يقرا ب get rule

ويجدها فارغة

فإنة بدورة يسمح له بعمل قفل set rule

وهنا لن يستطيع أ عمل set rule

على حساب هذا العميل

--------------------------

ولى عندك أخى العزيز رجاء

هل يمكن أن تدلنى على مقالات أو كتب

فى عمليبة التزامن للوضع المتصل والمنفصل

وشكرا لك

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…