سؤال

أنا جعلت شاشة صيانة الناس. يريد العميل مني تخزين صورة كل شخص في قاعدة البيانات، وقادت به دون مشاكل. لدي طاولة منفصلة للصور مع حقلين، ID_PERSON، وصورة.

أنا قلق قليلا لأنها المرة الأولى التي أعمل بها مع الصور في قاعدة البيانات. هل سيكون لدي مشاكل في الأداء عندما ينمو الجدول أبعد من 1000/5000 صورة؟ أفترض أن حجم كل صورة سيحدث فرقا. أنا متأكد من أنني سأحتاج إلى التحكم في أن المستخدم لا ينقذ صورا كبيرة جدا في قاعدة البيانات.

ماذا سيكون حد جيد الحجم؟ يحتاج العميل فقط إلى بلدان جزر المحيط الهادئ من الوجه، لكنني متأكد من أن شخصا ما سيحاول جعل الصور مع كاميرا "نموذج آخر" بجودة كاملة؛)

شكرًا.

هل كانت مفيدة؟

المحلول

يفضل عادة الاحتفاظ بمجلد من الصور ومراجع DB فقط المجلد. من الناحية المثالية، يحتوي كل شخص على معرف فريد من نوعه والملفات الموجودة في مجلد "الصور" مطابقة هذا المعرف.

إذا كنت ترغب حقا في تخزين البيانات الثنائية مباشرة، فيمكنك الحصول على صورة ذات جودة معقولة في 8 كيلو بايت من JPEG (حوالي 250x250 PIX @ الجودة 25٪). بالطبع، سيكون هذا غير مقبول للطباعة، ولكنه جيد لتحديد الهوية.

فقط ستعرف ما إذا كان يمكنك قبول 8 كيلو بايت إضافي لكل صف في خادم قاعدة البيانات الخاص بك.

نصائح أخرى

إذا كنت يجب أن تفعل ذلك بالتأكيد بهذه الطريقة، أود أن أقول تقييدها إلى بضعة كيلومترات لكل كيلوبايت. ومع ذلك، فمن المحتمل أن يخبرك كل مسؤول قاعدة بيانات في العالم بأن الصور الأقططة في حقل قاعدة بيانات فكرة سيئة للغاية للغاية. من الأرجح أنك سترى انخفاض الأداء بشكل كبير عندما ينمو ملف قاعدة البيانات يتجاوز اثنين من غيغابايت في الحجم.

أفضل أن أفعل كما قال جهدينغز ولديه مجلد مع معرف كل شخص يكون اسم الملف واستخدم فقط معيار .jpg أو شيء ما بعد ذلك على مشاركة الشبكة بحيث يمكن لجميع أجهزة الكمبيوتر التي تستخدم التطبيق الوصول إلى الصور.

يجد البعض أنه ببساطة استخدام المعرف غير جيد بما فيه الكفاية في حالة عدم حذف الصورة أو أرشفة، وفي هذه الحالة سوف يضعون حقل nvarchar (MAX) في قاعدة بياناتهم وتخزين مسار ملف الشبكة إلى الصورة بدلا من الفعلي صورة.

أود فقط أن أقطت الصورة إذا لم يتمكن عميلك على الإطلاق مسار مشاركة الشبكة.

طالما أنه في جدول منفصل مع معرف | Blob فقط، يجب ألا يتم إحضار أي مشكلات أداء هذه الصورة، ولكن على الجانب الآخر، فأنا أفضل حفظه في مراجع DB فقط إلى الملفات الموجودة على الأقراص الصلبة (أو حتى أفضل إذا قمت بتصوير المستخدم الوحيد لا تحتاج حقا إلى مرجع لأن المستخدم مع معرف 1 يذهب إلى /images/1.jpg)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top