نمایش نتایج 1 تا 10 از 10

نام تاپیک: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

  1. #1

    روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

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

    روش های مختلفی مانند ADO.NET,EF,LINQ,Stored PROsedure هر کدام چطور با این پدیده رفتار میکنند ؟


    البته ظاهرا یکی از روشهای مقابله با این روش استفاده از SP هاست


    با تشکر

  2. #2
    کاربر دائمی آواتار alibilgats
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    همین حوالی
    پست
    155

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    سلام
    دوست عزیز اگر منظورتون از دیتابیس MS SQL هستش باید خدمتتون عرض کنم که خود MS SQL اینجور موارد رو کنترل میکنه! اصلا اصول بانک های اطلاعاتی که توانایی ارائه سرویس روی شبکه رو دارن همینه!
    و اگر منظورتون اینه که برای مثال شما دارید توی برنامتون داده های یک رکورد رو توی یه فرم ویرایش میکنید و یه کار بر دیگه هم در همون زمان اطلاعات همون رکورد رو باز کرده و داره ویرایش میکنه باید بگم که تداخل در اینجا فقط زمانی معنی داره که هر دو کاربر همزمان دکمه ثبت رو بزنن! که این حالت هم توسط خود بانک اطلاعاتی مدیریت میشه.
    ولی اگر فرض رو بر این بگیریم که شما یه رکورد رو باز کردید برای ویرایش و یه کاربر دیگه در همون زمان که شما در حال ویرایش هستید اون رکورد رو حذف کنه! در این حالت شما باید خطاها رو کنترل کنید و پیغام متناسب رو نمایش بدید.
    امیدوارم درست توضیح داده باشم.

  3. #3

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط alibilgats مشاهده تاپیک
    سلام
    دوست عزیز اگر منظورتون از دیتابیس MS SQL هستش باید خدمتتون عرض کنم که خود MS SQL اینجور موارد رو کنترل میکنه! اصلا اصول بانک های اطلاعاتی که توانایی ارائه سرویس روی شبکه رو دارن همینه!
    و اگر منظورتون اینه که برای مثال شما دارید توی برنامتون داده های یک رکورد رو توی یه فرم ویرایش میکنید و یه کار بر دیگه هم در همون زمان اطلاعات همون رکورد رو باز کرده و داره ویرایش میکنه باید بگم که تداخل در اینجا فقط زمانی معنی داره که هر دو کاربر همزمان دکمه ثبت رو بزنن! که این حالت هم توسط خود بانک اطلاعاتی مدیریت میشه.
    ولی اگر فرض رو بر این بگیریم که شما یه رکورد رو باز کردید برای ویرایش و یه کاربر دیگه در همون زمان که شما در حال ویرایش هستید اون رکورد رو حذف کنه! در این حالت شما باید خطاها رو کنترل کنید و پیغام متناسب رو نمایش بدید.
    امیدوارم درست توضیح داده باشم.
    دقیقا منظورمم همینه که وقتی دو کاربر همزمان بدون هیچ فاصله ای بیان و مثلا دکمه آپدیت را بزنه چه اتفاقی میفته؟

  4. #4
    کاربر دائمی آواتار امیر مهرشاد
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بجنورد (پاریس کوچولو)
    پست
    686

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط csharpprogramer88 مشاهده تاپیک
    دقیقا منظورمم همینه که وقتی دو کاربر همزمان بدون هیچ فاصله ای بیان و مثلا دکمه آپدیت را بزنه چه اتفاقی میفته؟
    مهندس بهترین راه حلی که برای این کار پیدا کردم اینه که بمحض اینکه آن رکورد خاص در معرض ویرایش یکی از کاربران قرار میگیرد بر اساس ID یا هر کد یونیکی که مربوط به آن رکورد میشه رو برای بقیه یوزرها قفل کنیم و پیغام این رکورد توسط کاربر X در حال ویرایش است مجددا سعی نماییدیا ...... رو بدیم و برای مدیریت بهتر این که یک کاربر در حال ویرایش رفت آبدارخونه به هوای صبحونه و .... خود بخود از حالت قفل دربیاد


    از triger های sql هم میشه عالی استفاده کرد

  5. #5

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط امیر مهرشاد مشاهده تاپیک
    مهندس بهترین راه حلی که برای این کار پیدا کردم اینه که بمحض اینکه آن رکورد خاص در معرض ویرایش یکی از کاربران قرار میگیرد بر اساس ID یا هر کد یونیکی که مربوط به آن رکورد میشه رو برای بقیه یوزرها قفل کنیم و پیغام این رکورد توسط کاربر X در حال ویرایش است مجددا سعی نماییدیا ...... رو بدیم و برای مدیریت بهتر این که یک کاربر در حال ویرایش رفت آبدارخونه به هوای صبحونه و .... خود بخود از حالت قفل دربیاد


    از triger های sql هم میشه عالی استفاده کرد
    مهندس میخام بدونم تکنولوژیهای مختلفی مانند ADO.NET,EF,LINQ,Stored PROsedure هر کدام چطور با این پدیده رفتار میکنند ؟
    وگرنه خودم بخوام مدیریت کنم خیلی کارهای دیگه هم میشه کرد

  6. #6
    کاربر دائمی آواتار alibilgats
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    همین حوالی
    پست
    155

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط csharpprogramer88 مشاهده تاپیک
    دقیقا منظورمم همینه که وقتی دو کاربر همزمان بدون هیچ فاصله ای بیان و مثلا دکمه آپدیت را بزنه چه اتفاقی میفته؟
    گفتم که دوست عزیز! به هیچ وجه این امکان وجود نداره که دو نفر از سیستم مجزا با شرایط مختلف بیان و دکمه ثبت رو همزمان بزنن و بانک اطلاعاتی برای ثبت دچار مشکل بشه و خطای همزمانی بده! بر فرض محال اگر هم همچین اتفاقی بیفته خود بانک اطلاعاتی میاد دوتا درخواست رو در نهایت توی یه صف قرار میده.
    و باید خدمتتون عرض کنم که هم ردیف قرار دادن تکنولوژی های
    ADO.NET,EF,LINQ
    با
    Stored Procedure
    صحیح نیست!! چون کلا کارشون فرق میکنه!
    Stored Procedure
    کاربردش توی خود بانک اطلاعاتی هستش و هم ردیف Triger و Transaction و Function قرار میگیره در حالی که تکنولوژی های
    ADO.NET,EF,LINQ
    برای اتصال هستن!
    به نظر من شما نباید خودتون رو درگیر مسایل تداخل و همزمانی طرف دیتابیس کنید چون این موارد خیلی سال پیش توسط شرکت های تولید کننده بانک های اطلاعاتی برطرف شده.
    شما فقط باید برخی موارد مثل ویرایش همزمان یا حذف و ویرایش همزمان و مواردی از این دست رو مدیریت کنید.
    موفق باشید

  7. #7
    کاربر دائمی آواتار mohammad5530
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    اهواز
    پست
    212

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    Linq و EF رو استفاده بکنی هیچ وقت به مشکل همزمانی برخورد نمیکنی . چون بعد از هرنوع کوئری درواقع تمام میشوند

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    وقتي يه كاربر به DataBase وصل ميشه و روي جدولي مي خواد كار كنه اون جدول توسط DBMS قفل ميشه و بقيه درخواستها تو صف قرار مي گيرن، و اين باعث اتلاف وقت ميشه، روشي ((with (updlock, holdlock) وجود داره كه فقط row مورد نظر رو lock ميكنه و بقيه ركوردها ميتونن توسط بقيه كاربرا استفاده بشن.

    ديتابيس انجين هايي مثل MS SQL SERVER به صورت default كل جدول رو lock ميكنن!!!

    اين مورد زياد به موضوع اينجا ربط نداشت ولي گفتم بد نيست اشاره اي كنم:


    FROM TABLE_ITEM with (updlock, holdlock)

  9. #9

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط mohammad5530 مشاهده تاپیک
    Linq و EF رو استفاده بکنی هیچ وقت به مشکل همزمانی برخورد نمیکنی . چون بعد از هرنوع کوئری درواقع تمام میشوند
    طبق فرمایش دوستان خوده اس کیو ال سرور این کار را انجام میده و نیازی به ما نیست و ربطی هم به تکنولوژی نداره

  10. #10

    نقل قول: روش های ارتباط با دیتابیس و چگونگی برخورد با همزمانی

    نقل قول نوشته شده توسط elec60 مشاهده تاپیک
    ...

    ديتابيس انجين هايي مثل MS SQL SERVER به صورت default كل جدول رو lock ميكنن!!!

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

تاپیک های مشابه

  1. روش های متفاوت در دیتابیس
    نوشته شده توسط hamedjj در بخش Android Studio
    پاسخ: 7
    آخرین پست: چهارشنبه 09 بهمن 1392, 16:06 عصر
  2. سوال: تفاوت در روش های اتصال به دیتابیس
    نوشته شده توسط mz6488 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: شنبه 01 تیر 1392, 17:39 عصر
  3. گفتگو: بهترین روش برای ارتباط با دیتابیس
    نوشته شده توسط amir4015 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 24 فروردین 1392, 01:11 صبح
  4. آموزش: روش های اتصال به دیتابیس SQL Server
    نوشته شده توسط birtemp در بخش C#‎‎
    پاسخ: 0
    آخرین پست: دوشنبه 11 دی 1391, 19:23 عصر
  5. سوال: روش های ارتباط برنامه با موبایهای دیگه
    نوشته شده توسط ZerOne در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 9
    آخرین پست: یک شنبه 01 اسفند 1389, 09:56 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •