PDA

View Full Version : سوال: بهترین روش برای جابجایی عکس میان دو برنامه تحت شبکه



sinashahab
پنج شنبه 22 مهر 1395, 18:37 عصر
سلام دوستان عزیز

خسته نباشید، بعد از مدت ها به انجمن سر زدم و واقعا دلم برای این انجمن تنگ شده بود.:بوس: به هر حال.

آقا این شرایط رو در نظر بگیرید:
یک برنامه تحت شبکه که قراره یک طرف عکس را اسکن کند و به برنامه بدهد. هر دو برنامه به SQL Server متصل هستند.
کاری که من کردم اینه که خب برنامه ی من خیلی ساده اون عکس رو میگیره و در یک پوشه ذخیره میکنه. حالا اون پوشه رو share کردم و دسترسی everyone دادم. و از برنامه تحت شبکه دیگر اونجا را باز میکنم تا ببینم.
یعنی من بجای ذخیره عکس در دیتابیس، از راه شبکه انتقال میدم. (چون تصورم اینه که دیتابیس سنگین بشه و سرعت برنامم بیاد پایین و همینطور مشکلای دیگه)

حالا سوالام اینه:
1.آیا روش ذخیره عکس در دیتابیس بهتر است یا همینجوری فولدر و share کردن؟ (تعداد عکسها سالانه 10.000 عکس میباشد)
2.آیا روش من اصولی است؟
3.بهترین روش پیشنهادی شما چیست؟
4.وقتی اولین بار بعد از ریست شدن سیستم، برنامه رو باز میکنم، اول ارور میده که نمیتونه تحت شبکه وصل بشه و بعد از چندبار امتحان کردن و گذشت تایم، تازه برنامه نشون میده و شبکه رو میتونه باز بکنه. این مشکل رو چجوری حل کنم؟(خودم یک راه غیر اصولی در ذهنم هست که بعد از پاسخ شما عزیزان میگم)

پیشاپیش ممنون از نظراتتون.

juza66
جمعه 23 مهر 1395, 17:06 عصر
سلام

من هردو روش رو چک کردم، یعنی فولدری رو تو شبکه شیر کنم و عکس رو باینری کنم در دیتابیس،

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

وقتی سیستم رو ریستارت یا روشن میکنی چی خطا میده؟؟ برنامه باز نمیشه؟ عکس تو شبکه منظورته، اتصال به دیتابیس در شبکه منظورته؟

sinashahab
جمعه 23 مهر 1395, 17:10 عصر
دوستان عزیز سلام

من با توجه به تحقیقاتی که انجام دادم و از دوستانم پرسیدم، روش های ممکن به شکل زیر میباشد:
1.استفاده و راه اندازی ftp server
2.استفاده از سوکت programming جهت جابجایی اطلاعات
3.استفاده از shared folder
4.ذخیره در sql

مزیت سیستم اول این هست که با IIS کنترل و اجرا میشود و stability بالا دارد. ولی خب با توجه به راه اندازی و کدنویسی آن برای بنده که نرم افزار عمومی (تعداد نصب بالا) دارد، به دردم نمیخورد.
سیستم دوم گزینه مناسبی هست و باید از Socket programming استفاده بشه.
ولی شخصا من در این پروژه از همون Shared Folder استفاده میکنم و یک شورت کات که مثلا آیپی سرور را قبل از برنامه باز کند کنار برنامه با عنوان استارت میذارم. //192.168.1.41
در مورد sql هم تصور من این است که بعد از یک مدت افزایش حجم دیتابیس به مشکل بندازه منو.
با تشکر

sinashahab
جمعه 23 مهر 1395, 17:23 عصر
سلام

من هردو روش رو چک کردم، یعنی فولدری رو تو شبکه شیر کنم و عکس رو باینری کنم در دیتابیس،

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

وقتی سیستم رو ریستارت یا روشن میکنی چی خطا میده؟؟ برنامه باز نمیشه؟ عکس تو شبکه منظورته، اتصال به دیتابیس در شبکه منظورته؟

خب شما چندتا عکس ذخیره میکردید در sql ؟ افزایش حجم SQL باعث کندی نمیشه؟

