PDA

View Full Version : سوال: ثبت همزمان سفارش در سایت



arash69
دوشنبه 25 فروردین 1393, 20:50 عصر
با سلام به تمامی دوستان.
سوالی در رابطه با اتصال همزمان به پایگاه داده ی وبسایت داشتم؛
آیا در صورتی که دو نفر همزمان، بر روی سایت، سفارش ثبت نمایند؛ مشکلی در اتصال به پایگاه داده ایجاد خواهد شد؟

ممنون میشم راهنمایی کنید.

mRizvandi
دوشنبه 25 فروردین 1393, 23:33 عصر
با سلام به تمامی دوستان.
سوالی در رابطه با اتصال همزمان به پایگاه داده ی وبسایت داشتم؛
آیا در صورتی که دو نفر همزمان، بر روی سایت، سفارش ثبت نمایند؛ مشکلی در اتصال به پایگاه داده ایجاد خواهد شد؟

ممنون میشم راهنمایی کنید.
در حالت عمومی دسترسی همزمان معمولا در زمان ثبت اطلاعات اشکالی ایجاد نمی کنه. زمانی مساله رخ میده که دو کاربر به طور همزمان یک رکورد رو مورد ویرایش قرار بدند. که باید در زمان ویرایش رکورد رو لاک کنید یا مکانیزمهای دیگه ای استفاده کنید.

arash69
سه شنبه 26 فروردین 1393, 10:19 صبح
در حالت عمومی دسترسی همزمان معمولا در زمان ثبت اطلاعات اشکالی ایجاد نمی کنه. زمانی مساله رخ میده که دو کاربر به طور همزمان یک رکورد رو مورد ویرایش قرار بدند. که باید در زمان ویرایش رکورد رو لاک کنید یا مکانیزمهای دیگه ای استفاده کنید.

ممنون از توضیحاتتون.
برای لاک کردن رکورد، چیکار باید کرد؟
یا مکانیزم های دیگر برای این کار چی هستند؟

mRizvandi
سه شنبه 26 فروردین 1393, 11:50 صبح
این موضوع بحث بسیار گسترده ای است.
اگر رکورد لاک بشه و سیستم کاربر از کار بیفته رکورد لاک باقی می مونه و در خصوص وب سایت که برنامه بدون اتصال هست، این موضوع تقریبا دیتابیس رو از کار میندازه!
البته روشهایی در خصوص لاکینگ در دیتابیس هست که می تونید بخشی از اون رو از اینجا (http://msdn.microsoft.com/en-us/library/aa213026.aspx)ببینید.

راه کار پیشنهادی این هست که دو فیلد به هر جدولی که ممکنه توسط بیش از یک نفر مورد ویرایش قرار بگیره اضافه بشه، یکی برای تعیین وضعیت لاک و یکی زمان لاک شدن.
وقتی کاربری درخواست ویرایش میده، وضعیت رکورد به حالت لاک میره و زمان اون ثبت میشه.
اگر کاربر دیگری بخواد ویرایش کنه چون وضعیت لاک هست و زمان لازم از آنلاک شدن نگذشته، امکانش رو نخواهد داشت. (زمان رو مطابق با تعریف سیستم خودتون مشخص می کنید، مثلا میتونه مقدار زمان Session Time Out باشه)
هر چند که این حالت هم بالاخره رکورد رو به مدت زمانی از دسترس خارج می کنه ولی بهتر از مکانیزم لاکینگ رکورد توسط SQL Server هست.
بهتر اینه که یک برنامه مدیریت رکورد نوشته بشه که اون درخواستها رو بررسی کنه و مدیریت کنه که رکورد لاک بشه یا از لاک خارج بشه و ...
این موضوع در برنامه های ویندوزی بیشتر نمود داره تا در وب.