دوستان خسته نباشید .
می خواستم ببینم اگر تعداد زیادی عکس (5000) را در یک دیتابیس ذخیره کنیم آیا دیتابیس دچار مشکل میشه یا نه واگر میشه چه مشکلاتی و راه حل اونا چیه ؟
دیتابیس من اکسس است.
پیشا پیش از همه متشکرم .
دوستان خسته نباشید .
می خواستم ببینم اگر تعداد زیادی عکس (5000) را در یک دیتابیس ذخیره کنیم آیا دیتابیس دچار مشکل میشه یا نه واگر میشه چه مشکلاتی و راه حل اونا چیه ؟
دیتابیس من اکسس است.
پیشا پیش از همه متشکرم .
تا او نا جا یی که دوستان من رو راهنمایی کردن در اکسس میشه ولی در اس کیو ال نه.
(من قبلا در این باره بحث کردم)
اگه کسی راه حل بهتری می دونه بگه.
براي رفع اين كند شدن مي توانيد :
از اين روش استفاده كنيد عكس رو در بانك قرار ندهيد . ادرس رو در بانك قرار دهيد و عكس رو به داخل يك پوشه ببريد .
من از همين روش استفاده مي كنم و داراي 2500 ركرد ثابت هستم در صورت نياز اگه متوجه نشديد بگيد يك مثال براتون بزنم .
منم از همین روشی که آقای hentjanson گفتند استفاده میکنم
هیچ مشکلی نداره
از راه حل دوستان متشکرم اما من می خوام عکس ها تو دیتابیس باشند وغیر قابل دیدن .
لطفا یک مثال قرار دهید
آقای hentjonson
امیدوارم تاپیک را منحرف نکرده باشم:
یعنی تنها راه حل برای اینکه عکس ها غیر قابل دیدن باشند، ذخیره کردن آنها در دیتابیس است؟
از دوستان می خواهم روش هایی را که برای حفاظت از عکس هایی که درون یک پوشه وجود دارند، نام ببرند.
منظورم از حفاظت اینست که کاربر ها نتوانند به مسیری که برنامه در آن نصب شده است بروند و تمام 1000 تا عکس شما را که درون آن پوشه قرار دارد، ببینند. شاید قرار دادن این عکس ها درون یک dll یک راه حل باشد، راه حل های بهتری سراغ دارید؟
-ممنون
ذخیره عکس در دیتا بیس اکسس به تعداد زیاد مشکل ایجاد میکنه
اگه بخوای حتما عکستو توی دیتا بیس ذخیره کنی میتونی از یه کامپوننت به نام DBPix استفاده کنی
این کامپوننت عکس ها رو با فرمتی مخصوص توی دیتا بیس ذخیره می کنه و هیچ کس جز خود این کامپوننت نمیتونه عکس ها رو باز کنه ( اینم خودش یه جور امنیته ) .
یکم تو وب سرچ کنی می تونی این ابزارو پیدا کنی
دوست عزیز moonplant
برای مخفی کردن راههای زیادی هست مثل سیستمی کردن فایل ها ولی اگر همه ی فایل ها در یک فایل قرار گیرند مدریت آنها راحتتر است .
فرض کنید می خواهید از همه ی فایل ها بکاپ بگیرید .
ترجیحا برای عکست یک جدول مجزا در نظر بگیر
به نظر من هم استفاده از دیتا بیس (مثلا MS SQLServer) بهتره
اون راهی که در پست شماره 9 در مورد استفاده از کامپوننت اختصاصی این کار گفته شد خوب به نظر میرسه
ضمنا اگر نخواهید از دیتا بیس استفاده کنید میتونید اونها را ریسورس کنید و در حقیقت در داخل فایل exe نگه دارید
ولی باز هم میگم به نظر من استفاده از دیتابیس بهتره
بخصوص اگر برای امنیت از ابزاری مثل کامپوننتی که در پست شماره 9 معرفی شد استفاده کنید.
- کامپوننت DBPix همراه با یک دیتابیس مثل access و ... به کار می رود؟ یعنی برای اینکه برنامه ما در کامپیوتر کاربر اجرا شود باید حتماً access و ... نصب باشد؟
- کلاً وقتی تعداد عکس هایی که در برنامه مان با آنها سر و کار داریم، زیاد است... کدام روش سریع تر است؟ الف)ذخیره کردن عکس ها در دیتا بیس ب)گذاشتن عکس ها در یک پوشه و ذخیره کردن نام عکس در دیتابیس
میتونید اونها را ریسورس کنید و در حقیقت در داخل فایل exe نگه داریدمیخواستم بدونم چجور میشه چند فایل با هر نوعی رو در یک فایل کابین (جمع) کنم . به طوری که قابل دسترسی و نفوذ نباشه.
هدفم اینه که حدود 1000 تا فایل jpg با ظرفیت هر فایل حدود 100 کیلو بایت رو در یک فایل جمع کنم که کاربر نتونه محتواش رو ببینه البته به راحتی قابل بازیابی هم باشه .فکر میکنم ان راه حل بهترین راه حله که سرعت دیتابیس رو هم پائین نمیاره . چجوری میشه این کارو کرد ؟شاید قرار دادن این عکس ها درون یک dll یک راه حل باشد، راه حل های بهتری سراغ دارید؟
در پوشه به نظر من بهتره چون اينطوري بهتره بانك سبك تره .
بازم اين نظر من اگه اينطور نيست اشتباه منه
اگر در پوشه باشه که دیگه همه میتونند به اونها دسترسی داشته باشند
اونوقت باید برید سراغ محافظت از پوشه و ...
من با folder lock کار کردم . مشکل داره .اونوقت باید برید سراغ محافظت از پوشه
شما چه راهی معرفی میکنید ؟
zipforge رو هم امتحان کن.
لطفاً یکی از اساتید بیاید و این سوال راپاسخ دهد:
وقتی تعداد عکس هایی که در برنامه مان با آنها سر و کار داریم، زیاد است... کدام روش سریع تر است؟ الف)ذخیره کردن عکس ها در دیتا بیس ب)گذاشتن عکس ها در یک پوشه و ذخیره کردن نام عکس در دیتابیس(البته پوشه محافظت شده هم هست)
-خیلی ممنون
از دیتابیس استفاده کنید
اگر با سرعت مشکل داشتید قبل از اجرا عکسها را روی هارد کپی کنید و در انتها دوباره حذف کنید
برای هرچه کمتر شدن زمانِ ریختن فایلها بر روی هارد ، عکسها را به ترتیبی که استفاده میشوند روی هارد کپی کنید
ولی در کل اگر مجبور نبودید این کار را نکنید و مستقیمأ با دیتا بیس کار کنید یا فایها را ریسورس کنید و در همان فایل exe نگهدارید
2 بار به این موضوع اشاره کردید اما نگفتید چجوری !!یا فایها را ریسورس کنید و در همان فایل exe نگهدارید
به نظر کار منطقی نمیاد - اصل هدف ما در این جا محافظت از عکسهاست و اگر این کار رو انجام بدیم احتمال داره کاربر مسیر ذخیره فایل رو بدونه و دیگر هیچ !!!!!!!!!!!قبل از اجرا عکسها را روی هارد کپی کنید و در انتها دوباره حذف کنید
در باره مورد اول که گفتید :
http://delphi.about.com/od/objectpas..._resources.htm
در سایت هم جستجو کنید
در این آدرس هم نحوه اضافه کردن فونت به فایل exe هست که اون رو هم از طریق ریسورس انجام داده
http://delphiclinik.blogfa.com/post-86.aspx
درباره مورد دوم هم خودم که گفتم
ولی در کل اگر مجبور نبودید این کار را نکنید
توضیح help دلفی درمورد فایل ریسورسType Parameter
Syntax {$R filename}
{$RESOURCE filename}{$R *.xxx}
{$R filename.res filename.rc}
Scope Local
Remarks
The $R directive specifies the name of a resource file to be included in an application or library. The named file must be a Windows resource file and the default extension for filenames is .res. To specify a file name that includes a space, surround the file name with single quotation marks: {$R 'My file'}.
The * symbol has a special meaning in $R directives: it stands for the base name (without extension) of the source-code file where the directive occurs. Usually, an application’s resource (.res) file has the same name as its project (.dpr) file; in this case, including {$R *.res} in the project file links the corresponding resource file to the application. Similarly, a form (.dfm or xfm) file usually has the same name as its unit (.pas) file; including {$R *.dfm} in the .pas file links the corresponding form file to the application.
{$R filename.res filename.rc} (where the two occurrences of 'filename' match) makes the .rc file appear in the Project Manager. When the user opens the .rc file from the Project Manager, the String Table editor is invoked.
When a {$R filename} directive is used in a unit, the specified file name is simply recorded in the resulting unit file. No checks are made at that point to ensure that the filename is correct and that it specifies an existing file.
When an application or library is linked (after compiling the program or library source file), the resource files specified in all used units as well as in the program or library itself are processed, and each resource in each resource file is copied to the executable being produced. During the resource processing phase, the linker searches for .res files in the same directory as the module containing the $R directive, and in the directories specified in the Search path input box on the Directories/Conditionals page of the Project|Options dialog box (or in the directories specified in a -R option on the DCC32 command line).
آخرین ویرایش به وسیله babak_delphi : سه شنبه 04 تیر 1387 در 01:20 صبح
آیا کاربران شما به بانک اطلاعاتی شما دسترسی دارند یا نه ؟
هر کدام از روشها مزیتهای و معایب خاص خود را دارند
مثلاً ذخیره در دیتابیس باعث می شه به مرور زمان حجم دیتابیس زیاد بشه (که SQL مشکل اضافه حجم نداره) ولی در سرعت دسترسی به اطلاعات شما تاثیر می گذاره
ذخیره عکس روی هارد و نگهداری آدرس آن در بانک نیز ممکنه که عکس شما به هر دلیلی پاک بشه ولی در بانک شما هنوز آدرسش موجود باشه و....
با تشکر از vcldeveloper عزیز بابت راهنمایشون.
برای این کار برای اینکه سرعت پائین نیاد بهتره که عکسها رو در یک فولدر ذخیره کنید . برای تامین امنیت عکسها هم میتونید اونهارو encrypt کنید یا توسط zlib فشردش کنید.
موفق باشید.
اگر عکسها را با zlib فشرده کند در زمان استفاده مجددأ باید extract شوند که اگر حجم داده ها زیاد باشد (که ظاهرا همین طور خواهد بود)این کار بسیار زمان بر و کند خواهد شد
ضمنا آیا با zlib می توان فولدر را نیز فشرده کرد؟
ذخیره عکس در بانک یا در فایل بستگی به فاکتورهای مختلفی داره، اینکه کسی تصور بکنه ذخیره عکس در بانک بهترین گزینه هست، یا بالعکس، تصور اشتباهی هست. هر کس باید با توجه به نوع استفاده ایی که برای برنامه در نظر گرفته، نقش عکس ها در برنامه، نوع بانک اطلاعاتی که میخواد استفاده کنه، تعداد و حجم تقریبی عکس ها، امنیت داده ها، چگونگی ایجاد Backup، و سایر فاکتورها تصمیم بگیره که از چه روشی برای ذخیره عکس استفاده کنه.
اکثرا اعلام می کنند که ذخیره عکس در بانک موجب کند شدن بانک میشه. در حالی که این مورد مستقیما به نوع بانک اطلاعاتی، چگونگی طراحی بانک، Queryهایی که برای دریافت عکس نوشته میشند، و سروری که بانک روی آن قرار میگیره، ارتباط داره. مثلا اگر فردی در SQL Server نوع فیلدهای عکس و نحوه ذخیره آنها در بانک را به درستی تنظیم کنه، حتی الامکان داده های مربوط به عکس را جدای از سایر داده ها نگهداری کنه - مثلا با استفاده از File Group- ایندکس های مناسب روی بانک بزاره، کوئری ها را طوری بنویسه که فقط داده هایی که در هر لحظه نیاز داره را دریافت کنه، و... همچین فردی مشکل خاصی با حجم بالای بانک به دلیل وجود عکس های زیاد نخواهد داشت! از طرفی، جستجو برای پیدا کردن یک فایل عکس در یک پوشه با چند هزار فایل هم کار چندان سریعی نخواهد بود. البته ذخیره در فایل هم مزایای خودش را دارد، مثلا در یک برنامه تحت وب، تصاویر باید نهایتا بصورت فایل به مرورگر ارسال شوند، پس ذخیره آنها در بانک موجب ایجاد یک مرحله کار اضافه می شود.
اگر قرار باشه امنیت محتوای فایل های - نه امیت فایل ها در برابر تغییر یا حذف- تامین شود، یکی از راههای ساده استفاده از همین ZLib هست. برنامه نویس میتواند هر فایل را قبل از ذخیره بر روی دیسک با این روش فشرده کند و در زمان لود فایل، آن را از حالت فشردگی خارج کند. نیازی نیست که همه فایل ها بطور همزمان از فشردگی خارج شوند، چون برای هر درخواست به یک یا حداکثر چند فایل نیاز خواهد بود، نه کل فایل ها.اگر عکسها را با zlib فشرده کند در زمان استفاده مجددأ باید extract شوند که اگر حجم داده ها زیاد باشد (که ظاهرا همین طور خواهد بود)این کار بسیار زمان بر و کند خواهد شد
خیر. اگر هم امکان پذیر بود، کار معقولی به نظر نمی رسید، چون برای باز کردن هر فایل، باید کل فایل های فشرده شده، یا حداقل فایل های فشرده شده قبل از فایل مورد نظر Extract شوند، مثلا برای باز کردن فایل هزارم، باید 999 فایل قبل از آن هم Extract شوند! مسلما این روش بسیار کندتر از فشرده کردن فایل ها بصورت منفرد خواهد بود.ضمنا آیا با zlib می توان فولدر را نیز فشرده کرد؟
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
سلام دوستان
من تصاوير رو به داخل يك پوشه ميبرم و نام رو به بانك حالا مي خوام بدونم چطور ميشه اين روند zlib رو انجام داد .
zlib در خود دلفی ارائه شده و احتمالا یک unit به همین اسم وجود داره.مي خوام بدونم چطور ميشه اين روند zlib رو انجام داد
من با توجه به این گفته دوستمون گفتم که extract کردن اون زمان بر خواهد بود ، چون ایشون گفتند عکسها را در فولدر قرار دهند
اینجا هم میبینید که این دوستمون می خواهند این کار رو انجام بدن
به هر حال باز هم میگم که به نظر من این کار صحیح نیست
در این مورد فکر میکنم همون دیتا بیس مناسب باشه و به قول شما تک تک فایلها رو با zlib فشرده کنند و در بانک قرار بدهند.
ضمنا در جواب hentjanson عزیز هم باید بگم که zlib یک unit به همین نام داره و در مورد نحوه استفاده از اون قبلا در سایت توضیح داده شده
جستجو کنید