मैट शेपर्ड का जवाब बहुत अच्छा है (मॉड अप), लेकिन मैं एक स्पिंडल के बारे में सोचते समय इन कारकों को ध्यान में रखूंगा:
- संरचना: क्या यह स्पष्ट रूप से टुकड़ों में टूटता है, या आप ट्रेडऑफ़ बना रहे हैं?
- उपयोग: डेटा का विश्लेषण / पुनर्प्राप्त / grokked कैसे किया जाएगा?
- लाइफटाइम: डेटा कब तक उपयोगी है?
- आकार: कितना डेटा है?
RDBMSes पर CSV फ़ाइलों का एक विशेष लाभ यह है कि वे संक्षेप में और किसी अन्य मशीन को व्यावहारिक रूप से स्थानांतरित करने में आसान हो सकते हैं। हम बड़े डेटा ट्रांसफर करते हैं, और सब कुछ सरल है बस हम एक बड़ी CSV फ़ाइल का उपयोग करते हैं, और rsync जैसे टूल का उपयोग करके स्क्रिप्ट को आसान बनाते हैं। बड़ी CSV फ़ाइलों पर पुनरावृत्ति को कम करने के लिए, आप YAML जैसी किसी चीज़ का उपयोग कर सकते हैं । मुझे यकीन नहीं है कि मैं JSON या XML जैसे कुछ भी स्टोर करूंगा, जब तक कि आपके पास महत्वपूर्ण संबंध आवश्यकताएं नहीं थीं।
जहाँ तक नहीं बताया गया विकल्प, Hadoop को छूट न दें , जो कि MapReduce का एक खुला स्रोत कार्यान्वयन है। यदि आपके पास शिथिल संरचित डेटा का एक TON है, जिसका विश्लेषण करने की आवश्यकता है, तो यह अच्छी तरह से काम करना चाहिए, और आप एक ऐसे परिदृश्य में रहना चाहते हैं जहाँ आप डेटा प्रोसेसिंग को संभालने के लिए सिर्फ 10 और मशीनों को जोड़ सकते हैं।
उदाहरण के लिए, मैंने प्रदर्शन का विश्लेषण करने की कोशिश शुरू की जो कि लगभग 20 मशीनों में लॉग किए गए विभिन्न कार्यों की सभी समय संख्याएं थीं। RDBMS में सब कुछ छड़ी करने की कोशिश करने के बाद, मुझे एहसास हुआ कि एक बार मैंने इसे एकत्र करने के बाद मुझे डेटा को फिर से क्वेरी करने की आवश्यकता नहीं है। और, यह केवल मेरे लिए एकत्रित प्रारूप में उपयोगी है। इसलिए, मैं लॉग फ़ाइलों को आसपास रखता हूं, संपीड़ित करता हूं, और फिर एकत्रित डेटा को एक DB में छोड़ देता हूं।
नोट मैं "बड़े" आकारों के साथ सोचने के अधिक आदी हूँ।