发明内容
为了解决相关技术的问题,本发明实施例提供了一种数据同步的标记方法和装置。所述技术方案如下:
第一方面,提供了一种数据同步的标记方法,所述方法包括:
接收终端发送的数据更新消息,所述数据更新消息中至少携带更新数据及触发所述数据更新消息的操作类型;
获取传递数据更新消息的网关信息,并根据所述网关信息、所述操作类型及所述终端执行操作的次数,生成第一序列号;
根据接收所述数据更新消息的时间,生成第二序列号;
基于所述第一序列号和所述第二序列号,生成目标序列号;
使用所述目标序列号,对所述更新数据进行标记。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述网关信息、所述操作类型及预设时长内所述终端执行操作的次数,生成第一序列号,包括:
根据所述网关信息,生成第一特征码;
根据所述操作类型,生成第二特征码;
根据所述终端执行操作的次数,生成第三特征码;
基于所述第一特征码、所述第二特征码及所述第三特征码,生成所述第一序列号。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述网关信息,生成第一特征码之前,还包括:
预先为每个进程设置对应的编号;
所述根据所述网关信息,生成第一特征码,包括:
根据所述网关信息,确定所述终端进行数据更新操作时使用的进程;
获取所述终端进行数据更新操作时使用的进程对应的编号,并将所述编号作为第一特征码。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述操作类型为删除操作、增加操作及更改操作,且不同的操作类型对应不同的编号;
所述根据所述操作类型,生成第二特征码,包括:
若所述操作类型为删除操作,则将所述删除操作对应的编号作为所述第二特征码;
若所述操作类型为增加操作,则将所述增加操作对应的编号作为所述第二特征码;
若所述操作类型为更改操作,则将所述更改操作对应的编号作为所述第二特征码。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据接收所述数据更新消息的时间,生成第二序列号,包括:
计算接收到所述数据更新消息的时间与参考时间的时间差;
基于所述时间差,生成所述第二序列号。
结合第一方面,在第一方面的第五种可能的实现方式中,所述数据更新消息中携带数据库映射信息;
所述使用所述目标序列号,对所述更新数据进行标记之后,还包括:
将已标记序列号的更新数据存储至主数据库,并根据数据库的主从同步功能同步主数据库中存储的数据到从数据库,其中,所述主数据库用于数据的写入,所述从数据库用于数据的读出。
结合第一方面,在第一方面的第六种可能的实现方式中,所述使用所述目标序列号,对所述更新数据进行标记之后,还包括:
将所述目标序列号发送至所述终端,由所述终端进行存储。
结合第一方面至第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述使用所述目标序列号,对所述更新数据进行标记之后,还包括:
接收数据同步请求,所述数据同步请求中至少携带待同步序列号及数据库映射信息;
获取从数据库中存储的最大序列号;
根据所述待同步序列号及所述最大序列号,进行数据同步。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述根据所述待同步序列号及所述最大序列号,进行数据同步,包括:
将所述待同步序列号与所述最大序列号进行比较;
根据比较结果确定所述待同步序列号对应的数据是否为最新数据;
若所述待同步序列号对应的数据不为最新数据,则根据所述从数据库中存储的数据进行数据同步。
结合第一方面的第八种可能的实现方式,在第一方面的第九种可能的实现方式中,所述根据比较结果确定所述待同步序列号对应的数据是否为最新数据,包括:
若所述待同步序列号小于所述最大序列号,则确定所述待同步序列号对应的数据不为最新数据;
若所述待同步序列号等于所述最大序列号,则确定所述待同步序列号对应的数据为最新数据。
结合第一方面的第八种可能的实现方式,在第一方面的第十种可能的实现方式中,所述根据所述从数据库中存储的数据进行数据同步,包括:
在所述从数据库中获取大于所述待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送所述数据同步请求的终端。
第二方面,提供了一种数据同步的标记装置,所述装置包括:
第一接收模块,用于接收终端发送的数据更新消息,所述数据更新消息中至少携带更新数据及触发所述数据更新消息的操作类型;
获取模块,用于获取传递数据更新消息的网关信息;
第一生成模块,用于根据所述网关信息、所述操作类型及所述终端执行操作的次数,生成第一序列号;
第二生成模块,用于根据接收所述数据更新消息的时间,生成第二序列号;
第三生成模块,用于基于所述第一序列号和所述第二序列号,生成目标序列号;
标记模块,用于使用所述目标序列号,对所述更新数据进行标记。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一生成模块,包括:
第一生成单元,用于根据所述网关信息,生成第一特征码;
第二生成单元,用于根据所述操作类型,生成第二特征码;
第三生成单元,用于根据所述终端执行操作的次数,生成第三特征码;
第四生成单元,用于基于所述第一特征码、所述第二特征码及所述第三特征码,生成所述第一序列号。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述装置,还包括:
设置模块,用于预先为每个进程设置对应的编号;
所述第一生成单元,包括:
确定子单元,用于根据所述网关信息,确定所述终端进行数据更新操作时使用的进程;
获取子单元,用于获取所述终端进行数据更新操作时使用的进程对应的编号,并将所述编号作为第一特征码。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述操作类型为删除操作、增加操作及更改操作,且不同的操作类型对应不同的编号;
所述第二生成单元,用于当所述操作类型为删除操作时,将所述删除操作对应的编号作为所述第二特征码;当所述操作类型为增加操作时,将所述增加操作对应的编号作为所述第二特征码;当所述操作类型为更改操作时,将所述更改操作对应的编号作为所述第二特征码。
结合第二方面,在第二方面的第四种可能的实现方式中,所述第二生成模块,包括:
计算单元,用于计算接收到所述数据更新消息的时间与参考时间的时间差;
生成单元,用于基于所述时间差,生成所述第二序列号。
结合第二方面,在第二方面的第五种可能的实现方式中,所述数据更新消息中携带数据库映射信息;
该装置,还包括:
存储模块,用于将已标记序列号的更新数据存储至主数据库;
同步模块,用于根据数据库的主从同步功能同步主数据库中存储的数据至从数据库,其中,所述主数据库用于数据的写入,所述从数据库用于数据的读出。
结合第二方面,在第二方面的第六种可能的实现方式中,所述装置,还包括:
发送模块,用于将所述目标序列号发送至所述终端,由所述终端进行存储。
结合第二方面至第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述装置,还包括:
第二接收模块,用于接收数据同步请求,所述数据同步请求中至少携带待同步序列号及数据库映射信息;
获取模块,用于获取从数据库中存储的最大序列号;
同步模块,用于根据所述待同步序列号及所述最大序列号,进行数据同步。
结合第二方面的第七种可能的实现方式,在第二方面的第八种可能的实现方式中,所述同步模块,包括:
比较单元,用于将所述待同步序列号与所述最大序列号进行比较;
确定单元,用于根据比较结果确定所述待同步序列号对应的数据是否为最新数据;
同步单元,用于当所述待同步序列号对应的数据不为最新数据时,根据所述从数据库中存储的数据进行数据同步。
结合第二方面的第八种可能的实现方式,在第二方面的第九种可能的实现方式中,所述确定单元,用于当所述待同步序列号小于所述最大序列号时,确定所述待同步序列号对应的数据不为最新数据;当所述待同步序列号等于所述最大序列号时,确定所述待同步序列号对应的数据为最新数据。
结合第二方面的第八种可能的实现方式,在第二方面的第十种可能的实现方式中,所述同步单元,用于在所述从数据库中获取大于所述待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送所述数据同步请求的终端。
本发明实施例提供的技术方案带来的有益效果是:
通过接收终端发送的数据更新消息,根据数据更新消息中携带的信息及网关信息,生成第一序列号,并根据接收数据更新消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记。由于生成的目标序列号由更新消息中携带的信息及更新消息的时间两个因素决定,保证了不同的更新数据具有不同的序列号,且其他终端只增量同步有标记变化的数据即可,因此,同步效率较高。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
随着信息技术的发展,数据资源分享成为现代生活的一个重要内容。当互联网的一个用户有更新的数据需要向其他用户分享时,该用户可通过操作终端在服务器上创建一个数据资源共享群,并将需要分享的数据发送至该数据资源共享群中,数据资源共享群内的其他用户通过向服务器发送数据同步请求,以获取到更新的数据。当然,当数据资源共享群内的其他用户有数据需要与群内的用户共享时,该用户也可将需要分享的数据发送至数据资源共享群中。然而,由于服务器上存储的数据的数量较大,导致数据资源共享群内其他用户很难快速地从服务器上获取到更新的数据,因此,常常需要对要更新同步的数据进行标记。又由于要更新同步的数据的标记方式影响着用户获取更新数据的速度,因此,为了提高用户获取更新数据的速度,本发明实施例提供了一种数据同步的标记方法,参见图1,本实施例提供的方法流程包括:
101、接收终端发送的数据更新消息,数据更新消息中至少携带更新数据及触发数据更新消息的操作类型。
102、获取传递数据同步消息的网关信息,并根据网关信息、操作类型及终端执行操作的次数,生成第一序列号。
103、根据接收数据更新消息的时间,生成第二序列号。
104、基于第一序列号和第二序列号,生成目标序列号。
105、使用目标序列号,对更新数据进行标记。
本发明实施例提供的方法,通过接收终端发送的数据更新消息,根据数据更新消息中携带的信息及网关信息,生成第一序列号,并根据接收数据同步消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记。由于生成的目标序列号由更新消息中携带的信息及更新消息的时间两个因素决定,从而保证了不同的更新数据具有不同的序列号,且其他终端只增量同步有标记变化的数据即可,因此,同步效率较高。
作为一种可选的实施例,根据网关信息、操作类型及终端执行操作的次数,生成第一序列号,包括:
根据网关信息,生成第一特征码;
根据操作类型,生成第二特征码;
根据终端执行操作的次数,生成第三特征码;
基于第一特征码、第二特征码及第三特征码,生成第一序列号。
作为一种可选的实施例,根据网关信息,生成第一特征码之前,还包括:
预先为每个进程设置对应的进程编号;
根据网关信息,生成第一特征码,包括:
根据网关信息,确定终端进行数据更新操作时使用的进程;
获取终端进行数据更新操作时使用的进程对应的进程编号,并将进程编号作为第一特征码。
作为一种可选的实施例,操作类型为删除操作、增加操作及更改操作,且不同的操作类型对应不同的类型编号;
根据操作类型,生成第二特征码,包括:
若操作类型为删除操作,则将删除操作对应的类型编号作为第二特征码;
若操作类型为增加操作,则将增加操作对应的类型编号作为第二特征码;
若操作类型为更改操作,则将更改操作对应的类型编号作为第二特征码。
作为一种可选的实施例,根据接收数据更新消息的时间,生成第二序列号,包括:
计算接收到数据更新消息的时间与参考时间的时间差;
基于时间差,生成第二序列号。
作为一种可选的实施例,数据更新消息中携带数据库映射信息;
使用目标序列号,对更新数据进行标记之后,还包括:
将已标记序列号的更新数据存储至主数据库,并根据数据库的主从同步功能同步主数据库中存储的数据至从数据库,其中,主数据库用于数据的写入,从数据库用于数据的读出。
作为一种可选的实施例,使用目标序列号,对更新数据进行标记之后,还包括:
将目标序列号发送至终端,由终端进行存储。
作为一种可选的实施例,使用目标序列号,对更新数据进行标记之后,还包括:
接收数据同步请求,数据同步请求中至少携带待同步序列号及数据库映射信息;
获取从数据库中存储的最大序列号;
根据待同步序列号及最大序列号,进行数据同步。
作为一种可选的实施例,根据待同步序列号及最大序列号,进行数据同步,包括:
将待同步序列号与最大序列号进行比较;
根据比较结果确定待同步序列号对应的数据是否为最新数据;
若待同步序列号对应的数据不为最新数据,则根据从数据库中存储的数据进行数据同步。
作为一种可选的实施例,根据比较结果确定待同步序列号对应的数据是否为最新数据,包括:
若待同步序列号小于最大序列号,则确定待同步序列号对应的数据不为最新数据;
若待同步序列号等于最大序列号,则确定待同步序列号对应的数据为最新数据。
作为一种可选的实施例,根据从数据库中存储的数据进行数据同步,包括:
在从数据库中获取大于待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送数据同步请求的终端。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
结合上述实施例,本发明实施例提供了一种数据同步的标记方法,参见图2,本实施例提供的方法流程包括:
201、服务器接收终端发送的数据更新消息,数据更新消息中至少携带更新数据触发数据更新消息的操作类型。
其中,本实施例中的服务器为用于处理数据更新及数据同步的服务器。为了使数据资源共享群中的所有用户均能获取到更新的数据,当数据资源共享群中的任一用户在终端中存储的数据有更新时,该存储更新数据的终端将会向服务器发送数据更新消息,以使服务器在接收到数据更新消息之后,更新所存储的数据。其中,终端可以为手机、平板电脑等,本实施例不对终端的具体产品形态作具体的限定。
关于接收终端发送的数据更新消息的方式,包括但不限于:通过有线网络、无线网络等方式接收终端发送的数据更新消息。
关于数据更新消息中携带的信息,包括但不限于:更新数据及触发数据更新消息的操作类型等,本实施例不对数据更新消息中携带的信息作具体的限定。其中,网关又称网间连接器、协议转换器,用于将一个网络连接到另一网络。网关连接的网络既可以是广域网,也可以是局域网。网关信息包括但不限于:网关IP(Internet Protocol,网络之间互联协议)地址等。触发数据更新消息的操作类型,包括但不限于:删除操作、增加操作、更改操作等,本实施例不对触发数据更新消息的操作类型作具体的限定。
202、服务器获取传递数据更新消息的网关信息,并根据网关信息、操作类型及终端执行操作的次数,生成第一序列号。
其中,网关又称网间连接器、协议转换器,用于将一个网络连接到另一网络。网关连接的网络既可以是广域网,也可以是局域网。网关信息包括但不限于:网关IP(InternetProtocol,网络之间互联协议)地址等。关于服务器获取传递同步消息的网关信息的方式,本实施例不作具体的限定。终端执行的操作的次数,可以为服务器记录的终端执行所有类型的操作的次数,也可以为内服务器记录的终端执行每种类型的操作的次数,本实施例不对终端执行操作的次数作具体的限定。终端执行操作的次数值可以为10次、20次、30次等,本实施例不对终端执行操作的次数值作具体的限定。第一序列号的形式包括但不限于:由数字组成的字符串、由字母组成的字符串或者由数字及字母混合组成的字符串等等,本实施例不对第一序列号的形式作具体的限定。第一序列号的位数可以为32位、64位等,本实施例不对第一序列号的位数作具体的限定。例如,以设定第一序列号的位数为4位,第一序列号的形式可以为11111的形式,还可以为aaaa的形式,当然,还可以为a1b2的形式等等。另外,为了简化后续过程的计算量,本实施例中以第一序列号的位数为32位,第一序列号的形式为由数字组成的字符串的形式进行说明。
关于根据网关信息、操作类型及终端执行操作的次数,生成第一序列号的方式,包括但不限于如下步骤:
第一步,根据网关信息,生成第一特征码。
由于终端执行数据更新操作时,所使用的进程不同,传递数据更新消息的网关也不同,且由于根据不同的网关信息,生成的第一特征码也是不同的,因此,为了便于后续根据网关信息,生成第一特征码,本实施例提供的方法在根据网关信息,生成第一特征码之前,需要先确定进程编号的数量,进而为每个进程设置对应的进程编号。其中,进程编号的形式可以为数字形式、字母形式、符号形式等,本实施例不对进程编号的形式作具体的限定。关于进程编号的数量的确定方法,包括但不限于:根据第一特征码的位数进行确定。例如,若第一特征码的位数为10位,则进程编号的数量为:210=1024;若第一特征码的位数为11位,则进程编号的数量为:211=2048。
关于为每个进程设置对应的进程编号的方式,包括但不限于如下两种方式:
第一种方式:获取用于为进程分配进程编号的操作程序,通过该操作程序为每个进程设置对应的进程编号。例如,用于为进程分配进程编号的操作程序为操作程序为操作程序A,需要编号的进程为进程a和进程b,进程编号为101和110,通过操作程序A为进程a设置的进程编号为110,为进程b设置的进程编号为101。
第二种方式:获取所有进程的配置文件名称,并将获取到的所有进程的配置文件名称按字母顺序进行排序,进而按照排序结果为每个进程分配一个进程编号。例如,若获取到的进程a的配置文件名称为A,进程b的配置文件名称为B,进程编号为101和110,则将获取到的进程a和进程b的配置文件按照字母顺序进行排序,排序结果为:进程a、进程b,根据排序结果为进程a分配的进程编号为101、为进程b分配的进程编号为110。
进一步地,由于预先为每个进程设置的对应进程编号在后续的步骤中将继续应用,因此,为了便于后续的应用,在预先为每个进程设置对应的进程编号之后,本实施例提供的方法还将执行存储预先为每个进程设置的进程编号的步骤。关于存储预先为每个进程设置的进程编号的方式,包括但不限于将预先为每个进程设置的进程编号存储到对应的内存、闪存中。
另外,由于终端执行操作所使用的进程不同,传递数据更新消息的网关也是不同的,而在本步骤中网关信息为生成第一特征码的关键,因此,为了便于根据网关信息,生成第一特征码,本实施例提供的方法还将建立网关信息与进程的对应关系。以网关信息为网关IP为例,建立网关信息与进程的对应关系时,可为不同的进程设置对应的网关IP。例如,可为进程a设置对应的网关IP为220.231.22.31,为进程b设置对应的网关IP为220.231.22.22等等。
基于上述为每个进程设置的进程编号,在根据网关信息,生成第一特征码时,包括但不限于:根据网关信息,确定终端进行数据更新操作时使用的进程,并获取终端进行数据更新操作时使用的进程对应的进程编号,进而将进程编号作为第一特征码。例如,预先为进程a设置的编号为101、进程b设置的编号为110、进程c设置的编号为001,若根据网关信息,确定终端进行数据更新操作所使用的进程为进程b,则获取终端进行数据更新操作时使用的进程b对应的编号110,并将110作为第一特征码。
第二步,根据操作类型,生成第二特征码。
由于触发数据更新操作的操作类型包括但不限于:删除操作、增加操作及更改操作等,且不同的操作类型对应不同的类型编号,而操作类型对应的类型编号不同,生成的第二特征码也不同,因此,根据操作类型,生成第二特征码时,包括但不限于:确定操作类型,并根据操作类型生成第二特征码。具体地,若操作类型为删除操作,则将删除操作对应的类型编号作为第二特征码;若操作类型为增加操作,则将增加操作对应的类型编号作为第二特征码;若操作类型为更改操作,则将更改操作对应的类型编号作为第二特征码。
例如,设定删除操作对应的编号为0,增加操作对应的类型编号为1,更改操作对应的类型编号为2,若获取到触发数据更新操作的操作类型为删除操作,则将删除操作对应的类型编号0作为第二特征码;若获取到触发数据更新操作的操作类型为增加操作,则将增减操作对应的类型编号1作为第二特征码;若获取到触发数据更新操作的操作类型为更改操作,则将更改操作对应的类型编号2作为第二特征码。
第三步,根据终端执行操作的次数,生成第三特征码。
由于终端每执行一次数据更新操作,均会向服务器发送数据更新消息,因此,通过记录终端发送数据更新消息的次数,可获知终端执行操作的次数。另外,由于服务器记录数据的能力是有限的,因此,服务器在记录终端执行操作的次数时,可设定一个预设数值,并通过预设数值生成第三特征码。具体地,当记录的终端执行操作的次数未达到预设数值时,终端每执行一次操作,将记录的终端执行操作的次数加1,并将记录的结果作为第三特征码;当记录的终端执行操作的次数达到预设数值之后,从0开始重新记录终端执行操作的次数,并将记录的结果作为第三特征码。其中,预设数值可以为1000、2000、3000等,本实施例不对预设数值作具体的限定。关于预设数值的设定方法,包括但限于:根据第三特征码的位数进行设定。例如,若第三特征码的位数为10位,则设定预设数值为210;若第三特征码的位数为20位,则设定预设数值为220。
第四步,基于第一特征码、第二特征码及第三特征码,生成第一序列号。
在生成第一特征码、第二特征码及第三特征码之后,即可基于第一特征码、第二特征码及第三特征码,生成第一序列号。具体地,基于第一特征码、第二特征码及第三特征码,生成第一序列号时,可将生成的第一特征码、第二特征码及第三特征码顺序组成一个字符串,并将该字符串作为第一序列号,也可将生成的第一特征码、第二特征码及第三特征码随机组成一个字符串,并将该字符串作为第一序列号,本实施例对此不作具体的限定。例如,设定第一特征码为101,第二特征码为1,第三特征码为2,在基于第一特征码、第二特征码及第三特征码,生成第一序列号时,可将第一特征码、第二特征码及第三特征码顺序组成一个32位的字符串00001100101100000000000000000010,并将该字符串00001100101100000000000000000010作为第一序列号;当然,除了采用上述方式外,也可将第一特征码、第二特征码及第三特征码随机组成的一个字符串00000000000000000010000011001011,并将该字符串00000000000000000010000011001011作为第一序列号。
需要说明的是,由于第一序列号仅与第一特征码、第二特征码及第三特征码的内容有关,与第一特征码、第二特征码及第三特征码的生成顺序无关,无论先生成第一特征码,还是后生成第一特征码,最后得到的第一序列号都是相同的,因此,在本实施例中仅以先生成第一特征码,再生成第二特征码,最后生成第三特征码为例进行说明。
203、服务器根据接收数据更新消息的时间,生成第二序列号。
其中,第二序列号的形式包括但不限于:由数字组成的字符串、由字母组成的字符串或者由数字及字母混合组成的字符串等等,本实施例不对第二序列号的形式作具体的限定。第二序列号的位数可以为32位、64位等,本实施例不对第二序列号的位数作具体的限定。为了简化后续过程的计算量,本实施例中以第二序列号的位数为32位,第二序列号的形式为由数字组成的字符串的形式进行说明。
关于根据接收数据更新消息的时间,生成第二序列号的方式,包括但不限于:
首先,计算接收到数据更新消息的时间与参考时间的时间差;
其中,参考时间包括但不限于1990-01-01 00:00:00、2000-01-01 00:00:00等,本实施例不对参考时间作具体的限定。在本实施例中选定格林威治标准时间1970-01-01 00:00:00作为参考时间。在计算接收到数据更新消息的时间与参考时间得到时间差之后,可将得到的时间差采用不同的时间单位进行表示,如,可以秒为单位进行表示等。
例如,设定以秒为单位表示得到的时间差,若接收到数据更新消息的时间为2014-09-05 14:37:50,则计算接收到的数据更新消息的时间与参考时间的时间差为1409899070;若接收到数据更新消息的时间为2014-09-05 19:46:16,则计算接收到的数据更新消息的时间与参考时间的时间差为1409917576。
其次,基于时间差,生成第二序列号。
通过计算得到接收到的数据更新消息的时间与参考时间的时间差之后,可将得到的时间差作为第二序列号。例如,若计算得到接收到的数据更新消息的时间与参考时间的时间差为1409917576,则可将1409917576作为第二序列号。
204、服务器基于第一序列号和第二序列号,生成目标序列号,并使用目标序列号,对更新数据进行标记。
关于基于第一序列号和第二序列号,生成目标序列号的方式,包括但不限于:将生成的第一序列号及第二序列号转化为二进制形式,并将二进制形式的第一序列号及第二序列号进行合并,得到一个二进制形式的字符串,并将得到的二进制形式的字符串转化为十进制形式,最后得到目标序列号。具体地,在将二进制形式的第一序列号及第二序列号进行合并的方式,包括但不限于:将第一序列号添加到第二序列号的后面等,本实施例不对将二进制形式的第一序列号及第二序列号进行合并的方式作具体的限定。
上述过程,根据接收到的终端发送的数据更新消息中携带的信息,生成第一序列号,并根据接收数据消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记,从而保证了不同的更新数据具有不同的序列号,且只增量同步有标记变化的数据即可,提高了同步效率较高。
为了便于理解上述过程,下面将以一个具体的例子进行详细地解释说明。
例如,设定第一特征码的位数为11位,第二特征码的位数为1位,第三特征码的位数为20位,第二序列号的位数为32位,并设定将第一特征码、第二特征码及第三特征码以顺序的形式,生成第一序列号。若获取到的第一特征码为:0001100101,第二特征码为:1,第三特征码为:00000000000000000010,则基于第一特征码、第二特征码及第三特征码,生成的第一序列号为:0001100101100000000000000000010,该第一序列号为二进制形式;若获取到第二序列号为1409918723,将第二序列号转化为二进制形式为:01010100000010011010011100000011,采将第一序列号添加到第二序列号的后面,得到的二进制的字符串为:0101010000001001101001110000001100001100101100000000000000000010。将该二进制字符串转化为十进制数为:6055554805515943938。该十进制数6055554805515943938,即为生成的目标序列号。当然,在生成目标序列号之后,就可使用生成的目标序列号6055554805515943938,对更新数据进行标记。
进一步地,终端发送的数据更新消息中除了携带更新数据、触发数据更新消息的操作类型外,还携带着数据库映射信息,在对服务器上存储的数据进行更新时,根据数据库映射信息可确定出主数据库,而主数据库中可存储终端的更新数据,因此,在使用目标序列号,对更新数据进行标记之后,本实施例提供的方法还将已标记序列号的更新数据存储至主数据库,并根据数据库的主从同步功能同步主数据库中存储的数据至从数据库。其中,主数据库和从数据库为同一个数据资源共享群的两个功能不同的数据库,主数据库用于数据的写入,从数据库用于数据的读出。当数据资源共享群中的任一终端存储的数据有更新时,可通过上述过程,将更新数据的存储到主数据库,并根据数据库的主从同步功能同步主数据库中存储的数据至从数据库;同时,当数据资源共享群中任一终端需要获取同步数据时,任一终端可通过从数据库获取到更新的数据。
另外,为了便于终端获知本地存储的数据在服务器上标记的序列号,本实施例提供的方法在使用目标序列号,对更新数据进行标记之后,还将目标序列号发送至终端,由终端进行存储。
至此,通过上述过程,实现了对要同步数据的标记,在此基础上,本实施例提供的方法还支持数据的同步,具体的同步过程,可参见下述步骤。
第一步,接收数据同步请求,数据同步请求中至少携带待同步序列号及数据库映射信息。
虽然终端本地存储的每一个数据都对应一个序列号,但仅终端本地存储的最大序列号为判断是否需要进行数据同步的重要依据,因此,为了提高数据同步的准确性,终端在向服务器发送数据同步请求时,同步请求中携带的待同步的序列号应为终端本地存储的最大的序列号。
第二步,获取从数据库中存储的最大序列号。
同样为了提高数据同步的准确性,服务器在获取从数据库中存储的序列号时,也应获取从数据库中所存储序列号中最大的序列号。
第三步,根据待同步序列号及最大序列号,进行数据同步。
具体地,根据待同步序列号及最大序列号,进行数据同步,包括但不限于:
首先,将待同步序列号与最大序列号进行比较;
其次,根据比较结果确定待同步序列号对应的数据是否为最新数据;
根据比较结果确定待同步序列号对应的数据是否为最新数据,包括但不限于如下两种情况:
第一种情况:若待同步序列号小于最大序列号,则确定待同步序列号对应的数据不为最新数据;
例如,若获取到待同步序列号为6055470396522627072,从数据库中存储的最大序列号为:6055545287867367425,由于待同步序列号小于从数据库中的最大序列号,则确定待同步序列号对应的数据不为最新数据,此时需要对该终端中存储的数据执行数据同步操作。
第二种情况:若待同步序列号等于最大序列号,则确定待同步序列号对应的数据为最新数据。
例如,若获取到待同步序列号为6055545287867367425,从数据库中存储的最大序列号为:6055545287867367425,由于待同步序列号等于从数据库中的最大序列号,则确定待同步序列号对应的数据为最新数据,此时无需对该终端中存储的数据执行数据同步操作。
再次,若待同步序列号对应的数据不为最新数据,则根据从数据库中存储的数据进行数据同步。
为了使发送数据同步请求的终端本地存储的数据为最新数据,当判断得出待同步序列号对应的数据不为最新数据时,需要根据从数据库中存储的数据对该发送数据同步请求的终端本地存储的数据进行同步。具体地,可在从数据库中获取大于待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送数据同步请求的终端。例如,若终端发送的数据同步请求中携带的待同步序列号为6055545287867367430,从数据库中存储的序列号中大于待同步序列号有:6055545287867367533、6055545287867367478,其中,序列号6055545287867367533对应的数据为数据a,序列号6055545287867367478对应的数据为数据b,则在判断出终端中存储的数据不为最新数据之后,将获取数据a和数据b,并将数据a和数据b发送至终端进行存储。
需要说明的是,上述数据同步流程,仅适用于同一时刻数据资源共享群中的一个用户执行数据同步操作的场景,当同一时刻数据资源共享群中的多个用户同时执行数据同步操作时,由于同一时刻生成的新的目标序列号为多个,此时数据资源共享群中的其他用户在进行数据同步时,不能仅依靠服务器上的一个序列号进行数据的同步,此时,其他用户需要获取同一时刻服务器上生成的所有序列号对应的同步数据,并由用户侧终端根据应用场合进行展示。具体地,由用户根据应用场合进行展示时,用户侧终端可根据显示屏幕的显示能力进行展示等。例如,若同一时刻服务器上同步的数据有20条,用户A侧终端能够在屏幕上显示的数据为10条,用户B侧终端能够在屏幕上显示的数据为5条,则用户A侧终端需将获取到的20条同步数据,分成2页进行展示,用户B侧终端需将获取到的20条同步数据,分成4页进行展示。
对于上述步骤201至204中的数据同步的标记及数据同步流程,下面将以表1所示具体的应用场景进行介绍。
其中,设定用户A、用户B的数据资源共享群为共享相册,用户A和用户B共享的资源为相片资源,当执行场景1的操作时共享相册中未存储任何相片。
表1
场景1、用户A登录共享相册,并执行增加一张照片1的操作。若用户A执行增加操作的时间为2014-09-05 14:37:50,则生成的第二序列号为1409899070;若根据网关信息,生成的第一特征码为101,根据操作类型为增加操作,生成的第二特征码为0,根据在预设时长内用户A执行操作的次数,生成第三特征码为0,则基于第一特征码、第二特征码及第三特征码,生成的第一序列号为00001100101000000000000000000000;最终基于第一序列号及第二序列号,生成的序列号为605554287867367425。
场景2、用户A登录共享相册,并执行增加一张照片2的操作。若用户A执行增加操作的时间为2014-09-05 19:46:16,则生成的第二序列号为1409917576;若根据网关信息,生成的第一特征码为101,根据操作类型为增加操作,生成的第二特征码为0,根据在预设时长内用户A执行操作的次数,生成第三特征码为1,则基于第一特征码、第二特征码及第三特征码,生成的第一序列号为00001100101000000000000000000001;最终基于第一序列号及第二序列号,生成的序列号为6055470396522627072。由于6055470396522627072大于605554287867367425,因此,序列号6055470396522627072为用户A本地存储的最大序列号。
场景3、用户B初次登录共享相册。用户B向服务器发送数据同步请求,由于用户B的本地中并未存储着任何共享相册内的相片,因此,数据同步请求中携带的待同步序列号为0。服务器在接收到用户B发送的数据同步请求之后,将待同步序列号0与从数据库中存储的最大序列号6055470396522627072进行比较。由于6055470396522627072大于0,因此,服务器将605554287867367425对应的相片1、6055470396522627072对应的相片2发送至用户B,由用户B在本地进行存储。
场景4、一段时间之后,用户B再次登录共享相册。用户B将保存的最大序列号6055470396522627072作为待同步序列号携带在数据同步请求中发送至服务器。服务器在接收到用户B发送的数据同步请求之后,将待同步序列号6055470396522627072与从数据库中存储的最大序列号6055470396522627072进行比较,由于待同步序列号与从数据库中存储的最大序列号相等,因此,用户B中存储的数据为最新数据,此时无需执行数据同步操作。
场景5、用户B登录共享相册,并执行删除一张照片2的操作。若用户B执行删除操作的时间为2014-09-05 20:05:23,则生成的第二序列号为1409918723;若根据网关信息,生成的第一特征码为101,根据操作类型为删除操作,生成的第二特征码为1,根据在预设时长内用户A执行操作的次数,生成第三特征码为2,则基于第一特征码、第二特征码及第三特征码,生成的第一序列号为01010100000010011010011100000011;最终基于第一序列号及第二序列号,生成的序列号为6055554805515943938。由于6055554805515943938大于6055470396522627072,因此,序列号6055554805515943938为用户B本地存储的最大序列号。
本发明实施例提供的方法,通过接收终端发送的数据更新消息,根据数据更新消息中携带的信息及网关信息,生成第一序列号,并根据接收数据更新消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记。由于生成的目标序列号由更新消息中携带的信息及更新消息的时间两个因素决定,从而保证了不同的更新数据具有不同的序列号。进一步地,当更新数据采用目标序列号进行标记之后,其他终端在与服务器中存储的数据进行同步时,可通过目标序列号快速地找到要同步数据,从而提高了同步效率。
本发明实施例提供了一种数据同步的标记装置,该装置用于执行上述图1或图2所示的实施例提供的数据同步的标记方法,参见图3,该装置包括:
第一接收模块301,用于接收终端发送的数据更新消息,数据更新消息中至少携带更新数据及触发数据更新消息的操作类型;
获取模块302,用于获取传递数据更新消息的网关信息;
第一生成模块303,用于根据网关信息、操作类型及终端执行操作的次数,生成第一序列号;
第二生成模块304,用于根据接收数据更新消息的时间,生成第二序列号;
第三生成模块305,用于基于第一序列号和第二序列号,生成目标序列号;
标记模块306,用于使用目标序列号,对更新数据进行标记。
作为一种可选的实施例,第一生成模块303,包括:
第一生成单元,用于根据网关信息,生成第一特征码;
第二生成单元,用于根据操作类型,生成第二特征码;
第三生成单元,用于根据终端执行操作的次数,生成第三特征码;
第四生成单元,用于基于第一特征码、第二特征码及第三特征码,生成第一序列号。
作为一种可选的实施例,该装置,还包括:
设置模块,用于预先为每个进程设置对应的进程编号;
第一生成单元,包括:
确定子单元,用于根据网关信息,确定终端进行数据更新操作时使用的进程;
获取子单元,用于获取终端进行数据更新操作时使用的进程对应的进程编号,并将进程编号作为第一特征码。
作为一种可选的实施例,操作类型为删除操作、增加操作及更改操作,且不同的操作类型对应不同的类型编号;
第二生成单元,用于当操作类型为删除操作时,将删除操作对应的类型编号作为第二特征码;当操作类型为增加操作时,将增加操作对应的类型编号作为第二特征码;当操作类型为更改操作时,将更改操作对应的类型编号作为第二特征码。
作为一种可选的实施例,第二生成模块304,包括:
计算单元,用于计算接收到数据更新消息的时间与参考时间的时间差;
生成单元,用于基于时间差,生成第二序列号。
作为一种可选的实施例,数据更新消息中携带数据库映射信息;
该装置,还包括:
存储模块,用于将已标记序列号的更新数据存储至主数据库;
同步模块,用于根据数据库的主从同步功能同步主数据库中存储的数据至从数据库,其中,主数据库用于数据的写入,从数据库用于数据的读出。
作为一种可选的实施例,该装置,还包括:
发送模块,用于将目标序列号发送至终端,由终端进行存储。
作为一种可选的实施例,该装置,还包括:
第二接收模块,用于接收数据同步请求,数据同步请求中至少携带待同步序列号及数据库映射信息;
获取模块,用于获取从数据库中存储的最大序列号;
同步模块,用于根据待同步序列号及最大序列号,进行数据同步。
作为一种可选的实施例,同步模块,包括:
比较单元,用于将待同步序列号与最大序列号进行比较;
确定单元,用于根据比较结果确定待同步序列号对应的数据是否为最新数据;
同步单元,用于当待同步序列号对应的数据不为最新数据时,根据从数据库中存储的数据进行数据同步。
作为一种可选的实施例,确定单元,用于当待同步序列号小于最大序列号时,确定待同步序列号对应的数据不为最新数据;当待同步序列号等于最大序列号时,确定待同步序列号对应的数据为最新数据。
作为一种可选的实施例,同步单元,用于在从数据库中获取大于待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送数据同步请求的终端。
综上所述,本发明实施例提供的装置,通过接收终端发送的数据更新消息,根据数据更新消息中携带的信息及网关信息,生成第一序列号,并根据接收数据更新消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记。由于生成的目标序列号由更新消息中携带的信息及更新消息的时间两个因素决定,从而保证了不同的更新数据具有不同的序列号,且其他终端只增量同步有标记变化的数据即可,因此,同步效率较高。
图4是本发明实施例提供的一种数据同步的标记装置400的框图。例如,装置400可以被提供为一服务器。参见图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述方法:
接收终端发送的数据更新消息,数据更新消息中至少携带更新数据及触发数据同步消息的操作类型;
获取传递数据更新消息的网关信息,并根据网关信息、操作类型及终端执行操作的次数,生成第一序列号;
根据接收数据更新消息的时间,生成第二序列号;
基于第一序列号和第二序列号,生成目标序列号;
使用目标序列号,对更新数据进行标记。
作为一种可选的实施例,根据网关信息、操作类型及预设时长内终端执行操作的次数,生成第一序列号,包括:
根据网关信息,生成第一特征码;
根据操作类型,生成第二特征码;
根据终端执行操作的次数,生成第三特征码;
基于第一特征码、第二特征码及第三特征码,生成第一序列号。
作为一种可选的实施例,根据网关信息,生成第一特征码之前,还包括:
预先为每个进程设置对应的进程编号;
根据网关信息,生成第一特征码,包括:
根据网关信息,确定终端进行数据更新操作时使用的进程;
获取终端进行数据更新操作时使用的进程对应的进程编号,并将进程编号作为第一特征码。
作为一种可选的实施例,操作类型为删除操作、增加操作及更改操作,且不同的操作类型对应不同的类型编号;
根据操作类型,生成第二特征码,包括:
若操作类型为删除操作,则将删除操作对应的类型编号作为第二特征码;
若操作类型为增加操作,则将增加操作对应的类型编号作为第二特征码;
若操作类型为更改操作,则将更改操作对应的类型编号作为第二特征码。
作为一种可选的实施例,根据接收数据更新消息的时间,生成第二序列号,包括:
计算接收到数据更新消息的时间与参考时间的时间差;
基于时间差,生成第二序列号。
作为一种可选的实施例,数据更新消息中携带数据库映射信息;
使用目标序列号,对更新数据进行标记之后,还包括:
将已标记序列号的更新数据存储至主数据库,并根据数据库的主从同步功能同步主数据库中存储的数据至从数据库,其中,主数据库用于数据的写入,从数据库用于数据的读出。
作为一种可选的实施例,使用目标序列号,对更新数据进行标记之后,还包括:
将目标序列号发送至终端,由终端进行存储。
作为一种可选的实施例,使用目标序列号,对更新数据进行标记之后,还包括:
接收数据同步请求,数据同步请求中至少携带待同步序列号及数据库映射信息;
获取从数据库中存储的最大序列号;
根据待同步序列号及最大序列号,进行数据同步。
作为一种可选的实施例,根据待同步序列号及最大序列号,进行数据同步,包括:
将待同步序列号与最大序列号进行比较;
根据比较结果确定待同步序列号对应的数据是否为最新数据;
若待同步序列号对应的数据不为最新数据,则根据从数据库中存储的数据进行数据同步。
作为一种可选的实施例,根据比较结果确定待同步序列号对应的数据是否为最新数据,包括:
若待同步序列号小于最大序列号,则确定待同步序列号对应的数据不为最新数据;
若待同步序列号等于最大序列号,则确定待同步序列号对应的数据为最新数据。
作为一种可选的实施例,根据从数据库中存储的数据进行数据同步,包括:
在从数据库中获取大于待同步序列号的所有序列号对应的数据,并将获取到的数据存储至发送数据同步请求的终端。
装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(I/O)接口458。装置400可以操作基于存储在存储器432的操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD或类似。
本发明实施例提供的装置,通过接收终端发送的数据更新消息,根据数据更新消息中携带的信息及网关信息,生成第一序列号,并根据接收数据更新消息的时间,生成第二序列号,进而使用基于第一序列号和第二序列号生成的目标序列号,对更新数据进行标记。由于生成的目标序列号由更新消息中携带的信息及更新消息的时间两个因素决定,从而保证了不同的更新数据具有不同的序列号,且其他终端只增量同步有标记变化的数据即可,因此,同步效率较高。
需要说明的是:上述实施例提供的数据同步的标记装置在标记更新数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将更细数据的标记装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步的标记装置与数据同步的标记方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。