फ़ाइल सिस्टम के विपरीत डेटाबेस में एक फाइल भंडारण?

आम तौर पर, एक प्रदर्शन हिट का कितना बुरा फाइल सिस्टम के विपरीत डेटाबेस (विशेष रूप से mssql) में फ़ाइल संग्रहीत कर रहा है? मैं एप्लिकेशन पोर्टेबिलिटी के बाहर एक कारण के साथ नहीं आ सकता हूं कि मैं अपनी फ़ाइलों को SQL सर्वर में varbinaries के रूप में स्टोर करना चाहता हूं।

0
ro fr bn

10 उत्तर

इस उत्तर पर एक नज़र डालें:

डीबी में छवियां संग्रहीत करना - हाँ या नहीं?

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

कुछ विपरीत उदाहरण हैं (उदा।, माइक्रोसॉफ्ट शेयरपॉइंट), लेकिन आमतौर पर, डेटाबेस में फाइलों को संग्रहीत करना एक अच्छा विचार नहीं है।

जब तक आप संभवतः डेस्कटॉप ऐप्स लिखते हैं और/या लगभग कितने उपयोगकर्ताओं को जानते हैं, लेकिन किसी सार्वजनिक वेबसाइट की तरह यादृच्छिक और अप्रत्याशित चीज़ पर, आप डेटाबेस में फ़ाइलों को संग्रहीत करने के लिए उच्च मूल्य का भुगतान कर सकते हैं।

0
जोड़ा

एक बाइट सरणी में एक ब्लॉब (छवि) को पार्स करने के ऊपरी हिस्से को और उसके बाद इसे उचित फ़ाइल नाम में डिस्क पर लिखें और फिर इसे पढ़ने से आपको ओवरहेड हिट पर्याप्त होता है ताकि आप इसे अक्सर करने से हतोत्साहित कर सकें, खासकर यदि फाइलें हैं बल्कि बड़ी।

0
जोड़ा
यह एक निहित कार्य है जब छवियों को बाद में प्रदर्शित किया जाना चाहिए, विशेष रूप से जब विभिन्न प्रारूपों में या परिदृश्यों में संग्रहीत किया जाता है जहां उन्हें आकार के समय के अनुसार, समय की लंबाई के लिए स्मृति में नहीं रखा जा सकता है।
जोड़ा लेखक Jon Limjap, स्रोत
मुझे कहीं भी यह नहीं देखा गया है कि इस "फाइल" को डिस्क पर लिखा जाना चाहिए और फिर से पढ़ना होगा।
जोड़ा लेखक Dave Van den Eynde, स्रोत

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

0
जोड़ा

मैं कहूंगा, यह आपकी स्थिति पर निर्भर करता है। उदाहरण के लिए, मैं स्थानीय सरकार में काम करता हूं, और हमारे पास mugshots, आदि जैसी कई छवियां हैं। हमारे पास उपयोगकर्ताओं की संख्या बहुत अधिक नहीं है, लेकिन हमें डेटा के चारों ओर अच्छी सुरक्षा और लेखा परीक्षा की आवश्यकता है। डेटाबेस हमारे लिए एक बेहतर समाधान है क्योंकि यह आसान बनाता है और हम स्केलिंग समस्याओं में भाग नहीं ले रहे हैं।

0
जोड़ा

यदि आप SQL Server 2008 पर जा सकते हैं, तो आप FILESTREAM समर्थन का लाभ उठा सकते हैं जो आपको दोनों का सर्वश्रेष्ठ प्रदान करता है - फ़ाइलें फाइल सिस्टम में संग्रहीत हैं, लेकिन डेटाबेस एकीकरण वर्चर फ़ील्ड में फ़ाइलपैथ को संग्रहीत करने से कहीं बेहतर है। आपकी क्वेरी एक मानक .NET फ़ाइल स्ट्रीम वापस कर सकती है, जो एकीकरण को बहुत सरल बनाती है।

