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