2010-08-05 16 views
75

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

ग्रिडएफएस के साथ बेंचमार्क nginx द्वारा प्रस्तुत किया गया है, यह nginx द्वारा प्रदान की जाने वाली सामान्य फाइल सिस्टम के रूप में तेज़ नहीं है।

Benchmark with nginx

वहाँ कोई है, जो उत्पादन परिवेश में पहले से ही GridFS का उपयोग करता है, या एक नई परियोजना के लिए यह प्रयोग करेंगे?

+0

यह लिंक आपको मदद कर सकता है http://www.codefari.com/2015/11/gridfs-in-mongodb.html – Singh

+0

भविष्य में खोजकर्ताओं के लिए मोंगोडब में छवियों को संग्रहीत करने पर एक ब्लॉग पोस्ट जो मेरे लिए समान इरादा रखता है: http : //menge.io/2015/03/24/storing-small-images-in-mongodb/ (ग्रिडएफएस को बस इसे बाइनरी डेटा के रूप में दस्तावेज़ में फेंकने के साथ तुलना करता है) – JoeRocc

उत्तर

103

मैं अपने सर्वरों में से एक पर काम पर ग्रिडफ का उपयोग करता हूं जो मूल्यवान यातायात आंकड़ों के साथ मूल्य-तुलना वेबसाइट का हिस्सा है (प्रति दिन लगभग 25k आगंतुक)। सर्वर में अधिक रैम, 2 गीगा नहीं है, और यहां तक ​​कि सीपीयू वास्तव में तेज़ नहीं है (कोर 2 जोड़ी 1.8 गीगा) लेकिन सर्वर में पर्याप्त भंडारण स्थान है: RAID 0 कॉन्फ़िगरेशन में 10Tb (sata)। सर्वर जो काम कर रहा है वह बहुत आसान है:

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

हमने इस सर्वर पर 4 मिलियन छवियों को संग्रहीत और संसाधित किया है क्योंकि यह ऊपर और चल रहा है। आकार बदलने और स्टोर सामान एक साधारण PHP स्क्रिप्ट द्वारा किया जाता है ... लेकिन निश्चित रूप से, एक पायथन लिपि, या जावा जैसे कुछ तेज़ हो सकते हैं।

वर्तमान डेटा का आकार: 11.23g

वर्तमान संग्रहण का आकार: 12.5g

सूचकांकों: 5

सूचकांक का आकार: 849.65m

विश्वसनीयता के बारे में: यह बहुत विश्वसनीय है। सर्वर लोड नहीं होता है, सूचकांक आकार ठीक है, प्रश्न तेजी से

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

में संग्रहीत हैं ... तो मेरे दिमाग में ...हां, gridfs उत्पादन के लिए उपयोग करने के लिए पर्याप्त तेज़ और भरोसेमंद है।

+9

मुझे आश्चर्य है कि कोई भी उत्पादन वेबसाइट पर प्राथमिक भंडारण के रूप में RAID 0 का उपयोग करेगा। अच्छे बैकअप के साथ भी, स्टोरेज विफलता की संभावना बढ़ाना बेहतर प्रदर्शन के लिए भुगतान करने के लिए एक बहुत ही तेज कीमत है। – mikerobi

+62

हम RAID 0 का उपयोग करते हैं क्योंकि हमारे विशेष मामले में, छवि डेटा अस्थिर हो सकता है। इससे कोई फर्क नहीं पड़ता कि छवि खो गई है क्योंकि हम इसे व्यापारियों वेबसाइट से फिर से डाउनलोड करेंगे। व्यावहारिक रूप से, हम यह मान सकते हैं कि हमारा सर्वर एक साधारण छवि कैश सर्वर है। –

+0

लेकिन आप सक्रिय रूप से विफलता का मौका बढ़ा रहे हैं (प्रारंभिक ड्राइव विफलता कारक स्पिंडल की संख्या से गुणा हो गया है)। यदि RAID आपको लिखने से अधिक लिखने की आवश्यकता है तो RAID 10/6 की तुलना में अधिक लिखने की आवश्यकता है। – NeuroScr

12

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

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

5

