使用SQLite替换文件系统
我有一个将配置文件作为XML存储在磁盘上的应用程序。我希望在崩溃等情况下降低数据文件损坏的风险。似乎常见的建议是使用SQLite 您对使用blob存储当前的XML格式有什么看法?该表将如下所示:使用SQLite替换文件系统,sqlite,Sqlite,我有一个将配置文件作为XML存储在磁盘上的应用程序。我希望在崩溃等情况下降低数据文件损坏的风险。似乎常见的建议是使用SQLite 您对使用blob存储当前的XML格式有什么看法?该表将如下所示: CREATE TABLE t ( filename TEXT, filedata BLOB ) 一方面,这看起来不雅观,但另一方面,它可以避免将配置转换为适当格式的所有工作(以及相应的bug)。听起来效率低下。您需要加载并解析BLOB,以获取配置值,并为每次更改保存整个配置文件 我假设您切换到SQLi
CREATE TABLE t ( filename TEXT, filedata BLOB )
一方面,这看起来不雅观,但另一方面,它可以避免将配置转换为适当格式的所有工作(以及相应的bug)。听起来效率低下。您需要加载并解析
BLOB
,以获取配置值,并为每次更改保存整个配置文件
我假设您切换到SQLite数据库的原因是因为事务机制会为崩溃提供一定的容错能力。如果将每个配置文件存储为一个BLOB
,则需要在事务完成之前保存整个文件,而不是只保存更新后的值,这样会更快
此外,如果您使用的是基于DOM的XML解析器,那么您将同时将BLOB
和解析后的DOM树加载到内存中。取决于资源密集型配置文件的大小和数量
IMHO您最好为每个配置文件创建一个表,并为每个配置值创建一行。您将获得更好的读/写性能,更少的内存使用,并且能够使用SQLite的所有关系机制。听起来效率很低。您需要加载和解析blob以获取配置值,并为每次更改保存整个配置文件。对于文件系统也是如此。配置在操作期间保存在内存中,配置读/写操作很少。