ممنونم از پیگیریهای شما
می خواهم یکسری فایل عکس و فیلم رو در دیتابیس برنامه ذخیره کنم.
برای این کار 2 راه به ذهنم میرسه
اولین راه اینه که فایلهارو در یک مکان خاص کپی کنم و آدرس دستیابی به آن را در دیتابیس ذخیره کنم
که البته به نظرم جالب نمی آید و شاید دیتابیس امنیتش را از دست بدهد...
روش بعدی همانطور که فرمودید این است که همه تصاویر و فیلم ها را در یک فایل واحد ذخیره کنم
که چد سوال پیش می آید
1- سرعت دستیابی به این تصاویر و فیلم ها در مقدار انبوه (مثلا بالای 100 میلیون فیلم و عکس) چگونه خواهد بود
2- آیا حجم بالای این فایل برای برنامه مشکل ساز نمی باشد؟
3- روش ذخیره سازی و بازیابی اطلاعات ذخیره شده در این روش چگونه است؟
شاید راه های بهتری هم باشد که من نمیدانم
و اگر شما سراغ دارید ممنون میشم در میان بگذارید
در یک فایل مثل index.dat مشخصات تمامی فایل ها و موقعیت بایتی شان را مشخص می کنید. مثلا :
نام و پسوند فایل 1 - حجم فایل 1 - موقعیت شروع داده فایل 1
نام و پسوند فایل 2 - حجم فایل 2 - موقعیت شروع داده فایل 2
نام و پسوند فایل 3 - حجم فایل 3 - موقعیت شروع داده فایل 3
در فایل دیگری هم مثلا data.dat محتویات فایل ها را یکجا نگهداری می کنید. تا اینجای کار نه دشوار است و نه مشکل ساز.
اما دسترسی داریم تا دسترسی. اگر بخواهید در حد یک فایل zip یا rar غیر فشرده عمل کند دشوار نیست، اما اگر بخواهید همان لحظه که یکی از محتویاتش را
بخواهید آماده نمایش باشد برای فایل های حجیم و یا فرمت هایی که نمایش اش شان Player خاصی لازم داشته باشد به مشکل بر خواهید خورد.
فرضا شما 1000 تا فایل تصویری 700 کیلوبایتی رو در یک فایل ذخیره کرده اید. وقتی بخواهیم یک تصویر بخصوص را از
داخلش بخوانیم ابتدا جدولی که لیست تصاویر و موقعیت شان در فایل را مشخص کرده می خوانیم که چندان حجیم نیست و با سرعت مناسبی پردازش می شود.
سپس از آن موقعیت بخصوص 700 کیلوبایت می خوانیم که آنهم به سرعت انجام می شود، نمایش این تصویر هم برای فرمت هایی مثل JPEG ساده است.
پس برای تصاویری که خیلی حجیم نیستند به مشکل خاصی بر نمی خورید، حتی اگر تعداد تصاویر خیلی زیاد باشند.
اما این دسترسی به این دلیل ساده بود که هم حجم 700 کیلوبایت قابل توجه نیست و هم نمایش فایل JPEG حتی از داخل RAM دشوار نیست.
اما اگر بخواهید همینکار را با 10 فایل ویدئویی 700 مگابایتی انجام دهید به مشکل بر می خورید. اول اینکه تا زمانی که کل 700 مگابایت را در فایل دیگری
کپی نکنید هیچ Player ای توانایی پخش اش را ندارد. تمامی Player هایی که می توانید در برنامه تان بکار ببرید از شما یک فایل سالم ویدئویی مثل AVI یا WMV می خواهند.
استخراج یک داده حجیم و کپی کردنش در یک فایل دیگر هم زمانبر است و هم احتمالا با تدابیر امنیتی تان جور در نمیاد. برنامه شما نمی تواند به همان
سرعتی که با یک کلیک کردن یک فایل تصویری را از درون بانک اطلاعاتی نمایش می دهد یک فایل ویدئویی حجیم را آماده نمایش کند.
اشکال اصلی این است که اینجور نرم افزار ها نیاز به درایور اختصاصی دارند تا Explorer ویندوز و سایر نرم افزار ها بتوانند مستقیما و بدون نیاز
به کپی کردن در فایل جدید محتویات بانک اطلاعاتی را بخوانند و بکار ببرند. مثلا نرم افزار هایی که از روی Image های CD / DVD درایو مجازی می سازند
از اینگونه درایور ها استفاده می کنند. متاسفانه ساختن درایور کار سخت و دشواری است.