ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

python – 与远程数据库同步的Android应用程序数据库

2019-07-10 03:57:04  阅读:117  来源: 互联网

标签:python android


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

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

我没有找到任何支持此功能的数据库,因此我将自己编写.编写同步逻辑的一个警告是,用户之间将存在一些共享数据,多个用户将能够写入.这是一个独奏项目,所以我想我会通过这里来看看我是否完全偏离基础.

>应用程序将处理本地保存到本地sqlite数据库,然后将消息发送到服务,该服务将尝试将这些更改同步到远程数据库.
>同步服务将在检查本地应用程序的消息(即,其他用户对共享数据的更改)以及将本地更改写入远程服务器之间切换.
>所有数据都有一个用于跟踪更改的时间戳
>从应用程序写入服务器时,如果服务器有更新的信息,将向用户发出有关冲突的警告,并提示覆盖服务器具有的内容或放弃本地更改.如果自应用上次读取数据后服务器尚未更新,请处理更新.
>当数据从服务器传到应用程序时,如果服务器有更新的数据覆盖本地数据,否则丢弃它,因为它将在下一次由更新服务器的应用程序处理.

这是一些问题:

1)听起来有点矫枉过正吗?有没有更简单的方法来处理这个?

2)这个处理应该在哪里进行?在客户端或服务器上?我认为客户端的优势在于服务器上的处理较少,但如果它在服务器上,则可以更容易地实现其他客户端.

3)我应该如何处理来自服务器的更新?增量轮询或彗星/ websocket?要记住的一件事是,我宁愿在Webfaction上安装最小的安装,因为这是启动.

一旦解决了这些问题,我就会计划为极客社区提供解决方案.

解决方法:

1)看起来这是管理本地和安全的好方法.远程更改支持脱机工作.我不认为这有点矫枉过正

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

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

PS:看起来这是VEEERYY OLD的问题……大声笑

标签:python,android
来源: https://codeday.me/bug/20190710/1420120.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有