移动端与服务器端数据库同步

本文探讨了在移动应用中实现离线功能时,如何设计数据库同步策略以满足双向最小化传输、离线支持和冲突解决的需求。通过使用UUID作为主键、last modified时间戳判断更新、dirty标志标记待同步数据以及deleted标志处理删除,实现了数据模型设计。同步算法包括移动端获取服务器更新和服务器接收移动端脏数据的过程。
摘要由CSDN通过智能技术生成

最近在写一个移动工具类应用。需要支持离线功能,所以本地需要一份数据库的拷贝,这样就涉及到移动端和服务器端数据库的同步问题。

在设计时我要满足以下几个需求:

1. 同步时双向传输数据最小化。双向即,服务器端更新同步到移动端,和移动端更新同步到服务器。每次只传输两端差异数据。

2. 支持离线。支持离线本身是一种好的用户体验,而它带来的一个其他的好处是每次移动端数据库查询仅需查询本地数据库,这样就避免了过多的服务器端查询。本地数据库减少了很多服务器的压力,当然也给用户省了流量。数据库更新操作也是如此,仅更新本地数据库,然后在适当的时机与服务器端进行同步。更进一步的说,移动端查询和更新数据只跟本地数据库打交道。

3. 冲突解决。如果一个用户帐号在多个移动端进行离线使用,势必会产生数据冲突。


设计的关键在于数据模型的设计,和同步算法。以下是我的想法。

下面是对象类代码,对应数据库的表字段。

服务器端设计:

public abstract class ServerBaseModel {

    public long userId; /* Global unique user id */

    public long id; /* Model id. Unique for user */

    public long lastmodified; /* Last modified server time stamp */

    public boolean deleted; /* delete flag *
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值