PDA

View Full Version : سوال: چند سوال درباره ذخیره ی عکس در بانک



hamid-nic
چهارشنبه 22 اردیبهشت 1389, 17:08 عصر
با سلام و وقت بخیر خدمت دوستان عزیز
من از sql server 2000 استفاده می کنم و دلفی 7.
برای برنامه ای که حدود 3000 تا 7000 رکورد قرار داشته باشه باید برای اطلاعات هر شخص عکس پرسنلی (4*3) اضافه بشه . این عکس ها هم حجمش حتماً کمتر از 1 مگابایت است .
طبق مطالب قبلی در سایت و متن زیر که فرمایشات جناب ثباتی عزیز است


تصاویر بالای 1 مگابایت با سرعت بیشتری بازیابی و ذخیره میشن اگر در فایل سیستم قرار بگیرند. تصاویر کمتر از 1 مگابایت در دیتابیس بهتره قرار بگیرند. اما این نکات برای دیتابیسهایی حائز اهمیته که خیلی شدید با ذخیره/بازیابی تصاویر کار میکنند.
از طرفی یک جا داشتن تصاویر و سایر اطلاعات در دیتابیس خودش حسن محسوب میشه که در Backup/ Restore و موضوع Security و Replication بصورت یکپارچه شرکت میکنند.
از این جهت برآن شدم تا این تصاویر را در بانک ذخیره کنم . از این عکس ها در گزارشات و همچنین در بعضی از قسمت های برنامه استفاده میشه . که بطور مکرر باید بعضی از این عکس ها نمایش داده بشه . (مثلا برای نمایش مشخصات کلی شخص که همراه با عکس است و از این قبیل موارد . .. )

اما سوالات :
1- چه موقع باید از Filegroup استفاده کرد ؟ دراین مورد خاص آیا نیاز به این کار هست ؟

2- آیا قرار داشتن فیلد عکس در کنار سایر فیلدها مثل نام و نام خانوادگی (حدود 15 فیلد ) درست است یا اینکه باید در جدولی جدا و با ایجاد کلید خارجی با هم در ارتباط باشند ؟

3- استفاده مکرر از عکس ها چه بصورت تکی و چه بصورت گروهی آیا تاثیری در روند کار بانک و کاهش سرعت و افزایش حجم بانک دارد یا نه ؟

4- برای بهینه سازی بانک ، استفاده از چه نکاتی در مورد sp ها و Queryها الزامی است یا حداقل باید رعایت بشه ؟

5- آیا update های مکرر فیلدهای بانک چه فیلد عکس و چه سایر فیلد ها تاثیری روی بانک و حجم و سرعت اون داره ؟

6 – آیا در پشتیبان گیری از بانک بطور کامل و بازیابی مشکلی یا بحثی بوجود می آید ؟

7- آیا طریقه ی ثبت و ویرایش عکس در بانک از دستور و یا روش خاصی پیروی می کنه یا مثل بقیه ی فیلد ها باید باهاش برخورد کرد ؟ (یعنی برای ثبت عکس از دستور خاصی استفاده بشه بهتره یا اینکه نه باید مثل بقیه فیلد های متنی باهاش برخورد کرد البته در دستورات SQL منظورم هست)

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

meysam_pro
پنج شنبه 23 اردیبهشت 1389, 19:58 عصر
چه موقع باید از Filegroup استفاده کرد ؟ دراین مورد خاص آیا نیاز به این کار هست ؟
دقیقا الان باید استفاده بکنید.

- آیا قرار داشتن فیلد عکس در کنار سایر فیلدها مثل نام و نام خانوادگی (حدود 15 فیلد ) درست است یا اینکه باید در جدولی جدا و با ایجاد کلید خارجی با هم در ارتباط باشند ؟
در یک جدول جدا قرار دهید و و اون جدل رو به یک فایل دیگه اختصاص بدین(معمولا انواع داده ای BLOB رو در یه فایل دیگه میزارن، به خاطر Performance)


استفاده مکرر از عکس ها چه بصورت تکی و چه بصورت گروهی آیا تاثیری در روند کار بانک و کاهش سرعت و افزایش حجم بانک دارد یا نه ؟
اگر در یک فایل دیگه بزارید overally کارآیی پایین نمیاد، فقط زمان خوندن داده هستش که بستگی به شبکه تون داره. حجم دیتابیس هم زیاد از معمول میشه.(مواظب باشید دیتابیس تون رو AutoShrink نکنید!)

hamid-nic
جمعه 24 اردیبهشت 1389, 13:28 عصر
سلام دوست عزیز ممنون از جواب تون
اما اگه میشه درباره ی این قسمت هایی که گفتید یه کمی توضیح بدید ممنون می شوم .

در یک جدول جدا قرار دهید و و اون جدل رو به یک فایل دیگه اختصاص بدین(معمولا انواع داده ای BLOB رو در یه فایل دیگه میزارن، به خاطر Performance)
به یک فایل اختصاص بدید یعنی چه ؟

مواظب باشید دیتابیس تون رو AutoShrink نکنید!
چرا ؟
درضمن سیستم فعلا شبکه نیست و بصورت تک کاربره باید ارائه بشه ولی احتمالا در آینده اقدام به شبکه کردن هم بشه .

meysam_pro
جمعه 24 اردیبهشت 1389, 14:28 عصر
به یک فایل اختصاص بدید یعنی چه ؟
همون به یه FileGroup دیگه.

چرا ؟
همونطور که میدونید یک دستور Insert همانند یک تراکنش خواص ACID رو داره، پس زمانیکه یک Insert به یه فیلد از نوع BLOB انجام میدید، حجم بالایی از داده تو Log نوشته میشه.پس در نهایت فایل لاگ شماحجم زیادی خواهد داشت. اگر دیتابیس تون تو حالت AutoShrink باشه، تریگرهای سیستمی زمانیکه سیستم بار کمی داره ، میخاد DB رو Shrink کنه و فکر کنید در همین زمان یک Request به سرور رسید! به جای این گزینه میتونید یک SP بنویسید(با دستور DBCC Shrink) و یک Maintenance Plan واسش درست کنید و بگید مثلا شب ها ساعت 3 اجرا بشه.

hamid-nic
شنبه 25 اردیبهشت 1389, 17:38 عصر
دوستان به غیر از meysam_pro عزیز کسی پیشنهاد و جوابی برای سوال ها نداره :متفکر:
ممنون میشم اگه نظرتون را بیان کنید .:لبخندساده: