PDA

View Full Version : عکسها در بانک ذخیره شوند یا خیر؟



پرواز
دوشنبه 05 آذر 1386, 01:33 صبح
با سلام خدمت دوستان.

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

اول خودم یه چیزایی میگم:

1) ذخیره کردن در دیتابیس:

معایب: ذخیره عکس تو دیتابیس باعث پایین آمدن کارایی و سرعت میشه. حجم دیتابیس رو زیاد می کنه و سرعت بک آپ گیری میاد پایینو حجم فایل بک آپ بالا میره.
مزایا: دسترسی به عکسها فقط با داشتن مجوز ممکنه و این کار باعث افزایش امنیت میشه. گزارش گیری از عکسها راحته.2) ذخیره کردن در هارد و استفاده از آدرس آن در دیتابیس:

معایب: باید مجوز دایرکتوری عکسها رو به همه کسانی که به نوعی در ارتباط با آن هستند داده بشه و این یعنی کاهش امنیت. دایرکتوری عکسها نباید تغییر کنه و عکسها همیشه باید تو همون آدرس بمونن. حتی اسم فایل هم باید ثابت بمونه.
مزایا: مزایای این روش هم که با توجه به موارد بالا مشخصه! کم شدن حجم دیتابیس، سرعت بالا.من یه دیتابیس دارم که به ازای هر رکورد 3 یا 4 تا عکس ذخیره میشه. الان حدود 3000 رکورد دارم و هر سال حدود 1500تا رکورد اضافه میشه. الان که عکسها تو دیتابیس نیستن. می خوام بدونم که اینجوری درسته یا اینکه برم و همشون رو Load کنم تو دیتابیس؟
فکر کنم اگه دوستان نظراتشون رو درباره مزایا و معایب این روش توضیح بدن بشه به یه جواب قانع کننده و کلی رسید.

mhadvi_mahmaood
دوشنبه 05 آذر 1386, 08:53 صبح
شما اگر اطلاعات رو با استفاده از fileGroupها در جای دیگری ذخیره و مدیریت کنید دیگر کاهش سرعت نخواهید داشت. ولی مسئله حجم دیتابیس همچنان سر جایش هست.
من فکر نمیکنم همیشه حجم دیتابیس با سرعت اون رابطه مستقیم داشته باشه!

Alireza Orumand
دوشنبه 05 آذر 1386, 09:21 صبح
سلام


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

شما دو تا عیب برای این کار بیان کردید یکی حجم هست. این نمیتونه عیب باشه چون بالاخره این عکس ها یه فضایی رو اشغال میکنن که فرقی نمیکنه داخل بانک یا بیرون بانک. برای حجم بک آپ هم یه جدول واسه عکس درست کنید که کلید جدول اصلی به عنوان کلید خارجی تو این جول شرکت بکنه. بعد این جدول رو تو یه file group دیگه ذخیره کنید. اگر خواستید میتونید از این file group بک آپ نگیرید که حجم بک آپ ها زیاد نشه. فکر هم نمیکنم که روی سرعت تاثیر چندانی داشته باشه اگر هم داشته باشه فکر نمیکنم تاثیرش بیشتر از حالتی باشه که شما عکس ها رو جایی دیگه ذخیره میکنید.
در مجوع فکر نمیکنم مواردی که برای عیب ذکر کردید حقیقتا عیبی باشه در حال حاضر بحث دیتابیس هایی با حجم چند ترابایت مطرح هست و بعید میدونم ذخیره کردن عکس و حجمی که دیتابیس های معمول که ما کار میکنیم پیدا میکنن اینقدر زیاد باشه که برنامه ای مثل sql server از پاسخگویی به اون ناتوان بشه. به همین خاطر من ذخیره عکس ها در دیتابیس رو پیشنهاد میکنم.
موفق و سربلند باشید.

پرواز
دوشنبه 05 آذر 1386, 11:37 صبح
ممنونم از نظرات دوستان؛

بله دوستان. نظراتتون کاملاً درسته. برنامه SQL SERVER امکان نداره کم بیاره. ذخیره کردن عکس هم در هر حالت فضایی از حافظه اشغال می کنه. اما اینجا مسئله اساسی برای ما Performance خوبه. یعنی ممکنه تو 10هزار رکورد خیلی تفاوتی نکنه. ولی اگه تعداد بره بالاتر چی؟ برای اون نباید یه فکری بکنیم؟
در ضمن خیلیا توصیه می کنند که عکس تو دیتابیس ذخیره نشه. پس حتماً دلیلی داره. من دنبال اون دلایل میگردم.

Alireza Orumand
دوشنبه 05 آذر 1386, 12:54 عصر
سلام


اما اینجا مسئله اساسی برای ما Performance خوبه. یعنی ممکنه تو 10هزار رکورد خیلی تفاوتی نکنه. ولی اگه تعداد بره بالاتر چی؟ برای اون نباید یه فکری بکنیم؟

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


select fname,lname from tbl1 where fname='a'

خوب تا اینجا که فرقی نمیکنه یعنی بود یا نبود عکس تو جستجوی شما موثر نیست اما وقتی عکس داشته باشیم شما یه فیلد دیگه هم از نوع image به کاربر میدید یا اگر عکس بیرون باشه باید یه آدرس رو بخونید بعد تازه برید سراغ اون آدرس و باز هم عکس رو load کنید.

در ضمن خیلیا توصیه می کنند که عکس تو دیتابیس ذخیره نشه.
ولی من برعکس شما تاحالا کسی به من توصیه نکرده که عکس رو بیرون ذخیره کنم. از اساتید اگر کسی این توصیه رو دارن متشکر میشم با دلیل بگن چرا نباید تو دیتا بیس باشه چون من تا اینجا به نظرم میرسه که مزایای ثبت در دیتابیس به معیب اون میچربه.

Cave_Man
سه شنبه 06 آذر 1386, 01:03 صبح
نتیجه گیری ها واقعا حیرت آوره
چقدر زیبا صحبت میکنید!!!!!!!!!!

http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
http://www.faqts.com/knowledge_base/view.phtml/aid/1241/fid/102
http://visualbasic.ittoolbox.com/groups/technical-functional/visualbasic-l/where-to-save-images-in-database-or-in-file-system-only-1440990
http://www.webmasterworld.com/forum88/9091.htm

پرواز
سه شنبه 06 آذر 1386, 02:46 صبح
نتیجه گیری ها واقعا حیرت آوره
چقدر زیبا صحبت میکنید!!!!!!!!!!

http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
http://www.faqts.com/knowledge_base/view.phtml/aid/1241/fid/102
http://visualbasic.ittoolbox.com/groups/technical-functional/visualbasic-l/where-to-save-images-in-database-or-in-file-system-only-1440990
http://www.webmasterworld.com/forum88/9091.htm
دوست عزیز جناب Cave_Man

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

در کل نتیجه ای که میشد از این لینکها بگیریم این بود که بهتره عکس ها در دیتابیس ذخیره نشن و آدرس اونا بصورت Pointer و به عنوان یک فیلد varchar تو دیتابیس نگهداری بشه.

این موضوع تو این لینکها از چند جهت بررسی شده که مهمترین اونا Performance، Storage و Portability بود.

SYNDROME
سه شنبه 06 آذر 1386, 07:41 صبح
در کل نتیجه ای که میشد از این لینکها بگیریم این بود که بهتره عکس ها در دیتابیس ذخیره نشن و آدرس اونا بصورت Pointer و به عنوان یک فیلد varchar تو دیتابیس نگهداری بشه.

این کار کاملا درست است ولی بعضی وقتها به دلیل شرایط موجود نمی توان این کار را انجام دهید چون ریسک بالایی دارد و مجبور می شوید در DataBase دخیره کنید.
موفق باشید

Cave_Man
سه شنبه 06 آذر 1386, 08:18 صبح
این کار کاملا درست است ولی بعضی وقتها به دلیل شرایط موجود نمی توان این کار را انجام دهید چون ریسک بالایی دارد و مجبور می شوید در DataBase دخیره کنید.
موفق باشید
درسته مثلا اگه بخاید به کاربر بر اساس اختیار خودتون مجوز نمایش یک عکس رو بدید در این صورت ذخیره عکس در دیتابیس مهم میشه موارد دیگه ای هم میشه گفت اما تعدادشون خیلی کمتر از مزایای ذخیره عکس در File System هست

hr110
سه شنبه 06 آذر 1386, 08:33 صبح
و یا اگر اندازه و حجم تصاویر کوچک باشد نیز بهتر است تصاویر در جدول ذخیره شوند.