一种实现数据同步的系统和方法

文档序号:7686996阅读:227来源:国知局
专利名称:一种实现数据同步的系统和方法
技术领域
本发明涉及数据同步技术,尤其涉及一种基于扫描服务器端数据库表中的 数据实现数据同步的系统和方法。
背景技术
目前,随着网络的普及,在人们生产生活中,基于网络的数据共享已经成为 人们获得最新数据资源不可或缺的方式。为了更好地实现数据共享需要实现共 享数据的同步。共享数据的同步对于企业来说更加重要,比如,企业的服务器 端用于管理分属于企业不同部门的不同客户端,并且在服务器端存储有管理数 据。那么为了方便服务器端对客户端进行管理,同时提高客户端的数据处理效 率,需要保证客户端与服务器端之间的数据同步。这里,所谓数据同步指基于 宽带网络,使服务器端的数据能与客户端的数据保持一致。并且,如果对服务 器端的数据进行了修改,则将修改后的数据及时同步更新到客户端。然而,由于服务器端存储数据的重要性,因此,不能随意修改服务器的配置, 并且也不能开放给客户端过多的操作权限。那么,在现有的数据同步过程中, 当客户端对服务器端的操作权限不足时,服务器端无法将服务器端数据库表中 的数据及时同步到客户端。而客户端是将同步数据存储到客户端数据库表中, 并基于客户端数据库表进行数据处理的。从而,现有的这种低效率、配置不方 便的数据同步技术势必会降低客户端的数据处理效率,并且使客户端数据库表 被锁时间较长。发明内容有鉴于此,本发明的主要目的在于提供一种实现数据同步的系统,能高效 率地实现数据同步,并将服务器端数据库表中的数据及时同步到客户端。从而 提高了客户端的数据处理效率。本发明的另一目的在于提供一种实现数据同步的方法,能高效率地实现数 据同步,并将服务器端数据库表中的数据及时同步到客户端。从而提高了客户 端的数据处理效率。为达到上述目的,本发明的技术方案是这样实现的一种实现数据同步的系统,该系统包括客户端数据库、客户端数据库连接 单元、消息服务器、服务器端数据库、服务器端数据库连接单元、消息总线单 元,该系统还包括时间调度单元和扫描单元;其中,时间调度单元,用于定时或周期性地调用所述扫描单元,使扫描单元执行 扫描程序;扫描单元,用于根据所述时间调度单元的调用执行扫描程序,并通过所述 服务器端数据库连接单元对所述服务器端数据库表中的数据进行扫描读取后, 经由所述消息服务器中的所述消息总线单元以及通过所述客户端数据库连接单 元,将所述扫描读取的数据同步到客户端的所述客户端数据库。其中,所述时间调度单元和所述扫描单元在所述消息月良务器中,该系统还 包括消息队列单元,用于在客户端启动所述消息服务器后,从所述客户端接收 消息事件;通过所述消息事件来激活和驱动所述时间调度单元。其中,所述时间调度单元和所述扫描单元在客户端中,所述客户端用于在 客户端启动所述消息服务器时,直接激活和驱动所述时间调度单元。其中,所述扫描单元还包括扫描策略模块,用于存储全量数据扫描策略和增量数据扫描策略;所述扫描单元通过读取所述扫描策略模块中的所述全量数据扫描策略,执行对所述服务器端数据库表中数据的全量数据扫描;或者,所述扫描单元通过 读取所述扫描策略模块中的增量数据扫描策略,执行对所述服务器端数据库表 中数据的增量数据扫描。其中,所述消息服务器为独立部署的部件,或者与所述客户端和服务器端 部署在一起的部件。一种实现数据同步的方法,该方法包括以下步骤A、 客户端启动消息服务器后,激活并驱动时间调度单元;所述时间调度 单元调用扫描单元来执行扫描程序;B、 所述客户端向服务器端请求读取服务器端数据库表读权限的认证,所 述服务器端将读权限的认证结果返回客户端;当所述认证结果为认证成功时, 扫描单元开始对所述服务器端数据库表中的数据进行扫描读取;之后,所述服 务器端数据库将当前扫描读取的数据同步到客户端的客户端数据库。其中,步骤A中,所述时间调度单元进一步定时或周期性地调用扫描单元 来执行扫描程序。其中,步骤B中,所述服务器端数据库将当前扫描读取的数据同步到客户端的客户端数据库具体为Bl、所述服务器端数据库将当前扫描读取的数据返回所述扫描单元;B2、扫描单元将所述当前扫描读取的数据转换成消息事件的形式后,分批推入消息总线单元;消息总线单元通过客户端数据库连接单元,将当前扫描读取的数据同步到所述客户端的客户端数据库。其中,步骤A中,所述扫描单元来执行扫描程序进一步为Al、根据当前业务需求采用不同的扫描策略来执行扫描程序,并执行对所述服务器端数据库表中数据的扫描读取。其中,当采用的扫描策略为全量数据扫描策略时候,步骤A1具体为 所述扫描单元读取扫描策略模块中的全量数据扫描策略后,通过服务器端数据库连接单元连接到服务器端数据库,执行对所述服务器端数据库表中数据的全量数据扫描。其中,当采用的扫描策略为增量数据扫描策略时,步骤A1具体为 扫描单元读取扫描策略模块中的增量数据扫描策略后,通过服务器端数据库连接单元连接到服务器端数据库,执行对所述服务器端数据库表中数据的增量数据扫描。基于服务器端存储数据重要性的考虑,本发明并未开力丈给客户端修改服务 器端数据库表配置的改权限,而将读取服务器端数据库表的读权限开放给客户端。那么通过时间调度单元定时或周期性地调用扫描单元,使扫描单元执行扫 描程序对服务器端数据库表中的数据进行扫描读取,就可以获知服务器端的数 据,从而将服务器端的数据及时同步到客户端。从而提高了客户端的数据处理 效率。进而,扫描单元还可以根据客户端配置信息中的数据量大小及业务要求 选择釆用不同的扫描策略执行扫描程序,对服务器端数据库表中的数据进行扫 描读取后,将服务器端的数据及时同步到客户端。这里,扫描策略包括全量数 据扫描和增量数据扫描。其中,全量数据扫描指将服务器端的数据全部同步到 客户端。增量数据扫描指将服务器端修改后的数据同步到客户端。综上所述,采用本发明,在不影响服务器端数据库表操作的情况下,能高 效率地实现数据同步,并将服务器端数据库表中的数据及时同步到客户端。从 而提高了客户端的数据处理效率。


