سؤال

قرأت بعض المنشورات في هذا الصدد ولكني ما زلت لا أفهم ما هو الحل الأفضل في حالتي.

لقد بدأت في كتابة تطبيق ويب جديد وستوفر لك الواجهة الخلفية 1-10 مليون صورة.(حجم متوسط 200-500 كيلو بايت لصورة واحدة)

سيوفر موقعي المحتوى والصور ل 100-1000 مستخدم في نفس الوقت.

أود أيضًا إبقاء تكاليف مقدم الخدمة منخفضة قدر الإمكان (ولكن هذا مطلب ثانوي).أعتقد أن مساحة نظام الملفات أقل تكلفة إذا ما قورنت بتكلفة حجم قاعدة البيانات.

أنا شخصياً أحب فكرة وجود جميع الصور الخاصة بي في قاعدة البيانات ولكن أي اقتراح سيكون موضع تقدير حقًا :)

هل تعتقد أن نهج قاعدة البيانات في حالتي هو الخيار الصحيح؟

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

المحلول

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

اترك الملف للتخزين المؤقت لنظام التشغيل و/أو الوكيل العكسي - سيكونون أفضل في ذلك.

نصائح أخرى

بعض الأسباب الأخرى لتخزين الصور على نظام الملفات:

  • يمكن تشغيل خوادم الصور حتى عندما تكون قاعدة البيانات مشغولة أو معطلة.
  • تم تصميم أنظمة الملفات ل تخزين الملفات وهم فعالون جدًا في ذلك.
  • إن تفريغ البيانات في قاعدة البيانات الخاصة بك يعني عمليات نسخ احتياطي وعمليات أخرى أبطأ.
  • ليست هناك حاجة إلى ترميز من جانب الخادم لعرض صورة، فقط IIS/Apache القديم العادي.
  • يمكنك التوسع بشكل أسرع باستخدام خوادم الويب الرخيصة، أو ربما إلى شبكة CDN.
  • يمكنك تنفيذ الأعمال ذات الصلة (إنشاء صور مصغرة، وما إلى ذلك) دون إشراك قاعدة البيانات.
  • يمكن لخادم قاعدة البيانات الخاصة بك الاحتفاظ بالمزيد من بيانات الجدول "الحقيقية" في الذاكرة، حيث يمكنك الحصول على سرعة قاعدة البيانات الخاصة بك للاستعلامات.إذا كان يستخدم ذاكرته الثمينة للاحتفاظ بملفات الصور في ذاكرة التخزين المؤقت، فهذا لا يوفر لك أي شيء من حيث السرعة مقابل وجود المزيد من فهرس الصور في الذاكرة.

تستخدم معظم المواقع الكبيرة نظام الملفات.

يرى هل تريد تخزين الصور كملفات أو في قاعدة البيانات لتطبيق ويب؟

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

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

ما هي قاعدة البيانات التي تستخدمها؟يوفر MS SQL Server 2008 مساحة تخزين FILESTREAM

يسمح بتخزين بيانات BLOB والوصول إليها بكفاءة باستخدام مزيج من SQL Server 2008 ونظام الملفات NTFS.ويغطي خيارات تخزين BLOB، وتكوين Windows وSQL Server لاستخدام بيانات FILESTREAM، واعتبارات دمج FILESTREAM مع ميزات أخرى، وتفاصيل التنفيذ مثل التقسيم والأداء.

تفاصيل

نحن نستخدم FileNet، وهو خادم مُحسّن للتصوير.هذا غال جدا.الحل الأرخص هو استخدام خادم الملفات.

من فضلك لا تفكر في تخزين ملفات كبيرة على خادم قاعدة البيانات.

كما ذكر آخرون، قم بتخزين المراجع للملفات الكبيرة في قاعدة البيانات.

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