我使用它们如下:
纯文本
如果该类别包括更复杂的格式(例如YAML或属性文件),那么对于您希望人们手工阅读和编辑的任何内容,它都是最佳选择。另一个巨大的优势是通过一个小的脚本(例如sed)修改它的简便性。
简单性和易用性无与伦比。当支持团队必须在远程计算机上配置某些内容(例如解决客户的问题),或者IT必须重新配置一堆运行您的软件的服务器时,他们会感谢您选择这种格式。它还可以帮助您避免编写一些一次性的软件来帮助他们。
XML格式
我在这里同意@Ingo -与纯文本XML不同,它很难通过脚本处理,并且手工imo也是一个噩梦。
但是,如果您具有结构复杂的数据,而YAML变得难以理解,并且仍然希望它可以被人类阅读和编辑,那么XML可能是最佳选择。
关系型数据库
当您拥有大量数据(这会使纯文本和XML变得繁琐)时,您可能仍然希望允许第三方通过SQL命令甚至GUI进行手动编辑的绝佳选择。
另一个优点是,管理内容的代码非常易读。@ Richard-Harrison在出色的回答中列出了许多其他优点。
NoSQL数据库
与RDBMS相比,优点之一是可通过分发实现可伸缩性,这可能与您的问题不太相关。可能更相关的优点是键值存储的简单性和无模式的灵活性(这是一个单词吗?)。当您发现自己破坏了关系范式时:只将blob存储到数据库中,通过键访问它们,然后通过代码对其进行处理,然后考虑使用此选项。某些选择(例如CouchDB)非常可移植,占地面积小,并且可以扩展,因此它们提供了MySQL和SQLite的良好非关系替代方案。
二元
二进制文件的优点是它既快速又紧凑。当唯一需要读取和修改文件的东西是程序,而数据不适合关系范式或速度时,则这可能是一个不错的选择。可能最适合媒体文件。
我应该指出的是,由于尚未进行初始设计时未考虑的原因,有时并不需要对程序数据进行简单访问。如今,我个人选择具有标准格式且需要由其他软件(例如音频,视频)进行编码/解码的文件以外的其他任何选项作为数据库选项。
注意:常见的误解是二进制文件是不透明的,因此更安全。没有额外的保护,事实并非如此-如果有人想入侵您的软件,然后简单地存储您的配置或二进制文件就不会阻止它们。
压缩档案
并不是上述的替代方案,而是一种额外的措施。
当您需要通过网络传输事物时,或者当您存储大量数据并希望节省空间时,此功能非常有用。请注意,这些天通常存储空间充裕,因此请考虑您的目标平台。
在当今几乎所有事物上都可以非常快地执行(摩尔定律,婴儿),因此不使用它的唯一原因是它增加了代码的复杂性。复杂性不高,但是仍然违反了KISS原则。对于需要手动或通过脚本编辑的配置文件而言,尤其麻烦。如果确实需要在此处节省空间,则可能应该使用数据库选项。