图1为本发明系统一实施例的组成结构示意图; 图2为本发明系统另一实施例的组成结构示意图; 图3为本发明方法原理的实现流程示意图。
具体实施方式
本发明的核心思想是通过时间调度单元定时或周期性地调用扫描单元, 使扫描单元执行扫描程序对服务器端数据库表中的数据进行扫描读取,就可以 获知服务器端的数据,从而将服务器端的数据及时同步到客户端。从而提高了 客户端的数据处理效率。下面结合附图对技术方案的实施作进一步的详细描述。一种实现数据同步的系统,该系统包括客户端数据库、客户端数据库连 接单元、消息服务器、服务器端数据库、服务器端数据库连接单元、消息总线 单元、时间调度单元和扫描单元。其中,客户端数据库、客户端数据库连接单元、消息服务器、服务器端数据库、服务器端数据库连接单元、消息总线单元是现有的,以下对他们的功能 分别进行阐述。客户端数据库和服务器端数据库皆为数据库,不同的是一个针对客户端而 言,另一个针对服务器端而言。数据库位于用户与操作系统之间,用于管理数 据库中保存的表,数据库中保存的表可以为网状型、关系型、面向对象型等多 种形式。这里,数据库中保持的表也可以简称为数据库表。客户端数据库连接 单元和服务器端数据库连接单元皆为数据库连接单元,不同的是一个针对客户 端而言,另一个针对服务器端而言。数据库连接单元主要用于连接各种本地及 远程数据库,屏蔽不同数据库之间的访问差异和数据获取语句的差异。消息总 线单元位于消息服务器中,而消息服务器用于管理消息总线上传输的数据。那 么消息总线单元在消息服务器的管理下,用于从服务器端lt据库接收数据,并 发送到客户端数据库。这里需要指出的是,消息服务器即可独立部署,也可与 客户端和服务器端部署在一起。时间调度单元,用于定时或周期性地调用扫描单元,使扫描单元执行扫描 程序。扫描单元,用于根据时间调度单元的调用执行扫描程序。并且配置数据 的输入端口、数据的输出端口、扫描的表名称和需扫描的表字段的名称。其中,扫描单元还包括扫描策略模块,用于存储全量数据扫描策略和增量 数据扫描策略。那么扫描单元通过读取扫描策略模块中的全量数据扫描策略,执行对服务器端数据库表中数据的全量数据扫描;或者,扫描单元通过读取扫 描策略模块中的增量数据扫描策略,执行对服务器端数据库表中数据的增量数 据扫描。具体来说,时间调度单元和扫描单元的部署包括两种情况。第一种情况是,时间调度单元和扫描单元可以部署在消息服务器中,那么,扫描单元通过服务 器端数据库连接单元对服务器端数据库表中的数据进行扫描读取后,经由消息总线单元以及通过客户端数据库连接单元,将扫描读取的数据及时同步到客户 端的客户端数据库。另外,在这种情况下,实现数据同步的系统还包括消息队 列单元。消息队列单元位于消息服务器中,当客户端启动消息服务器时,消息服务器将从客户端接收的消息事件转发给消息队列单元,那么,消息队列单元 用于通过消息事件来激活和驱动时间调度单元。从而使时间调度单元能定时或 周期性地调用扫描单元,使扫描单元执行扫描程序。这里,举例来说,当将时间调度单元和扫描单元部署在消息服务器中时,数据的输入端口为服务器端数据库连接单元与扫描单元的接口;数据的输出端 口为扫描单元与消息总线的接口 ,扫描单元通过服务器端数据库连接单元从服 务器端数据库表中获取扫描数据,并将获取的扫描数据以消息事件的方式分批 推入消息总线。第二种情况是,时间调度单元和扫描单元还可以部署在在客户端中,那么 扫描单元通过服务器端数据库连接单元对服务器端数据库表中的数据进行扫描 读取后,服务器端数据库连接单元将扫描读取的数据返回消息总线单元,经由 消息总线单元以及通过客户端数据库连接单元,将扫描读取的数据及时同步到 客户端的客户端数据库。系统实施例一为将时间调度单元和扫描单元部署在消息服务器中的情况。 如图l所示,本实施例中,实现数据同步的系统包括客户端l中的客户 端数据库11和客户端数据库连接单元12,消息服务器2中的消息队列单元21、 时间调度单元22、扫描单元23和消息总线单元24,服务器端3中的服务器端 数据库31和服务器端数据库连接单元32。这里,当客户端1启动消息服务器2时,消息服务器2将从客户端1接收 的消息事件转发给消息队列单元21,消息队列单元21通过消息事件来激活时 间调度单元22。并且,消息队列单元21通过消息事件驱动时间调度单元22定 时或周期性地调用扫描单元23,使扫描单元23执行扫描程序。扫描单元23通 过服务器端数据库连接单元32对服务器端数据库31表中的数据进行扫描读取 后,将扫描读取的数据经由消息总线单元24以及通过客户端数据库连接单元 12,将扫描读取的数据及时同步到客户端1的客户端数据库11。系统实施例二为将时间调度单元和扫描单元部署在客户端中的情况。 如图2所示,本实施例中,实现数据同步的系统包括客户端l中的客户端数据库ll、客户端数据库连接单元12、时间调度单元22和扫描单元23,消 息服务器2中的消息总线单元24,服务器端3中的服务器端数据库31和服务 器端数据库连接单元32。这里,当客户端1启动消息服务器2时,由客户端1直接驱动时间调度单 元22定时或周期性地调用扫描单元23,使扫描单元23执行扫描程序。扫描单描读取后,服务器端数据库连接单元32将扫描读取的数据返回消息总线单元 24,经由消息总线单元24以及通过客户端数据库连接单元12,将扫描读取的 数据及时同步到客户端1的客户端数据库11。对比系统实施例一与系统实施例二可知,系统实施例一中,当客户端1启 动消息服务器2时,消息服务器2将从客户端1接收的消息事件转发给消息队 列单元21,消息队列单元21通过消息事件来激活时间调度单元22。并且,消 息队列单元21通过消息事件驱动时间调度单元22定时或周期性地调用扫描单 元23,使扫描单元23执行扫描程序对服务器端数据库31表中的数据进行扫描 读取后,将服务器端3的数据及时同步到客户端1。系统实施例二中,由于将时间调度单元22和扫描单元23直接部署在客户 端1,因此当客户端1启动消息服务器2时,可以由客户端1直接驱动时间调 度单元22定时或周期性地调用扫描单元23 ,使扫描单元23执行扫描程序对服 务器端数据库31表中的数据进行扫描读取后,将服务器端3的数据及时同步到 客户端1。这里的消息服务器2只负责数据的接收和发送。那么,客户端l可 灵活地实现对时间调度单元22进行控制,而不影响消息服务器2对数据的接收 和发送。如图3所示, 一种实现数据同步的方法,该方法包括以下步骤步骤101、客户端启动消息服务器后,激活并驱动时间调度单元;时间调度单元调用扫描单元来执行扫描程序。步骤102、客户端向服务器端请求读取服务器端数据库表读权限的认证,服务器端将读权限的认证结果返回客户端;当认证结果为认证成功时,扫描单元开始对服务器端数据库表中的数据进行扫描读取。步骤103、服务器端数据库将当前扫描读取的数据同步到客户端的客户端 数据库。方法实施例一为以图1所示的实现数据同步的系统为例,本实施例基于 该系统实现数据同步的方法包括以下步骤步骤201、客户端启动消息服务器后,消息服务器初始化,并通过内嵌初 始化程序将从客户端接收的字符串转换成消息事件,向消息队列单元发送该消 息事件。步骤202、消息队列单元通过该消息事件激活并驱动时间调度单元定时或 周期性地调用扫描单元,使扫描单元执行扫描程序。这里,扫描单元执行扫描程序时,扫描单元可以根据不同扫描策略执行对 服务器端数据库表中数据的扫描读取。具体包括两种情况。第一种情况是,当扫描策略为全量数据扫描策略时,扫描单元可以通过配 置文件读取扫描策略模块中的全量数据扫描策略后,通过服务器端数据库连接 单元连接到服务器端数据库,执行对服务器端数据库表中数据的全量数据扫描。 并且配置数据的输入端口、数据的输出端口、扫描的表名称、需扫描的表字段 的名称。通过数据库连接模块连接到服务器端数据库扫描数据。第二种情况是,当扫描策略为增量数据扫描策略时,扫描单元可以通过配 置文件读取扫描策略才莫块中的增量数据扫描策略后,通过服务器端数据库连接 单元连接到服务器端数据库,执行对服务器端lt据库表中数据的增量数据扫描。 并且配置数据的输入端口、数据的输出端口、扫描的表名称、需扫描的表字段 的名称。通过数据库连接模块连接到服务器端数据库扫描数据。步骤203、客户端向服务器端发送请求读权限认证的请求消息,并向服务 器端请求读取服务器端数据库表读权限的认证,服务器端将读权限的认证结果 返回客户端;如果读权限的认证结果为认证成功,则执行步骤204;否则,读 权限的认证结果为认证不成功,客户端重新配置向服务器端请求读权限认证的 请求消息后,转入执行步骤201 。这里,针对读权限的认证而言,认证方式包括两种情况。以下分别阐述。 第一种情况是通过账号进行认证。具体来说,客户端和服务器端事先约定 好账号,如果客户端向服务器端发送的请求读权限认证的请求消息中包括了该 账号,则服务器端解析出该账号就可以判定该客户端有读权限。第二种情况是 通过IP地址进行认证。具体来说,服务器端事先知道IP地址对应的客户端是 否有读权限,那么,当服务器端收到从与该IP地址对应的客户端发来的该请求 消息时,根据该IP地址就可以判定该客户端是否有读权限。步骤204、扫描单元通过服务器端数据库连接单元连接到服务器端数据库, 开始对服务器端数据库表中的数据进行扫描读取。服务器端数据库将扫描读取 的数据返回扫描单元。步骤205、扫描单元将当前扫描读取的数据转换成消息事件的形式,之后 分批推入消息总线单元。消息总线单元通过客户端数据库连接单元,将当前扫 描读取的数据同步到客户端的客户端数据库。以下对步骤202中涉及到的第一种情况进行具体阐述。当数据同步初始化或者同步的数据量较少时,可以釆用全量扫描策略。那 么第 一种情况的具体实现流程包括以下步骤步骤20211、采用全量扫描策略,开始执行对服务器端数据库表中数据的 全量数据扫描读取。步骤20212、判断是否需要设置扫描次数,如果需要,则执行步骤20213; 否则,执行步骤20216。这里需要指出的是,根据业务需求在扫描过程中可以设置对服务器端数据 库表以次数全量扫描的方式或以循环全量扫描的方式。步骤20213、以次数全量扫描的方式对服务器端数据库表中的数据进行扫 描读取。将当前扫描读取的数据推入消息总线单元。步骤20214、判断客户端数据库表中是否存在该扫描读取的数据,如果存 在,则更新客户端数据库表中该数据,之后执行步骤20215;否则,将该扫描 读取的数据写入到客户端数据库表中,之后执行步骤20215。步骤20215、判断扫描次数是否为零,如果是,则结束当前全量数据扫描 读取的流程;否则,转入^U亍20213。步骤20216、以循环全量扫描的方式对服务器端数据库表中的数据进行扫 描读取。将当前扫描读取的数据推入消息总线单元。步骤20217、判断客户端数据库表中是否存在该扫描读取的数据,如果存 在,则更新客户端数据库表中该数据,之后结束当前全量数据扫描读取的流程; 否则,将该扫描读取的数据写入到客户端数据库表中,之后结束当前全量数据 扫描读取的流程。以下对步骤202中涉及到的第二种情况进行具体阐述。当同步的数据量较多时,可以采用增量数据扫描策略。那么第二种情况的 具体实现流程包括以下步骤步骤20221、采用增量数据扫描策略,开始执行对服务器端数据库表中数 据的增量数据扫描读取。步骤20222、判断服务器端数据库表中是否存在唯一标识列值比如时间戳, 如果存在,则执行步骤20223;否则,执行步骤20227。这里,标识列值用于标识表中的每行数据。步骤20223、从服务器端的配置表中获取上次扫描读取处理的最大唯一标 i口、歹lH直,i己为max Value 。步骤20224、周期性地从服务器端数据库表中获取唯一标识列值大于 max Value的数据。步骤20225、判断从服务器端数据库表中获取数据的对应记录数是否为零, 如果为零,则结束当前增量数据扫描读取的流程;否则,执行步骤20226。步骤20226、将当前扫描读取的数据推入消息总线单元。判断客户端数据 库表中是否存在该扫描读取的数据,如果存在,则更新客户端数据库表中该数 据,更新唯一标识列值和配置表中的maxValue,之后结束当前增量数据扫描读 取的流程;否则,将该扫描读取的数据写入到客户端数据库表中,更新唯一标 识列值和配置表中的maxValue,之后结束当前增量数据扫描读取的流程。步骤20227、通过哈希(Hash)算法,将服务器端数据库表中每行数据算 出 一个唯一 Hash值。将该算出的唯一 Hash值存入哈希表HashMap中并置入緩存。步骤20228、周期性地从服务器端数据库表中获取数据后,判断该数据对 应的Hash值是否存在于HashMap中,如果存在,则结束当前增量数据扫描读 取的流程;否则,扭j亍步骤20229。步骤20229、将当前扫描读取的数据推入消息总线单元,并将该数据对应 的Hash值写入HashMap。判断客户端数据库表中是否存在该扫描读取的数据, 如果存在,则更新客户端数据库表中该数据,之后结束当前增量数据扫描读取 的流程;否则,将该扫描读取的数据写入到客户端数据库表中,之后结束当前 增量数据扫描读取的流程。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种实现数据同步的系统,该系统包括客户端数据库、客户端数据库连接单元、消息服务器、服务器端数据库、服务器端数据库连接单元、消息总线单元,其特征在于,该系统还包括时间调度单元和扫描单元;其中,时间调度单元,用于定时或周期性地调用所述扫描单元,使扫描单元执行扫描程序;扫描单元,用于根据所述时间调度单元的调用执行扫描程序,并通过所述服务器端数据库连接单元对所述服务器端数据库表中的数据进行扫描读取后,经由所述消息服务器中的所述消息总线单元以及通过所述客户端数据库连接单元,将所述扫描读取的数据同步到客户端的所述客户端数据库。
2、 根据权利要求1所述的系统,其特征在于,所述时间调度单元和所述扫 描单元在所述消息服务器中,该系统还包括消息队列单元,用于在客户端启动 所述消息服务器后,^v所述客户端接收消息事件;通过所述消息事件来激活和 驱动所述时间调度单元。
3、 根据权利要求1所述的系统,其特征在于,所述时间调度单元和所述扫 描单元在客户端中,所述客户端用于在客户端启动所述消息服务器时,直接激 活和驱动所述时间调度单元。
4、 根据权利要求1至3中任一项所述的系统,其特征在于,所述扫描单元 还包括扫描策略模块,用于存储全量数据扫描策略和增量ft据扫描策略;所述扫描单元通过读取所述扫描策略模块中的所述全量数据扫描策略,执 行对所述服务器端it据库表中数据的全量数据扫描;或者,所述扫描单元通过 读取所述扫描策略模块中的增量数据扫描策略,执行对所述服务器端数据库表 中数据的增量数据扫描。
5、 根据权利要求4所述的系统,其特征在于,所述消息服务器为独立部署 的部件,或者与所述客户端和服务器端部署在一起的部件。
6、 一种实现数据同步的方法,其特征在于,该方法包括以下步骤A、 客户端启动消息服务器后,激活并驱动时间调度单元;所述时间调度 单元调用扫描单元来执行扫描程序;B、 所述客户端向服务器端请求读取服务器端数据库表读权限的认证,所 述服务器端将读权限的认证结果返回客户端;当所述认证结果为认证成功时, 扫描单元开始对所述服务器端数据库表中的数据进行扫描读取;之后,所述服 务器端数据库将当前扫描读取的数据同步到客户端的客户端数据库。
7、 根据权利要求6所述的方法,其特征在于,步骤A中,所述时间调度 单元进一步定时或周期性地调用扫描单元来执行扫描程序。
8、 根据权利要求6或7所述的方法,其特征在于,步骤B中,所述服务 器端数据库将当前扫描读取的数据同步到客户端的客户端数据库具体为Bl、所述服务器端数据库将当前扫描读取的数据返回所述扫描单元;B2、扫描单元将所述当前扫描读取的数据转换成消息事件的形式后,分批推入消息总线单元;消息总线单元通过客户端数据库连"l娄单元,将当前扫描读取的数据同步到所述客户端的客户端数据库。
9、 根据权利要求6或7所述的方法,其特征在于,步骤A中,所述扫描 单元来执行扫描程序进一步为Al、根据当前业务需求采用不同的扫描策略来执行扫描程序,并执行对所 述服务器端数据库表中数据的扫描读取。
10、 根据权利要求9所述的方法,其特征在于,当采用的扫描策略为全量 数据扫描策略时候,步骤A1具体为所述扫描单元读取扫描策略模块中的全量数据扫描策略后,通过服务器端 数据库连接单元连接到服务器端数据库,执行对所述服务器端数据库表中数据 的全量数据扫描。
11、 根据权利要求9所述的方法,其特征在于,当采用的扫描策略为增量 数据扫描策略时,步骤A1具体为扫描单元读取扫描策略模块中的增量数据扫描策略后,通过服务器端数据 库连接单元连接到服务器端数据库,执行对所述服务器端数据库表中数据的增量数据扫描。
全文摘要
本发明公开了一种实现数据同步的系统,该系统包括客户端数据库、客户端数据库连接单元、消息服务器、服务器端数据库、服务器端数据库连接单元、消息总线单元、时间调度单元和扫描单元。其中,扫描单元用于根据时间调度单元的调用执行扫描程序,并通过服务器端数据库连接单元对服务器端数据库表中的数据进行扫描读取后,经由消息服务器中的消息总线单元以及通过客户端数据库连接单元,将扫描读取的数据同步到客户端的客户端数据库。本发明还公开了一种实现数据同步的方法。采用本发明的系统及方法,能高效率地实现数据同步,并将服务器端数据库表中的数据及时同步到客户端。从而提高了客户端的数据处理效率。
文档编号H04L12/54GK101227379SQ200810056908
公开日2008年7月23日 申请日期2008年1月25日 优先权日2008年1月25日
发明者琦 袁 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1