PDA

View Full Version : گفتگو: اضافه کردن به جدول دیتابیس چند کاربره



rezayeman
پنج شنبه 08 خرداد 1393, 09:13 صبح
با سلام خدمت دوستان عزیز می خواستم از راهنمایی و تجربیات شما استفاده کنم

من یک دیتابیس دارم و برای درج و کارهای دیگه توی جداولش نرم افزاری هم با c# نوشتم. این نرم افزار محصولات یه شرکتی رو ثبت میکنه که همزمان توسط چند کاربر محصولات دیتابیس ثبت و همزمان توسط چند کاربر دیگر گزارش گیری انجام میشه. (به طور خلاصه نرم افزار توی شبکه اجرا میشه و چندین نفر دارن باهاش کار میکنن). کاری که من کردم اینه که به ازای هر رکورد به بانک متصل میشم و عمل insert انجام میدم. آیا این عمل باعث کندی نمیشه؟ اگه باعث کندی میشه چه کار کنم که تعداد اتصالات به بانکم کم بشه و این اطمینان وجود داشته باشه که اطلاعات از بین نمیره.

برای گزارش گیری به ازای هر درخواست به بانک متصل بشم یا اینکه یه بار داده ها رو بریزم تو دیتا گرید بعد از دیتا گرید واکشی کنم؟ نظرتون چیه؟

مرسی

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 09:43 صبح
با سلام خدمت دوستان عزیز می خواستم از راهنمایی و تجربیات شما استفاده کنم

من یک دیتابیس دارم و برای درج و کارهای دیگه توی جداولش نرم افزاری هم با C#‎‎‎ نوشتم. این نرم افزار محصولات یه شرکتی رو ثبت میکنه که همزمان توسط چند کاربر محصولات دیتابیس ثبت و همزمان توسط چند کاربر دیگر گزارش گیری انجام میشه. (به طور خلاصه نرم افزار توی شبکه اجرا میشه و چندین نفر دارن باهاش کار میکنن). کاری که من کردم اینه که به ازای هر رکورد به بانک متصل میشم و عمل insert انجام میدم. آیا این عمل باعث کندی نمیشه؟ اگه باعث کندی میشه چه کار کنم که تعداد اتصالات به بانکم کم بشه و این اطمینان وجود داشته باشه که اطلاعات از بین نمیره.


مرسی

مدل شما یک مدل کلاینت / سروری است و شما کار درست رو انجام می دید. به ازای هر درخواست (یا هر رکورد) یک Connection جدید با ویژگی های جدید باید ایجاد بشه.


برای گزارش گیری به ازای هر درخواست به بانک متصل بشم یا اینکه یه بار داده ها رو بریزم تو دیتا گرید بعد از دیتا گرید واکشی کنم؟ نظرتون چیه؟

چون داده های شما در حال تغییر هستند، پس این کار فایده ای نخواهد داشت. گزارش باید به روز و لحظه ای باشد.

rezayeman
پنج شنبه 08 خرداد 1393, 10:14 صبح
خوب این کار (یعنی هر باز insert کردن) باعث کندی نمیشه؟ باعث نمیشه درخواست از sql زیاد بشه و سیستم سرور کند کار کنه؟

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 10:19 صبح
خوب این کار (یعنی هر باز insert کردن) باعث کندی نمیشه؟ باعث نمیشه درخواست از sql زیاد بشه و سیستم سرور کند کار کنه؟

خیر. شما از یک کامپیوتر قدرتمند به نام سرور برای همین منظور استفاده می کنید.

شما اجازه ندارید یک Connection رو چند ساعت یا چند دقیقه باز بگذارید به خاطر اینکه بخواید n رکورد رو همزمان وارد کنید. مثلا فرض کنید می خواهید پول به حساب بریزید، آیا حاضر هستید رکورد شما با رکورد شخص دیگه همزمان و با یک Connection در سیستم ذخیره بشه؟ خیر.

مدل شما یک مدل تحت شبکه و Client / Server هست و ذات این مدل هم همین هست.

rezayeman
پنج شنبه 08 خرداد 1393, 10:22 صبح
حالا یه سوال دیگه.
واسه نصب این برنامه، رو هر سیستم بصورت جداگانه نصب کنم یا اینکه رو سرور نصب کنم و share کنم بهتره؟

rezaee2
پنج شنبه 08 خرداد 1393, 10:37 صبح
حالا یه سوال دیگه.
واسه نصب این برنامه، رو هر سیستم بصورت جداگانه نصب کنم یا اینکه رو سرور نصب کنم و share کنم بهتره؟

