PDA

View Full Version : سوال: ثبت تعداد زیادی عکس



A_1397
دوشنبه 18 اردیبهشت 1391, 10:44 صبح
سلام
دوستان اگر قرار باشه یه برنامه تعداد زیادی عکس (بالای 30000تا)رو ذخیره کنه چه راهی پیشنهاد میکنید؟ اگر بخام خود عکس هارو داخل دیتابیس ذخیره کنم حجم دیتابیس درحد سرسام آوری بالا میره، اگرهم بخام عکس ها رو در فایلی بریزم و مسیرش رو ذخیره کنم اونوقت یه جورایی برنامه وابسته به مسیر میشه و همیشه این فولدر عکسها باید توی یه مسیر خاص قرار بگیره و مشکل دیگه اینکه وقتی ستاب از برنامه میسازم چون نمی تونم کل فولدر عکس ها رو داخل برنامه اتچ کنم،مجبور میشم این فلدر رو جدا از ستاب به کاربر بدم و کاربر علاوه بر نصب ستاب برنامه باید خودش فولدر رو در اون مسیر خاص کپی کنه:گیج: نمیخام به این صورت باشه. کسی راه حلی داره؟

hakim22
دوشنبه 18 اردیبهشت 1391, 11:37 صبح
اولا دیتابیس SQL با حجم بالای اطلاعات نداره و سیستمی داره برای حجم و تعداد بسیار زیاد فایل که خودش با سرعت بسیار بالایی مدیریت میکنه ، در ضمن قرار نیست که همه ی عکسهارو باهم نشون بدید ، یک بانک هست که کابر همزمان قراره مثلا 50 تا عکس ببینه ، که اصولا مشکلی پیش نمیاد.
شما با یک setup ساز حرفه ای می توانید فایل های عکس رو موقع نصب به مسیر نصب خود برنامه کپی کنید.
اینکه فایلهارو بسته بندی نکنید و جدا درون فولدر به رایانه ی کاربر کپی کنید راه بسیار بهتریه
این تعداد عکس حجم زیادی دارند و اگر درون یک فایل باشند فایل بسیار بزرگی میشه که هرجا بره دردسره
مگر اینکه دوست نداشته باشید کاربر خودش دسترسی به عکسها داشته باشه. در این صورت باید از بانک اطلاعاتی استفاده کنید.

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

A_1397
دوشنبه 18 اردیبهشت 1391, 12:21 عصر
اولا دیتابیس SQL با حجم بالای اطلاعات نداره و سیستمی داره برای حجم و تعداد بسیار زیاد فایل که خودش با سرعت بسیار بالایی مدیریت میکنه ، در ضمن قرار نیست که همه ی عکسهارو باهم نشون بدید ، یک بانک هست که کابر همزمان قراره مثلا 50 تا عکس ببینه ، که اصولا مشکلی پیش نمیاد..
hakimجان اینجاشو نفهمیدم. میشه بیشتر توضیح بدید. یعنی با ذخیره کردن مستقیم عکس ها داخل دیتابیس، حجم دیتابیس بیشتر نمیشه؟ یا نه بیشتر میشه ولی مشکلی پیش نمیاد؟


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

یک راه هم هست که اونها رو به صورت فایل resource بسته بندی کنید و در کنار برنامه داشته باشید. اما وقتی حجم زیاده پیشنهاد نمیشه.
دسترسی کاربر به عکسها مسئله ای نیست. فقط میخام کاربر فقط ستاب برنامه رو نصب کنه و مجبور به انجام کار دیگه ای نباشه. یه سوال دیگه: با یه ستاب ساز حرفه ای مشکلی پیش نمیاد اگه یه فایل به حجم زیاد رو موقع نصب بخاد کپی کنه؟

hakim22
دوشنبه 18 اردیبهشت 1391, 16:01 عصر
حجم دیتابیس هرچقدر بالابره اگر درست تنظیم کنید مثلا از FileSystem برای ذخیره فایلها استفاده کنید مشکل خاصی در سرعتش پیش نمیاد
ولی در این صورت باید SQL رو هم کنار برنامه نصب کنید. اگر عکسهای شما قرار نیست تغییر کنند نیازی به استفاده از دیتابیس ندارید (یعنی پیشنهاد نمیکنم)

در Advanced setup builder مثلا شما فولدر عکسهارو انتخاب می کنید و این نرم افزار پک نصب رو میسازه و با تغییر تنظیمات محل نصب برنامه و فایلها کاری میکنید که فولدر عکسها همیشه کنار فولدر برنامه ی اصلی نصب بشه.
هیچ مشکلی هم با تعداد زیاد فایلها و یا حجمشون نداره.

A_1397
سه شنبه 19 اردیبهشت 1391, 09:36 صبح
با توضیحاتتون تصمیم گرفتم از روش دوم (اضافه کردن فولدر عکس ها به ستاب) استفاده کنم. ولی برای اطلاعات خودم می خام بدونم اینکه فرمودید :

حجم دیتابیس هرچقدر بالابره اگر درست تنظیم کنید مثلا از FileSystem برای ذخیره فایلها استفاده کنید مشکل خاصی در سرعتش پیش نمیاد
یعنی چه؟ تنظیم و استفاده از FileSystem برای ذخیره فایلها چطوری و با چه کدی انجام میشه؟

hakim22
سه شنبه 19 اردیبهشت 1391, 09:59 صبح
نرم افزار SQL Server این امکان رو داره که شما فایلها رو نه به صورت رکورد بلکه به صورت فایل در سرور ذخیره کنید. اگرچه رمزگذاری روی فایل از بین میره اما مدیریت فایلها رو خیلی ساده تر خواهد کرد. شما میتوانید یک مسیر مشخص رو به SQL Server بدید که و بعد به دیتابیس یک رکورد جدید که یکی از فیلدهاش محتویات فایل هست بدید. SQL Server خودش اون محتویات رو به صورت فایل در مسیری که شما تعیین کرده اید میریزه و به شما به صورت رکورد نمایش میده.
اصولا برای فایلهای با حجم متوسط کمتر از 5 مگابایت نیازی به این کار نیست.
به صورت نرمال روش FileSystem میتونه فایلها رو تا حجم 2 گیگابایت ذخیره و بازیابی کنه.
برای حجم های بیشتر باید روش کد نویسی رو عوض کرد. اما باز هم میشه از SQL استفاده کرد و پشتیانی میکنه.