取消链接并重新创建以只读模式打开的SQLite db是否安全?

取消链接并重新创建以只读模式打开的SQLite db是否安全?,sqlite,Sqlite,我有这样一个用例: 我有一个服务器应用程序集群,每个应用程序都在它们的机器上 它们各自通过JDBC查询本地文件系统上的SQLite DB文件 数据库以只读模式打开(例如,不创建WAL日志文件) 通过批处理周期性地重新生成此DB文件,并将其同步到运行服务器应用程序的计算机 服务器使用SQLite作为美化的键值存储,基本上-非常简单的查询,只读取,不写入 这似乎有效,因为新数据对服务器应用程序可见 但是,这安全吗 注释 取消链接或重命名打开的数据库文件会导致未定义的行为,可能是不需要的 但这似乎

我有这样一个用例:

  • 我有一个服务器应用程序集群,每个应用程序都在它们的机器上
  • 它们各自通过JDBC查询本地文件系统上的SQLite DB文件
  • 数据库以只读模式打开(例如,不创建WAL日志文件)
  • 通过批处理周期性地重新生成此DB文件,并将其同步到运行服务器应用程序的计算机
服务器使用SQLite作为美化的键值存储,基本上-非常简单的查询,只读取,不写入

这似乎有效,因为新数据对服务器应用程序可见

但是,这安全吗

注释

取消链接或重命名打开的数据库文件会导致未定义的行为,可能是不需要的

但这似乎是在读写数据库的环境中,因为WAL日志需要额外的文件

似乎SQLite确实采取了一些步骤来检测其下的文件何时发生了更改-例如,第5.11节讨论了当SQLite检测到其下的文件发生了更改时,内存中的页面缓存将失效


目前,我在谨慎和关闭/重新打开文件方面犯了错误,但对于我的特定用例,如果我可以通过取消链接+重命名并委托给SQLite本身来检测和处理此场景,那么需要维护的代码就会更少。

打开的文件不能更改。打开的文件不能更改。