FILESTREAM संग्रहण के साथ प्रारंभ करना

0
जोड़ा
लगता है कि स्केलेबिलिटी और उपलब्धता बहुत अच्छी तरह से सोचा गया है - इस श्वेतपत्र को देखें: msdn। microsoft.com/en-us/library/cc949109.aspx
जोड़ा लेखक Jon Galloway, स्रोत
मेरे पास कुछ आरक्षण हैं। विशेष रूप से स्केलेबिलिटी और चीजों की उपलब्धता पक्ष: आप कैसे नियंत्रित करते हैं कि "ब्लब्स" कहां संग्रहीत किए जाते हैं?
जोड़ा लेखक Dave Van den Eynde, स्रोत
इसके लिए एक चेतावनी यह है कि डेटाबेस से कनेक्ट करते समय आपको एकीकृत सुरक्षा (यानी विंडोज प्रमाणीकरण) का उपयोग करना होगा: blogs.msdn.com/b/psssql/archive/2008/04/10/…
जोड़ा लेखक Sven Grosen, स्रोत

मैं @ ज़ोंबीशेप से सहमत हूं। बस एक और बात - मुझे आम तौर पर नहीं लगता कि डेटाबेस को वास्तव में पोर्टेबल होना चाहिए क्योंकि आप अपने डीबीएमएस विक्रेता द्वारा प्रदान की जाने वाली सभी सुविधाओं को याद करते हैं। मुझे लगता है कि किसी अन्य डेटाबेस में माइग्रेट करना आखिरी बात होगी जिसे कोई विचार करेगा। बस मेरा $ .02

0
जोड़ा

हमने http://www.freshlogicstudios.com/Products/Folders/ के लिए varbinary के रूप में स्टोर करने का निर्णय लिया है। आधा रास्ते प्रदर्शन मुद्दों की उम्मीद है। मैं कह सकता हूं कि हम इस बात से आश्चर्यचकित हुए हैं कि यह कितना अच्छा काम करता है।

0
जोड़ा

अस्पष्ट या कुछ भी नहीं होना चाहिए, लेकिन मुझे लगता है कि 'फाइल' का प्रकार जिसे आप संग्रहित करेंगे, वह सबसे बड़ा निर्धारण कारकों में से एक है। यदि आप अनिवार्य रूप से एक बड़े टेक्स्ट फ़ील्ड के बारे में बात करते हैं जिसे फाइल के रूप में संग्रहीत किया जा सकता है तो मेरी वरीयता डीबी स्टोरेज के लिए होगी।

0
जोड़ा

यहां सवाल क्या है?

आधुनिक डीबीएमएस एसक्यूएल 2008 में बीएलओबी से निपटने के कई तरीके हैं जो सिर्फ एक टेबल में चिपके नहीं हैं। निश्चित रूप से पेशेवर और विपक्ष हैं, और आपको इसके बारे में थोड़ा गहराई से सोचने की आवश्यकता हो सकती है।

देर से (?) जिम ग्रे द्वारा यह एक दिलचस्प पेपर है

बीएलओबी या बीएलओबी नहीं: डेटाबेस में बड़े ऑब्जेक्ट स्टोरेज या फाइल सिस्टम

0
जोड़ा

हालांकि प्रदर्शन एक मुद्दा है, मुझे लगता है कि आधुनिक डेटाबेस डिज़ाइन ने इसे छोटी फ़ाइलों के लिए बहुत कम मुद्दा बना दिया है।

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

हमारा समझौता, और मैं यह वादा नहीं करता कि यह सबसे अच्छा है, डेटाबेस में छोटी एक्सएमएल फाइलों को स्टोर करना है, लेकिन छवियों और इसके बाहर की अन्य फाइलें।

0
जोड़ा
आप एक छोटी या बड़ी फाइल पर क्या विचार करते हैं?
जोड़ा लेखक ubiquibacon, स्रोत