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

نام تاپیک: ذخیره فایل ها در database

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    Talking ذخیره فایل ها در database

    سلام
    من تو برنامم فایل های مختلف رو به صورت byte[] در فیلدی از نوع varbinary(max) قرار می دم . حالا چند تا مشکل دارم :
    1. زمان ثبت این داده من خیلی طولانیه ، گاهی چند ده ثانیه می شه . آیا راهی برای سریعتر ثبت کردن هست ؟
    2. برای فایل های طولانی مثلا 300 مگ به بالا هم بعد از مدتی یه پیغام Timeout Expired می ده .
    the timeout period elapsed prior to completion of the operation or the server is not responding . the statement has benn terminated.

    3. گاهی حتی تبدیل فایل به byte[] هم طولانی میشه ، در حالی که گاهی همون فایل رو خیلی سریع تبدیل می کنه . آیا تو کار من اشکالی هست ؟

    اگه کسی می دونه مخصوصا اساتید لطفا کمک کنین چون پروژش force major هست .

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ذخیره فایل ها در database

    راستی کد تبدیل فایل من به byte[] به شکل زیره :

    public static byte[] Generate_Byte_File(string filePath)
    {
    byte[] fByte = null;
    FileInfo fInfo = new FileInfo(filePath);
    long numBytes = fInfo.Length;
    FileStream fStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None);
    BinaryReader bReader = new BinaryReader(fStream);
    fByte = bReader.ReadBytes(Convert.ToInt32(numBytes));
    bReader.Close();
    fStream.Close();
    return fByte;
    }

    در ضمنفایل رو به صورت معمولی ثبت می کنم یعنی با command و parameters.add .

  3. #3
    کاربر دائمی آواتار hamidreza20
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    زیر این سقف کبود...
    پست
    220

    نقل قول: ذخیره فایل ها در database

    سلام دوست عزیز

    دیتا بیست چیه؟ اگه sql sever 2005 است حتما یه نگاهی به ورژن 2008 بینداز تنوع داده ای اون زیاد شده شاید کار ساز باشه.

    التماس دعا....

  4. #4

    نقل قول: ذخیره فایل ها در database

    قبل از ریختن تو دیتابیس فایلهارو فشرده می کنید؟
    شاید اصلا نیاز نباشه که فایل هایی با حجم زیاد تو دیتاتبیس ذخیره بشه ، یکم درباره کارکرد برنامه توضیح بدین شاید روش بهتری بهتون معرفی شد.

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ذخیره فایل ها در database

    سلام
    بله ، از sql 2005 استفاده می کنم . در ضمن همونطور که گفتم قضیه force major و زمان من خیلی کمه . دیگه وقت نیست که برم سراغ 2008 .

    ببینید قضیه از این قراره که برنامه باید یک سری اسناد که هر چیزی از متن تا فیلم میشه باشه رو ذخیره و مدیریت کنه . من تصمیم گرفتم به دلایلی از db استفاده کنم . حالا به مشکلاتی که بالا گفتم برخوردم . فایل ها رو با تابع پست دوم مستقیما تبدیل به byte[] کرده و در db به روش معمولی ذخیره می کنم . البته در db جدولشو از جدول اطلاعات وابسته دیگه مثل عنوان و موضوع و ... جدا کردم .
    تا در موقع جستجو واکشی به مشکل برنخورم . هیچ فشرده سازی انجام ندادم . البته درست هم نمی دونم که این فشرده سازی چه جوریه !!!

    اساتید هم اکنون نیازمند یاری سبزتان هستیم !؟!؟!؟!

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ذخیره فایل ها در database

    سلام
    مشکل timeout expired فکر کنم حل شد . من خاصیت timeout کامندم رو 3600 گذاشتم . فکر کنم ماله همون بود .

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

    حالا با این تفاسیر اگه درست مشکلات رو فهمیده باشم میشه اساتید راه حلشو اگه هست بگن ، البته لطفا . مثلا روشی هست که فایل رو قبلا داخل کش آورد و بعد استفاده کرد ؟ یا هر روشی که این پروسه رو سرعت بده !!!!

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ذخیره فایل ها در database

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

    لطفا اگه کسی اطلاعاتی داره کمک کنه !!!

  8. #8
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: ذخیره فایل ها در database

    برای صرفه جویی مضمون این پست مثل پست قبلیه . البته این بار آخره ، اگه کسی جواب نداد دیگه پست بی محتوا نمی زنم .
    خوب حتما سوالم یا جواب نداره و یا کسی بلد نیست دیگه ( اونم تو این همه آدم و اساتید که تو سایتن )

  9. #9

    نقل قول: ذخیره فایل ها در database

    1. زمان ثبت این داده من خیلی طولانیه ، گاهی چند ده ثانیه می شه . آیا راهی برای سریعتر ثبت کردن هست ؟
    2. برای فایل های طولانی مثلا 300 مگ به بالا هم بعد از مدتی یه پیغام Timeout Expired می ده .
    3. گاهی حتی تبدیل فایل به byte[] هم طولانی میشه ، در حالی که گاهی همون فایل رو خیلی سریع تبدیل می کنه . آیا تو کار من اشکالی هست ؟
    حالا با این تفاسیر اگه درست مشکلات رو فهمیده باشم میشه اساتید راه حلشو اگه هست بگن ، البته لطفا . مثلا روشی هست که فایل رو قبلا داخل کش آورد و بعد استفاده کرد ؟ یا هر روشی که این پروسه رو سرعت بده !!!!
    هیچ روشی وجود نداره که سرعت این کار براتون زیاد کنه خیلی هم کد هاتون رو بهینه کنید نهایتا 20% سرعت بیشتر بشه که بازهم مشکل شمارو حل نمی کنه چون روش کارتون کلا اشتباه است (نظر من)
    وقتی با فایلهای حجیم کار می کنید نباید اونرا داخل دیتابیس ذخیره کنید شما 100 ها مگا بایت داده رو می خونید و داخل رم می ریزید بعد این حجم داده رو به sql server انتقال می کنید و... شما کار زیادی از منابع سیستم (ram,Cpu,...) می کشید و نتیجه کارتون زمان بر می شه البته این اتفاق هم موقع خوندن اطلاعات پیش میاد.

  10. #10

    نقل قول: ذخیره فایل ها در database

    قبلا یک نفر پیشنهاد طراحی نرم افزار چابخونه رو بهم داد چندین بخش برای چابخانه وجود داره
    ثبت سفارش -> دریافت عکس های مورد نیاز -> طراحی -> ارسال برای چاپ-> تحویل به مشتری و ...
    هر قسمت کار توسط یک نفر و توسط چندین کامپیوتر انجام می شد، صاحب چابخانه می خواست بدونه که سفارش مشتری در چه مرحله و چقدر از کارش انجام شده و امور مالی و...
    البته طرف پیگر پیشنهادش دیگه نشد و من هم پروژه رو تحلیل نکردم. فقط تو ذهنم بررسی کردم که فایل های فتوشاپ ممکنه تا 100 مگا بایت حجم داشته باشه و من نمی تونم اونو روی دیتابیس ذخیره کنم و این مجهولات هنوز تو ذهنم مونده ، به خاطر همین خوشحال میشم اگه بتونم کمکتون کنم.
    دو روش به ذهن من می رسه
    1. fttp
    2. map network drive

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

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