وقتی سیستم رو ریست میکنم و برنامه رو باز میکنم. برنامه نمیتونه shared folder کامپیوتر دیگر را باز کنه و ارور invalid username and password میده بهم.(system.io)
ولی بعدش میام از هردو کامپیوتر پنیگ میگیرم و بعدش برنامه رو اجرا میکنم، دیگه سالم کار میکنه.

daniyaltjm
جمعه 23 مهر 1395, 17:31 عصر
سلام من فکر کنم بهترین روش ذخیره عکس توی دیتابیس باشه حتی اگه مقدار زیادی رکورد هم داشته باشید چون که ما معمولا دنبال یک عکس نمی گردیم ! و دنبال یک نام، نام خوانوادگی و ... میگردیم و بسرعت رکورد پیدا میشه و عکس رو هم پیدا میکنه ولی اگه پردازش تصویر انجام میدین که نیاز باشه عکس هم مقایسه کنید خوب فکر کنم سرعت یکم پایین بیاد.

sinashahab
جمعه 23 مهر 1395, 23:36 عصر
سلام من فکر کنم بهترین روش ذخیره عکس توی دیتابیس باشه حتی اگه مقدار زیادی رکورد هم داشته باشید چون که ما معمولا دنبال یک عکس نمی گردیم ! و دنبال یک نام، نام خوانوادگی و ... میگردیم و بسرعت رکورد پیدا میشه و عکس رو هم پیدا میکنه ولی اگه پردازش تصویر انجام میدین که نیاز باشه عکس هم مقایسه کنید خوب فکر کنم سرعت یکم پایین بیاد.

آخه شما تصور کن 10.000 عکس سالانه قراره اضافه بشه به دیتابیس که هر عکس حدود 1 مگابایت هست.
پس عملا حجم فایل mdf در سال اول به 10گیگ میرسه و یک سری از فایل سیستم، فایل به این حجیمی را قابلیت نگهداری و جابجاییشو ندارن (جهت بک آپ) . (FAT32)

daniyaltjm
شنبه 24 مهر 1395, 00:03 صبح
آخه شما تصور کن 10.000 عکس سالانه قراره اضافه بشه به دیتابیس که هر عکس حدود 1 مگابایت هست.
پس عملا حجم فایل mdf در سال اول به 10گیگ میرسه و یک سری از فایل سیستم، فایل به این حجیمی را قابلیت نگهداری و جابجاییشو ندارن (جهت بک آپ) . (FAT32)

خوب درسته حالا نمیشه از چند دیتا بیس استفاده کرد؟:متفکر:

rahmatipoor
شنبه 24 مهر 1395, 14:13 عصر
من توی همین سایت یه جایی دیدم که طرف گفته بود حجم دیتابیس برنامه اش که با اس کیو ال 2000 هست حدود 500 گیگه و هیچ مشکلی هم نداره و برنامه به خوبی کار می کنه

black_fire667
شنبه 24 مهر 1395, 15:32 عصر
من نمیتونم راهنماییتون کنم که از کدوم روش استفاده کنید که بسیار زیاد برمیگرده به سخت افزاری که در اختیار دارید و بزرگیه مجموعه ای که واسش کد میزنید!!!
اما میتونم به صراحت بهتون بگم برای یک اداره هرچند خیلی کوچک بدترین روش ممکن استفاده از "ذخیر عکس درون دیتابیس" هست!
حتی لحظه ای شک نکنید! در همین حد بهتون بگم که بعد از یکسال بطور مثال شما باید روزی 10 گیگ بکاپ بگیرید که بیشتر از 1 ساعت طول خواهد کشید در هر بار بکاپ

black_fire667
شنبه 24 مهر 1395, 15:37 عصر
من توی همین سایت یه جایی دیدم که طرف گفته بود حجم دیتابیس برنامه اش که با اس کیو ال 2000 هست حدود 500 گیگه و هیچ مشکلی هم نداره و برنامه به خوبی کار می کنه

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

