2011-06-11 9 views
10

यह सवाल मुझे भ्रमित कर रहा है इसलिए मैंने सोचा कि मुझे एक विशेषज्ञ आवाज सुननी चाहिए!php: माइस्क्ल ब्लॉब में स्टोर करें, अच्छा या बुरा?

क्या यह एक फ़ोल्डर में छवियों को अपलोड करना और MySQL के लिंक को सहेजना बेहतर है, या बेहतर रूप से एक blob mysql फ़ील्ड में img अपलोड करें?

आपको बहुत बहुत

+0

मुझे लगता है कि एक फ़ोल्डर में छवियां अपलोड करें और बस mysql पर लिंक सहेजें एक अच्छा विकल्प है। – NewUser

उत्तर

20

मैं अक्सर डेटाबेस में छवियों को स्टोर करने के सिस्टम का निर्माण किया है शुक्र है, वहाँ पेशेवरों और ऐसा करने के लिए विपक्ष में हैं।

सकारात्मक:

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

विपक्ष:

  • इसकी धीमी वेबसर्वर से एक फ्लैट फ़ाइल की सेवा एक PHP स्क्रिप्ट इसे पुनः प्राप्त करने की जरूरत है, और MySQL डेटा वापस करने की जरूरत के रूप में तो।
  • आपका डेटाबेस बहुत तेज़ हो जाएगा और सभी वेब होस्ट इस पर बहुत दयालु नहीं होंगे।
  • फ़ाइल सिस्टम फ्लैट फ़ाइल संग्रहण और पुनर्प्राप्ति के लिए तेज़ है क्योंकि यह ठीक है कि फाइल सिस्टम किस प्रकार डिज़ाइन किया गया है।
2

खराब। आपका वेबसर्वर एक्सप्रिर हेडर प्रबंधित करने और फाइल सिस्टम से फ़ाइलों को सीधे लोड करने के लिए एक बेहतर काम करता है। फाइल सिस्टम का उपयोग कर थ्रूपुट बहुत अधिक होगा। यह इसका उपयोग करने के लिए डिज़ाइन किया गया है।

एसक्यूएल डेटाबेस को संबंधपरक डेटा के लिए डिज़ाइन किया गया है, छवियों पर नहीं। आप बस अपने डेटाबेस को अनावश्यक रूप से लोड कर रहे हैं। इसके बजाय पथ/छवि नाम स्टोर करें।

+0

tyvm, और मैं करूँगा :)। – Zalaboza

+0

आप जो कहते हैं वह सही है मेरे दोस्त लेकिन आप फाइल सिस्टम में छवि फ़ाइलों को सुरक्षित करने की योजना कैसे बनाते हैं? –

+0

उन्हें सुरक्षित करें? मुझे लगता है कि आपके सर्वर से समझौता नहीं किया जाएगा, या आपके चित्रों के मुकाबले आपके पास बहुत अधिक कठिन समस्याएं हैं। निर्देशिका अनुमतियां आपके एप्लिकेशन को निर्देशिका तक पहुंच प्रदान कर सकती हैं लेकिन साझा होस्ट पर अन्य उपयोगकर्ताओं को नहीं। – Xorlev

0

यदि आपका आवेदन बड़ा है, तो आपको बार-बार छवियों की एक बड़ी संख्या/आकार प्रदर्शित करना होगा, तो आपको पहली विधि के लिए जाना चाहिए (डेटाबेस में केवल छवि पथ संग्रहीत करना और फ़ाइल सिस्टम पर वास्तविक छवियां)। यह प्रसंस्करण समय को छवियों को प्रदर्शित करने के लिए कम संसाधनों को कम करने के लिए कम करेगा। दूसरा, यदि आपके एप्लिकेशन को कम संख्या में छवियों की आवश्यकता है तो आप उन्हें सीधे डेटाबेस में स्टोर कर सकते हैं। इस तरह बैकअप और पोर्ट एप्लिकेशन को किसी अन्य ओएस पर लेना आसान हो जाता है।