发明内容
本发明实施例提供一种数据同步的方法及系统,用以在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能够保证物理数据库中的数据和内存数据中的数据一致,从而提高用户查询结果的准确性。
本发明实施例提供一种数据同步的方法,包括:
同步服务器接收物理数据库发送的待同步数据;
所述同步服务器根据所述待同步数据的属性信息查询订阅信息,得到所述待同步数据对应的同步客户端以及目标内存数据库;
所述同步服务器将所述待同步数据分发到所述待同步数据对应的同步客户端,以使所述待同步数据对应的同步客户端将所述待同步数据同步到所述待同步数据对应的目标内存数据库中。
较佳的,还包括:所述物理数据库发生数据更新,将更新后的数据发送给与其连接的数据处理器;所述数据处理器将接收到的数据发送给所述同步服务器,所述数据处理器与至少一个物理数据库连接。
较佳的,所述数据处理器将接收到的数据发送给所述同步服务器之前,还包括:所述数据处理器根据需要订阅的数据的属性信息对接收到的数据进行过滤,得到所述待同步数据。
较佳的,所述订阅信息的订阅过程包括:所述同步客户端向所述同步服务器发送订阅请求,所述订阅请求中携带所述需要订阅的数据的属性信息。
较佳的,所述同步服务器将所述待同步数据分发到所述待同步数据对应的同步客户端之后,还包括:所述同步客户端将所述待同步数据转换为键值对;所述同步客户端将转换得到的键值对同步到与其相对应的目标内存数据库中。
本发明实施例提供的一种数据同步的系统,包括:同步服务器,同步客户端,所述同步服务器包括:
接收模块,用于接收物理数据库发送的待同步数据;
查询模块,用于根据所述待同步数据的属性信息查询订阅信息,得到所述待同步数据对应的同步客户端以及目标内存数据库;分发模块,用于将所述待同步数据分发到所述待同步数据对应的同步客户端,以使所述待同步数据对应的同步客户端将所述待同步数据同步到所述待同步数据对应的目标内存数据库中。
较佳的,还包括:数据处理器,
所述物理数据库发生数据更新,将更新后的数据发送给与其连接的所述数据处理器;
所述数据处理器,用于将接收到的数据发送给所述同步服务器,所述数据处理器与至少一个物理数据库连接。
较佳的,所述数据处理器,还用于:将接收到的数据发送给所述同步服务器之前,根据需要订阅的数据的属性信息对接收到的数据进行过滤,得到所述待同步数据。
较佳的,所述同步客户端包括:
订阅模块,用于向所述同步服务器发送订阅请求,所述订阅请求中携带所述需要订阅的数据的属性信息。
较佳的,所述同步客户端还包括:
同步模块,用于在接收到所述同步服务器发送的所述待同步数据之后,将所述待同步数据转换为键值对,将转换得到的键值对同步到与其相对应的目标内存数据库中。
本发明实施例中,同步服务器首先接收物理数据库发送的待同步数据,然后根据待同步数据的属性信息查询订阅信息,得到待同步数据对应的同步客户端以及目标内存数据库,最后将待同步数据分发到待同步数据对应的同步客户端,以使待同步数据对应的同步客户端将待同步数据同步到待同步数据对应的目标内存数据库中,可以看出,本发明实施例中数据同步的方法及系统通过同步服务器接收物理数据库发送的待同步数据,即可将接收到的待同步数据发送给同步客户端,并由同步客户端同步到目标内存数据库中;不需要利用应用程序进行数据同步,也不需要通过应用程序将同步的数据转换成键值对的格式。因此,本发明实施例中的技术方案,在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能保证物理数据库中的数据和内存数据中的数据一致,从而提高用户查询结果的准确性。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
本发明实施例中同步服务器与同步客户端可以设置在同一设备中,也可以设置于不同的设备中,当设置在不同的设备中时,同步服务器与同步客户端可以通过有线或者无线的方式进行通信。所使用的无线通信方式可包括但不限于Wi-Fi(Wireless Fidelity,无线保真)、蓝牙(Bluetooth)、3G(3rd Generation MobileCommunication Technology,第三代移动通信技术,简称3G)或4G(4thGeneration Mobile Communication Technology,第三代移动通信技术,简称4G)等方式;所使用的有线通信方式可以包括光纤通信技术。
另外,现有技术的主从数据库同步,主要是通过从数据库对主数据库中修改的数据进行备份,当主数据库中有数据损坏或者无法修复的时候,可以通过从数据库中备份的数据对主数据库进行修复等操作。本发明实施例中的数据处理器不仅能够同步一个物理数据库中的数据,还能够通过在数据处理器中存储多个物理数据库的配置参数,这里,物理数据库的配置参数可以为:物理数据库的名称,地址,端口,密码等,然后根据存储的多个物理数据库的配置参数中的地址和端口能够链接到多个物理数据库,从而当多个物理数据库中的数据有更新的时候,能够接收多个物理数据库发生更新后的数据。如图1所示,为本发明实施例提供的一种数据同步的方法,包括:
S101、同步服务器接收物理数据库发送的待同步数据。其中待同步数据是物理数据库发生数据更新后将更新后的数据发送给同步服务器的。
S102、同步服务器根据待同步数据的属性信息查询订阅信息,得到待同步数据对应的同步客户端以及目标内存数据库。其中,订阅信息是同步客户端预先订阅的,订阅信息包括:待同步数据的属性信息与同步客户端以及目标内存数据库的对应关系。
进一步地,若同步服务器根据待同步数据的属性信息未查询到订阅信息或者查询到的订阅信息的内容为空或者所查询到的订阅信息的内容为错误的订阅信息,则返回到步骤S101。
S103、同步服务器将待同步数据分发到待同步数据对应的同步客户端,以使待同步数据对应的同步客户端将待同步数据同步到待同步数据对应的目标内存数据库中。
上述流程中,所述待同步数据的属性信息可以为表名称或表标识,也可以是数据的类型、字段名称等,例如,待同步数据的属性信息可以是微信账号信息表的标识。
上述流程中,所述订阅信息是同步服务器根据同步客户端发起的订阅请求得到的。订阅信息中包括:待同步数据的属性信息与同步客户端以及目标内存数据库的对应关系,比如,订阅信息可包括:表标识与同步客户端的标识信息以及内存数据库的标识信息的对应关系。其中,同步客户端的标识信息可以为同步客户端的参数配置信息,例如同步客户端自身的序列号等;目标内存数据的标识信息可以目标内存数据库的配置信息,例如内存数据库的标识、内存数据库的地址以及内存数据库的端口等可唯一标识内存数据库的信息。
举例来说,以下代码示出了一种订阅信息的内容:
上述代码所示的订阅信息中,表名称为:微信账号信息表,对应的目标内存数据库的地址为127.0.0.1,端口为:6379,对应的同步客户端的序列号为:synclient_111。根据该订阅信息,当物理数据库中的微信账号信息表中的数据更新时,需要将该微信账号信息表中更新的数据通过序列号为synclient_111的客户端同步到地址为127.0.0.1、端口为6379的目标内存数据库中。
为了增加同步客户端和同步服务器的灵活性,上述的订阅信息可以采取XML(Extensible Markup Language,扩展标记语言)格式的文件进行存储,当然也可以采用其它的文件格式进行存储,例如TXT(Textfile,文本文件)。
其中,上述订阅信息的订阅过程可以包括:同步客户端向同步服务器发送订阅请求,订阅请求中携带所述需要订阅的数据的属性信息,同步服务器根据订阅请求中携带的需要订阅的数据的属性信息以及同步客户端的标识信息生成订阅信息。
进一步地,同步客户端接收到同步服务器发送的所述待同步数据之后,可将待同步数据转换为键值对(Key-Value);将转换得到的键值对同步到目标内存数据库中。
本发明实施例基于物理数据库中主数据库/从数据库的架构实现数据同步,其中,物理数据库可基于数据库系统内置的触发机制,当有数据更新时,将发生更新的数据作为发送给数据处理器,数据处理器可以根据需要订阅的数据局的属性信息对接收到的数据进行过滤后,得到待同步数据,然后由数据处理器待同步数据发送给同步服务器。下面结合图2、图3分别描述上述流程。
如图2所示,为同步服务器接收数据处理器发送的待同步数据的具体过程,该过程可包括:
S201、同步服务器接收数据处理器发送的待同步数据。
S202、同步服务器将接收到的待同步数据进行解析,得到待同步数据的属性信息;同步服务器得到待同步数据的属性信息后,返回到步骤S201。
进一步地,同步服务器得到待同步数据的属性信息后,可以通过消息队列将得到的待同步数据的属性信息进行存储。
进一步地,为了扩大同步数据的范围,数据处理器可以接收多个物理数据库发送的数据。
其中,数据处理器中根据需要订阅的数据的属性信息对接收到的数据进行过滤,可以减少同步服务器的查询时间以及节省同步服务器的存储空间,例如,当物理数据库中有五个表中的数据发生了更新,五个表的表标识分别为:表_1、表_2、表_3、表_4、表_5,而需要订阅的数据的属性信息为表标识:表_1和表_2,则数据处理器接收物理数据库发送的更新后的5个表的数据后,根据需要订阅的表的表标识:表_1和表_2,保留表_1和表_2中的数据,而丢弃表_3、表_4和表_5中的数据,然后将保留的表_1和表_2中的数据发送给同步服务器。
为了便于数据处理器根据需要订阅的数据的属性信息对接收的数据进行过滤,从而能够提高数据同步的速度。数据处理器还可以对接收到的数据进行格式转换,例如,若接收的数据为数据包或者字节流,则可以将接收到的数据包或者字节流转换成数据表的格式。
如图3所示,为数据处理器接收物理数据库发送的数据的具体过程,该过程可包括:
S301、数据处理器接收物理数据库发生数据更新后发送的更新后的数据。
S302、数据处理器将接收到的数据进行格式转换。
S303、数据处理器根据需要订阅的数据的属性信息对格式转换后的数据进行过滤,得到待同步数据;数据处理器得到待同步数据后,返回到步骤S301。
如图4所示,为本发明实施例中同步客户端将接收的待同步数据同步到目标内存数据库的具体过程,该过程可包括:
S401、同步客户端接收同步服务器根据订阅请求中所携带的需要订阅的数据的属性信息所发送的待同步数据。
S402、同步客户端将接收的待同步数据转换为键值对。
S403、同步客户端将转换得到的键值对同步到目标内存数据库中。同步客户端将转换得到的键值对同步到目标内存数据库后,返回到步骤S401。
上述内容对本发明实施例提供的数据同步的方法中的几个流程进行了详细的介绍,通过本发明实施例提供的数据同步的方法,由同步服务器接收物理数据库发送的待同步数据,然后将接收到的待同步数据发送给同步客户端,并由同步客户端同步到目标内存数据库中;可以看出,不需要利用应用程序进行数据同步,也不需要通过应用程序将同步的数据转换成键值对的格式。因此,在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能保证物理数据库中的数据和内存数据中的数据一致,提高用户查询结果的准确性。另外,本发明实施例中的数据处理器,能接收多个物理数据库发生更新后所发送的更新后的数据,从而还能够扩大同步数据的范围。
下面通过本发明的一个优选实施例,对本发明实施提供的数据同步的方法进行详细的说明。
假设物理数据库中所存储的三个表在更新前的数据信息如下:
学生成绩表
标识 |
姓名 |
语文 |
数学 |
英语 |
物理 |
化学 |
生物 |
101 |
张三 |
0 |
0 |
0 |
0 |
0 |
0 |
102 |
李四 |
0 |
0 |
0 |
0 |
0 |
0 |
103 |
王小 |
0 |
0 |
0 |
800 |
0 |
0 |
用户手机套餐表
标识 |
姓名 |
套餐 |
已用流量(M) |
话费(元) |
201 |
张超 |
A |
0 |
0 |
202 |
王语 |
B |
0 |
0 |
203 |
李斯 |
C |
0 |
0 |
微信账号信息表
物理数据库中所存储的三个表在更新后的数据信息如下:
学生成绩表
标识 |
姓名 |
语文 |
数学 |
英语 |
物理 |
化学 |
生物 |
101 |
张三 |
90 |
90 |
90 |
90 |
90 |
90 |
102 |
李四 |
85 |
85 |
85 |
85 |
85 |
85 |
103 |
王小 |
80 |
80 |
80 |
80 |
80 |
80 |
用户手机套餐表
标识 |
姓名 |
套餐 |
已用流量(M) |
话费(元) |
201 |
张超 |
A |
100 |
100 |
202 |
王语 |
B |
80 |
80 |
203 |
李斯 |
C |
50 |
50 |
微信账号信息表
进一步假设:端口号为6377、地址为127.0.0.1的内存数据库存储有更新前的学生成绩表;端口号为6378,地址为127.0.0.1的内存数据库存储有更新前的用户手机套餐表;端口号为6379、地址为127.0.0.1的内存数据库中存储有更新前的微信账号信息表。
进一步假设:只有端口号为6379、地址为127.0.0.1的内存数据库需要同步微信账号信息表,其余内存数据库不需要进行数据的同步,则端口号为6379、地址为127.0.0.1的内存数据库需要将同步的微信账号信息表以及自身的端口号和地址发送到标识信息为synclient_111的同步客户端,标识信息为synclient_111的同步客户端将接收到的信息发送给同步服务器,同步服务器根据根据上述信息生成订阅信息,该订阅信息中包含端口号为6379、地址为127.0.0.1的内存数据库与表名称为微信账号信息表以及标识为synclient_111的同步客户端的对应关系。
物理数据库将更新后的微信账号信息表中的数据同步到端口号为6379、地址为127.0.0.1的内存数据库的过程,如图5所示,该过程可包括:
S501、物理数据库将更新后的学生成绩表、用户手机套餐表以及微信账号信息表的数据信息发送给数据处理器。
S502、数据处理器将接收到的更新后的学生成绩表、用户手机套餐表以及微信账号信息表的数据根据订阅信息中的表名称:微信账号信息表对接收的数据进行过滤,保留微信账号信息表中的数据,而将接收的其余的两个表:学生成绩表和用户手机套餐表的数据丢弃。
S503、数据处理器将保留的更新后的微信账号信息表中的数据发送到同步服务器。
S504、同步服务器根据订阅信息中的表名称:微信账号信息表查询所述订阅信息,得到标识为synclient_111的同步客户端订阅了该表。
S505、同步服务器根据订阅信息,将更新后的微信账号信息表中的数据发送给标识为synclient_111的同步客户端。
S506、标识为synclient_111的同步客户端将更新后的微信账号信息表的数据转换为键值对。
S507、同步客户端将根据订阅信息将转换得到的键值对同步到端口号为6379、地址为127.0.0.1的内存数据库中。
通过上述优选实施例提供的数据同步的方法,由同步服务器接收物理数据库发送的待同步数据,然后将接收到的待同步数据发送给同步客户端,并由同步客户端同步到目标内存数据库中;可以看出,不需要利用应用程序进行数据同步,也不需要通过应用程序将同步的数据转换成键值对的格式。因此,在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能保证物理数据库中的数据和内存数据中的数据一致,提高用户查询结果的准确性。另外,上述优选实施例中的数据处理器根据需要订阅的表的表名称:微信账号信息表,对接收的三个表中的数据进行过滤,从而还能够提高数据同步的速度。
基于相同的技术构思,本发明实施例还提供一种数据同步系统,该系统可以用于执行上述方法实施例。
如图6所示,为本发明实施例提供的一种数据同步的系统,包括:同步服务器61,同步客户端62,所述同步服务器61包括:
接收模块611,用于接收物理数据库发送的待同步数据。
其中,所述待同步数据是物理数据库发生数据更新后所发送的。
查询模块612,用于根据所述待同步数据的属性信息查询订阅信息,得到所述待同步数据对应的同步客户端以及目标内存数据库。其中,所述订阅信息是所述同步客户端预先订阅的,所述订阅信息包括:待同步数据的属性信息与同步客户端以及目标内存数据库的对应关系;
分发模块613,用于将所述待同步数据分发到所述待同步数据对应的同步客户端,以使所述待同步数据对应的同步客户端将所述待同步数据同步到所述待同步数据对应的目标内存数据库中。
优选地,还包括:数据处理器(未在图中示出),用于接收多个物理数据库发生数据更新后所发送更新后的数据,所述数据处理器与至少一个物理数据库连接。
优选地,所述数据处理器,还用于将接收到的数据发送给所述同步服务器61。
优选地,所述同步客户端62包括:
订阅模块621,用于向所述同步服务器发送订阅请求,所述订阅请求中携带需要订阅的数据的属性信息。
同步客户端62还包括:
同步模块622,用于在接收到所述同步服务器发送的所述待同步数据之后,将所述待同步数据转换为键值对,将转换得到的键值对同步到所述目标内存数据库中。
通过本发明实施例提供的一种数据同步的系统,由同步服务器接收物理数据库发送的待同步数据,然后将接收到的待同步数据发送给同步客户端,并由同步客户端同步到目标内存数据库中;可以看出,不需要利用应用程序进行数据同步,也不需要通过应用程序将同步的数据转换成键值对的格式。因此,在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能保证物理数据库中的数据和内存数据中的数据一致,提高用户查询结果的准确性。另外,本发明实施例中的数据处理器,能接收多个物理数据库发生更新后所发送的更新后的数据,从而还能够扩大同步数据的范围。
图7为本发明另一实施例提供的一种数据同步系统的示意图。
如图7所示,存储器710,用于接收物理数据库发送的待同步数据。其中,所述待同步数据是物理数据库发生数据更新后所发送的。
处理器720,用于根据所述待同步数据的属性信息查询订阅信息,得到所述待同步数据对应的同步客户端以及目标内存数据库。其中,所述订阅信息是所述同步客户端预先订阅的,所述订阅信息包括:待同步数据的属性信息与同步客户端以及目标内存数据库的对应关系;
处理器720,用于将所述待同步数据分发到所述待同步数据对应的同步客户端,以使所述待同步数据对应的同步客户端将所述待同步数据同步到所述待同步数据对应的目标内存数据库中。
优选地,所述存储器710,用于接收多个物理数据库发生数据更新后所发送更新后的数据,所述数据处理器与至少一个物理数据库连接。
优选地,处理器720,还用于将接收到的数据发送给所述同步服务器。
优选地,存储器710,用于向所述同步服务器发送订阅请求,所述订阅请求中携带所述需要订阅的数据的属性信息。处理器720,用于在接收到所述同步服务器发送的所述待同步数据之后,将所述待同步数据转换为键值对,将转换得到的键值对同步到所述目标内存数据库中。
其中,在图7中,总线构架可以包括任意数量的互联的总线和桥,具体由处理器720的一个或多个处理器和存储器710代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器720负责管理总线架构和通常的处理,存储器710可以存储处理器720在执行操作时所使用的数据。针对不同的用户设备,用户接口740还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、扬声器、麦克风、操纵杆等。显示器730可以是CRT(CathodeRay Tube,阴极射线管)、PDP(Plasma Display Panel,等离子显示器)、DLP(Digital Light Procession,数字光处理)或LCD(Liquid Crystal Display,液晶显示屏)等显示装置。
综上,通过本发明实施例提供的一种数据同步的方法及系统,同步服务器首先接收物理数据库发送的待同步数据,然后根据待同步数据的属性信息查询订阅信息,得到待同步数据对应的同步客户端以及目标内存数据库,最后将待同步数据分发到待同步数据对应的同步客户端,以使待同步数据对应的同步客户端将待同步数据同步到待同步数据对应的目标内存数据库中,可以看出,本发明实施例中数据同步的方法及系统通过同步服务器接收物理数据库发送的待同步数据,即可将接收到的待同步数据发送给同步客户端,并由同步客户端同步到目标内存数据库中;不需要利用应用程序进行数据同步,也不需要通过应用程序将同步的数据转换成键值对的格式。因此,本发明实施例中的技术方案,在降低数据同步操作与应用程序的耦合度,提高系统的可扩展性的同时,还能保证物理数据库中的数据和内存数据中的数据一致,从而提高用户查询结果的准确性。另外,本发明实施例中的数据处理器,能接收多个物理数据库发生更新后所发送的更新后的数据,从而还能够扩大同步数据的范围。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。