PDA

View Full Version : حرفه ای: تراکنش های همزمان در پایگاه داده



rezakho
چهارشنبه 06 شهریور 1392, 12:04 عصر
سلام به همه

عزیزان کار بلد برای اینکه مثلا در یک سیستم خرید همزمانی خرید و کاهش موجودی و ... پیش نیاد چه راه کاری پیشنهاد میکنند؟

مثلا یه فروشگاه داریم که از یک کالا 1 داره و دو نفر در یک بازه زمانی برای خرید اون کالا اقدام میکنند، فرایند اضافه به سبد کالا و خرید و ... تا پرداخت نهایی مثلا 1 دقیقه طول میکشه، هر دو در بدو ورود موجودی 1 رو میبینند و وارد فرایند خرید میشند، ولی یکی از اونها کالا رو خواهد خرید و برای اون یکی تو پایگاه داده به مشکل می خوریم، این اشکالات رو چجور (به شکل درست البته) میشه حل کرد؟

تا به حال با یه سری روش های من در آوردی راه می انداختیم ولی خوب خالی از اشکال نبوده

navid3d_69
چهارشنبه 06 شهریور 1392, 13:46 عصر
وقتی کاربر کلیک میکنه روی دکمه خرید اول چک کنید که هنوز موجودی اون وجود دارد اگر 0 بود که پیغام بدین موجودی ندارد اگر از 0 بیشتر بود که می تونه خرید کنه و بعد که دکمه خرید رو زد یک مقدار کم کنید تتا خرید کامل بشه اگر خرید مثلا بعد از 5 دقیقه کامل نشد یا کنسل شد شما اون 1 مقدار رو اضافه کنید

rezakho
شنبه 09 شهریور 1392, 10:17 صبح
ممنون،
این یکی از همون راه هایی هست که گفتم خودمون پیاده میکنیم،
اصولی تر کسی سراغ نداره؟

AliRezaPro
شنبه 09 شهریور 1392, 11:12 صبح
شما با این الگوریتم کل قابلیت ACID پایگاه داده رو زیر سئوال بردید , در هر صورت , پیشنهاد
کاربر اول وقتی یک کالا (از موجورد = 1) را برای خرید انتخاب کرد , به کاربر دومی که آن محصول را انتخاب کرد مقدار 0 نشان دهید , یا فیلد را قفل کلید و به کاربر دوم پیغام دهید این محصول توسط کاربری انتخاب و در سبد موجود است و موجودی قعلی 0 است , در صورت پرداخت صورت نگرفتن تعداد محصول آپدیت میشود