PDA

View Full Version : روش نوشتن برنامه براي بانك اطلاعاتي تصاوير



bps20590
جمعه 18 بهمن 1387, 09:09 صبح
با سلام
من مي خواهم يك پروژه درخصوص ذخيره سازي انواع تصاوير در ابعاد مختلف بنويسم كه به همراه تعدادي فيلد مشحصات عكس از قبيل محل عكسبرداري /تاريخ/زمان/شخصيتها/موضوع عكس وغيره دربانك اطلاعاتي ذخيره شود تعداد عكسها به بيست هزارتا مي رسد حال مي خواهم بدانم :
1- آيا كامپوننت خاصي براي اينكار وجود دارد
2- بهتر است ازچه بانك اطلاعاتي استفاده كنم
3- چه روشي را براي اينكار پيشنهاد ميكنيد
4- اگرنمونه برنامه اي سراغ داريد معرفي كنيد

Felony
جمعه 18 بهمن 1387, 09:30 صبح
با توجه به اینکه :
تعداد عكسها به بيست هزارتا مي رسد


2- بهتر است ازچه بانك اطلاعاتي استفاده كنم
SQL ولیAccess هم خوبه .



3- چه روشي را براي اينكار پيشنهاد ميكنيد

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

سيد مجتبي هاشمي
یک شنبه 20 بهمن 1387, 08:25 صبح
حرف شما درسته اما اگه مسیر عکسها تغییر بکنه باز هم درست کار میکنه؟ و اگه درست کار نمیکنه پیامهای خطا رو چه طوری میشه نمایش داد؟

سيد مجتبي هاشمي
شنبه 15 فروردین 1388, 23:36 عصر
كسي از دوستان نميخواد جواب بده؟

merced
یک شنبه 16 فروردین 1388, 01:18 صبح
حرف شما درسته اما اگه مسیر عکسها تغییر بکنه باز هم درست کار میکنه؟ و اگه درست کار نمیکنه پیامهای خطا رو چه طوری میشه نمایش داد؟

شما بهتره عكس ها رو FTP ذخيره كني. هم امنيت داره و هم راه جالبيه. مسير هم مشكلش حله. مثلاً رو لوكال
YourProgramStorage\127.0.0.1

منظورم اينه كه با Indy يك FTP Client بنويسي. اگر FTP Server داشتي كه چه بهتر وگرنه يك برنامه هم براي سرور بنويس.

اگه اين راه نشد. شما تو بانك اطلاعاتي مسير نسبي رو ذخيره كن. نام درايو و پوشه اصلي رو تو تنظيمات اوليه برنامه از كاربر بگير.

Felony
یک شنبه 16 فروردین 1388, 06:26 صبح
اگه منظورت این هست که از این 20000 تا عکس مسیر چند تاش تغییر کنه میتونی موقع اجرای برنامه با یه حلقه و تابع FileExists وجود عکس ها رو چک کنی و هر کدوم وجود نداشت تو یه لیست باکس بریزی و وقتی برنامه کاملا اجرا شد کاربر بتونه عکسهایی که آدرسشون تغییر کرده رو به ترتیب انتخاب و جایگزین کنه ...

Tasnim
یک شنبه 16 فروردین 1388, 08:52 صبح
سلام
دوست عزیز
باید بدونی که بانک های اطلاعاتی حتی sql هم برای ذخیره عکس داخل اونها مناسب نیستن.
یه راه حل مناسب که به ذهن من میرسه اینه که یه پوشه درست کنی و دسترسی به اونو به یه یوزر خاص(فقط خودت میدونی) بدی که دیگران نتونند اونو باز کنن سپس از طریق کد نویسی خودت با اون یوزر بتونی پوشه رو باز کنی یه چیزی شبیه Run As سپس مسیر عکسات رو توی دیتابیس ذخیره کنی.
موفق باشی

vcldeveloper
یک شنبه 16 فروردین 1388, 14:14 عصر
باید بدونی که بانک های اطلاعاتی حتی sql هم برای ذخیره عکس داخل اونها مناسب نیستن.
کی همچین چیزی گفته؟!!

Tasnim
پنج شنبه 20 فروردین 1388, 10:02 صبح
سلام دوستان عزیز
اینم توضیح مختصری خدمت آقای کشاورز
--------------------------------------------------
جالبه که بگم اصولا طراحی سرویس دهنده های بانک اطلاعاتی مانند Oracle یا SQL Server و یا MySQL بگونه ای انجام نشده که شما اسناد و یا تصاویر حجیم رو داخل اون ذخیره کنید.اصولا ورود این سرویسها به دنیای نرم افزار برای حل ایندست مشکلات نیست.بخصوص در مورد تصاویر! که نیازی به ایندکس شدن ندارن و اصولا جستجو در محتوای اونها خیلی بندرت انجام میشه و درج اونها در بانک فقط حجم بانک رو بالا می بره و کارایی رو کاهش میده!

اگر هم فیلدهایی از نوع Image و یا Text و یا ntext در این بانکهای اطلاعاتی وجود داره برای نیازهای دیگری هست.مثلا برای نگهداری تصاویر دانه انگشتی thunbnail و یا تصاویر خیلی کوچک.

اینم یه مقاله راجع به این موضوع
http://www.sqlteam.com/article/images-and-sql-server

امیدوارم مفید باشه
یاحق

vcldeveloper
پنج شنبه 20 فروردین 1388, 17:00 عصر
جالبه که بگم اصولا طراحی سرویس دهنده های بانک اطلاعاتی مانند Oracle یا SQL Server و یا MySQL بگونه ای انجام نشده که شما اسناد و یا تصاویر حجیم رو داخل اون ذخیره کنید.اصولا ورود این سرویسها به دنیای نرم افزار برای حل ایندست مشکلات نیست.بخصوص در مورد تصاویر! که نیازی به ایندکس شدن ندارن و اصولا جستجو در محتوای اونها خیلی بندرت انجام میشه و درج اونها در بانک فقط حجم بانک رو بالا می بره و کارایی رو کاهش میده!
این مربوط به RDBMSهای اولیه هست. در آن زمان نیازی به ذخیره عکس احساس نمیشد. درباره کاهش کارایی، تصور شما اشتباه هست. اصولا نرم افزاری مثل SQL Server داده های باینری را با سایر داده های جدول در یک جا نگهداری نمیکنه، تا حجم بالای اینگونه داده ها موجب کاهش سرعت دسترسی به داده های متنی نشه.
مقاله ایی که بهش اشاره کردید، اولا مربوط به 9 سال پیش هست، ثانیا، مطلبی که مطرح کرده مربوط به نرم افزارهای تحت وب نوشته شده با ASP هست. برای همچین نرم افزارهایی ذخیره داده ها بصورت فایل بصرفه تر هست، چون حتی اگر عکس مربوطه در بانک هم ذخیره شده باشه، باز باید برای ارائه آن به مرورگر کاربر (که نقش کلاینت را دارد) عکس را بصورت فایل ذخیره کرد، و فایل را برای مرورگر فرستاد.

همچین شرایطی برای برنامه های Desktop وجود نداره. برای همین هست که همیشه میگیم، جواب این سوال به نوع برنامه، و شرایط حاکم بر آن برمیگرده، و نمیشه یک جواب قطعی برای همه حالت های ممکن ارائه کرد.