Android和MongoDB上的SQLite与同步

Android和MongoDB上的SQLite与同步,android,mongodb,sqlite,synchronization,nosql,Android,Mongodb,Sqlite,Synchronization,Nosql,是否可以在Android上使用SQLite,在服务器上使用像MongoDB这样的NoSQL数据库,并在两者之间进行双向数据复制/同步?或者最好在两端使用SQL,或者在两端使用NoSQL,但不要混合使用?有几种不同的方法可以考虑: 1) 使用实现多主机或MVCC(多版本并发控制)并在Android+和您的服务器上运行的数据库产品。上有一些示例,CouchDB是常见的解决方案。有一个端口经过优化,可以在Android上运行,并支持复制到CouchDB 2) 您的需求可能非常简单(或独特),足以保证您

是否可以在Android上使用SQLite,在服务器上使用像MongoDB这样的NoSQL数据库,并在两者之间进行双向数据复制/同步?或者最好在两端使用SQL,或者在两端使用NoSQL,但不要混合使用?

有几种不同的方法可以考虑:

1) 使用实现多主机或MVCC(多版本并发控制)并在Android+和您的服务器上运行的数据库产品。上有一些示例,CouchDB是常见的解决方案。有一个端口经过优化,可以在Android上运行,并支持复制到CouchDB

2) 您的需求可能非常简单(或独特),足以保证您可以推出自己的解决方案。一个常见的解决方案是在Android上使用SQLite,并通过(可能是RESTful)API将信息同步到远程服务器


在移动设备和服务器上使用相同的数据库解决方案是不必要的,但使用类似的模式和查询语言可能会让您更加理智。

您可能想看看,我自己没有使用过,但我正在考虑

它目前允许Android上的SQLite DB同步到mongoDB后端,但目前不允许同步到其他方向。显然,您可以将必要的同步数据创建到中间同步数据库中,以便它返回到您的SQLite数据库

还有一个iOS版本正在准备中


它有一个GPL许可证,所以如果你在商业上使用它,你需要付费(除非你的应用程序是开源的)。

不同数据库(如SQLite和MongoDB)之间的双向数据复制/同步可能是你必须自己开发的解决方案。要同步数据的实际用例是什么?如果Android和服务器上的相同数据发生更改,则完整的双向复制将需要某种形式的冲突解决。也许您正在考虑一种缓存策略,用户可以在脱机时在其Android设备上进行更改/查询,然后在重新联机时与服务器同步数据?是的,最初它将是一种在单个设备和服务器之间的缓存策略,其中数据只能在设备上修改,而不能在服务器上修改。因此,从本质上讲,服务器将是一个备份。最后,我想同步多个可以访问和修改共享数据的设备。这可能是解决冲突变得至关重要的时候。考虑到Martin Fowler的事件源模式。我以前从未尝试过这类事情,我关心的是SQL->NoSQL不匹配带来的潜在问题。还值得研究一下哪一个是实现CouchDB API的JavaScript库。PockDB设计用于在internet访问脱机时保存更改,然后在联机时将更改与CouchDB服务器同步。目前(2013年5月),这仍处于“alpha预览”版本级别,但通用方法非常有希望。