2011-10-18 9 views
12

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

  1. दस्तावेजों है कि बस बाइनरी डेटा के रूप में सहेजा छवि, और संभवतः कुछ मेटाडेटा का एक अलग संग्रह करने के बाद।
  2. या छवियों को स्टोर करने के लिए ग्रिडएफएस का उपयोग करना।

उत्तर

19

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

हालांकि, यदि आपकी छवियां बड़ी हैं तो मैं ग्रिडएफएस का उपयोग करूंगा।

  • बड़े चित्र के लिए, जब वे GridFs वे मात्रा में विभाजित किया जाएगा और आप बहुत बड़ी फ़ाइलों को स्टोर कर सकते में जमा हो जाती: GridFS है कि यह बहुत छवियों है कि आप पर विचार करना चाहिए से निपटने में अच्छा बनाने के कुछ विशेषताएं है। यदि आप अपने दस्तावेज़ में छवियों को स्टोर करने का प्रयास करते हैं, तो आप दस्तावेज़ के 16 एमबी अधिकतम आकार से बाध्य हैं, और आप उस स्थान का उपभोग कर रहे हैं जिसका उपयोग आपके वास्तविक दस्तावेज़ के लिए किया जाना चाहिए।
  • आप छवि में मेटाडेटा जोड़ सकते हैं और इन विशेषताओं के विरुद्ध क्वेरी चला सकते हैं, जैसे कि आप इसे संग्रह में नियमित दस्तावेज़ से कर रहे थे। तो ग्रिडएफएस छवि के बारे में मेटाडेटा के लिए एक दस्तावेज़ के रूप में अच्छा है।
  • मुझे वाकई यह पसंद है कि मुझे छवियों पर एमडी 5 हैश की गणना मिलती है। (यह मेरे कुछ मामलों के लिए बहुत उपयोगी है)।
  • GridFS में छवियों भंडारण आप अपने आप को द्विपदीय प्रारूप में छवि के पूर्व प्रसंस्करण (नहीं एक बड़ी बात है, लेकिन GridFS की सुविधा)

बचाने के प्रदर्शन के संदर्भ में, पढ़ने/एक नियमित रूप से दस्तावेज़ के खिलाफ लिखकर चाहिए ग्रिडएफएस के खिलाफ ऐसा करने से अलग मत बनो। मैं किसी एक को चुनने में प्रदर्शन को अलग करने वाला नहीं मानूंगा।

मेरी व्यक्तिगत सिफारिश ग्रिडएफएस के साथ जाना है, लेकिन आपको अपने विशेष उपयोग के मामले का विश्लेषण करने की आवश्यकता है।

उम्मीद है कि इससे मदद मिलती है।

1

फ़ाइलों को एक कुशल तरीके से संभालने के लिए ग्रिडएफएस विकसित किया गया है। http://www.mongodb.org/display/DOCS/When+to+use+GridFS

यह न भूलें कि आपको शायद फ़ाइल और पीछे डेटा का अनुवाद करना होगा।

लेकिन यह सुनिश्चित करने के लिए, एक प्रदर्शन परीक्षण करें जो आपके उपयोग पैटर्न का खाता लेता है।

3

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

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

+0

मेरा अनुरोध स्वीकार @luckytaxi, "0 नीचे वोट \t मैं GridFS का उपयोग फ़ोटो और दस्तावेज़ स्टोर करने के लिए। यह बहुत आसान है और प्रदर्शित करने या बचाने के लिए स्थानीय रूप से आसान है करने के लिए संग्रह से यह पुन: प्राप्त करने।" क्या आप व्याख्या कर सकते हैं कि आप छवि अपलोड करने, पुनर्प्राप्त करने और स्थानीय रूप से प्रदर्शित करने के तरीके कैसे करते हैं? –

+1

किसी भी मौके से इसका कोई भी उदाहरण, मैं वास्तव में उपयोगकर्ता प्रोफ़ाइल चित्रों के लिए ऐसा करने की कोशिश कर रहा हूं – Lion789

1

मैंने एक ब्लॉग पोस्ट लिखा है जिसमें मोंगोडीबी में बाइनरी डेटा संग्रहीत करने और ग्रिडएफएस का उपयोग करने के व्यापार-बंद शामिल हैं।देखें: https://alexmarquardt.com/2017/03/02/trade-offs-to-consider-when-storing-binary-data-in-mongodb/

अस्वीकरण: मैं मोंगोडीबी का कर्मचारी हूं।

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

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