一种历史信息同步方法
文献发布时间:2024-04-18 19:58:53
技术领域
本申请涉及数据同步的技术领域,尤其是涉及一种历史信息同步方法。
背景技术
“同步历史消息”是平台记录并保存用户在平台上的所有操作历史记录或通信记录等信息,在用户重新登录账户或者在新设备上登录等情况下时进行历史信息查看。
目前同步大量历史消息的方式主要有:1、只同步最近一段时间的历史消息;这种同步方式可以迅速打开当前程序,让用户使用软件,缺点是这样只能看到最近的历史消息,很早的历史消息无法查看;2、延时同步历史消息:在需要时从服务器拉取。缺点是对搜索不友好,如果搜索时同步,搜索速度慢;如果搜索时不同步,无法搜索到需要的信息;3、正常全部同步:缺点是耗费时间久,对用户不友好,需要用户等待。
如何更好地进行历史信息同步是本领域技术人员需要攻克的技术难题。
发明内容
为了至少部分解决上述技术问题,本申请提供了一种历史信息同步方法。
第一方面,本申请提供的一种历史信息同步方法采用如下的技术方案。
在客户端由登录页面跳转至用户界面后,判断是否存在登录用户的消息数据库;若是,则进行历史信息同步;若否,则发送创建命令至服务器;所述创建命令用于触发所述服务器创建登录用户的消息数据库;
在接收到所述服务器发送的创建完成通知后,下载所述消息数据库;
打开下载的所述消息数据库;以及,
基于所述消息数据库进行历史信息同步。
可选的,在下载所述消息数据库之后,所述方法还包括:
发送删除命令至所述服务器;所述删除命令用于触发所述服务器删除创建的所述消息数据库。
可选的,所述创建命令用于触发所述服务器创建登录用户的消息数据库,包括:
所述服务器接收所述创建命令后,判断所述登录用户的消息数据库是否已经存在,若否,则为所述登录用户创建消息数据库;
检查所述登录用户的用户权限,为所述登录用户配置优先权限,将所有所述登录用户的消息从服务器数据库写入创建的所述消息数据库,提交数据库事务;所述优先权限包括开通数据库事务。
可选的,判断是否存在登录用户的消息数据库,包括:
S401、基于登录用户的名称信息、账号信息、历史同步信息得到若干特征信息单元;
S402、根据特征信息单元调取配对度前三的消息数据库信息;所述配对度与配对的特征信息单元的个数成正相关;调取每一消息数据库信息的特征信息库;所述特征信息库包括第一信息库、第二信息库及第三信息库;
S403、基于所述若干特征信息单元生成待配对信息库并生成空白信息库;
S404、获取所述待配对信息库中的一个特征信息单元并判断特征信息单元是否位于第一信息库、第二信息库及第三信息库中;
S405、如果是,将特征信息单元从待配对信息库中删除,对待配对信息库进行更新;
S406、判断特征信息单元在特征信息库中是否唯一;如果是,进入S407;如果否,进入S408;
S407、基于所述唯一特征信息单元匹配第一信息库、第二信息库及第三信息库中的一个并判定存在登录用户的消息数据库;
S408、判断待配对信息库是否为空集;如果否,返回S404;如果是,进入S409;
S409、在所述空白信息库中得到完整的信息库;
S410、判断所述完整的信息库是否与第一信息库、第二信息库及第三信息库相配对;若配对,则判定存在登录用户的消息数据库。
第二方面,本申请提供的一种历史信息同步方法采用如下的技术方案。
一种历史信息同步方法,包括:
接收客户端发送的创建命令;所述创建命令是客户端由登录页面跳转至用户界面并判定不存在登录用户的消息数据库后所述客户端发送的;
判断所述登录用户的消息数据库是否已经存在,若否,则为所述登录用户创建消息数据库;
检查所述登录用户的用户权限,为所述登录用户配置优先权限,将所有所述登录用户的消息从服务器数据库写入创建的所述消息数据库,提交数据库事务;所述优先权限包括开通数据库事务;
发送创建完成通知至客户端;所述创建完成通知用于触发所述客户端下载所述消息数据库;打开下载的所述消息数据库;以及,基于所述消息数据库进行历史信息同步。
可选的,接收客户端发送的创建命令后,所述方法还包括:
判断所述登录用户是否存在处于创建状态的消息数据库;如果有,则等待所述处于创建状态的消息数据库创建完成;
在所述处于创建状态的消息数据库创建完成后,发送创建完成通知至客户端。
可选的,所述方法还包括:
接收删除命令;所述删除命令是客户端在下载所述消息数据库之后发送的;
基于所述删除命令,清除所述消息数据库中的文件。
可选的,判断所述登录用户的消息数据库是否已经存在,包括:
S401、基于登录用户的名称信息、账号信息、历史同步信息得到若干特征信息单元;
S402、根据特征信息单元调取配对度前三的消息数据库信息;所述配对度与配对的特征信息单元的个数成正相关;调取每一消息数据库信息的特征信息库;所述特征信息库包括第一信息库、第二信息库及第三信息库;
S403、基于所述若干特征信息单元生成待配对信息库并生成空白信息库;
S404、获取所述待配对信息库中的一个特征信息单元并判断特征信息单元是否位于第一信息库、第二信息库及第三信息库中;
S405、如果是,将特征信息单元从待配对信息库中删除,对待配对信息库进行更新;
S406、判断特征信息单元在特征信息库中是否唯一;如果是,进入S407;如果否,进入S408;
S407、基于所述唯一特征信息单元匹配第一信息库、第二信息库及第三信息库中的一个并判定存在登录用户的消息数据库;
S408、判断待配对信息库是否为空集;如果否,返回S404;如果是,进入S409;
S409、在所述空白信息库中得到完整的信息库;
S410、判断所述完整的信息库是否与第一信息库、第二信息库及第三信息库相配对;若配对,则判定存在登录用户的消息数据库。
第三方面,本申请公开一种电子设备,包括存储器和处理器,所述存储器上存储有被处理器加载并执行上述的任一方法的计算机程序。
第四方面,本申请公开一种计算机可读存储介质,存储有能够被处理器加载并执行上述的任一方法的计算机程序。
附图说明
图1是本申请实施例一种历史信息同步方法在客户端的流程图;
图2是本申请实施例一种历史信息同步方法在服务器的流程图;
图3是本申请实施例一种历史信息同步方法服务器与客户端交互的示意图。
具体实施方式
下面结合附图1-3和具体实施例对本申请作进一步说明:
本申请实施例公开一种历史信息同步方法,应用于客户端。参照图1和图2,作为一种历史信息同步方法的一种实施方式,一种历史信息同步方法包括以下步骤:
步骤101、在客户端由登录页面跳转至用户界面后,判断是否存在登录用户的消息数据库;若是,则进行历史信息同步;若否,则发送创建命令至服务器;所述创建命令用于触发所述服务器创建登录用户的消息数据库。
具体地,在客户端由登录页面跳转至用户界面后可以理解为:用户在用户端设备中登录后,上述的客户端包括智能手机、电脑、车机等设备。在客户端由登录页面跳转至用户界面后,判断是否存在登录用户的消息数据库,如果用户消息数据库存在,按照正常的历史信息同步流程进行处理。
本发明核心是利用服务器生成客户端使用的数据库。服务器创建客户端的数据库,最大化利用了数据库的插入能力,极大提升数据的插入速度;客户端异常断开连接不影响数据同步时插入数据库的过程,提升用户使用体验;减少交互步骤,省略了服务器与客户端的数据序列化与反序列化。由于是在服务器端重新生成的客户端数据库,所以可以完全信任服务器数据库的命令,因此在插入数据时可以:
1、所有的数据插入都在一个事务中完成;客户端执行的时候,为了安全性与防止同步过程中软件关闭导致的数据重新传输,不能在一个事务中插入分批次从数据库拉取的大量数据;
2、由于服务器的稳定性,因此可以在数据库插入时中关闭同步写的功能,提高数据的插入速度;客户端为了防止数据丢失,一般是打开同步写的功能;
3、关闭数据库的外键,可以减少数据的校验浪费时间;
4、由于是从空的数据库开始插入数据,省略正常流程的重复性检查等错误检测流程;
5、同类型的数据可以在一个预处理数据库命令下完成;如果是客户端下,多批次数据需要多次的数据库命令预处理;
由于以上几点数据库插入优势,相比正常客户端执行的客户端数据插入,服务器端生成客户端数据库的速度得到极大提升。
步骤102、在接收到所述服务器发送的创建完成通知后,下载所述消息数据库。
步骤103、打开下载的所述消息数据库。
步骤104、基于所述消息数据库进行历史信息同步。
作为一种历史信息同步方法的一种具体实施方式,所述消息数据库之后,所述方法还包括:
发送删除命令至所述服务器;所述删除命令用于触发所述服务器删除创建的所述消息数据库。
具体地,本发明的技术方案还具备如下技术优势:
1、减少了数据的序列化;正常流程中,服务器和客户端数据通过JSON等格式交互,每次交互都需要序列化与反序列化;服务器端执行的时候可以将服务器数据库查询的数据直接插入到客户端数据库而不需要序列化;
2、减少了服务器的权限检测;正常流程中,每次交互,服务器都需要检测用户权限等数据,利用这种方法,开始的时候检测一次后续不再检测;
3、数据库文件生成后是数个文件,因此可以直接用文件的方式下载数据库,最大化利用网络带宽;正常的客户端同步流程,由于中间的数据处理,以及数据依赖等可能存在短消息,无法完全利用带宽;
4、抗风险强,用户体验更好;如果正常同步历史消息,可能由于时间太久,用户无法忍受关闭软件,或者由于网络断开、断电等因素导致客户端与服务器断开,重连后需要继续同步,还是要等很久的时间;利用此方法,第一次发送客户端命令后,服务器开始执行命令,客户端等待,此后无论客户端出现什么异常,都不影响服务器的执行,等到下次用户再次打开软件的时候,就可以直接下载文件了,用户体验更好。
作为一种历史信息同步方法的一种具体实施方式,所述创建命令用于触发所述服务器创建登录用户的消息数据库,包括:
所述服务器接收所述创建命令后,判断所述登录用户的消息数据库是否已经存在,若否,则为所述登录用户创建消息数据库;
检查所述登录用户的用户权限,为所述登录用户配置优先权限,将所有所述登录用户的消息从服务器数据库写入创建的所述消息数据库,提交数据库事务;所述优先权限包括开通数据库事务。
作为一种历史信息同步方法的一种具体实施方式,判断是否存在登录用户的消息数据库,包括:
S401、基于登录用户的名称信息、账号信息、历史同步信息得到若干特征信息单元;
S402、根据特征信息单元调取配对度前三的消息数据库信息;所述配对度与配对的特征信息单元的个数成正相关;调取每一消息数据库信息的特征信息库;所述特征信息库包括第一信息库、第二信息库及第三信息库;
S403、基于所述若干特征信息单元生成待配对信息库并生成空白信息库;
S404、获取所述待配对信息库中的一个特征信息单元并判断特征信息单元是否位于第一信息库、第二信息库及第三信息库中;
S405、如果是,将特征信息单元从待配对信息库中删除,对待配对信息库进行更新;
S406、判断特征信息单元在特征信息库中是否唯一;如果是,进入S407;如果否,进入S408;
S407、基于所述唯一特征信息单元匹配第一信息库、第二信息库及第三信息库中的一个并判定存在登录用户的消息数据库;
S408、判断待配对信息库是否为空集;如果否,返回S404;如果是,进入S409;
S409、在所述空白信息库中得到完整的信息库;
S410、判断所述完整的信息库是否与第一信息库、第二信息库及第三信息库相配对;若配对,则判定存在登录用户的消息数据库。
参照图2和图3,本申请还提供了一种历史信息同步方法,应用于服务器,包括:
S201、接收客户端发送的创建命令;所述创建命令是客户端由登录页面跳转至用户界面并判定不存在登录用户的消息数据库后所述客户端发送的;
S202、判断所述登录用户的消息数据库是否已经存在,若否,则为所述登录用户创建消息数据库;
S203、检查所述登录用户的用户权限,为所述登录用户配置优先权限,将所有所述登录用户的消息从服务器数据库写入创建的所述消息数据库,提交数据库事务;所述优先权限包括开通数据库事务;
S204、发送创建完成通知至客户端;所述创建完成通知用于触发所述客户端下载所述消息数据库;打开下载的所述消息数据库;以及,
S205、基于所述消息数据库进行历史信息同步。
作为一种历史信息同步方法的其中一种实施方式,接收客户端发送的创建命令后,所述方法还包括:
判断所述登录用户是否存在处于创建状态的消息数据库;如果有,则等待所述处于创建状态的消息数据库创建完成;
在所述处于创建状态的消息数据库创建完成后,发送创建完成通知至客户端。
作为一种历史信息同步方法的其中一种实施方式,所述方法还包括:
接收删除命令;所述删除命令是客户端在下载所述消息数据库之后发送的;
基于所述删除命令,清除所述消息数据库中的文件。
作为一种历史信息同步方法的其中一种实施方式,判断所述登录用户的消息数据库是否已经存在,包括:
S401、基于登录用户的名称信息、账号信息、历史同步信息得到若干特征信息单元;
S402、根据特征信息单元调取配对度前三的消息数据库信息;所述配对度与配对的特征信息单元的个数成正相关;调取每一消息数据库信息的特征信息库;所述特征信息库包括第一信息库、第二信息库及第三信息库;
S403、基于所述若干特征信息单元生成待配对信息库并生成空白信息库;
S404、获取所述待配对信息库中的一个特征信息单元并判断特征信息单元是否位于第一信息库、第二信息库及第三信息库中;
S405、如果是,将特征信息单元从待配对信息库中删除,对待配对信息库进行更新;
S406、判断特征信息单元在特征信息库中是否唯一;如果是,进入S407;如果否,进入S408;
S407、基于所述唯一特征信息单元匹配第一信息库、第二信息库及第三信息库中的一个并判定存在登录用户的消息数据库;
S408、判断待配对信息库是否为空集;如果否,返回S404;如果是,进入S409;
S409、在所述空白信息库中得到完整的信息库;
S410、判断所述完整的信息库是否与第一信息库、第二信息库及第三信息库相配对;若配对,则判定存在登录用户的消息数据库。
本申请实施例还公开一种电子设备。
具体来说,该设备包括存储器和处理器,存储器上存储有能够被处理器加载并执行上述任意一种历史信息同步方法的计算机程序。
本申请实施例还公开一种计算机可读存储介质。
具体来说,该计算机可读存储介质,其存储有能够被处理器加载并执行如上述任意一种历史信息同步方法的计算机程序,该计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:以上实施例仅用于说明本申请而并非限制本申请所描述的技术方案,尽管本说明书参照上述的实施例对本申请已进行了详细的说明,但是,本领域的普通技术人员应当理解,所属技术领域的技术人员仍然可以对本申请进行修改或者等同替换,而一切不脱离本申请的精神和范围的技术方案及其改进,均应涵盖在本申请的权利要求范围内。