在其中嵌入的SQLite3并且使用内存数据库,是有可能复制应用程序的两个运行实例之间的数据库的应用程序?我可以用手工一个自制的协议复制所有我的数据库访问做到这一点,但似乎喜欢的事,应该在数据库层内进行。

有帮助吗?

解决方案

强力方法:发送它的“使用.dump”命令来创建数据的文本表示。阅读这些数据到第二个数据库。不知道你可以使用它。

如果您需要细粒度更新(发送复印件各一份高达其他副本),看看的 sqlite3_update_hook

但是,你打算如何处理错误?例如,会发生什么情况时APP2数据库的副本不能进行更新出于某种原因?

要解决这个问题,数据库移到一个服务器进程,并有两个应用程序对它说话。

其他提示

开箱,没有。 有第三方选择少数:

SQLite的同步: https://ampliapps.com/sqlite-sync/ 这一个似乎有吸引力的,因为它可以复制到其他数据库以及SQLite和不修改SQLite的引擎。我还没有尝试过。

Litereplica: http://litereplica.io/ 的唯一的一种方式。似乎已经逛了一下。

LiteSync: http://litesync.io/ 双向复制。很新,但如此可能更成熟比看起来Litereplica的演变。我已经试过这一点,它似乎工作的顺利开展,与开发商正在寻找一些错误。你必须使用开发人员的修改SQLite的引擎,这似乎是一个有关依赖。你也没有得到太多的控制,例如你不能说现在没有复制重新打开数据库。

Lsyncd - 现场同步功能(镜像)守护进程可以是使用这里。它使用rsync的做在文件级连续复制。

如果你想在一个内存数据库复制你需要看的 Berkeley数据库(BDB)。然而,对于BDB数据模型是串串字典,所以你失去SQL的灵活性。再加上它有三个条款的许可,所以如果你的项目是商业,你需要获得许可。

没有它不会因为项目的范围是一个简单的过程数据库。但是,因为数据库是一个单一的文件,你可以基于原生的文件复制操作,rsync的或类似的东西编写自己的脚本复制

如果你真的想RDBMS的SQLite的基于客户端/服务器的类型,你可以看看 SQLiteDBMS

的Unison?你可以做的最好的,虽然是热备份,在一个整体的文件,因为SQLite的分贝。你不能两个“实例”之间循环。热备份是不坏,你只需拿起其他应用程序+ DB没有太多的大惊小怪,比较的地方有一些人工干预这是不容易的MySQL主从或主动 - 被动。 MySQL的复制绕过SQL,而不仅仅是像diff文件齐声/ rsync的。但与一致你有主 - 主

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top