डेटाबेस में चित्र, या डेटाबेस लिंक के साथ फाइलों में स्टोर करें?


22

क्या डेटाबेस में छवि फ़ाइलों को संग्रहीत करना उचित है? या डेटाबेस में फ़ाइल के केवल पथ को संग्रहीत करना बेहतर होगा, जबकि फ़ाइल को सर्वर पर रखते हुए?

क्या यह सही करने के लिए कोई अन्य तरीके हैं?

जवाबों:


22

मैं आपको दृढ़ता से सलाह देता हूं कि छवियों को फाइल सिस्टम में संग्रहीत करें और डेटाबेस में नहीं।

डेटाबेस में चित्र संग्रहीत करने के कई नुकसान हैं:

  • डेटाबेस अप्रत्याशित रूप से बड़ा हो सकता है। कभी-कभी अंतरिक्ष एक मुद्दा है। SQLServer एक्सप्रेस के उदाहरण के लिए आपके पास 4GB की सीमा है।

  • डेटा माइग्रेशन एक दर्द बन सकता है, उदाहरण के लिए यदि आप SQLServer से Oracle में स्विच करते हैं

  • क्वेरी बहुत धीमी हो सकती हैं और आपके पास एक उच्च डेटाबेस लोड होगा

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

  • सामान्य रूप से बदतर प्रदर्शन

  • डेटाबेस से छवियों को फिर से प्राप्त करते समय आपको संभवतः अस्थायी फाइलें बनानी होंगी। यह अनावश्यक है।

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


11

SQL सर्वर 2005 और NTFS फ़ाइल सिस्टम (Microsoft) पर CRUD प्रदर्शन की तुलना करने के लिए अनुसंधान: BLOB या BLOB करने के लिए नहीं । यह अध्ययन एक वेब एप्लिकेशन में भी किया गया था। आपने एक और डेटाबेस (MySQL) को सूचीबद्ध किया है और मैं मान लूंगा कि आप अपने PHP साइट के लिए Windows सर्वर का उपयोग नहीं कर रहे हैं, इसलिए यह दिलचस्प होगा यदि किसी ने विभिन्न तकनीकों पर एक समान अध्ययन किया हो।

पता चला कि यह फाइलों के आकार पर निर्भर करता है। SQL सर्वर एहसान (2x बेहतर) 256K या उससे कम की बूँदें और फ़ाइल सिस्टम 1MB + की फ़ाइलों का पक्षधर है। इस अध्ययन में फ़ाइल सिस्टम डेटाबेस से बेहतर विखंडन को संभालता है, इसलिए यदि आप लगातार इन फ़ाइलों को अपडेट कर रहे हैं या यह सिस्टम समय के साथ बढ़ता है, तो विखंडन एक बड़ा कारक होने जा रहा है जो फ़ाइल सिस्टम बेहतर काम करेगा।

आपको यह निर्धारित करने की आवश्यकता है कि इन फ़ाइलों को बनाए रखने के लिए आपकी साइट कितनी जिम्मेदार है। यदि आप किसी दुर्घटना की तस्वीरें अपलोड करने के लिए बीमा दावों के एजेंटों के लिए एक साइट खरीद रहे हैं, तो आपके पास लेनदेन नियंत्रण बेहतर है और सुनिश्चित करें कि वे फाइलें सर्वर पर हैं। अच्छा डेटाबेस आपके लिए ऐसा करता है, इसलिए डेवलपर के रूप में, आपने दबाव जोड़ा है।

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


आप एकीकृत समाधानों पर विचार करना चाह सकते हैं। उदाहरण के लिए, SQL सर्वर पर FILESTREAM और रिमोट ब्लॉब स्टोर हैं
फर्नांडो कोर्रेया

4

यदि आप बड़ी संख्या में चित्र बनाने जा रहे हैं, तो उन्हें डेटाबेस में संग्रहीत करने से फ़ाइल सिस्टम स्तर पर इनोड से बाहर निकलने की समस्या दूर हो सकती है।

हालाँकि इस समस्या को सबसे उपयुक्त फाइल सिस्टम का उपयोग करके हल किया जाएगा और संगठन पर उस फाइल सिस्टम के साथ जो भी उपाय सुझाए गए हैं।

अन्यथा, एक डेटाबेस में छवियों को संग्रहीत करना संसाधनों की पूरी बर्बादी है। आपके कहे अनुसार पथ संचय करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.