PDA

View Full Version : مقایسه دو روش درج و بازیابی تصویر در و از بانک



keiv@n
جمعه 29 خرداد 1394, 09:42 صبح
با سلام
امروز یه مطلب خوب دیدم بهتر دونستم تا اونو به اشتراک بزارم تا عزیزان استفاده کنند
موضوع بررسی دو روش معمول درج تصویر در بانک اطلاعاتی هستش
روشها :
1- روش اول : روشی هست که اکثر برنامه نویسان از اون استفاده می کنند(منم تا به امروز از این روش استفاده می کردم ولی not any more)
در این روش دو سری کار انجام میشه :
1-1 درج آدرس تصویر در بانک
2-1 درج فیزیکی تصویر در پوشه ای داخل پروژه
برای نمایش تصویر کافیه که محتویات آدرس تصویر در بانک رو سلکت کنیم و در خاصیت src تگ <img> قرار بدیم همه چی به نظر خوب و راحت میاد!
برای حذف تصویر باید دو مرحله کار انجام بشه ، یکی اینکه آدرس تصویر از بانک پاک بشه و دوم اینکه فایل فیزیکی تصویر از پوشه تصاویر داخل پروژه هم پاک بشه خوب به نظر من این کار یه جور ماسمالی هستش و قطعا بهترین روش نیست ، چرا که ممکنه شما بنا به دلایلی نتونستید فایل فیزیکی رو از بانک حذف کنید و فقط آدرس رو از بانک حذف کردید یا بلعکس فایل رو حذف کردید و آدرس رو حذف نکردید ، در این شرایط ممکنه افزونگی اطلاعات الکی و هم اگر بخوای همون تصویر رو دوباره در پوشه تصاویر ذخیره کنید ارور فایل از قبل وجود داشته میده .... البته همه اینارو میشه هندل کرد ولی چرا عاقل کند کاری که باز آید به کنعان غم مخور
2-روش دوم : روشی هست که اغلب برنامه نویسان از اون استفاده می کنند(منم تا به امروز از این روش استفاده نمی کردم ولی ?)
در این روش یک سری کار انجام میشه : همین شروعش خوب شروع شد چون بجای دو سری کار یک سری کار انجام میشه !
1-2 درج تصویر در بانک به صورت باینری :)
تو این روش به راحتی خوردن یک سیب میشه تصویر رو از بانک retrieve کرد Delete کرد و همچنین Edit کرد ، چی از این بهتره؟
حالا طرز کار رو به صورت کاملا خلاصه میگم
یه تگ <img> میزاریم تو صفحه و خاصیت src شو تنظیم میکنیم به آدرس فایل جنریک که ساختیم و در کوئری استرینگ شماره Id تصویر مورد نظر رو پاس میدیم...
داخل فایل جنریک مینویسیم برو از بانک اطلاعات باینری تصویری که صدا زده شده رو بیار و بعد ()response.writeBinary کن به متد فراخواننده
بعد تصویر در صفحه نمایش داده میشه
سوالی هست در این مورد ؟
موفق باشید

xsbehx
جمعه 29 خرداد 1394, 10:15 صبح
سلام
ممنون بابت توضیحت
ولی سوالم اینه که اگر ما یک ادرس رو تو بانک ذخیره کنیم مثلا 200 تا کارکتر جای می گیره ولی اگر خود تصویر رو ذخیره کنیم بفرض مثال 500 کیلو بایت جا می گیره
این افزایش حجم فایل تو جداول مشکلی نداره؟

notlikeothers
جمعه 29 خرداد 1394, 13:15 عصر
درود.اگه بخوایم عکس ذخیره شده باینری رو ادیت کنیم چطور میشه؟؟؟مثلا سایز و رنگ و.. رو تغییر بدیم؟؟
حجم دیتا داخل دیتا بیس تو دو تا روش مقایسه میکنی؟؟
فک کنم تو روش دوم خیلی بیشتر بشه و اینکه فشار به رم سرور میاره موقع کشیدن اطلاعات ،ولی روش اول فک نکنم اینطور باشه

kamranetemadi
جمعه 29 خرداد 1394, 16:25 عصر
برای ذخیره به صورت باینری کیفیت عکس باید پایین باشه تا حجم بالا ایجاد مشکل نکنه
شما فرض کن برای ذخیره یک عکس که با فرمت Jpeg حجم 1MB داره در حالتی که اونو به باینری تبدیل کنیم چه حجمی خواهد داشت؟؟؟؟(با حفظ کیفیت)
منطقی بنظر میاد؟؟؟؟؟؟؟؟؟؟؟؟؟

keiv@n
جمعه 29 خرداد 1394, 16:33 عصر
سلام
ممنون بابت توضیحت
ولی سوالم اینه که اگر ما یک ادرس رو تو بانک ذخیره کنیم مثلا 200 تا کارکتر جای می گیره ولی اگر خود تصویر رو ذخیره کنیم بفرض مثال 500 کیلو بایت جا می گیره
این افزایش حجم فایل تو جداول مشکلی نداره؟
متاسفانه باید بگم افزایش حجم تصاویر داخل بانک خالی از مشکل نیست :
1-حجم فضای بانک نسبت به فضای هاست بسیار محدودتر و گرونتر هست
2-افزایش داده داخل بانک ممکن بازدهی بانک رو کاهش بده
این دو دلیل ضعف روش blob یا ذخیره تصویر داخل بانک بود
و اما مزیت های این روش :
1-امکان بک آپ گیری بسیار ساده و آسان از تصاویر
2-حذف و اضافه و ویرایش تصاویر بسهولت امکان پذیره
3-عدم نیاز به دسترسی کاربران به پوشه فایل ها ، داخل هاست
4-سرعت بالا در لود تصاویر (اگر از جنریک ها برای لود تصاویر استفاده شود)
بهترین روش ، ادغام این دو روش و استفاده از جفت اونهاست به طوریکه معمولا تصاویر ثابت صفحه مثلا تصاویر موجود در هدر مثل لوگوی سایت یا تصاویر ثابت سایت بهتر است به صورت ذخیره داخل بانک نگهداری شوند و تصاویر داینامیک مثل تصاویر پروژه ها یا تصاویر محصولات و ... بهتره به صورت رفرنسی در بانک ذخیره بشن ....اینطوریحجم بانک افزایش پیدا نمی کنه و سرعت لود تصاویر استاتیک هم افزایش پیدا می کنه...

keiv@n
جمعه 29 خرداد 1394, 16:41 عصر
به نظر من همه چی بستگی به نوع پروژه داره !
اگر پروژه از نوع اتوماسیون اداری و سیستم درون سازمانی باشه بدیهیه که در حجم بانک محدودیتی نداریم و میتونیم بانکی با حجم یک ترا بایت هم داشته باشیم ... پس میشه به راحتی تصاویر رو در بانک ذخیره کرد
و اما اگر پوژه وب سایت باشه و رو اینترنت پابلیش بشه ، قضیه فرق میکنه و باید از روشهای دیگه استفاده کرد !...
نمیدونم شاید اشتباه میکنم ! دوستان نظری دارن ؟