Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Android应用程序数据库与远程数据库同步_Python_Android - Fatal编程技术网

Python Android应用程序数据库与远程数据库同步

Python Android应用程序数据库与远程数据库同步,python,android,Python,Android,我正处于Android应用程序的规划阶段,该应用程序与web应用程序同步。web端将使用Python编写,可能使用Django或Pyramid,而Android应用程序将使用简单的java。我的目标是让Android应用程序在没有数据连接的情况下工作,不包括应用程序的社交/网络方面 这将是一个普通的应用程序,所以我想坚持使用一些可以在市场上通过点击轻松安装的应用程序,而不需要像CloudDB for Android这样的单独下载 我还没有找到任何支持此功能的数据库,所以我将自己编写。编写同步逻辑

我正处于Android应用程序的规划阶段,该应用程序与web应用程序同步。web端将使用Python编写,可能使用Django或Pyramid,而Android应用程序将使用简单的java。我的目标是让Android应用程序在没有数据连接的情况下工作,不包括应用程序的社交/网络方面

这将是一个普通的应用程序,所以我想坚持使用一些可以在市场上通过点击轻松安装的应用程序,而不需要像CloudDB for Android这样的单独下载

我还没有找到任何支持此功能的数据库,所以我将自己编写。编写同步逻辑的一个警告是,多个用户可以写入用户之间的共享数据。这是一个单独的项目,所以我想我应该在这里看看我是否完全偏离了基准

  • 应用程序将处理本地保存到本地sqlite数据库,然后将消息发送到一个服务,该服务将尝试将这些更改同步到远程数据库
  • 同步服务将在检查本地应用的消息(即其他用户对共享数据的更改)和将本地更改写入远程服务器之间切换
  • 所有数据都将具有用于跟踪更改的时间戳
  • 从应用程序写入服务器时,如果服务器有更新的信息,则会警告用户冲突,并提示用户覆盖服务器已有的信息或放弃本地更改。如果自应用程序上次读取数据后服务器尚未更新,请处理更新
  • 当数据从服务器发送到应用程序时,如果服务器有较新的数据,则覆盖本地数据,否则丢弃本地数据,因为更新服务器的应用程序将在下一次循环中处理这些数据
这里有一些问题:

1) 这听起来像是过度杀戮吗?有没有更简单的方法来处理这个问题

2) 该处理应在何处进行?在客户端还是服务器上?我认为客户机的优点是在服务器上的处理更少,但如果它在服务器上,那么实现其他客户机就更容易了

3) 我应该如何处理来自服务器的更新?增量轮询还是comet/websocket?需要记住的一件事是,我更愿意在Web派系上进行最低限度的安装,因为这是一家初创公司

一旦这些问题得到解决,我确实计划为极客社区贡献解决方案。

1)看起来这是管理本地和远程更改+支持脱机工作的非常好的方法。我认为这并不过分

2) 我认为,您应该使用本地时间戳在本地缓存用户的更改,直到同步完成。然后服务器应该管理所有处理:跟踪当前版本、提交和回滚更新尝试。客户端处理更少=更适合您!(更易于支持和实施)

3) 如果我想支持脱机模式,我会选择轮询,因为在脱机模式下,您无法保持套接字打开,并且每次恢复Internet连接时都必须重新打开它

PS:看起来这是一个老问题。。。哈哈