次のように使用します。
平文
そのカテゴリにYAMLやプロパティファイルなど、もう少し複雑な形式が含まれている場合は、ユーザーが手作業で読んだり編集したりすることを期待する場合に最適なオプションです。もう1つの大きな利点は、小さなスクリプト(たとえばsed)を使用して変更できることです。
シンプルさと使いやすさに勝るものはありません。サポートチームがリモートマシン上で何かを構成する必要がある場合(クライアントの問題を解決するなど)、またはITがソフトウェアを実行するサーバーの束を再構成する必要がある場合、この形式を選択していただきありがとうございます。それはまた、彼らのためにそれを行ういくつかの単発的なソフトウェアを書くことからあなたを救うでしょう。
XML
ここで@Ingoに同意します。プレーンテキストとは異なり、XMLはスクリプトで処理するのが難しく、手作業で編集するのは悪夢です。
それでも、YAMLが解読できなくなるような複雑な構造のデータがあり、それでも人間が読み取りおよび編集できるようにしたい場合は、XMLがおそらく最良の選択です。
関係データベース
大量のデータ(プレーンテキストやXMLが扱いにくくなる)があり、サードパーティがSQLコマンドやGUIを使用して手動で編集できるようにする場合に最適です。
もう1つの利点は、コンテンツを管理するコードが非常に読みやすいことです。@ Richard-Harrisonは、彼の優れた答えの中で他の利点の良いリストを提供しました。
NoSQLデータベース
RDBMSに対する1つの利点は、配布によるスケーラビリティです。これは、おそらく質問にはあまり関係ありません。おそらくより関連性のある利点は、キー値ストアの単純さとスキーマレスの柔軟性です(これは一言ですか?)。リレーショナルパラダイムに違反していることに気付いたときは、ブロブをデータベースに保存し、キーでアクセスし、コードを介して処理するだけで、このオプションを検討してください。一部の選択肢(CouchDBなど)は移植性が高く、フットプリントが小さく、スケーリングも可能なため、MySQLやSQLiteの優れた非リレーショナル代替手段を提供します。
バイナリ
バイナリの利点は、高速でコンパクトなことです。ファイルを読み取って変更する必要があるのはプログラムだけであり、データがリレーショナルパラダイムに適合しない場合や速度が本当に重要な場合は、これが適切な選択になる場合があります。おそらくメディアファイルに最適です。
最初の設計時に考慮されなかった理由のために、プログラムデータへの単純なアクセスがいつの時点でも必要とされない場合にまだ遭遇していないことを指摘しておきます。今日私は個人的に、標準フォーマットを持ち、他のソフトウェア(オーディオ、ビデオなど)でエンコード/デコードする必要のあるファイル以外のデータベースオプションを選択しています。
注:バイナリは不透明であり、何とか安全性が高いという一般的な誤解があります。追加の保護なしではそれは不可能です-誰かがあなたのソフトウェアをハッキングしたいなら、あなたの設定をバイナリで保存するだけでそれらを止めることはできません。
圧縮アーカイブ
上記の代替策ではなく、追加の対策です。
ネットワーク経由でデータを送信する必要がある場合、または大量のデータを保存してスペースを節約したい場合に有利です。最近のストレージ容量は通常豊富であるため、ターゲットプラットフォームを検討してください。
今日ほとんどすべて(ムーアの法則、ベイビー)で非常に高速に実行するため、これを使用しない唯一の理由は、コードが複雑になることです。それほど複雑ではありませんが、それでもKISSの原則に違反しています。手動で、またはスクリプトを介して編集する必要のある構成ファイルの場合は特に扱いにくく、スペースを本当に節約する必要がある場合は、おそらくデータベースオプションを使用する必要があります。