android sqlite双向同步sqlite

我需要将我的Android SQLite数据库与我的云服务器数据库同步,并在多用户环境中以双向的方式进行操作。

我已经在这里find并介绍了解决scheme,但我想了解一个更好的解决scheme/algorithm。

  • Android上的随机SQLiteConnectionPool错误。 怎么避免?
  • 我是否需要带有光标加载器的内容提供者?
  • 在SQLite表中使用文本作为主键不好?
  • Android:光标窗口已满
  • 我怎样才能检查我的sqlite表中是否有数据?
  • 比较date(存储为string)在Android的SQLite数据库?
  • Android上的SQLiteOpenHelper.getWriteableDatabase()空指针exception
  • 只允许使用Android SQLite进行唯一数据输入?
  • 你可以使用Oracle数据库作为你的服务器端数据库吗?

    如果是这样的话,您应该考虑Oracle数据库精简版,其中包括一个与SQLite和Android兼容的完全同步解决scheme,并且是为多用户环境devise的。

    它支持自动同步,高级冲突解决scheme和多个同步模型。 它还支持从中央pipe理控制台部署和pipe理应用程序,甚至设备pipe理。

    您可以在这里阅读更多信息: http : //www.oracle.com/technetwork/database/database-lite/overview/index.html

    另外,你可以点击下载标签自己尝试一下。

    埃里克

    我build议将db文件发送到您的服务器,并在服务器端合并。 然后发送合并数据库返回到客户端,如果需要的话。 您的解决scheme将根据冲突解决algorithm和数据库架构而有所不同。 但是这里是最简单的例子:

    sqlite> attach 'client.db3' as ClientDBtoMerge; sqlite> insert into TableName select * from ClientDBtoMerge.TableName; sqlite> detach database ClientDBtoMerge; 

    希望你能够修改双向合并的例子。

    另一种select是使用litesync

    这是SQLite库实现同步的修改。

    使用星型拓扑,我们使用修改后的URI在服务器中打开数据库作为主节点,如下所示:

     "file:/path/to/app.db?node=primary&bind=tcp://0.0.0.0:port" 

    在移动设备上,我们使用以下命令打开本地数据库:

     "file:/path/to/app.db?node=secondary&connect=tcp://server:port" 

    第一次在设备(和在线)中打开应用程序时,它将下载数据库的全新副本,并且从这一点开始,即使设备离线,我们也可以写入本地数据库。 当设备再次上线时,新的交易将被同步。