hamid_hr
شنبه 24 مهر 1395, 16:42 عصر
شما میتونید از sqlserver استفاده کنید با خیال راحت
برای ذخیرا عکس هم از filestream استفاده کنید
خود sqlserver میاد عکسا رو تو یک پوشه ذخیره میکنه و ادرس اونا رو نگهداری میکنه.
اینطوری مدیریت و نگهداری عکسها بسیار راحتتر هست
در ضمن برا sqlserver تا چندین ترابایت اطلاعات هم چیزی نیست
سایت stackoverflow.com از دیتابیس sqlserver استفاده میکنه فک نکنم اطلاعاتش ار چند ترابایت کمتر باشه
فقط باید مدیریت دیتابیس رو به یک نفر که کار بلد باشه بسپرید
برا بک آپ گرفتن هم میتونید زمان براش تعیین کنید مثلا ساعت 12 شب بیاد خودکار بک آپ بگیره

black_fire667
شنبه 24 مهر 1395, 18:00 عصر
شما میتونید از sqlserver استفاده کنید با خیال راحت
برای ذخیرا عکس هم از filestream استفاده کنید
خود sqlserver میاد عکسا رو تو یک پوشه ذخیره میکنه و ادرس اونا رو نگهداری میکنه.
اینطوری مدیریت و نگهداری عکسها بسیار راحتتر هست
در ضمن برا sqlserver تا چندین ترابایت اطلاعات هم چیزی نیست
سایت stackoverflow.com از دیتابیس sqlserver استفاده میکنه فک نکنم اطلاعاتش ار چند ترابایت کمتر باشه
فقط باید مدیریت دیتابیس رو به یک نفر که کار بلد باشه بسپرید
برا بک آپ گرفتن هم میتونید زمان براش تعیین کنید مثلا ساعت 12 شب بیاد خودکار بک آپ بگیره


:||||||||
دوست عزیز مثلا ساعت دوازده شب از 100 گیگ داده بخوای بکاپ بگیری چقدر زمان میبره؟
اصلا تونستیم بکاپ بگیریم ساعت دوازده شب تو چهار ساعت یا هرچی! ساعت یازده شب سرور دیتابیسمون آتش گرفت بعد بکاپ همون روز جاری کجا میره؟ توی بکاپامون که نداریمش! چون هرروز ساعت دوازده بکاپ میگرفتیم و مسلما بکاپ روز جاری رو نداریم چون ساعت یازده سرور سوخته! خب تکلیف چیه؟
دیفر میتونه کار رو راه بندازه اما به چه قیمتی؟ هر دیفرمون چند صد مگ میشه تو یه اداره ای که بخواد از پنجتا دبیرخانه داشته باشه و مکاتبات داخلیشون هم اتوماسیون باشه!

juza66
شنبه 24 مهر 1395, 18:54 عصر
:||||||||
دوست عزیز مثلا ساعت دوازده شب از 100 گیگ داده بخوای بکاپ بگیری چقدر زمان میبره؟
اصلا تونستیم بکاپ بگیریم ساعت دوازده شب تو چهار ساعت یا هرچی! ساعت یازده شب سرور دیتابیسمون آتش گرفت بعد بکاپ همون روز جاری کجا میره؟ توی بکاپامون که نداریمش! چون هرروز ساعت دوازده بکاپ میگرفتیم و مسلما بکاپ روز جاری رو نداریم چون ساعت یازده سرور سوخته! خب تکلیف چیه؟
دیفر میتونه کار رو راه بندازه اما به چه قیمتی؟ هر دیفرمون چند صد مگ میشه تو یه اداره ای که بخواد از پنجتا دبیرخانه داشته باشه و مکاتبات داخلیشون هم اتوماسیون باشه!

سلام همشهری عرض ارادت خدمت شما

اگر بخواهیم یه همچین تفکر رو داشته باشیم واس اطلاعات رو انلاین رو یک سرور مجازی و خارج از محدوده کاری در نظر گرفت،

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

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

و در مورد تایم بندی فایل پشتیبان میشه چندین زمان پشتیبان گیری تعریف کرد در برنامه .. و حتمن نباید ساعت 12 باشه مثه بانک..

hamid_hr
یک شنبه 25 مهر 1395, 08:52 صبح
اصلا تونستیم بکاپ بگیریم ساعت دوازده شب تو چهار ساعت یا هرچی! ساعت یازده شب سرور دیتابیسمون آتش گرفت بعد بکاپ همون روز جاری کجا میره؟
دوست عزیز اگه اطلاعات خیلی برات مهمه باید از mirror استفاده کنی
مثلا یه دیتابیس دیگه خارج از اون محل کار روی یک سرور مجازی با یه سرور در یه جای دیگه داشته باشی. اینطوری همیشه دو نسخه از اطلاعات داری

