मैं उन्हें इस प्रकार उपयोग करता हूं:
सादे पाठ
यदि उस श्रेणी में कुछ अधिक विस्तृत प्रारूप शामिल होते हैं, जैसे कि YAML या गुण फाइलें, तो यह उन लोगों के लिए सबसे अच्छा विकल्प है, जो आप लोगों द्वारा हाथ से पढ़ने और संपादित करने की उम्मीद करते हैं। एक और बड़ा फायदा यह है कि इसे एक छोटी स्क्रिप्ट (जैसे सेड) के माध्यम से संशोधित करने की सरलता है।
कुछ भी नहीं सरलता और उपयोग में आसानी धड़कता है। जब समर्थन टीम को किसी दूरस्थ मशीन (जैसे ग्राहक की समस्या का समाधान) पर कुछ कॉन्फ़िगर करना पड़ता है, या आईटी को सर्वर का एक गुच्छा फिर से कॉन्फ़िगर करना पड़ता है जो आपके सॉफ़्टवेयर को चलाता है, तो वे आपको इस प्रारूप को चुनने के लिए धन्यवाद देंगे। यह आपको कुछ एक-बंद सॉफ़्टवेयर लिखने से भी बचाएगा जो उनके लिए करता है।
एक्सएमएल
मैं यहाँ @Ingo से सहमत हूँ - सादे पाठ के विपरीत XML को स्क्रिप्टिंग के माध्यम से संसाधित करना कठिन है, और एक हाथ से संपादित करने के लिए दुःस्वप्न।
फिर भी, यदि आपके पास कुछ विस्तृत संरचना के साथ डेटा है जहां YAML अनिर्दिष्ट हो जाता है और फिर भी यह मानव-पठनीय और संपादन योग्य होना चाहता है, तो XML शायद सबसे अच्छा विकल्प है।
संबंध का डेटाबेस
जब आपके पास बहुत सारा डेटा हो (जो कि सादा पाठ और XML को बोझिल बना देगा) के लिए एक बढ़िया विकल्प है कि आप अभी भी 3 जी पार्टियों को मैन्युअल रूप से संपादित करने की अनुमति दे सकते हैं - SQL कमांड और यहां तक कि GUI के माध्यम से।
एक और लाभ यह है कि आपका कोड जो सामग्री का प्रबंधन करता है वह बहुत पठनीय है। @ रिचर्ड-हैरिसन ने अपने उत्कृष्ट उत्तर में अन्य लाभों की एक अच्छी सूची दी।
NoSQL डेटाबेस
RDBMS पर एक लाभ वितरण के माध्यम से स्केलेबिलिटी है, जो संभवतः आपके प्रश्न के लिए बहुत प्रासंगिक नहीं है। संभवतः अधिक प्रासंगिक होने वाले फायदे एक कुंजी-मूल्य की दुकान की सादगी और योजनाबद्धता का लचीलापन है (यह एक शब्द है?)। जब आप अपने आप को संबंधपरक प्रतिमान को तोड़ते हुए पाते हैं: बस डेटाबेस को ब्लॉब्स को संग्रहीत करना, उन्हें कुंजी द्वारा एक्सेस करना और कोड के माध्यम से उन्हें संसाधित करना, फिर इस विकल्प पर विचार करें। कुछ विकल्प (जैसे CouchDB) बहुत पोर्टेबल होते हैं, एक छोटे पदचिह्न होते हैं और वे स्केल भी कर सकते हैं ताकि वे MySQL और SQLite के लिए एक अच्छा गैर-संबंधपरक विकल्प प्रदान करें।
बाइनरी
बाइनरी का लाभ यह है कि यह तेज और कॉम्पैक्ट है। जब केवल एक चीज जिसे आपकी फ़ाइल को पढ़ने और संशोधित करने की आवश्यकता होती है, एक प्रोग्राम है और डेटा रिलेशनल प्रतिमान या गति को फिट नहीं करता है तो यह वास्तव में महत्वपूर्ण है। मीडिया फ़ाइलों के लिए संभवतः सबसे उपयुक्त है।
हालांकि मुझे यह इंगित करना चाहिए कि मुझे अभी तक एक ऐसे मामले का सामना करना पड़ा है जहां प्रारंभिक डेटा के दौरान प्रोग्राम डेटा तक सरल पहुंच की आवश्यकता नहीं है। आजकल मैं व्यक्तिगत रूप से किसी अन्य चीज के लिए डेटाबेस विकल्प के लिए जाता हूं, जिसमें मानक प्रारूप वाली फाइलें और अन्य सॉफ्टवेयर (जैसे ऑडियो, वीडियो) द्वारा इनकोड / डिकोड किया जाना आवश्यक है।
नोट: एक आम गलतफहमी है कि बाइनरी अपारदर्शी है और इस तरह किसी भी तरह अधिक सुरक्षित है। अतिरिक्त सुरक्षा के बिना यह नहीं है - अगर कोई आपके सॉफ़्टवेयर को हैक करना चाहता है, तो बस आपके कॉन्फ़िगरेशन को संग्रहीत करना या बाइनरी में जो कुछ भी उन्हें बंद नहीं करेगा।
संपीड़ित पुरालेख
वास्तव में उपरोक्त के लिए एक विकल्प नहीं है, बल्कि एक अतिरिक्त उपाय है।
लाभप्रद जब आपको नेटवर्क पर चीजों को प्रसारित करने की आवश्यकता होती है, या जब आप बहुत सारे और बहुत सारे डेटा संग्रहीत करते हैं और अंतरिक्ष को बचाना चाहते हैं। ध्यान दें कि संग्रहण स्थान आमतौर पर इन दिनों प्रचुर मात्रा में होता है, इसलिए अपने लक्ष्य प्लेटफ़ॉर्म पर विचार करें।
आज लगभग किसी भी चीज पर बहुत तेजी से प्रदर्शन करता है (मूर का कानून इन एक्शन, बेबी), इसलिए इसका उपयोग न करने का एकमात्र कारण यह है कि यह आपके कोड में जटिलता जोड़ता है। जटिलता के नहीं एक बहुत, लेकिन अभी भी KISS सिद्धांत का उल्लंघन। विशेष रूप से कॉन्फ़िगरेशन फ़ाइलों के लिए बोझिल जिन्हें मैन्युअल रूप से या स्क्रिप्टिंग के माध्यम से संपादित करने की आवश्यकता है - और अगर आपको वास्तव में वहां जगह बचाने की आवश्यकता है, तो आपको संभवतः डेटाबेस विकल्प का उपयोग करना चाहिए।