2010-12-06 17 views
10

मैं एक ऐसी परियोजना को कार्यान्वित कर रहा हूं जो छवियों की एक बड़ी मात्रा से संबंधित है।एक MySQL डेटाबेस में छवि डेटा संग्रहीत?

आपकी राय में क्या निम्नलिखित दो तरीकों में से विपक्ष/पेशेवरों हैं:

  • मैं कई स्ट्रिंग गुण और एक छवि के रूप आइटम के हजारों, प्रत्येक आइटम को स्टोर करने की जरूरत है।
  • एक आईडी के रूप में प्रत्येक आइटम (पूर्णांक)
  • MyISAM तालिकाओं
  • आप छवियों कैसे संगृहीत होगा: एक निर्देशिका में दुकान छवियों और प्रत्येक छवि ID.jpg
  • के रूप में नामित:
    • दृष्टिकोण
    • दृष्टिकोण 2: दुकान एक बाइनरी ब्लॉब
के रूप में डेटाबेस में छवियों

दृष्टिकोण 1 का उपयोग करते हुए मैं सीधे छवि का उपयोग कर सकते हैं और है कि यह

<img src="same_directory/10.jpg" /> 

है दृष्टिकोण 2 का उपयोग करना, मैं अभी भी ऊपर HTML का उपयोग कर सकते हैं, लेकिन एक PHP स्क्रिप्ट जो वास्तविक वापस आ जाएगी करने के लिए कि जेपीजी पहुँच रीडायरेक्ट करना होगा डीबी से छवि।

प्रदर्शन के संदर्भ में आप इसे किस तेजी से सोचते हैं?

मैं दृष्टिकोण रहा हूँ 1.

+2

आम तौर पर, डेटाबेस में बड़े बीएलओबी भंडारण वास्तव में प्रदर्शन को प्रभावित करता है। अगर सभी छवियां बहुत छोटी फाइलें हैं, तो यह इतना बुरा नहीं है। – Orbling

+0

यदि सभी छवियां jpg नहीं हैं डेटाबेस में सहेजने से पहले संपीड़ित करें। –

+0

संभावित डुप्लिकेट [फ़ाइलों के रूप में स्टोर या वेब ऐप के लिए डेटाबेस में?] (Http://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-डेटा-for- ए-वेब-एप) – shamittomar

उत्तर

1

मैं पहली दृष्टिकोण का उपयोग करने के लिए परीक्षा हो वहाँ छवि डेटा के साथ डेटाबेस को अव्यवस्थित में कोई वास्तविक मूल्य के रूप में उत्सुक हूँ। (डेटाबेस से डेटा प्राप्त करना डिस्क से इसे लोड करने से भी काफी धीमा होगा।)

हालांकि, एक सुझाव के रूप में आप डेटाबेस तालिका में छवि पर डिस्क पर पूरा पथ स्टोर करने के लिए नहीं चाहते हैं भविष्य में पोर्टेबिलिटी। (यानी: बस पथ के हिस्से को स्टोर करें और 'ज्ञात' बेस फ़ोल्डर से फ़ाइल नाम बदलें।)

2

फाइल सिस्टम पर संग्रहीत करना तेज़ है।

0

छवि फ़ाइलों को अपने डीबी लोड को कम करने के लिए सर्वर पर छवि फ़ाइलों के रूप में रखें और सर्वर को कैशिंग इत्यादि को संभालने की अनुमति दें कुल मिलाकर यह वास्तव में उन छवियों पर निर्भर करता है जिनके बारे में हम बात कर रहे हैं। छोटे थंबनेल (उदा। फ़ाइल आइकन के लिए) यह बुरा नहीं होगा, लेकिन मैं डीबी में पूरी छवियों को स्टोर नहीं करता। आम तौर पर मुझे लगता है कि फाइल सिस्टम दृष्टिकोण तेज होगा।

+0

दृष्टिकोण 1 कम से कम मेरी आवश्यकताओं के लिए विजेता है ... – cmancre

0

वेब ब्राउज़र पर समस्या की जांच करने दें। जब आप डेटाबेस में सहेजे गए 10 चित्रों वाले पृष्ठ को लोड करते हैं। आप ब्राउज़र सर्वर पर नया http अनुरोध भेजते हैं। प्रत्येक अनुरोध डीबी कनेक्शन और सर्वर साइड स्क्रिप्ट init। या बस फाइल सिस्टम से स्थिर छवि पढ़ें।

तेजी से क्या होगा?

अन्य भाग - फ़ाइल सिस्टम या डेटाबेस से डेटा प्राप्त करें। यदि हम डेटाबेस के लिए कैश का उपयोग नहीं करते हैं (लेकिन 10 जीबी छवियों के लिए आपके पास इस डेटा को कैश करने के लिए 10 जीबी रैम होना चाहिए)। डेटाबेस और HTTP सर्वर किसी भी मामले में फ़ाइल सिस्टम से डेटा पढ़ता है। लेकिन मुझे लगता है कि HTTP ब्राउज़र डाटाबेस सर्वर को तेजी से डेटा पढ़ता है।

डाटाबेस स्टोरेज के लिए केवल एक चीज विपक्ष - एक सर्वर से डेटा को माइग्रेट करना बहुत आसान है। लेकिन यह सिस्टम प्रदर्शन के लिए कोई फर्क नहीं पड़ता।

और /a/b/c/abc.jpg जैसी छवियों के लिए पथ बनाना न भूलें - यह बड़ी मात्रा में छवियों के लिए तेज़ होगा, फिर सभी छवियों को एक निर्देशिका में रखें।

+0

मैंने निर्देशिका उपखंड का उल्लेख नहीं किया है लेकिन मेरे पास पहले से ही यह ध्यान में है। – cmancre

5

दृष्टिकोण 1 के फायदे:

  • फ्लैट फ़ाइल प्रपत्र वेबसर्वर प्राप्त कर रहा है और अधिक तेजी से होता है।
  • अधिकांश वेब होस्ट इस दृष्टिकोण का पालन करने की संभावना रखते हैं।
  • फ़ाइल फ़ाइल फ्लैट फ़ाइल भंडारण के लिए तेज़ है।

दृष्टिकोण 2 के फायदे:

  • आपके सभी डेटा एक ही स्थान पर रखा जाता है, अगर आप अपने वेबसाइट/डेटाबेस विस्थापित छवियों सिर्फ वहाँ
  • इसका आसान सॉर्ट करने के लिए किया जाएगा/हटाएं/आदि ...
  • चूंकि आपको इसे PHP स्क्रिप्ट के माध्यम से सेवा देना है, तो आप अतिरिक्त आवश्यकताएं जैसे सुरक्षा की आवश्यकता हो सकती है, या छवि प्रसंस्करण (स्पष्ट रूप से आप वें कर सकते हैं फ्लैट फ़ाइल के साथ भी है, लेकिन आपको बनाना है कि सार्वजनिक निर्देशिका में छवियों को छोड़कर सुरक्षा को बाईपास नहीं किया जा सकता है)।

प्रदर्शन दृष्टिकोण 1 पर विचार करने के लिए सबसे अच्छा है।

संबंधित मुद्दे