【发布时间】:2011-04-04 08:53:11
【问题描述】:
我对 SQLite 完全陌生,我打算在 M2M / 客户端-服务器环境中使用它,在该环境中,数据库在服务器上生成,作为文件发送到客户端并在客户端上用于数据查找。
问题是:我可以在客户端同时使用它的同时替换整个数据库文件吗?
这个问题可能听起来很傻,但客户端是 Linux 瘦客户端,为了替换数据库文件,临时文件将被重命名为最终文件名。在 Linux 中,仍然打开旧版本文件的程序仍将访问旧数据,因为旧文件由操作系统保留,直到所有文件句柄都已关闭。只有新的 open()s 才能访问文件的新版本。
所以,简而言之:
- 客户端随机访问 SQLite 数据库
- 从服务器接收到新版本的数据库并写入临时文件
- 临时文件重命名为 SQLite 数据库文件
我知道这是一个非常具体的问题,但也许有人可以告诉我这是否是 SQLite 的问题,或者是否有类似的方法可以在客户端运行时替换数据库。我确实不想将一堆 SQL 语句从服务器发送到客户端来更新数据库。
【问题讨论】:
-
三年后有什么智慧之言吗?我还对客户端具有只读访问权限的情况特别感兴趣。
-
我监视数据库文件,当我注意到 inode 发生变化时,我关闭并重新打开数据库。工作正常。请注意,数据库不是很重(基于用户交互的一些查询)。
标签: sqlite client-server