Ich benutze sie wie folgt:
Klartext
Wenn diese Kategorie etwas ausgefeiltere Formate wie YAML oder Eigenschaftendateien enthält, ist dies die beste Option für alles, was die Benutzer von Hand lesen und bearbeiten sollen. Ein weiterer großer Vorteil ist die einfache Änderung über ein kleines Skript (z. B. sed).
Nichts geht über die Einfachheit und Benutzerfreundlichkeit. Wenn das Support-Team etwas auf einem Remotecomputer konfigurieren muss (z. B. das Problem eines Clients lösen muss) oder die IT eine Reihe von Servern neu konfigurieren muss, auf denen Ihre Software ausgeführt wird, wird es Ihnen dafür danken, dass Sie dieses Format ausgewählt haben. Es erspart Ihnen auch das Schreiben einer einmaligen Software, die dies für sie erledigt.
XML
Ich stimme @Ingo hier zu - im Gegensatz zu Klartext ist XML schwieriger per Skript zu verarbeiten und ein Albtraum, von Hand imo zu bearbeiten.
Wenn Sie jedoch Daten mit einer ausgeklügelten Struktur haben, bei der YAML nicht mehr zu entziffern ist und dennoch lesbar und bearbeitbar sein soll, ist XML wahrscheinlich die beste Wahl.
Relationale Datenbank
Eine gute Wahl, wenn Sie über viele Daten verfügen (die Klartext und XML umständlich machen würden), die Sie möglicherweise dennoch zulassen möchten, dass Dritte sie manuell bearbeiten - über SQL-Befehle und sogar GUIs.
Ein weiterer Vorteil ist, dass Ihr Code, der den Inhalt verwaltet, sehr gut lesbar ist. @ Richard-Harrison gab eine gute Liste anderer Vorteile in seiner ausgezeichneten Antwort.
NoSQL-Datenbank
Ein Vorteil gegenüber RDBMS ist die Skalierbarkeit durch Verteilung, die für Ihre Frage wahrscheinlich nicht sehr relevant ist. Die Vorteile, die wahrscheinlich relevanter sind, sind die Einfachheit eines Schlüsselwertspeichers und die Flexibilität der Schemalosigkeit (ist dies ein Wort?). Wenn Sie das relationale Paradigma brechen: Speichern Sie einfach Blobs in der Datenbank, greifen Sie per Schlüssel darauf zu und verarbeiten Sie sie über Code. Ziehen Sie dann diese Option in Betracht. Einige Optionen (z. B. CouchDB) sind sehr portabel, haben einen geringen Platzbedarf und können auch skaliert werden, sodass sie eine gute nicht relationale Alternative zu MySQL und SQLite darstellen.
Binär
Der Vorteil von Binär ist, dass es schnell und kompakt ist. Wenn das einzige, was Sie zum Lesen und Ändern Ihrer Datei benötigen, ein Programm ist und die Daten nicht zum relationalen Paradigma passen oder die Geschwindigkeit wirklich wichtig ist, ist dies möglicherweise eine gute Wahl. Wahrscheinlich am besten für Mediendateien geeignet.
Ich sollte jedoch darauf hinweisen, dass ich noch keinen Fall habe, in dem ein einfacher Zugriff auf Programmdaten aus Gründen, die bei der ersten Entwicklung nicht berücksichtigt wurden, irgendwann nicht mehr erforderlich ist. Heutzutage wähle ich persönlich die Datenbankoption für alles andere als Dateien, die Standardformate haben und von anderer Software (z. B. Audio, Video) codiert / decodiert werden müssen.
Hinweis: Es gibt ein weit verbreitetes Missverständnis, dass Binärdateien undurchsichtig und damit irgendwie sicherer sind. Ohne zusätzlichen Schutz ist dies nicht der Fall - wenn jemand Ihre Software hacken möchte, werden sie durch einfaches Speichern Ihrer Konfigurationen oder was auch immer in Binärform nicht gestoppt.
Komprimiertes Archiv
Nicht wirklich eine Alternative zu den oben genannten, sondern eine zusätzliche Maßnahme.
Vorteilhaft, wenn Sie Dinge über das Netzwerk übertragen müssen oder wenn Sie viele, viele Daten speichern und Platz sparen möchten. Beachten Sie, dass Speicherplatz heutzutage normalerweise reichlich vorhanden ist. Berücksichtigen Sie daher Ihre Zielplattform.
Funktioniert heute bei fast allem sehr schnell (Moores Gesetz in Aktion, Baby). Der einzige Grund, es nicht zu verwenden, besteht darin, dass es Ihrem Code Komplexität verleiht. Nicht viel Komplexität, aber dennoch ein Verstoß gegen das KISS-Prinzip. Besonders umständlich für Konfigurationsdateien, die manuell oder per Skript bearbeitet werden müssen - und wenn Sie dort wirklich Platz sparen müssen, sollten Sie wahrscheinlich die Datenbankoption verwenden.