black_fire667
یک شنبه 25 مهر 1395, 10:06 صبح
سلام همشهری عرض ارادت خدمت شما

اگر بخواهیم یه همچین تفکر رو داشته باشیم واس اطلاعات رو انلاین رو یک سرور مجازی و خارج از محدوده کاری در نظر گرفت،

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

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

و در مورد تایم بندی فایل پشتیبان میشه چندین زمان پشتیبان گیری تعریف کرد در برنامه .. و حتمن نباید ساعت 12 باشه مثه بانک..

مهندس عزیز و همشهری گرامی
میشه بگید نرخ رشد دیتابیستون رو چند در نظر گرفتید و توی واقعیت چند بوده؟
من دارم میگم که وقتی بخوایم عکس رو ذخیره کنیم بهترین روش استفاده از FTP هست و خب اینکار رو میشه با Socket Programing به راحتی هندل کرد!
اما واسه ی اون مسیله که فرمودین زمانهای مختلف میشه بکاپ گرفت! میشه بعنوان مثال به من بگید چه زمانهایی منظورتون هست؟ مثلا چه ساعتهایی؟
نکته : هر بکاپ گرفتن از دیتابیس باعث ایجاد یه وقفه میشه توی روند کار با دیتابیس! شاید کم باشه اما وجود داره

mrali.jalali
یک شنبه 25 مهر 1395, 10:15 صبح
تو سایت مایکروسافت خوندم دیتا و عکس کمتر از یک مگ داخل خود sql دخیره بشه

CsharpNevisi
یک شنبه 25 مهر 1395, 11:07 صبح
شما میتونید از sqlserver استفاده کنید با خیال راحت
در ضمن برا sqlserver تا چندین ترابایت اطلاعات هم چیزی نیست


کاملا با حرف شما موافقم .
تصاویرمونو میتونیم تو بانک اطلاعاتی ذخیره کنیم بدون اینکه دغدغه ای از بابت افت سرعت داشته باشیم , طراحی اصولی بانک اطلاعاتی میتونه به صورت معجزه آسایی کارایی سیستمو بالا ببره , تمام سیستم های غول دنیا مثل ابر پرسش و پاسخ دنیا stackoverflow و ابر بورس آنلاین دنیا Nasdaq دارن از sql server 2014 استفاده میکنن , نزدک 2 پتابایت حجم بانک اطلاعاتیش رو اس کیو ال 2008 بود , با تغییر ورژن به اس کیو ال 2014 شده 500 ترابایت و 1 ملیون درخواست در ثانیه هم جواب میده .
شما میتونید تعیین کنید که فایل های شما جایی به غیر از صفحات اصلی ذخیره بشن و صفحات ذخیره داده شما که اطلاعات مثلا هویتی در اون قرار داره تعدادش بالا نره و IO برای خواندن اطلاعات کمتر بخوره .
ما آلان تو سال 2016 هستیم مفهومی تو اس کیو ال داریم به نام Column Store Index , Memory Optimized Table , Native Compile SP و ... , با ایت تفاسیر خنده داره راجب افت سرعت صحبت کنیم.
استفاده از FTP هم منطقیه ولی تو جای خودش , من الان بخوام با کریستال ریپورت گزارش عکس دار بسازم با اف تی پی راحت ترم یا با عکس درون بانک اطلاعاتی ؟؟؟؟؟؟؟
درمورد محافظت از داده ها باید خدمتتون عرض کنم یه راه ساده و منطقی به نام Data Guard هستش , هر شب هم میتونیم بکاپ بگیریم توسط Maintenance Plan به راحتی آب خوردن اینطوری هم بکاپ به لحظه داریم هم بکاپ فول روز قبلو .

mrali.jalali
یک شنبه 25 مهر 1395, 12:09 عصر
هر شب هم میتونیم بکاپ بگیریم توسط Maintenance Plan به راحتی آب خوردن اینطوری هم بکاپ به لحظه داریم هم بکاپ فول روز قبلو .

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