mdirolf's nginx-gridfs मॉड्यूल सेटअप करने के लिए बहुत अच्छा और काफी आसान है। हम सभी चित्रों की सेवा के लिए paint.ly पर उत्पादन में इसका उपयोग कर रहे हैं और अब तक कोई समस्या नहीं हुई है।

+3

paint.ly अब उपलब्ध नहीं है, ऐसा लगता है। :( – Marian

2

मैं ग्रिडफ का उपयोग करने की अनुशंसा नहीं करता जबतक कि आप नहीं जानते कि आप क्या कर रहे हैं। ग्रिडएफएस सिर्फ अबास्ट्रक्शन लेयर है जो टुकड़ों के लिए फाइलों को विभाजित करता है और फ़ाइलों को दो संग्रहों में संग्रहीत करता है। अधिक फाइलें - अधिक ओवरहेड। यदि आप उम्मीद करते हैं कि फाइलें एक ही आकार के हों, तो 32 एम या इससे अधिक नहीं - आप सही तरीके से हैं। बड़ी फ़ाइलों को ग्रिडफ़्स पर स्टोर करने का प्रयास न करें। क्यूं कर? विभिन्न भाषाओं पर

  1. ड्राइवर पूरी फ़ाइल पढ़ सकते हैं। (उदा। हिस्सा) जब फ़ाइल के छोटे हिस्से को पढ़ने के।
  2. फ़ाइल को संशोधित करने से सभी हिस्सों को प्रभावित किया जा सकता है और डेटाबेस लोड बढ़ा सकता है यदि आपकी फ़ाइल सिस्टम बढ़ रही है, तो आपको ग्रिडफ़ को शेड करने का निर्णय लेना होगा। सावधान रहे! शेडिंग शुरू होने पर दृढ़ता की गारंटी नहीं है!

आप पढ़ने लोड परियोजना के बारे में सोचते हैं - सीधे डॉक्स में फ़ाइलों को लोड करने पर विचार (यदि 16M या उससे कम आकार) या किसी अन्य clusterfs चुनते हैं, और लिंक फ़ाइल नाम/inode अपने तर्क करने के लिए।

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

+4

मैं ग्रिडएफएस के लिए बिल्कुल नया हूं, हालांकि मैं समझता हूं कि ग्रिडएफएस केवल एक अमूर्त परत से अधिक है जो फाइलों की संख्या को दोगुना करता है। ग्रिडएफएस मोंगोडीबी की प्रतिकृति और sharding सुविधाओं का लाभ लेने का एक आसान तरीका प्रदान करता है। मेरा मानना ​​है कि दूसरों ने यह भी उल्लेख किया है कि फाइलें 2 जीबी भाग में संग्रहीत हैं जो मुझे लगता है कि फाइलों की कुल संख्या कम हो जाएगी, खासकर यदि किसी के पास बड़ी छवियों की बहुत बड़ी मात्रा है। –

+0

+1 आप सही हैं। यहां तक ​​कि छोटी फ़ाइलों को भी ग्रिडएफएस के साथ संग्रहीत करने का लाभ नहीं होगा। यदि आपकी फ़ाइल को मोंगोडीबी दस्तावेज़ (यानी 16 एमबी आकार सीमा के <) में संग्रहीत किया जा सकता है, तो आप एक मोंगोडीबी दस्तावेज़ के भीतर फ़ाइल को बीएलओबी के रूप में स्टोर करेंगे। यह मोंगोडीबी स्टोरेज के शीर्ष पर ग्रिडएफएस का उपयोग करने के ऊपरी हिस्से को पार कर जाएगा। Https: //www.compose देखें।io/articles/gridfs-and-mongodb-pros-and-cons/ –

5

हालांकि बड़े डीबी के लिए मरम्मत पर हेड-अप - एक नई प्रणाली जिसे हम विकसित कर रहे हैं, मोंगो साफ से बाहर नहीं निकलता है, और 7 टीबी ग्रिडएफएस की मरम्मत की तरह लगता है कि इसमें 130 घंटे लगेंगे।

इस वजह से, मुझे लगता है कि मैं ओपनस्टैक स्विफ्ट या केफ में स्विच करने पर विचार करूंगा। फिर भी, तब तक यह अच्छा था। और nginx-gridfs मॉड्यूल मीठा है।

+0

तो आप कैसे गए? – Mukus