我有一个应用程序将配置文件存储为磁盘上的XML。我想在崩溃等情况下降低数据文件损坏的风险。似乎常见的建议是使用SQLite。
您对使用BLOB存储当前XML格式有何看法?该表看起来像:
CREATE TABLE t ( filename TEXT, filedata BLOB )
一方面,这似乎不够优雅,但另一方面,它会避免将配置转换为适当格式的所有工作(以及相应的错误)。
答案 0 :(得分:1)
听起来效率低下。您需要加载并解析BLOB
以获取配置值,并为每次更改保存整个配置文件。
我假设您切换到SQLite数据库的原因是因为事务机制会为崩溃提供一定的容错能力。如果将每个配置文件存储为一个BLOB
,则需要在事务完成之前保存整个文件,而不是仅保存更快的更新值。
此外,如果您使用的是基于DOM的XML解析器,您最终会同时将BLOB
和解析的DOM树加载到内存中。取决于可能需要大量资源的配置文件的大小和数量。
恕我直言,你最好为每个配置文件创建一个表,每个配置值都有一行。您将获得更好的读/写性能,更少的内存使用量,并能够使用SQLite的所有关系机制。