اذهب إلى المحتوى
  • 0

كيفية حفظ الصور في قاعدة البيانات

مروان محمود3

السؤال

Recommended Posts

  • 0

يوجد عدة طرق لحفظ الصور لكلٍ منها عيوبها ومميزاتها

حفظ الصور في قاعدة البيانات مباشرةً

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

تظل تلك الطريقة هي أبسط طريقة لحفظ الصور وهي أن تقوم بحفظ الصور في قاعدة البيانات مباشرةً في حقل من النوع blob 

مميزات تلك الطريقة:

  • بسيطة في تطبيقها, مجرد أن تستقبل الصور من المُستخدم وتقوم بإرفاقها في قاعدة البيانات كما هي وعند الإستقبال تقوم بجلبها من قاعدة البيانات وإرسالها إلى المُستخدم
  • ضمان عدم وجود صور غير مُستخدمة: حيث أن الصور مرفوقة في قاعدة البيانات, مما يعني في حالة قام مُستخدم بحذف الصورة سيتم حذفها من قاعدة البيانات عن طريق الsql وبالتالي نضمن عدم وجود صور في المساحة التخزينية تم حذفها من قِبل المُستخدم 

عيوب تلك الطريقة

  • تُسبب مشاكل في الأداء: حيث أن الصور حجمها كبير نسبياً مما يجعل الإستعﻻمات في قاعدة البيانات أبطأ ويقلل من أداؤها
  • يصعب عمل نسخ إحتياطية من الصور في حالة إحتجناها مستقبلياً

حفظ الصور في المساحة التخزينية ومن ثم إرفاق عنوانها في قاعدة البيانات

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مميزات تلك الطريقة

  • تلك الطريقة أفضل في الأداء: حيث هنا تفوز في الأداء لسببين , أولاً بسبب أن قاعدة البيانات أصبحت الأن تقوم بجلب بيانات ذات مساحة أقل مما يعني جمل إستعﻻمية أكثر سرعة حيث أن قاعدة البيانات ﻻ تقوم بجلب الصورة إنما فقط تقوم بجلب العنوان الذي يُشير لتلك الصورة , وأيضاً لأن عملية جلب الصورة نفسها من المساحة التخزينية أسرع من عملية جلبها بواسطة قاعدة البيانات
  • سهل أن تقوم بعمل نسخة إحتياطية للصور 

عيوب تلك الطريقة

  • أكثر تعقيداً من السابقة حيث أنك تقوم أولاً بوضع الصورة في المساحة التخزينية وإعطائها إسم مميز حتى ﻻ يحصل تداخل بين إسم صورتين وبعد ذلك نجلب العنوان ونقوم بوضعه في قاعدة البيانات, وعند القراءة نقوم بجلب العنوان ومن ثم نجلب الصورة المُرفقة في ذلك العنوان, ويجب التأكد عند التخزين أن العنوان المُسجل في قاعدة البيانات متوافق مع العنوان الفعلي
  • من الممكن أن يتم حذف الصورة من قاعدة البيانات ولكن ﻻ يتم حذفها فعلياً من المساحة التخزينية مما يسمح بإستغﻻل المساحة التخزينية بشكلٍ سيئ 

حسناً بالنسبة لسؤالك عن أفضل طريقة , فﻻ يوجد أفضل طريقة فكل طريقة تعتمد على إحتياجاتك, ولكن بشكلٍ عام ستجد الطريقة الثانية مناسبة لأغلب الأوقات, ﻻ أعتقد أنني قد إحتجت مطلقاً إلى الطريقة الأولى , الطريقة الثانية تعطي أداءاً جيداً جداً بالنسبة إلى الطريقة الأولى

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في الحقيقة نحن عادة لا نقوم بتخزين " الصور " ذاتها في قواعد البيانات بل نقوم بتخزين مسارات هاته الصور , و عوضا عن تخزينها في قواعد البيانات نحن نستخدم نظم التخزين و الملفات لذلك . 

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

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

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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...