Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQLite替换文件系统_Sqlite - Fatal编程技术网

使用SQLite替换文件系统

使用SQLite替换文件系统,sqlite,Sqlite,我有一个将配置文件作为XML存储在磁盘上的应用程序。我希望在崩溃等情况下降低数据文件损坏的风险。似乎常见的建议是使用SQLite 您对使用blob存储当前的XML格式有什么看法?该表将如下所示: CREATE TABLE t ( filename TEXT, filedata BLOB ) 一方面,这看起来不雅观,但另一方面,它可以避免将配置转换为适当格式的所有工作(以及相应的bug)。听起来效率低下。您需要加载并解析BLOB,以获取配置值,并为每次更改保存整个配置文件 我假设您切换到SQLi

我有一个将配置文件作为XML存储在磁盘上的应用程序。我希望在崩溃等情况下降低数据文件损坏的风险。似乎常见的建议是使用SQLite

您对使用blob存储当前的XML格式有什么看法?该表将如下所示:

CREATE TABLE t ( filename TEXT, filedata BLOB )

一方面,这看起来不雅观,但另一方面,它可以避免将配置转换为适当格式的所有工作(以及相应的bug)。

听起来效率低下。您需要加载并解析
BLOB
,以获取配置值,并为每次更改保存整个配置文件

我假设您切换到SQLite数据库的原因是因为事务机制会为崩溃提供一定的容错能力。如果将每个配置文件存储为一个
BLOB
,则需要在事务完成之前保存整个文件,而不是只保存更新后的值,这样会更快

此外,如果您使用的是基于DOM的XML解析器,那么您将同时将
BLOB
和解析后的DOM树加载到内存中。取决于资源密集型配置文件的大小和数量


IMHO您最好为每个配置文件创建一个表,并为每个配置值创建一行。您将获得更好的读/写性能,更少的内存使用,并且能够使用SQLite的所有关系机制。

听起来效率很低。您需要加载和解析blob以获取配置值,并为每次更改保存整个配置文件。对于文件系统也是如此。配置在操作期间保存在内存中,配置读/写操作很少。