Je les utilise comme suit:
Texte brut
Si cette catégorie comprend des formats légèrement plus élaborés, comme YAML ou des fichiers de propriétés, c'est la meilleure option pour tout ce que vous attendez des gens à lire et à modifier à la main. Un autre avantage énorme est la simplicité de sa modification via un petit script (par exemple sed).
Rien ne vaut la simplicité et la facilité d'utilisation. Lorsque l'équipe d'assistance doit configurer quelque chose sur une machine distante (par exemple, résoudre le problème d'un client) ou que le service informatique doit reconfigurer un groupe de serveurs qui exécutent votre logiciel, elle vous remerciera d'avoir choisi ce format. Cela vous évitera également d'écrire un logiciel unique qui le fera pour eux.
XML
Je suis d'accord avec @Ingo ici - contrairement au texte brut, XML est plus difficile à traiter via des scripts et un cauchemar à modifier à la main imo.
Pourtant, si vous avez des données avec une structure élaborée où YAML devient indéchiffrable et que vous voulez toujours qu'elles soient lisibles par l'homme et modifiables, alors XML est probablement le meilleur choix.
Base de données relationnelle
Un excellent choix lorsque vous avez beaucoup de données (ce qui rendrait le texte brut et XML encombrant) que vous souhaiterez peut-être autoriser à des tiers à modifier manuellement - via des commandes SQL et même des interfaces graphiques.
Un autre avantage est que votre code qui gère le contenu est très lisible. @ Richard-Harrison a donné une bonne liste d'autres avantages dans son excellente réponse.
Base de données NoSQL
Un avantage par rapport au SGBDR est l'évolutivité grâce à la distribution, qui n'est probablement pas très pertinente pour votre question. Les avantages qui sont probablement les plus pertinents sont la simplicité d'un magasin de valeurs-clés et la flexibilité de la schemalessness (est-ce un mot?). Lorsque vous vous trouvez en train de briser le paradigme relationnel: il suffit de stocker des objets blob dans la base de données, d'y accéder par clé et de les traiter via du code, alors envisagez cette option. Certains choix (par exemple CouchDB) sont très portables, ont un faible encombrement et peuvent également évoluer afin qu'ils offrent une bonne alternative non relationnelle à MySQL et SQLite.
Binaire
L'avantage du binaire est qu'il est rapide et compact. Lorsque la seule chose qui doit lire et modifier votre fichier est un programme et que les données ne correspondent pas au paradigme relationnel ou que la vitesse est vraiment importante, cela peut être un bon choix. Probablement la meilleure solution pour les fichiers multimédias.
Je dois cependant souligner que je n'ai pas encore rencontré de cas où un simple accès aux données du programme n'est pas requis à un moment donné pour des raisons qui n'ont pas été prises en compte lors de la conception initiale. De nos jours, je préfère personnellement l'option de base de données pour tout autre que les fichiers qui ont des formats standard et doivent être encodés / décodés par d'autres logiciels (par exemple audio, vidéo).
Remarque: il y a une idée fausse commune selon laquelle le binaire est opaque et donc en quelque sorte plus sûr. Sans protection supplémentaire, ce n'est pas le cas - si quelqu'un veut pirater votre logiciel, simplement stocker vos configurations ou quoi que ce soit en binaire ne les arrêtera pas.
Archive compressée
Pas vraiment une alternative à ce qui précède, mais plutôt une mesure supplémentaire.
Avantageux lorsque vous avez besoin de transmettre des choses sur le réseau, ou lorsque vous stockez beaucoup, beaucoup de données et que vous souhaitez économiser de l'espace. Notez que l'espace de stockage est généralement abondant de nos jours, alors pensez à votre plate-forme cible.
Fonctionne très rapidement sur presque n'importe quoi aujourd'hui (la loi de Moore en action, bébé), donc la seule raison de ne pas l'utiliser est qu'elle ajoute de la complexité à votre code. Pas beaucoup de complexité, mais toujours une violation du principe KISS. Particulièrement lourd pour les fichiers de configuration qui doivent être modifiés manuellement ou via des scripts - et si vous avez vraiment besoin d'y économiser de l'espace, vous devriez probablement utiliser l'option de base de données.