PDA

View Full Version : نرم افزار سمت سرور با اجرای query های خیلی زیاد



RHamidR
شنبه 10 آبان 1393, 22:01 عصر
سلام دوستان
مثل همیشه که اینجا سوال پرسیدم به جواب کامل و دقیق رسیدم این بار هم از اساتید محترم این سایت درخواست راهنمایی دارم.

الان در حال کار بر روی یک پروژه تحت vb.net هستم که در Visual Studio 2013 قصد انجامش رو دارم. (البته خیلی وقته شروع کردم و دارم میرم جلو).
یک نرم افزار با زبان vb.net رو در نظر بگیرید که در روز شاید در حد یکی دو میلیون query اجرا بشه و حجم رکورد های داخل دیتابیس هم بیش از حد زیاده.

و اما سوال
از کدوم دیتابیس برای این برنامه برای افزایش سرعت (مهمتر از همه) و کارآیی استفاده کنم (SQL Server , MySQL , SQLLite , .....) [البته چون از vb.net استفاده میکنم فکر میکنم که SQL Server بهتر از همه باشه] ولی باز منتظر پیشنهادهای دوستانم
احساس میکنم که اگه دیتابیس رو بصورت Local در سرور پیاده سازی کنم بهتره و به نظرم همون ریلیس sql server Expresss پاسخگو باشه (شاید بخاطر حجم دیتابیس به مشکل بخورم که در صورت داشتن راه حل بهتر سراپاگوشم) ولی اگه نظر متفاوتی دارید ممنون میشم اشتباهم رو بهم بگید و از کدوم ریلیز استفاده کنم بنظر شما بهتره.

خیلی ممنون

RHamidR
یک شنبه 11 آبان 1393, 22:26 عصر
دوستان من همچنان منتظرم بگید کارم اشتباهه یا درسته.
شاید تعداد query های insert و update بیشتر هم بشه.

و اینکه تصاویر رو بصورت فایل نگهدارم و آدرس رو در دیتابیس بنویسم باعث افزایش سرعت میشه یا بهتره که همون تصاویر رو در دیتابیس بنویسم؟
من هنوز قسمت دیتابیس کار رو شروع نکردم.
امیدوارم با راهنماییهاتون منو کمک کنید.

محمد آشتیانی
دوشنبه 12 آبان 1393, 11:50 صبح
سلام
دوست عزیزم امیدوارم از صحبت های بنده ناراحت نشی ، اما شما تصوری از عدد دومیلیون کوئری داری اصلا؟
یا فکر میکنی هرچی عدد بزرگتری بگی احتمالا دوستان ممکنه بیشتر کمک کنن

از طرفی فرض میکنیم عدد و رقمی که شما فرمودین درست باشه ، کسی که برنامه ای به این وسعت رو مینویسه به نظر خودت نباید هیچ پیش زمینه ای از سیستمهای DBMS داشته باشه؟ طبیعتا اگر اینجوری بود شما هیچوقت به گزینه هایی مثل sqlite یا sql server express فکر هم نمیکردی

با همه این تفاسیر به نظر میرسه شما با این حجم داده مجبوری از Sql server enterprise و یا حتی Oracle استفاده کنی

در مورد پست دومت هم سه تا راه داری که انتخابشون کاملا بستگی به حجم فایل ها و تعداد رکورد ها داره
۱- فایل ها رو روی هارد ذخیره کنی و آدرس اونا رو تو دیتابیس
۲- تصاویر رو تو دیتابیس ذخیره کنی
۳- از قابلیت File Stream که از Sql Server 2008 به بعد اضافه شده استفاده کنی

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


موفق باشید.

RHamidR
دوشنبه 12 آبان 1393, 17:31 عصر
سلام
خب دوست من ، من که نگفتم فردا میخوام تحویل بدم و چیزی که دارم اینجا زمان کافی برای تمرین و تکرار.
نخیر من اصلا عدد رو جوری نگفتم که بقیه ترغیب بشن جواب بدن یا فکر کنن که... .
انگار دوست من شما تصور درستی از 2ملیون کوئری نداری!!! الان که یه سایت با بازدید بالا راه میندازی اصلا همین سایت در روز چند دستور دیتابیس اجرا میشه بنظر شما؟؟ (Select , Insert , Update , Delet)؟
100تا؟ 1000؟ 100000؟ مطمئنم هرچی باشه از 1ملیون کمتر نیست. حالا فرض کنید که نرم افزاری که بطور مثال (بازم میگم بطور مثال) همین سایت رو بدون IIS سرور ارائه بده و هرکس با اینترنت بتونه ازش استفاده کنه آیا میشه گفت..... خلاصه سرتون رو درد نیارم.
بنده پروژه های زیادی انجام دادم ولی حرف شما کاملا درسته. (نه با این وسعتی که خودم گفتم) ولی
من بحمدالله این پروژه رو فقط با یه سری مطالعات تئوری پیش زمینه در مورد MultiThreading و SQL (مسائل مهم این پروژه) که از قبل داشتم استارت زدم و با تحقیقات بیشتر تو فرومها (انگلیسی و فارسی) پیش بردم که مطمئنم قسمت MultiThreading (بصورت پیچیده و با دقت و تحقیق درمورد تک تک دستورات و پیاده سازی هر کلاس که چه نوع باشه و فانکشن هاش هم همینطور) فراتر از چیزی که میخواستم بهتر شده (بدون حتی سوال و درخواست راهنمایی از کسی).
اما الان که قسمت دیتابیس هستم و میترسم قدم تو راه اشتباهی بذارم پس از فعالین این سایت درخواست کمک کردم و
ممنونم از شما بخاطر پاسخگوییتون و فکر کنم بخاطر تصدیق شما در استفاده از sql server enterprise از همین نسخه استفاده کنم.
ولی در مورد پاسخ سوال دوم، دو مورد اول رو در موردش از قبل اطلاع داشتم و همونطور که در سوالم پرسیدم تنها پارامتر مهم برای من اجرای کوئری و تحویل داده ها به نرم افزار در کوتاهترین زمان ممکن با شرایطی که تو پست های قبلی مطرح کردم
البته این هم نظر منه که "با یک خورده دقت همه کدهای استاندارد رو میشه در پایگاه داده های با تعداد 1دونه رکورد و "1کوئری در هر روز" استفاده کرد و همون رو در پایگاه داده های با میلیون رکورد و میلیون کوئری استفاده کرد. نتیجه کار مساوی هستش با منابع درستی که برای سرور انتخاب میشه. پس چه بهتر که زیرساخت برنامه نویسی رو از همین ابتدا درست تعریف کرد."

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

امیدوارم بتونم بقیه سؤالاتی که برام پیش میاد تو همین تاپیک جواب بگیرم.

منتظر پاسخ در مورد نحوه ذخیره سازی عکس ها.
و سؤال بعدیم اینه که اگه با نسخه Express کار کنم یا هر نسخه ای که نیاز به ویندوز Server نداشته باشه برنامه نویسی کنم در انتها میتونم با کمترین تغییر دیتابیس رو به نسخه Enterprise روی ویندوز Server انتقال بدم؟؟؟؟؟؟؟؟



موفق و پیروز باشید.

RHamidR
پنج شنبه 15 آبان 1393, 00:03 صبح
ماشالله اینم از ایرانیای عزیزمون.
فرومهای خارجی همیشه خیلی خیلی بهتر از فرومهای ایرانی هستن.
از اولش هم اشتباه کردم اینجا سؤال پرسیدم.