配置文件格式用哪个?目录+纯文本文件,XML,SQLite
来源:互联网 发布:项目数据库设计 编辑:程序博客网 时间:2024/05/29 13:26
稍具规模的软件都会需要一个配置文件来支持软件的运行。目前常见的配置文件格式有纯文本,XML,SQLite,自定义二进制格式,如何进行选择呢?
1 纯文本——永远不会失效的文件格式
文本化是传统Unix哲学的教条之一,可见其巨大威力。大多数类Unix系统的软件配置文件都是采用了纯文本格式。例如/etc/inittab, /etc/fstab, httpd.conf等等。
1.1 优点
(1)可读性强
配置文件不仅需要让机器理解,也需要让人理解。纯文本就非常容易让人理解。
(2)存在大量纯文本编辑工具
可以使用任何编辑器修改。可别小看这个优点,它的影响是巨大的,存在大量非常好用的针对纯文本的搜索,编辑工具(如grep,sed,awk),想想正则表达式,就知道为啥纯文本这么重要了。
(3)可永久保存
过去的几十年中,各种文件格式层出不穷。但仔细想想,十几年前留下来的文件,今天还能查看并使用的确实不多了,纯文本格式就是其中之一。无论到了什么年代,总能很容易的找到一个文本编辑器来查看修改纯文本文件。
(4)跨平台
字符编码跨越任何计算机平台,什么32位系统,64位系统,什么Linux,Windows,Mac,iOS, Android,对待纯文本的方式是一致的。
1.2 缺点
(1)解析繁琐,无现成库可用
不同的配置文件往往自己定义了具体的实现格式,这就需要定制化的解析代码,稍具复杂度的配置文件往往导致解析代码繁琐。
(2)明文不安全
有些程序的配置文件也是知识产权的一部分,需要对外隐蔽。纯文本不具有这个功能。
2 XML——互联网时代的宠儿
借助Internet之风,XML大型其道。许多大型软件开始采用xml格式的配置文件,如Tomcat。
2.1 优点
(1)纯文本的所有优点
XML本身也是纯文本,只是在纯文本的基础上,定义了统一的文档结构布局。所以,纯文本的优点,XML也都有,不再叙述。
(2)尤其适合树形层次数据存储
很多模型数据都是树状的,XML本身就是针对树状数据而设计的。
(3)统一的布局,现成解析库可用
目前几乎所有语言都有支持XML解析的库可用,这样就省去了解析代码,不容易出现错误。
2.2 缺点
(1)元数据重复,浪费空间
与纯文本相比,XML配置文件往往更大,看看tomcat下的大量配置文件就知道了。
(2)可读性、可编辑性不如纯文本
XML便于机器识别与分析,但是并不太适合人来阅读。尤其是结构复杂的XML文档。
(3)需要基本的DOM基础,才能使用
并不是所有的程序员都具有DOM基础,所以有一定的入门门槛
3 SQLite——最好用的单文件数据库
著名的CentOS包管理系统yum的库管理数据使用SQLite。
3.1 优点
(1)只有一个文件,包含一切
这个优势是非常明显的,SQLite只需要一个文件就包含了所有配置数据,非常利于备份和恢复。
(2)支持SQL查询语言
这是SQLite最大的优势了,程序员无需关心具体的I/O,只要使用sql就可以操作数据了。
(3)数据量可以很大
即时配置文件大小到了GB的级别,SQLite仍然可以良好的运行,而且占用内存不大。
(4)开放源代码
SQLite源码采用了最宽松的授权–无需授权。可以在项目中直接使用其源文件。
(5)SQLite库非常稳定
SQLite经历了十多年的发展,已经非常稳定。
(6)可以随时添加更改配置项,而无须更改使用代码
这也是SQL语言带来的巨大优势
(7)跨平台
跨越不同架构,不同操作系统。
3.2 缺点
(1)不能使用文本编辑器查看
虽然目前SQLite软件非常普及,但毕竟还是专用软件,不如文本编辑器那样人人都会用。而且多年以后,谁也不能保证SQLite还会继续良好的发展。
(2)需要使用者掌握SQL语言
并不是所有的程序员都熟悉SQL。
(3)由于是在硬盘上操作数据,所以小文件时,速度不如XML。
对于配置文件来说,这个不算什么问题,毕竟大部分配置文件只是在程序启动时使用。
4 自定义二进制文件——被淘汰的垃圾
自定义二进制文件格式的配置文件在现在已经非常不提倡了,只有在极其特殊的场合和一些无知的程序员还在使用。例如,systemd还有一部分配置文件是这种二进制格式,但迫于各方压力,慢慢也在向纯文本方式进化。
- 配置文件格式用哪个?目录+纯文本文件,XML,SQLite
- 纯C代码是用哪个格式?Objective-C ?
- 网页大文本文件的在线加载预览,txt,xml,html等纯文本格式
- log4j配置文件,xml格式的
- asp.net输出纯xml格式数据
- asp.net输出纯xml格式数据
- NetFx40_IIS_schema_update.xml 配置文件的XML格式不正确
- 二进制文件与纯文本文件
- 用BCB读写文本文件及ini配置文件
- webwork 配置文件 web.xml通用格式
- xml格式的log4j配置文件概述
- log4j配置文件,xml格式,分级输出(转)
- SSH中的web.xml配置文件格式
- virt-install xml格式配置文件粗解
- struts2配置文件struts.xml的目录问题
- 把windows的纯文本文件txt转为unix格式的文件
- PDF格式转换器哪个好用
- 用VB6取得文本文件的编码格式
- CEF中Browser进程与Render进程间通信
- JavaSE017_数组之应用举例(利用二维数组实现五子棋功能完善——二人对战)
- Codeforces Round #329 (Div. 2) 593A 2Char
- Codeforces Round #329 (Div. 2) 593B - Anton and Lines
- 在 Windows 10 上安装 Arduino 开发环境
- 配置文件格式用哪个?目录+纯文本文件,XML,SQLite
- 树状数组
- 采购订单检查/保存BADI使用
- BING
- 数据库
- 学习java之内部类使用以及链式编程
- stm8l051 halt之后外部中断唤醒问题
- Spark shuffle:hash和sort性能对比
- Android自动调用软键盘