数据同步⽅案
⼀、数据库表设计
1、客户端表设计
每条记录包含两个⽤来同步⽤的字段:
status :⽤来标识记录的状态
anchor :记录服务端同步过来的时间戳
status 含义
0 本地新增
-1 标记删除
现在在农村做什么赚钱1 本地更新
9 已同步
护士节祝福
2、服务端表设计
每条记录包含⼀个⽤来同步⽤的字段:
modified :服务端修改记录的时间戳
⼆、同步⽅案
1、服务器下⾏同步⽅案
服务器新增数据同步到客户端
服务器删除数据(级联删除)同步到客户端
服务器更新数据,如果客户端未更新,则客户端数据同步,如果客户端更新,则不更新数据2、服务器上⾏同步⽅案
客户端新增数据同步到服务器
客户端删除数据(级联删除)同步到服务端
客户端更新数据同步到服务端
三、同步算法
1、客户端请求最新数据,客户端取每张表中status==9的记录⾥⾯最新的数据,
参数数组
{
{
表名:
时间戳:
}
2、服务端响应数据,服务端查询时间戳⼤于每个表的时间戳的记录,将该记录返回,每个表返回⼀个集合,表顺序是主表在前,附表在后;表内记录顺序按时间戳升序排列!!
{
表名:表数据集合
}
3、客户端得到数据后,记录为新增则插⼊数据,记录为删除则删除数据,记录为更新判断客户端是否修改,如修改则部做任何操作,如未修改则改为服务器数据。,并将时间戳更新服务器时间戳,status更改为9
4、客户端将所有上传数据更新到服务端
{
表名:{}
}
5、服务端收到上传数据后,根据增删改状态更新服务器数据库,并将这些数据时间戳返回客户端
{
表名:{服务端id,时间戳,客户端id}
}
6、客户端收到数据后,根据id将时间戳插⼊数据库,,并将status更改为9。
四、服务端更新
修改时,插⼊时间戳,删除时,设置删除标识
五、客户端更新
修改时,将status更新下
更新时,只有当status=9 才修改status的值
六、图⽚同步过程
客户端定义图⽚表,包括图⽚id、图⽚路径、上传或者下载标识、图⽚状态。
服务器更新数据涉及图⽚的,将图⽚路径、图⽚id插⼊图⽚表,图⽚标识设置为下载。图⽚状态为待下载。
客户端更新数据涉及图⽚的,将图⽚路径、图⽚ID插⼊图⽚表,图⽚标识设置为上传。图⽚状态为待上传。
待数据更新完成后,查询图⽚表,上传待上传图⽚,下载待下载图⽚。
电信平板附:数据接⼝
1、客户端请求最新数据,客户端取每张表中status!=9的记录⾥⾯最新的数据,参数数组
{
{
表名:
时间戳:
}
}
请求数据
POST 接⼝地址
相关数据库表:
参数
public class par{
string tableName ;
long timestame;
}
public class parResponse{
list<par> parList;
}
正确返回值
{
"meta": {
"success": true,
"message": "ok"
},
"data": $data
}
Data说明
赞100米运动员Public class getDataRequest{
List<requestData> dataList;
}
public class requestData{
string tableName ;
list<string> dataList;
}
2、服务端响应数据,服务端查询时间戳⼤于每个表的时间戳的记录,将该记录返回,每个表返回⼀个集合,表顺序是主表在前,附表在后;表内记录顺序按时间戳升序排列!!
{
表名:表数据集合愚人节如何整人
}
3、客户端得到数据后,记录为新增则插⼊数据,记录为删除则删除数据,记录为更新判断客户端是否修改,如修改则部做任何操作,如未修改则改为服务器数据。,并将时间戳更新服务器时间戳,status更改为9
4、客户端将所有上传数据更新到服务端
{
表名:{}
}
5、服务端收到上传数据后,根据增删改状态更新服务器数据库,并将这些数据时间戳返回客户端,并将status更改为9
{
表名:{服务端id,时间戳,客户端id}
}
上传数据
POST 接⼝地址
相关数据库表:
参数
Public class uploadDataResponse{
List<requestData> dataList;
}
public class responseData{
string tableName ;
list<string> dataList;
}
正确返回值
{
"meta": {
"success": true,
"message": "ok"
},
"data": $data
}
Data说明
光遇雨伞先祖怎么拿Public class getDataRequest{
List<requestData> dataList;
}
public class requestData{
string tableName ;
list< parData > dataList;
}
public class parData{
string serverId;
long timestamp;
string clientId;
}
6、客户端收到数据后,根据id将时间戳插⼊数据库。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论