PDA

View Full Version : سوال: خطرات درج همزمان اطلاعات توسط چند كاربر در بانك



AmirGhasemi
پنج شنبه 06 مهر 1391, 11:21 صبح
سلام دوستان
سوالي دارم كه توي ذهنم برام شكل گرفته!
من يك نرم افزار نوشته ام تحت ويندوز كه روي سرور هست و چند كلاينت از كامپيوتر خودشون به اين سرور وصل هستند و همزمان كار مي كنند!
حالا سوالم اينه كه به نظر شما درج همزمان اطلاعات توسط اين كاربرها كه حدود 30 نفر هستند در يك بانك ايجاد مشكل براي خود بانك يا سرور نمي كند؟؟؟؟
اين قضيه crashشدن ديتابيس چيه؟ ربطي به اين ماجراها داره؟

حمیدرضاصادقیان
پنج شنبه 06 مهر 1391, 14:07 عصر
سلام.
بحث همزمانی یا Concurrency یکی از مباحث اصلی در پایگاه داده است.
شما باید با روشهای گوناگون جلوی تداخل رکوردها رو بگیرید.یکی از این روشها استفاده از کلیدهای اصلی در جدول است.
دومین روش کنترل آخرین مقادیر درج شده در جدول است.
بحث Crash کردن دیتابیس ارتباطی به این مقوله ندارد.
یعنی دیتابیس ایراد پیدا کرده و در دسترس نیست.

AmirGhasemi
شنبه 08 مهر 1391, 09:33 صبح
سلام من بر استاد بزرگوار جناب حميدآقاي صادقيان
اگه ميشه يه كم بيشتر در مورد اين روشها توضيح بده؟! با كليد اصلي چي كار كنم كه جلوي همزماني را بگيره؟
كنترل اخرين مقدار ورودي چه مشكلي را حل ميكنه؟ اصلا كنترلش يعني چي؟

حمیدرضاصادقیان
دوشنبه 10 مهر 1391, 16:03 عصر
ببینید شما وقتی روی یک جدول PK داشته باشید کاربر نمیتونه مقادیر تکراری وارد کنه.میتونید نوع فیلد هم از نوع Identity بگیرید که مشکلی پیش نیاد.
مثلا یکی از روشها این هست که شما یک تابع می سازید برای اینکه مثلا شماره سند رو بهش ارجاع میدین و اون کنترل میکنه که ایا شماره تکراری هست یاخیر.
اگر تکراری بود یک شماره جدید به کاربر برمیگردونه اگر نه همون شماره رو برمیگردونه و ادامه ثبت سند انجام میشه.
یا شما میتونید هنگام ثبت ، یک رکورد رو Lock کنید که کاربر دیگه نتونه اونو تغییر بده.
تمامی این موارد و موارد دیگه بستگی به محیط مورد نظر شما، تعداد کاربران آنلاین ، اهمیت نرم افزار ، ساختار شبکه و نوع نرم افزار داره که نسبت به اون بهترین راه حل پیاده سازی میشه.