سلام دوست عزیز من تجربه خودم رو میگم دوستان دیگه شاید نظر دیگه ای داشته باشن:
برای نرم افزاری درحجم امکاناتی و داده ای خیلی بزرگتر من بصورت نصب روی سرور و شیر روی کلاینت ها استفاده کردم
این مزیت رو به من میده که بدون نیاز به اینکه روی تمام کلاینت ها بخواد نسخه جدید نصب بشه تنها سرور رو بروزرسانی میکنم و همه از نرم افزار جدید استفاده میکنن..
اما وقتی کاربری توی برنامس امکان دیتچ کردن دیتابیس و یا کپی نسخه جدید نرم افزار نیست...


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

روش شیر کردن این مشکل رو داره که شما هیچ یک از فایلهای سرور رو نمیتونید تغییر بدید (چون باید فولدر بصورت فقط خواندنی شیر شده باشه که کلاینتها مشکلی ایجاد نکنن)

موفق باشی

rezayeman
پنج شنبه 08 خرداد 1393, 11:03 صبح
من تو برنامه دارم کاری میکنم که حدالامکان برنامه سمت کاربر باشه و زیاد cpu سرور مشغول نکنه. حالا نظرتون چیه؟



روش شیر کردن این مشکل رو داره که شما هیچ یک از فایلهای سرور رو نمیتونید تغییر بدید (چون باید فولدر بصورت فقط خواندنی شیر شده باشه که کلاینتها مشکلی ایجاد نکنن)
موفق باشی

اگه فقط خواندنی باشه اجرای نرم افزار با مشکل مواجه نمیشه؟

نظرتون راجب پیشنهاد آقای اوبالیت به بو (http://barnamenevis.org/member.php?47457-%D8%A7%D9%88%D8%A8%D8%A7%D9%84%DB%8C%D8%AA-%D8%A8%D9%87-%D8%A8%D9%88) چیه؟

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

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 11:11 صبح
دوست من وقتی برنامه چند کاربره هست شک نکنید که باید تحت شبکه سیستم باید پیاده سازی بشه. یعنی DataBase شما حتما باید در سرور قرار داشته باشه.

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

rezayeman
پنج شنبه 08 خرداد 1393, 11:15 صبح
اگر بخواید برنامه رو هم روی سرور قرار بدید، از اول باید سیستم تحت وب می نوشتید.

تو برنامه ای که تقریبا هر 2 ثانیه یه بار محصول تو دیتابیس درج میشه تحت وب بودن کار را کند نمیکنه؟


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

اوبالیت به بو
پنج شنبه 08 خرداد 1393, 11:20 صبح
تو برنامه ای که تقریبا هر 2 ثانیه یه بار محصول تو دیتابیس درج میشه تحت وب بودن کار را کند نمیکنه؟


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

خیر تحت وب بودن کند نمی کند.

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

یک مثال از خرابی یا نقص می زنم: فرض کنید در یک دقیقه 5 محصول وارد می کنید و اگر بخواید از اون سیاست غلط که یک بار Connection رو باز می کنند استفاده کنید، اون موقع اگر برای محصول 5 خطایی رخ بده تمام 4 محصول قبلی هم دچار نقص می شوند. هر کاری، هر درخواست یا Requestیی باید جداگانه باهاش برخورد بشه.

rezayeman
پنج شنبه 08 خرداد 1393, 11:30 صبح
ممنون از راهنمایی ها تون

rezaee2
پنج شنبه 08 خرداد 1393, 12:24 عصر
پروژه رو بصورت وب سایت اجرا میخوای کنی؟ بنظرم مگر اینکه ajax کار کنی که منطقی باشه
اما برای ویندوزاپلیکیشن روش هست با تغییر اطلاعات دیتابیس، متوجه بشه و اطلاعات گرید هات فراخونی بشه.. باید فیلد توی دیتابیس بسازی که مقدار تصادفی دریافت کنه و چک بشه که اگه این عدد تغییر کرد ینی اطلاعاتت تغییر کرده
پس باید اطلاعات دوباره لود بشه

rezayeman
پنج شنبه 08 خرداد 1393, 14:53 عصر
lمقدار تصادفی از کجا دریافت کنه؟ میشه بیشتر توضیح بدی. من دقیق متوجه نشدم

rezayeman
شنبه 10 خرداد 1393, 06:40 صبح
اما برای ویندوزاپلیکیشن روش هست با تغییر اطلاعات دیتابیس، متوجه بشه و اطلاعات گرید هات فراخونی بشه.. باید فیلد توی دیتابیس بسازی که مقدار تصادفی دریافت کنه و چک بشه که اگه این عدد تغییر کرد ینی اطلاعاتت تغییر کرده
پس باید اطلاعات دوباره لود بشه

کسی هست اینو توضیح بده. من نمیدونم این روش چجوری کار میکنه.