ग्रिडएफएस मोंगोडीबी के शीर्ष पर एक साधारण फाइल सिस्टम एब्स्ट्रैक्शन है। यदि आप अमेज़ॅन एस 3 से परिचित हैं, तो ग्रिडएफएस एक बहुत ही समान अमूर्तता है। अब, MongoDB जैसा दस्तावेज़-उन्मुख डेटाबेस फ़ाइल परत अमूर्तता प्रदान क्यों करता है? पता चलता है कि कुछ बहुत अच्छे कारण हैं:
-
उपयोगकर्ता द्वारा जेनरेट की गई फ़ाइल सामग्री संग्रहीत करना
बड़ी संख्या में वेब एप्लिकेशन उपयोगकर्ताओं को फ़ाइलें अपलोड करने की अनुमति देते हैं। ऐतिहासिक रूप से, रिलेशनल डेटाबेस के साथ काम करते समय, ये उपयोगकर्ता-जनित फ़ाइलें डेटाबेस से अलग फ़ाइल सिस्टम पर संग्रहीत हो जाती हैं। इससे कई तरह की समस्याएं पैदा होती हैं। फ़ाइलों को सभी आवश्यक सर्वरों में कैसे दोहराएं? फाइल डिलीट होने पर सभी कॉपी कैसे डिलीट करें? सुरक्षा और आपदा पुनर्प्राप्ति के लिए फ़ाइलों का बैकअप कैसे लें? ग्रिडएफएस डेटाबेस के साथ फाइलों को स्टोर करके उपयोगकर्ता के लिए इन समस्याओं को हल करता है, और आप अपनी फाइलों का बैकअप लेने के लिए अपने डेटाबेस बैकअप का लाभ उठा सकते हैं। साथ ही, MongoDB प्रतिकृति के कारण, आपकी फ़ाइलों की एक प्रति प्रत्येक प्रतिकृति में संग्रहीत की जाती है। फ़ाइल को हटाना डेटाबेस में किसी ऑब्जेक्ट को हटाने जितना आसान है।
-
फ़ाइल सामग्री के कुछ हिस्सों तक पहुंच
जब कोई फ़ाइल GridFS पर अपलोड की जाती है, तो फ़ाइल को 256k के टुकड़ों में विभाजित किया जाता है और अलग से संग्रहीत किया जाता है। इसलिए, जब आपको फ़ाइल के बाइट्स की केवल एक निश्चित श्रेणी को पढ़ने की आवश्यकता होती है, तो केवल उन हिस्सों को मेमोरी में लाया जाता है, न कि पूरी फाइल को। बड़ी मीडिया सामग्री के साथ काम करते समय यह अत्यंत उपयोगी होता है जिसे चुनिंदा रूप से पढ़ने या संपादित करने की आवश्यकता होती है।
-
16MB से अधिक के दस्तावेज़ MongoDB में संग्रहीत करना
डिफ़ॉल्ट रूप से, MongoDB दस्तावेज़ का आकार 16MB पर छाया हुआ है। इसलिए, यदि आपके पास 16MB से अधिक के दस्तावेज़ हैं, तो आप उन्हें GridFS का उपयोग करके संग्रहीत कर सकते हैं।
-
फ़ाइल सिस्टम की सीमाओं पर काबू पाना
यदि आप बड़ी संख्या में फ़ाइलें संग्रहीत कर रहे हैं, तो आपको फ़ाइल सिस्टम सीमाओं पर विचार करने की आवश्यकता होगी जैसे कि फ़ाइलों/निर्देशिका की अधिकतम संख्या, आदि। GridFS के साथ, आप ' फ़ाइल सिस्टम सीमाओं के बारे में चिंता करने की आवश्यकता नहीं है। साथ ही, GridFS और MongoDB sharding के साथ, आप अपनी फ़ाइलों को विभिन्न सर्वरों में वितरित कर सकते हैं बिना परिचालन जटिलता को बढ़ाए।
ग्रिडएफएस - परदे के पीछे
ग्रिडएफएस डेटा को स्टोर करने के लिए दो संग्रहों का उपयोग करता है:
> show collections; fs.chunks fs.files system.indexes >
fs.files संग्रह में फाइलों के बारे में मेटाडेटा होता है, और fs.chunks संग्रह वास्तविक 256k विखंडू को संग्रहीत करता है। यदि आपके पास एक शार्प्ड संग्रह है, तो टुकड़ों को विभिन्न सर्वरों में वितरित किया जाता है और आपको फाइल सिस्टम की तुलना में बेहतर प्रदर्शन मिल सकता है!
> db.fs.files.findOne(); { "_id" : ObjectId("530cf1bf96038f5cb6df5f39"), "filename" : "./conn.log", "chunkSize" : 262144, "uploadDate" : ISODate("2014-02-25T19:40:47.321Z"), "md5" : "6515e95f8bb161f6435b130a0e587ccd", "length" : 1644981 } >
MongoDB भी files_id पर एक कंपाउंड इंडेक्स बनाता है और चंक नंबर को जल्दी से एक्सेस करने में मदद करता है:
> db.fs.chunks.getIndexes(); [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "files.fs.chunks", "name" : "_id_" }, { "v" : 1, "key" : { "files_id" : 1, "n" : 1 }, "ns" : "files.fs.chunks", "name" : "files_id_1_n_1" } ] >
MongoDB GridFS उदाहरण
MongoDB में एक बिल्ट-इन यूटिलिटी है जिसे "mongofiles" कहा जाता है ताकि GridFS परिदृश्यों का अभ्यास करने में मदद मिल सके। अपने ड्राइवर के साथ ग्रिडएफएस का उपयोग कैसे करें, इस पर कृपया अपने ड्राइवर दस्तावेज़ देखें।
Put #mongofiles -h -u -p --db files put /conn.log connected to: 127.0.0.1 added file: { _id: ObjectId('530cf1009710ca8fd47d7d5d'), filename: "./conn.log", chunkSize: 262144, uploadDate: new Date(1393357057021), md5: "6515e95f8bb161f6435b130a0e587ccd", length: 1644981 } done! Get #mongofiles -h -u -p --db files get /conn.log connected to: 127.0.0.1 done write to: ./conn.log List # mongofiles -h -u -p list connected to: 127.0.0.1 /conn.log 1644981 Delete [root@ip-10-198-25-43 tmp]# mongofiles -h -u -p --db files delete /conn.log connected to: 127.0.0.1 done!
ग्रिडएफएस मॉड्यूल
यदि आप सीधे अपने वेब सर्वर या फ़ाइल सिस्टम से MongoDB में संग्रहीत फ़ाइल डेटा की सेवा करना चाहते हैं, तो कई GridFS प्लगइन मॉड्यूल उपलब्ध हैं:
- ग्रिडएफएस-फ्यूज - फाइल सिस्टम में ग्रिडएफएस प्लग इन करें
- GridFS-Nginx - सर्वर GridFS फ़ाइलों को सीधे Nginx से प्लग इन करें
ग्रिडएफएस सीमाएं
-
वर्किंग सेट
फाइलों को अपने डेटाबेस सामग्री के साथ प्रस्तुत करना आपके मेमोरी वर्किंग सेट को महत्वपूर्ण रूप से मंथन कर सकता है। यदि आप अपने कार्य सेट को बाधित नहीं करना चाहते हैं, तो बेहतर होगा कि आप अपनी फ़ाइलों को किसी भिन्न MongoDB सर्वर से प्रस्तुत करें।
-
प्रदर्शन
फ़ाइल का प्रदर्शन आपके वेब सर्वर और फ़ाइल सिस्टम से फ़ाइल को मूल रूप से प्रस्तुत करने की तुलना में धीमा होगा। हालांकि, अतिरिक्त प्रबंधन लाभ मंदी के लायक हो सकते हैं।
-
परमाणु अद्यतन
ग्रिडएफएस किसी फ़ाइल का परमाणु अद्यतन करने का तरीका प्रदान नहीं करता है। यदि यह परिदृश्य आवश्यक है, तो आपको अपनी फ़ाइलों के कई संस्करणों को बनाए रखने और सही संस्करण चुनने की आवश्यकता होगी।