Li uso come segue:
Testo semplice
Se quella categoria include formati leggermente più elaborati, come YAML o file delle proprietà, allora è l'opzione migliore per qualunque cosa ti aspetti che le persone leggano e modifichino manualmente. Un altro enorme vantaggio è la semplicità di modificarlo tramite un piccolo script (ad esempio sed).
Niente batte la semplicità e la facilità d'uso. Quando il team di supporto deve configurare qualcosa su una macchina remota (ad esempio, risolvere il problema di un client) o l'IT deve riconfigurare un gruppo di server che eseguono il software, ti ringrazieranno per aver scelto questo formato. Ti salverà anche dalla scrittura di un software unico che lo fa per loro.
XML
Sono d'accordo con @Ingo qui - a differenza del semplice testo XML è più difficile da elaborare tramite script e un incubo da modificare a mano imo.
Tuttavia, se si dispone di dati con una struttura elaborata in cui YAML diventa indecifrabile e si desidera comunque che sia leggibile e modificabile dall'uomo, l'XML è probabilmente la scelta migliore.
Database relazionale
Un'ottima scelta per quando hai molti dati (che renderebbero ingombranti il testo semplice e XML) che potresti comunque voler consentire a terze parti di modificare manualmente - tramite comandi SQL e persino GUI.
Un altro vantaggio è che il tuo codice che gestisce i contenuti è molto leggibile. @ Richard-Harrison ha dato un buon elenco di altri vantaggi nella sua eccellente risposta.
Database NoSQL
Un vantaggio rispetto a RDBMS è la scalabilità attraverso la distribuzione, che probabilmente non è molto rilevante per la tua domanda. I vantaggi che sono probabilmente più rilevanti sono la semplicità di un archivio di valori-chiave e la flessibilità dello schema elettrico (è una parola?). Quando ti trovi a rompere il paradigma relazionale: basta archiviare i BLOB nel database, accedervi tramite chiave ed elaborarli tramite il codice, quindi prendere in considerazione questa opzione. Alcune scelte (ad es. CouchDB) sono molto portatili, hanno un ingombro ridotto e possono anche ridimensionarsi in modo da offrire una buona alternativa non relazionale a MySQL e SQLite.
Binario
Il vantaggio del binario è che è veloce e compatto. Quando l'unica cosa che deve leggere e modificare il tuo file è un programma e i dati non si adattano al paradigma relazionale o alla velocità è davvero importante, questa potrebbe essere una buona scelta. Probabilmente la soluzione migliore per i file multimediali.
Devo sottolineare tuttavia che non ho ancora riscontrato un caso in cui un semplice accesso ai dati del programma non è richiesto ad un certo punto per motivi che non sono stati considerati durante la progettazione iniziale. Oggi scelgo personalmente l'opzione di database per qualsiasi cosa diversa dai file che hanno formati standard e devono essere codificati / decodificati da altri software (ad esempio audio, video).
Nota: c'è un malinteso comune sul fatto che il binario sia opaco e quindi in qualche modo più sicuro. Senza protezione aggiuntiva non lo è - se qualcuno vuole hackerare il tuo software, semplicemente archiviare le tue configurazioni o qualsiasi cosa in binario non le fermerà.
Archivio compresso
Non è davvero un'alternativa a quanto sopra, ma piuttosto una misura in più.
Vantaggioso quando è necessario trasmettere cose sulla rete o quando si memorizzano molti dati e si desidera risparmiare spazio. Tieni presente che lo spazio di archiviazione è di solito abbondante in questi giorni, quindi considera la tua piattaforma di destinazione.
Si esibisce molto velocemente su quasi tutto oggi (legge di Moore in azione, piccola), quindi l'unica ragione per non usarlo è che aggiunge complessità al tuo codice. Non molta complessità, ma comunque una violazione del principio KISS. Soprattutto ingombrante per i file di configurazione che devono essere modificati manualmente o tramite script - e se hai davvero bisogno di risparmiare spazio lì, probabilmente dovresti usare l'opzione del database.