我正在处理第三方应用程序,该应用程序在本地计算机上运行带有WAL(预写日志记录)的SQLite 3数据库,我正在寻找镜像该数据库(只读,这个是另一个系统的单向镜像。挑战在于我在一个单独的过程中运行,这似乎使事情变得复杂。
正在使用正常锁定模式创建和打开数据库,因此从另一个进程读取数据库没有问题,但是我试图找到现有的实现或者获取一些关于从何处获取的指针开始。基于其他帖子,我的理解是标准的sqlite更新挂钩(例如sqlite3_update_hook
)将不会在进程外工作。
一个关键问题是速度,我希望理想情况下能够在每次更新发生时立即检测到并立即开始传输。这意味着大多数轮询选项都是不可能的,但即使它们是,您如何检测最近的更改?
我看到两个看起来很有前途的文件:实际的WAL文件(foo.db-wal
)和内存映射索引文件(foo.db-shm
)。我希望这两个包含我需要的信息:A。检测数据库中发生更改的时间和B.能够仅获取自上次更新以来的增量更改。
但是指向一些现有解决方案的指针将更受欢迎......: - )
答案 0 :(得分:0)
SymmetricDS可能是您的解决方案