CN109376160B - 数据同步方法、装置、计算机设备及存储介质 - Google Patents
数据同步方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109376160B CN109376160B CN201810953540.XA CN201810953540A CN109376160B CN 109376160 B CN109376160 B CN 109376160B CN 201810953540 A CN201810953540 A CN 201810953540A CN 109376160 B CN109376160 B CN 109376160B
- Authority
- CN
- China
- Prior art keywords
- data
- child node
- node
- synchronization
- data synchronization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000007246 mechanism Effects 0.000 claims abstract description 18
- 230000005540 biological transmission Effects 0.000 claims description 26
- 238000012795 verification Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 14
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 239000000284 extract Substances 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 abstract description 8
- 238000007726 management method Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013496 data integrity verification Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 235000020069 metaxa Nutrition 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法、装置、计算机设备及存储介质,所述方法包括:若中心节点检测到中心数据库有更新,则向子节点发送同步请求,其中,同步请求包括数据同步参数;子节点根据接收到的数据同步参数,采用反射机制,获取表字段类型;子节点根据表字段类型,将数据同步参数进行拼接,生成SQL语句;子节点执行SQL语句,更新节点数据库。本发明的技术方案利用反射机制,获取表字段相关的信息,动态拼接成SQL语句,减少表操作语句代码,使得维护各子系统API接口变得更加简单,同时,集中管理公共数据,减少维护成本。
Description
技术领域
本发明涉及信息处理领域,尤其涉及一种数据同步方法、装置、计算机设备及存储介质。
背景技术
在分布式数据库应用系统中,存在一些公共的数据需要集中管理、统一维护。因而,通常将这些数据存放到某个中心节点上,该中心节点被称为父系统,或基础数据公共系统;而与之相对应的,其他节点称为子系统。
当子系统需要访问公共数据时,向父系统发起请求;当请求量大的时候,父系统的访问压力骤增。为了缓解父系统的访问压力,通常将公共数据备份到有相关业务的子系统中,由各子系统直接访问本地的数据即可。
这样带来一个问题:父子系统上的公共数据同步问题,即当父系统中公共数据修改后,子系统上的公共数据需要与父系统保持一致。由于公共数据涉及的表众多,对子系统每个表进行批量数据修改操作,使得开发成本增大,同时,数据维护成本高。
发明内容
本发明实施例提供一种数据同步方法、装置、计算机设备及存储介质,以解决分布式数据库应用系统中,中心节点和子节点之间数据同步的维护成本高的问题。
一种数据同步方法,包括:
子节点接收中心节点发送的同步请求,所述同步请求包括数据同步参数,且所述同步请求为所述中心节点检测到中心数据库有更新后发送;
所述子节点根据接收到的所述数据同步参数,采用反射机制,获取表字段类型;
所述子节点根据所述表字段类型,将所述数据同步参数进行拼接,生成SQL语句;
所述子节点执行所述SQL语句,更新所述子节点的节点数据库。
一种数据同步装置,包括:
接收模块,用于接收中心节点发送的同步请求,所述同步请求包括数据同步参数,且所述同步请求为所述中心节点检测到中心数据库有更新后发送;
生成表字段模块,用于根据接收到的所述数据同步参数,采用反射机制,获取表字段类型;
拼接模块,用于根据所述表字段类型,将所述数据同步参数进行拼接,生成SQL语句;
更新模块,用于执行所述SQL语句,更新所述子节点的节点数据库。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据同步方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据同步方法的步骤。
上述数据同步方法、装置、计算机设备及存储介质,在分布式数据库应用系统中,中心节点将同步请求下发给子节点,子节点采用反射机制,根据同步请求中的数据同步参数,获取表字段,使得子节点可以及时获取中心节点所更新的表包括哪些表字段;然后将表字段与同步请求中的数据同步参数进行拼接,生成SQL语句,最后由子节点执行生成的SQL语句,从而完成节点数据库的更新,使得子节点能自动完成与中心节点数据库的同步,大量减少在子节点开发SQL语句的工作量,节省开发成本;同时,降低了中心节点与子节点数据同步的维护成本,便于数据维护和系统升级。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据同步方法的一应用环境示意图;
图2是本发明一实施例中数据同步方法的流程图;
图3是本发明一实施例中数据同步方法中数据完整性校验的流程图;
图4是本发明一实施例中数据同步方法中数据完整性校验失败后请求数据重发的流程图;
图5是本发明一实施例中数据同步方法中节点数据库更新的流程图;
图6是本发明一实施例中数据同步方法中节点数据库更新失败后请求数据重发的流程图;
图7是本发明一实施例中数据同步装置的示意图;
图8是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据同步方法,可应用在如图1的分布式数据库应用系统中,其中,中心节点处于分布式数据库应用系统的中心,子节点与中心节点相连;中心节点和子节点可以是服务器,中心节点与中心数据库相连,子节点与节点数据库相连,中心数据库和节点数据库是各自独立的;中心节点负责对其上的数据进行修改、管理和维护,主要是通过对数据表的操作来实现,子节点须与中心节点进行数据同步。例如,中心节点上有数据表A和数据表B,当中心节点对数据表A和数据表B进行了更新操作时,则子节点中有数据表A和数据表B,或有其中之一的子节点,须要更新本地节点数据库,与中心节点进行数据同步,子节点中的其他数据表,如数据表C、数据表D则不需要更新。中心数据库和节点数据库可以使用相同的数据库管理系统,也可以使用不同的数据库管理系统。数据库包括关系型数据库和非关系型数据库,具体的数据库管理系统包括但不限于MS-SQL、Oracle、MySQL、Sybase、DB2、NoSQL、Redis、MongoDB等。本发明实施例提供的数据同步方法应用于子节点。
在一实施例中,如图2所示,提供了一种数据同步方法,其具体实现流程包括如下步骤:
S1:子节点接收中心节点发送的同步请求,同步请求包括数据同步参数,且同步请求为中心节点检测到中心数据库有更新后发送。
在分布式数据库应用系统中,中心节点作为分布式数据库的中心服务器,负责对数据进行操作、管理和维护,而与之相对的子节点则没有主动对数据进行操作、管理和维护的权限,需保持与中心节点的数据同步。
分布式数据库应用系统包括但不限于各种由Java服务器组成的应用系统,如企业内部的员工管理系统、业务数据共享系统等。数据库管理系统包括但不限于Oracle,SQLSever,Sybase,MySQL等。当中心节点上对中心数据库进行修改操作时,中心节点向子节点发送同步请求,通知子节点进行同步操作。
举例来说,企业内部的业务数据共享系统中,中心节点的物理位置位于某省会,而子节点的物理位置位于该省下的其他地市。可以理解地,中心节点上层还可以有中心节点,子节点下层还可以有子节点,即省会级的各中心节点上还有全国级的中心节点,相对于全国级的中心节点,省会级的中心节点相当于子节点;地市级的子节点下层还可以有乡镇级子节点,相对于乡镇级子节点,地市级的子节点相当于中心节点。这样庞大的分布式数据库应用系统在更新数据时,总是由中心节点开始更新,子节点随后与之同步,从而完成从上到下的数据更新。
数据同步参数是中心节点更新中心数据库后,子节点进行数据同步时需要的信息,包括但不限于类名、对象名、数据表名、对数据表进行的操作类型、数据表的数据记录值等。
具体地,若中心节点对中心数据库中的表A和表B分别进行了插入和更新操作,其SQL语句为:
Inert into A values(‘张三’,‘25’);
Inert into A values(‘李四’,‘26’);
Inert into A values(‘王五’,‘27’);
Inert into A values(‘赵六’,‘28’);
Inert into A values(‘张七’,‘29’);
Update B set Tel=’13200001234’where name=’李三’
Update B set Tel=’13312340000’where name=’张四’
Update B set Tel=’13211111234’where name=’李五’
Update B set Tel=’13312342222’where name=’张六’
Update B set Tel=’13233331234’where name=’李七’
其中,插入了5条记录到表A,插入的字段为姓名和年龄;更新了5条记录到表B,分别对表B中五个人的电话号码字段进行了修改。
由于各子节点的业务功能不尽相同,例如,有的子节点只负责员工基本信息查询,有的子节点只负责业务数据查询等,所以表A和表B可能位于不同的子节点上。中心节点检测到中心数据库有更新时,针对不同的表向不同的子节点发送同步请求,通知子节点进行数据同步。同步参数包括但不限于表名A、表名B、字段名Tel以及具体的数据记录值,如以上10条记录对应10个记录值:
(‘张三’,‘25’);(‘李四’,‘26’);(‘王五’,‘27’);(‘赵六’,‘28’);(‘张七’,‘29’);(13200001234,’李三’);(13312340000,’张四’);(13211111234,’李五’);(13312342222,’张六’);(13233331234,’李七’)。
S2:子节点根据接收到的数据同步参数,采用反射机制,获取表字段类型。
反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。基于反射机制的语言包括Python、OpenC++、MetaXa、Java等。以Java反射机制为例,在运行状态中,对于任意一个类,通过Java反射机制能够确定这个类的全部属性和方法;对于任意一个对象,均能够调用它的任意一个方法和属性。基于反射机制,能够在在运行时检测对象的类型;动态构造某个类的对象;检测类的属性和方法;任意调用对象的方法;修改构造函数、方法、属性的可见性。
分布式数据库应用系统中的中心节点和子节点都可以是采用Java语言构建的系统。基于面向对象的编程思想,中心节点或子节点将数据库中的数据表抽象为类并将其对象化。
举例来说,中心数据库上有数据表A,表中的字段包括姓名、部门、季度业绩额等。数据表A经过实例化后的对象A’中的属性包括name、dept、performance等,与表字段一一对应。其中,表字段“季度业绩额”对应的数据类型是数值类型,表字段“姓名”和表字段“部门”对应的数据类型是字符型,则对象A’中的属性也初始化为相应的数据类型。同理,对于其他数据表均可被实例化为相应的对象。
针对中心节点发送的数据同步参数,采用反射机制,通过类名或对象名,获取个该类或对象的所有属性,包括中心节点操作的数据表中所有字段的数据类型,如整型、字符型等。
具体地,子节点通过调用Class类的forName()方法,以中心节点发送过来的类名或对象名作为输入,得到数据表对象的实例;用得到的数据表对象的实例调用getFields()方法获取数据表对象中表字段名;继续用得到的数据表对象的实例调用getGenericType()方法获取数据表对象中表字段的数据类型。
S3:子节点根据表字段类型,将数据同步参数进行拼接,生成SQL语句。
为了使得子节点能自动与中心节点进行数据同步,减少人力参与,子节点需要将中心节点发送的数据同步参数自动拼接成SQL语句。其中,中心节点与子节点通过网络进行通信,中心节点与子节点之间的收发数据以字符形式进行传输。而中心节点对中心数据库进行更新时,涉及的数据类型包括但不限于字符型、数值型、时间类型等,因此,子节点需要对接收到的数据同步参数中的值进行类型判断,并进行相应的类型转换,否则不能拼接出正确的SQL语句。
具体地,子节点根据表字段类型,对非字符类型的数据进行类型转换,得到表字段实际的数据类型,并将数据同步参数按照SQL语法进行拼接,生成SQL语句。
仍以步骤S2中的数据表A的更新为例,经过步骤S2中反射机制获取对象A’的三个属性name、dept、performance分别属于字符型、字符型、数值型,子节点需要对接收到的属性performance对应的数据记录值进行类型转换。具体地,若子节点收到的属性performance对应的数据记录值为字串‘5000’,则调用valueOf()方法去掉其单引号,将其转成整型。同理可知,若某表字段属性为时间类型,而子节点接收到的相应数据记录值为字串“20180801”,则子节点可以调用SimpleDateFormat()方法将其转成日期格式。
在确定完数据类型后,子节点通过调用StringBuffer类下的append()方法将同步参数拼接成SQL语句。如对步骤S1中对表A进行插入操作的SQL语句,在子节点被拼接成等效的SQL语句:Inert into A values((‘张三’,‘25’),(‘李四’,‘26’),(‘王五’,‘27’),(‘赵六’,‘28’),(‘张七’,‘29’))。
S4:子节点执行SQL语句,更新节点数据库。
具体地,子节点作为中心节点的数据流量的分担节点,节点数据库是中心数据库的子集。举例来说,若中心数据库上有本省的所有员工数据信息,包括数据表A,表B,表C等;而地市级的各节点数据库中只有其中的一个或几个数据表。
中心数据库有更新之后,子节点根据步骤S3中拼接生成的SQL语句,直接对本地的节点数据库进行操作,彼此之间互不影响。
在本实施例中,分布式数据库应用系统中的中心节点将同步请求下发给子节点,子节点采用反射机制,根据同步请求中的数据同步参数,获取表字段,使得子节点可以及时获取中心节点所更新的表包括哪些表字段;然后将表字段与同步请求中的数据同步参数进行拼接,生成SQL语句,最后由子节点执行生成的SQL语句,从而完成节点数据库的更新,使得子节点能自动完成与中心节点数据库的同步,大量减少在子节点开发SQL语句的工作量,节省开发成本;同时,降低了中心节点与子节点数据同步的维护成本,便于数据维护和系统升级。
进一步地,如图3所示,在一实施例中,为了保证数据传输的完整性,中心节点在发送同步请求时,同步请求中还包括了校验参数,校验参数包括数据包的发送总次数和数据包的版本信息。
对于数据量非常大的同步操作,中心节点将数据同步参数分拆成若干个数据包,并自定义数据传输格式,以校验参数作为包头,数据同步参数作为包身,进行分批发送。其中,数据包的发送总次数对应分批发送的次数;数据包的版本信息用于标识每个数据包。
例如,中心节点将包括3000条数据的数据同步参数分拆成三个数据包,每个数据包1000条记录,拟通过三次发送完成,并为每个数据包分配一个版本信息,如package1_01,其中,package1代表数据包的包名,01代表数据包的序号。可以理解地,三个数据包的版本信息分别是package1_01、package1_02和package1_03。在本实施例中,中心节点将数据同步参数拆分后的三个数据包中,第一个数据包的校验参数为数据包的发送总次数“3”和数据包的版本信息“package1_01”;第二个数据包的校验参数为数据包的发送总次数“3”和数据包的版本信息“package1_02”;第三个数据包的校验参数为数据包的发送总次数“3”和数据包的版本信息“package1_03”。子节点接收校验参数,并对数据完整性进行校验的实现流程包括如下步骤:
S5:子节点接收同步请求,并从同步请求中提取并保存数据包的发送总次数、数据包的版本信息和数据同步参数。
中心节点自定义的数据传输格式属于中心节点与子节点都必须遵循的自定义协议。中心节点按照自定义的数据传输格式进行数据打包,子节点根据该数据传输格式解析出校验参数。
具体地,数据传输格式分为包头和包身,包头包括数据包的发送总次数和数据包的版本信息,其中,校验参数可以占8个字节,数据包的发送总次数和数据包的版本信息可以分别占2个字节、6个字节。包身包括数据同步参数,其长度由需要更新的数据记录条数确定。子节点根据数据传输格式对收到的同步请求进行解析,从包头的8个字节中分别获得数据包的发送总次数和数据包的版本信息,从包头后的包身获得数据同步参数。
S6:若子节点检测到当前接收到的相同版本信息的次数与数据包的发送总次数相等,则确认数据包已经接收完整。
具体地,子节点根据数据传输格式,从校验参数中提取出的数据包的发送总次数与检测到的属于同一发送批次的具有相同版本信息的数据包个数相等,则确认数据包已经接收完整。
例如,若子节点从包头中解析出数据包的发送总次数为3次,且收到的版本号为“package1”的数据包也为3个,则代表该次中心节点上数据更新后,子节点所需要同步的数据均已接收完整。
在本实施例中,对数据量非常大的同步操作,由中心节点和子节点约定数据传输格式,通过加入校验参数,保证对于中心节点发送的数据同步参数,子节点都能完整接收。
进一步地,如图4所示,在一实施例中,提供了一种子节点没有完整接收中心节点发送的数据同步参数时,子节点请求重发数据的方法,其具体实施流程包括如下步骤:
S7:若在达到预设的时间间隔时,子节点检测到当前接收到的相同版本信息的次数与数据包的发送总次数不相等,则确认数据包没有接收完整。
具体地,子节点可以设置预设的时间间隔作为超时时间,若在该超时时间内,子节点检测到当前接收到的相同版本信息的次数与数据包的发送总次数不相等,则确认数据包没有接收完整。
例如,优选地,子节点可以设置默认超时时间为10分钟,子节点根据超时时间设置定时器任务,待达到超时时间时,子节点检测到当前接收到的相同版本信息的次数与数据包的发送总次数是否相等。
S8:子节点向中心节点请求重新发送数据包对应的同步请求。
具体地,若数据包没有接收完整,则子节点将没有接收完整的数据包的版本信息发给中心节点,中心节点可以根据数据包的版本信息定位到没有接收完整的数据包,进而向中心节点请求重新发送该数据包。
子节点继续根据校验参数对接收到的数据同步参数进行完整性判断。同时,若中心节点对某个子节点重新发送数据包的次数达到一定的预设值,则返回代表数据同步异常的数据同步状态值。由该数据同步状态值可以进一步确定该子节点与中心节点间的网络出现异常。
在本实施例中,针对没有接收完整的数据包,提供一种子节点请求中心节点重发数据包的方法,在预设的时间间隔内检查数据包是否接收完整,并能精确定位到未接收完整的数据包,使得中心节点能及时重发相应数据包,避免数据同步过程中由于数据包不完整导致同步错误或者同步失败,提高数据同步的可靠性。
进一步地,如图5所示,在一实施例中,为了保证节点数据库实际更新记录数与应更新记录数一致,在数据同步参数中加入中心节点更新数据表的数据记录数,即数据同步参数的数据条数。中心节点对中心数据库进行更新时,每个表更新多少条记录数是可以记录的,中心节点将数据记录条数附在数据同步参数之中,子节点可以方便的获取。
具体地,在一具体实施例中,在中心节点与子节点约定的数据传输格式中,数据同步参数的前面两个字节预留存放数据记录条数,代表该数据包中需要更新的数据记录条数。
可以理解地,每个数据包中的数据记录条数的总和即是中心节点更新的数据记录数。
子节点对更新完成的数据记录数进行记录,并与数据同步参数的数据条数比较,判断节点数据库是否更新成功,其具体实施流程包括以下步骤:
S9:子节点统计更新完成的数据记录数。
具体地,子节点设置一个全局变量存储更新完成的数据记录数,对于接收到的每个数据包,分别执行更新节点数据库的SQL语句,并对SQL语句的返回值进行判断,若返回值没有异常,则确定该条SQL语句执行成功,并对该全局变量进行加一的赋值操作。其中,SQL语句的返回值一般是以非0值为异常值,尽管SQL语句之上会封装各种接口,但接口的返回值是否异常均可以进行预设。
S10:若子节点更新完成的数据记录数等于接收到的数据同步参数的数据条数的总和,则确认子节点更新节点数据库成功。
具体地,子节点在接收数据同步参数之后,读取前两字节即可获取该次数据同步需要更新的数据条数;子节点将步骤S9获得的更新完成的数据记录数与数据同步参数的数据条数的总和进行比较,若两者相等,则可以确认子节点更新节点数据库成功。
在本实施例中,将中心节点更新的记录数与子节点更新的记录数进行对比,确保没有遗漏,保证子节点完整的与中心节点进行了数据同步,从而提高数据同步的完整性。
进一步地,如图6所示,在一实施例中,提供一种保障机制,若子节点在更新节点数据库时有意外情况,没有完全与中心节点数据同步,则子节点请求中心节点重发。其具体实施流程包括以下步骤:
S11:若子节点更新完成的数据记录数不等于接收到的数据同步参数的数据条数的总和,则确认子节点更新节点数据库失败。
具体地,子节点统计的更新完成的数据记录数不等于从数据同步参数中获取的应更新的数据同步参数的数据条数的总和,则说明子节点在更新节点数据库时有意外情况发生,从而确认子节点更新节点数据库失败。
S12:子节点向中心节点请求重新进行数据同步。
具体地,如步骤S9中所述,由于是对于接收到的每个数据包,分别执行更新节点数据库的SQL语句并对返回值进行判断的,所以对于子节点更新节点数据库失败的情况,可以定位到是哪个数据包的更新语句存在问题,并发送该数据包的版本信息给中心节点,从而请求中心节点重新发送该数据包。
在本实施例中,进一步为子节点与中心节点数据同步提供纠错的保障机制,针对子节点更新节点失败的情况,子节点将更新失败的SQL语句所对应数据包的版本信息发送给中心节点,请求中心节点重新发送同步数据,从而确保数据同步的准确完成。
进一步地,在一实施例中,数据同步参数包括操作关键字、数据表名称和数据记录值。其中,操作关键字是指中心节点对中心数据库的数据表进行的具体操作,如插入、更新或是删除;数据表名称是指中心数据库中数值有改动数据表的表名;数据记录值是指对数据表操作时修改的值,包括插入的值、更新的值或删除的值等。
具体地,在自定义的数据传输格式的数据同步参数中加入一个字节用于标识操作关键字,如01表示为插入操作,02表示为更新操作,03表示为删除操作;在自定义的数据传输格式的数据同步参数中加入四个字节用于存储表名,自定义的数据传输格式的其余剩余字节则用于存储数据记录值。
在步骤S3中,子节点根据表字段类型,将数据同步参数进行拼接,生成SQL语句,包括:
子节点按照SQL语法的定义,根据表字段类型,将操作关键字、数据表名称和数据记录值进行组合,生成SQL语句。
具体地,子节点接收到数据同步参数后,根据数据传输格式的字节顺序,分别获取操作关键字、数据表名称和数据记录值,其中,操作关键字用于在拼接SQL语句时,选择是inert语句,还是update语句或者是delete语句;数据表名称用作反射的输入,获取表字段类型,看是否需要进行数据类型转换;数据记录值即作为SQL语句要操作的值。一条拼接后生成的SQL语句可以表示为:
Inert into A values((‘张三’,‘25’),(‘李四’,‘26’),(‘王五’,‘27’),(‘赵六’,‘28’),(‘张七’,‘29’));
其中,Inert into values是子节点根据接收到的标识操作关键字而确定的插入语句关键字;A是需要节点数据库进行更新的数据表名称;“(‘张三’,‘25’),(‘李四’,‘26’),(‘王五’,‘27’),(‘赵六’,‘28’),(‘张七’,‘29’)”是五条数据记录值。
在本实施例中,中心节点将拼接生成SQL语句所需要的元素通过数据同步参数直接传递给子节点,子节点可以方便快捷的生成本地SQL语句。
进一步地,在步骤S1中,若中心节点检测到中心数据库有更新,则向子节点发送同步请求具体可以包括:
若中心节点检测到中心数据库有更新,则采用键值对的方式标识数据同步参数和校验参数,并将包含数据同步参数和校验参数的同步请求发送给子节点。
具体地,中心节点采用键值对的方式标识数据同步参数和校验参数,并将包含数据同步参数和校验参数的同步请求发送给子节点。其中,键值对是数据传输、交换以及在软件开发中常用的一种数据组织形式。
优选地,中心节点以JSON格式组织校验参数和数据同步参数。其中,JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。一条以JSON格式组织的校验参数和数据同步参数可以表示为:
{
“count”:3,
“orderNo”:1000,
“version”:package1_01,
“table”:”A”,
“opt”:insert,
“data”:[“(‘张三’,‘25’)”,“(‘李四’,‘26’)”,“(‘王五’,‘27’)”,“(‘赵六’,‘28’)”,“(‘张七’,‘29’)”...]
}
其中,count表示这是要分三次发送的三个数据包之一,orderNo表示该数据包要更新的数据记录数为1000条,version表示该数据包的版本信息为package1_01(package1代表数据包名,01代表是第一个包),table表示子节点要进行数据同步操作的数据表名是A,opt表示对表A要进行的操作是插入操作,data表示要插入的数据记录值,这里数据记录值是一个数组,有五条记录。
在本实施例中,中心节点将下发给子节点是校验参数和数据同步参数以键值对的形式进行组合,使得中心节点和子节点收发数据格式清晰,便于中心节点整理和维护数据,同时便于子节点解析数据。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据同步装置,该数据同步装置与上述实施例中数据同步方法一一对应。如图7所示,该数据同步装置包括接收模块71、生成表字段模块72、拼接模块73和更新模块74。各功能模块详细说明如下:
拼接模块71,用于接收中心节点发送的同步请求,同步请求包括数据同步参数,且同步请求为中心节点检测到中心数据库有更新后发送;
生成表字段模块72,用于根据接收到的数据同步参数,采用反射机制,获取表字段类型;
拼接模块73,用于根据表字段类型,将数据同步参数进行拼接,生成SQL语句;
更新模块74,用于执行SQL语句,更新节点数据库。
进一步地,同步请求还包括校验参数,校验参数包括数据包的发送总次数和数据包的版本信息,数据同步装置还包括:
提取校验参数模块75,用于接收同步请求,并从同步请求中提取并保存数据包的发送总次数、数据包的版本信息和数据同步参数;
第一确认数据接收模块76,用于若检测到当前接收到的相同版本信息的次数与数据包的发送总次数相等,则确认数据包已经接收完整。
进一步地,数据同步装置还包括:
第二确认数据接收模块77,用于若在达到预设的时间间隔时,检测到当前接收到的相同版本信息的次数与数据包的发送总次数不相等,则确认数据包没有接收完整;
第一请求数据重发模块78,用于向中心节点请求重新发送数据包对应的同步请求。
进一步地,校验参数还包括数据同步参数的数据条数,数据同步装置还包括:
统计更新数模块79,用于统计更新完成的数据记录数;
第一确认数据更新模块710,用于若子节点更新完成的数据记录数等于接收到的数据同步参数的数据条数的总和,则确认子节点更新节点数据库成功。
进一步地,数据同步装置还包括:
第二确认数据更新模块711,用于若子节点更新完成的数据记录数不等于接收到的数据同步参数的数据条数的总和,则确认子节点更新节点数据库失败;
第二请求数据重发模块712,用于向中心节点请求重新进行数据同步。
进一步地,数据同步参数包括操作关键字、数据表名称和数据记录值,拼接模块73包括:
SQL语句拼接子模块731,用于按照SQL语法的定义,根据表字段类型,将操作关键字、数据表名称和数据记录值进行组合,生成SQL语句。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述实施例中中心节点或子节点实现的数据数据同步方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据同步方法中心节点或子节点实现的步骤,例如图2所示的步骤S1至步骤S4。
在一实施例中,提供一计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中数据同步方法。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (7)
1.一种数据同步方法,其特征在于,所述数据同步方法包括:
子节点接收中心节点发送的同步请求,所述同步请求包括数据同步参数和校验参数,所述数据同步参数包括操作关键字、数据表名称和数据记录值,所述校验参数包括数据包的发送总次数和数据包的版本信息,且所述同步请求为所述中心节点检测到中心数据库有更新后发送;
所述子节点从所述同步请求中提取并保存所述数据包的发送总次数、所述数据包的版本信息和所述数据同步参数;若所述子节点检测到当前接收到的相同的版本信息的次数与所述数据包的发送总次数相等,则确认所述数据包已经接收完整;所述子节点根据接收到的所述数据同步参数,采用反射机制,获取表字段类型;
所述子节点根据所述表字段类型,将所述数据同步参数进行拼接,生成SQL语句,其中,所述子节点按照SQL语法的定义,根据所述表字段类型,将所述操作关键字、所述数据表名称和所述数据记录值进行组合,生成所述SQL语句;
所述子节点执行所述SQL语句,更新所述子节点的节点数据库。
2.如权利要求1所述的数据同步方法,其特征在于,所述子节点从所述同步请求中提取并保存所述数据包的发送总次数、所述数据包的版本信息和所述数据同步参数之后,所述数据同步方法还包括:
若在达到预设的时间间隔时,所述子节点检测到当前接收到的相同的版本信息的次数与所述数据包的发送总次数不相等,则确认所述数据包没有接收完整;
所述子节点向所述中心节点请求重新发送所述数据包对应的同步请求。
3.如权利要求1所述的数据同步方法,其特征在于,所述校验参数还包括所述数据同步参数的数据条数,所述子节点执行所述SQL语句,更新所述子节点的节点数据库之后,所述数据同步方法还包括:
所述子节点统计更新完成的数据记录数;
若所述子节点更新完成的数据记录数等于接收到的所述数据同步参数的数据条数的总和,则确认所述子节点更新所述节点数据库成功。
4.如权利要求3所述的数据同步方法,其特征在于,所述子节点统计更新完成的数据记录数之后,所述数据同步方法还包括:
若所述子节点更新完成的数据记录数不等于接收到的所述数据同步参数的数据条数的总和,则确认所述子节点更新所述节点数据库失败;
所述子节点向所述中心节点请求重新进行数据同步。
5.一种数据同步装置,其特征在于,所述数据同步装置包括:
接收模块,用于实现子节点接收中心节点发送的同步请求,所述同步请求包括数据同步参数和校验参数,所述数据同步参数包括操作关键字、数据表名称和数据记录值,所述校验参数包括数据包的发送总次数和数据包的版本信息,且所述同步请求为所述中心节点检测到中心数据库有更新后发送;
生成表字段模块,用于实现所述子节点从所述同步请求中提取并保存所述数据包的发送总次数、所述数据包的版本信息和所述数据同步参数;若所述子节点检测到当前接收到的相同的版本信息的次数与所述数据包的发送总次数相等,则确认所述数据包已经接收完整;根据接收到的所述数据同步参数,采用反射机制,获取表字段类型;
拼接模块,用于实现所述子节点根据所述表字段类型,将所述数据同步参数进行拼接,生成SQL语句,其中,所述拼接模块包括SQL语句拼接子模块,用于实现所述子节点按照SQL语法的定义,根据表字段类型,将操作关键字、数据表名称和数据记录值进行组合,生成所述SQL语句;
更新模块,用于实现所述子节点执行所述SQL语句,更新所述子节点的节点数据库。
6.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述数据同步方法的步骤。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810953540.XA CN109376160B (zh) | 2018-08-21 | 2018-08-21 | 数据同步方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810953540.XA CN109376160B (zh) | 2018-08-21 | 2018-08-21 | 数据同步方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109376160A CN109376160A (zh) | 2019-02-22 |
CN109376160B true CN109376160B (zh) | 2024-03-29 |
Family
ID=65403694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810953540.XA Active CN109376160B (zh) | 2018-08-21 | 2018-08-21 | 数据同步方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109376160B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427399A (zh) * | 2019-06-18 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 实时数据采集方法、系统、装置及存储介质 |
CN110659138B (zh) * | 2019-08-26 | 2024-03-15 | 平安科技(深圳)有限公司 | 基于定时任务的数据同步方法、装置、终端及存储介质 |
CN110716952A (zh) * | 2019-09-24 | 2020-01-21 | 中国电子科技集团公司电子科学研究院 | 一种多源异构数据处理方法、装置和存储介质 |
CN110795507A (zh) * | 2019-10-30 | 2020-02-14 | 北京永亚普信科技有限责任公司 | 基于单向传输协议的数据库同步系统和方法 |
CN111147560B (zh) * | 2019-12-18 | 2022-05-17 | 河北远东通信系统工程有限公司 | 基于http协议以及断点续传的数据同步方法 |
CN111984730A (zh) * | 2020-08-24 | 2020-11-24 | 中电九天智能科技有限公司 | 工业互联网集中式数据同步方法 |
CN111897878B (zh) * | 2020-08-25 | 2023-09-29 | 中国工商银行股份有限公司 | 主辅数据同步方法及系统 |
CN112000681A (zh) * | 2020-08-25 | 2020-11-27 | 浪潮云信息技术股份公司 | 一种能够自适应模式变更的同步方法 |
CN112287644B (zh) * | 2020-09-30 | 2024-01-30 | 成都新潮传媒集团有限公司 | 一种数据提交方法、装置、计算机设备和可读存储介质 |
CN113127564B (zh) * | 2021-04-20 | 2023-02-28 | 建信金融科技有限责任公司 | 一种参数同步方法和装置 |
CN113821517A (zh) * | 2021-11-23 | 2021-12-21 | 太平金融科技服务(上海)有限公司深圳分公司 | 数据同步方法、装置、设备及存储介质 |
CN114385754A (zh) * | 2021-12-17 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 一种数据同步方法、系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054034A (zh) * | 2010-12-27 | 2011-05-11 | 华中科技大学 | 企业信息系统的业务基础数据持久化实现方法 |
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
CN107918753A (zh) * | 2016-10-10 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 点云数据处理方法及装置 |
CN108200220A (zh) * | 2018-04-08 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 一种数据同步方法、服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101706252B1 (ko) * | 2016-02-29 | 2017-02-13 | 주식회사 티맥스데이터 | 이기종 데이터베이스들 간의 쿼리 결과를 동기화하기 위한 방법, 서버 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 |
-
2018
- 2018-08-21 CN CN201810953540.XA patent/CN109376160B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054034A (zh) * | 2010-12-27 | 2011-05-11 | 华中科技大学 | 企业信息系统的业务基础数据持久化实现方法 |
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN107918753A (zh) * | 2016-10-10 | 2018-04-17 | 腾讯科技(深圳)有限公司 | 点云数据处理方法及装置 |
CN107301196A (zh) * | 2017-05-03 | 2017-10-27 | 北京小度信息科技有限公司 | 数据同步方法、装置、设备及监控服务器 |
CN108200220A (zh) * | 2018-04-08 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 一种数据同步方法、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109376160A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109376160B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN111258989B (zh) | 数据库迁移评估方法、装置、存储介质和计算机设备 | |
US10824372B2 (en) | Data recovery method and device, and cloud storage system | |
TWI662426B (zh) | 分布式流式資料處理的方法和裝置 | |
CN108572986B (zh) | 一种数据更新的方法及节点设备 | |
CN111414403B (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN112434059B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN106033439A (zh) | 一种分布式事务处理方法及系统 | |
CN110825420A (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
CN111611009A (zh) | 数据库脚本管理方法、装置、计算机设备及存储介质 | |
US20210334239A1 (en) | System and Method for Re-Synchronizing a Portion of or an Entire Source Database and a Target Database | |
CN111767340A (zh) | 数据处理方法、装置、电子设备和介质 | |
WO2012048555A1 (zh) | 数据入库方法和装置 | |
CN113312338A (zh) | 数据一致性的校验方法、装置、设备、介质及程序产品 | |
CN113779092A (zh) | 基于数据仓库的实时数据展示方法、装置、设备及介质 | |
CN116644122A (zh) | 数据事务处理方法、装置、计算机设备及存储介质 | |
CN111522881A (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN112905676A (zh) | 一种数据文件的导入方法及装置 | |
CN114595288A (zh) | 一种基于sql命令级的多idc分布式系统数据同步方法 | |
CN112860746B (zh) | 一种基于缓存削减的方法、设备及系统 | |
CN114218236A (zh) | 一种数据库集群元数据管理方法 | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
CN110309191A (zh) | 存储业务数据的方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |