CN108009261B - 一种数据同步方法、装置及电子设备 - Google Patents
一种数据同步方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108009261B CN108009261B CN201711317030.5A CN201711317030A CN108009261B CN 108009261 B CN108009261 B CN 108009261B CN 201711317030 A CN201711317030 A CN 201711317030A CN 108009261 B CN108009261 B CN 108009261B
- Authority
- CN
- China
- Prior art keywords
- field
- data
- synchronized
- data table
- partition key
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Abstract
本发明实施例提供了一种数据同步方法、装置及电子设备,其中,该方法包括:获取用户终端发送的数据同步请求,查找对应的待同步数据表,再获取待同步数据表中的每个字段的最大字段值和最小字段值,然后根据该最大字段值和最小字段值,对该字段中的字段值进行分配,得到多份字段值;计算每份字段值的数据量,并根据每份字段值的数据量,计算该字段对应的数据量的方差;针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键,按照各分区键将待同步数据表分为多个子数据表,将多个子数据表同步到对应的目的数据库。从而可以实现合理设置分区键,降低数据同步时的时间开销。
Description
技术领域
本发明涉及数据同步技术领域,特别是涉及一种数据同步方法、装置及电子设备。
背景技术
随着互联网技术的发展,数据库作为数据的存储单元,得到了广泛的应用。在一种应用场景中,为了防止数据丢失,可能会采用两套数据库存储相同数据。例如,采用数据库A和数据库B存储相同数据,其中,数据库A为主数据库,数据库B为备份数据库。在使用过程中,定期将数据库A中的数据同步到数据库B中,从而实现数据库B的备份作用。
具体的,在对数据库中的待同步数据表进行同步时,通常采用的方法是预先设置分区键及分区键值,然后再根据预设分区键以及分区键值对待同步数据表进行分区,然后对分区后的待同步数据表进行同步。
然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:
在现有技术中,业务人员通过预先设置分区键及分区键值的方法对待同步数据表进行分区,然而,当业务人员对待同步数据表不熟悉时,不能正确合理的设置分区键,从而会造成对待同步数据表分区不合理,从而会影响数据同步的过程,增加数据同步的时间开销,因此,能否合理设置分区键对数据同步过程具有很大影响。
发明内容
本发明实施例的目的在于提供一种数据同步方法、装置及电子设备,以自动合理的设置分区键,并降低数据同步的时间开销。具体技术方案如下:
在本发明实施的一个方面,本发明实施例提供了一种数据同步方法,该方法包括:
获取用户终端发送的数据同步请求,其中,数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找与待同步数据表标识信息对应的待同步数据表,并获取待同步数据表中的每个字段;
获取每个字段中的最大字段值和最小字段值,并根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算每个字段分配得到的每份字段值的数据量,并根据每份字段值的数据量,计算每个字段对应的数据量的方差;
针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键;
按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表;
将多个子数据表同步到与目的数据库标识信息对应的目的数据库。
可选的,数据同步请求中还携带有预设并行度,根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值,包括:
根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到预设并行度整数倍份数的字段值。
可选的,在针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键之后,本发明实施例的一种数据同步方法还包括:
将待同步数据表的各分区键添加至预设分区键集合中;
相应的,按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表,包括:
按照预设分区键集合中的各分区键,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
可选的,数据同步请求中还携带有预设并行度,按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表,包括:
针对每个分区键,按照该分区键和预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围;
将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到待同步数据表的多个子数据表。
可选的,在将多个子数据表同步到与目的数据库标识信息对应的目的数据库之后,本发明实施例的一种数据同步方法还包括:
在同步完成后,发送同步成功的通知信息至用户终端。
在本发明实施的又一方面,本发明实施例提供了一种数据同步装置,该装置包括:
获取模块,用于获取用户终端发送的数据同步请求,其中,数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找模块,用于查找与待同步数据表标识信息对应的待同步数据表,并获取待同步数据表中的每个字段;
分配模块,用于获取每个字段中的最大字段值和最小字段值,并根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算模块,用于计算每个字段分配得到的每份字段值的数据量,并根据每份字段值的数据量,计算每个字段对应的数据量的方差;
判断模块,用于针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键;
分区模块,用于按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表;
同步模块,用于将多个子数据表同步到与目的数据库标识信息对应的目的数据库。
可选的,分配模块,具体用于:
根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到预设并行度整数倍份数的字段值。
可选的,本发明实施例的一种数据同步装置还包括:
添加模块,用于将待同步数据表的各分区键添加至预设分区键集合中;
相应的,分区模块,具体用于:
按照预设分区键集合中的各分区键,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
可选的,数据同步请求中还携带有预设并行度,分区模块,具体用于:
针对每个分区键,按照该分区键和预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围;将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到待同步数据表的多个子数据表。
可选的,本发明实施例的一种数据同步装置还包括:
反馈模块,用于在同步完成后,发送同步成功的通知信息至用户终端。
在本发明实施的又一方面,本发明实施例还一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的一种数据同步方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的一种数据同步方法。
在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的一种数据同步方法。
本发明实施例提供的一种数据同步方法、装置及电子设备,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例的一种数据同步方法应用于两个数据库之间数据同步时的系统结构示意图;
图2为本发明实施例的一种数据同步方法应用于两个数据库集群之间数据同步时的系统结构示意图;
图3为本发明实施例的一种数据同步方法的流程图;
图4为本发明实施例的一种数据同步装置的结构示意图;
图5为本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了解决现有技术存在的问题,本发明实施例提供了一种数据同步方法、装置及电子设备,以实现合理设置分区键,降低数据同步时的时间开销。
本发明实施例的一种数据同步方法可以用于两个数据库之间的数据同步,例如,如图1所示,为本发明实施例的一种数据同步方法应用于两个数据库之间数据同步时的系统结构示意图,该系统可以包括:用户终端101、数据同步装置102、源数据库103、目的数据库104,其中数据同步装置102为应用本发明实施例的一种数据同步方法的装置。
数据同步装置102在接收到用户终端101发送的数据同步请求后,可以从源数据库103中获取待同步数据表,然后可以获取该待同步数据表的每个字段中地最大字段值和最小字段值。
然后针对每个字段,将该字段中的字段值分配为多份字段值,然后计算每份字段值的数据量,然后计算该字段中多分字段值的数据量的方差,并对比该多份字段值的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键;从而可以得到该待同步数据表的多个分区键。
然后按照各分区键将该待同步数据表分为多个子数据表,然后将该多个子数据表同步到与目的数据库104中。
本发明实施例的一种数据同步方法也可以用于两个数据库集群之间的数据同步,例如,如图2所示,为本发明实施例的一种数据同步方法应用于两个数据库集群之间数据同步时的系统结构示意图,该系统可以包括:用户终端201、数据同步装置202、第一源数据库203、第二源数据库204、第一目的数据库205、第二目的数据库206,其中,数据同步装置202为应用本发明实施例的一种数据同步方法的装置。
该数据同步装置202在获取到用户终端201发送的数据同步请求后,可以从第一源数据库203或者第二源数据库204中获取待同步数据表,然后通过本发明实施例的一种数据同步方法将该待同步数据表分为多个子数据表,假设将该待同步数据表分为两个子数据表,分别为第一子数据表和第二子数据表,然后上述地数据同步装置202可以将第一子数据表同步到第一目的数据库205中,将第二子数据表同步到第二目的数据库206中。
下面,对本发明实施例的一种数据同步方法进行介绍,如图3所示,为本发明实施例的一种数据同步方法的流程图,该方法可以包括:
S301,获取用户终端发送的数据同步请求。
其中,数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息。
在一些示例中,当用户终端要对两个数据库或两个数据库集群中的数据表进行同步时,可以向应用本发明实施例的一种数据同步方法的数据同步装置发送数据同步请求,因此,上述的数据同步装置可以接收到用户终端发送的数据同步请求,该数据同步装置在接收到用户终端发送的数据同步请求后,可以从该数据同步请求中获取到待同步数据表的标识信息以及目的数据库标识信息。
具体的,该数据同步请求中可以携带有一个待同步数据表标识信息,也可以携带有多个待同步数据表标识信息。
S302,查找与待同步数据表标识信息对应的待同步数据表,并获取待同步数据表中的每个字段。
其中,一个字段为数据库中的一列。
具体的,该待同步数据表标识信息包括:存储该待同步数据表的数据库的标识信息和该待同步数据表表名,该表名可以是数字、英文字母或者数字与英文字母的组合等。
在一些示例中,上述的数据同步装置在获取到该待同步数据表的标识信息后,可以查找与该待同步数据表标识信息对应的待同步数据表,在查找到待同步数据表后,可以得到该待同步数据表中的每个字段。
例如,如表1所示,为视频用户的统计数据表,该统计表中可以包括:用户编号、日期、下载量、观影时长以及搜索次数。
表1对视频用户的统计数据表
用户编号 | 日期 | 下载量(个) | 观影时长(min) | 搜索次数 |
0001 | 2017-10-23 | 50 | 200 | 10 |
… | … | … | … | … |
0103 | 2017-10-23 | 60 | 170 | 8 |
… | … | … | … | … |
1000 | 2017-10-23 | 20 | 100 | 5 |
其中,“用户编号”对应的列为第一字段、“日期”对应的列为第二字段、“下载量”对应的列为第三字段、“观影时长”对应的列为第四字段以及“搜索次数”对应的列为第五字段。用户编号为第一字段的字段名,日期为第二字段的字段名,下载量为第三字段的字段名,观影时长为第四字段的字段名,搜索次数为第五字段的字段名。
假设,表1所示的视频用户的统计数据表为上述的待同步数据表,则上述的数据同步装置在获取到该视频用户的统计数据表后,可以获取到该统计数据表中的每个字段,例如:可以分别获取到上述统计数据表中的第一字段、第二字段、第三字段、第四字段以及第五字段。
S303,获取每个字段中的最大字段值和最小字段值,并根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值。
其中,最大字段值为在该字段中,除字段名外数值最大的值,最小字段值为在该字段中,除字段名外数值最小的值。
具体的,在获取到待同步数据表的每个字段后,可以针对每个字段,获取该字段的最大字段值和最小字段值,然后对该字段中的字段值进行分配,可以得到多份字段值。
在一些示例中,上述的数据同步请求中还可以携带有预设分配份数,因此,在本步骤中,可以按照预设分配份数,对该字段中的字段值进行分配,得到与预设分配份数对应的多份字段值。
例如,上述的数据同步装置可以获取第一字段的最大字段值和最小字段值,假设,第一字段中的最大字段值为5000,最小字段值为0001,则可以对最小字段值至最大字段值之间的所有字段值进行分配,从而可以得到分配后的多份字段值。例如,可以将最小字段值至最大字段值之间的字段值分为100份,则可以得到100份字段值,也可以对第二字段中的字段值进行分配,得到与第二字段对应的100份字段值,还可以对第三字段中的字段值进行分配,得到与第三字段对应的100份字段值。
在一些示例中,在对该字段中的字段值进行分配时,可以从该字段中的第一个字段值开始,依次进行分配。
作为一种实施方式,为了使得分配后的字段值更均衡,也可以进行随机分配。
通过本步骤,可以针对每个字段,得到与每个字段的多份字段值。
S304,计算每个字段分配得到的每份字段值的数据量,并根据每份字段值的数据量,计算每个字段对应的数据量的方差。
具体的,在对待同步数据表中的每个字段的字段值进行分配,得到每个字段的多份字段值后,上述的数据同步装置可以针对每个字段,计算该字段中每份字段值的数据量,然后可以根据该每个字段值的数据量,计算该字段对应的数据量的方差。
例如,假设对第一字段进行分配后,得到该第一字段对应的100份字段值,然后可以计算该100份字段值中,每份字段值的数据量。在计算得到每份字段值的数据量后,可以计算该100份字段值的数据量的方差。
在一些示例中,在计算每份字段值的数据量时,可以对该份字段值中的多个字段值进行相加,得到该份字段值的数据量;也可以对该份字段值中的多个字段值进行相乘,得到该份字段值的数据量。
通过本步骤,计算每个字段对应的数据量的方差,可以用于在后续步骤中,根据该数据量的方差,判断该字段是否可以作为待同步数据表的分区键。
S305,针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键。
其中,该预设方差阈值可以是根据经验,预先设置的阈值。
具体的,在计算得到每个字段对应的数据量的方差后,在本步骤中,可以针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值。当该字段对应的数据量的方差小于预设方差阈值时,则可以将该字段作为待同步数据表的分区键。否则,该字段不能作为待同步数据表的分区键。
在本发明实施例的一种可能的实现方式中,当该字段对应的数据量的方差不小于预设方差阈值时,可以重新根据该字段的最大字段值和最小字段值,对该字段进行分配,得到多份字段值,再次计算该多份字段值中每份字段值的数据量,然后重新计算该字段对应的数据量的方差,并与预设方差阈值进行对比,以判断该字段是否可以作为分区键。这样,可以避免第一次对该字段进行分配时,分配不均匀造成的影响,提高应用本发明实施例的一种数据同步方法的精确度。
在一些示例中,上述的数据同步装置在执行S303~S305步骤时,可以对待同步数据表中的多个字段,同时执行S303~S305步骤,也可以对待同步数据表中的多个字段,依次执行S303~S305步骤。
通过执行本步骤,可以得到待同步数据表的所有分区键。
S306,按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表。
具体的,在通过上述步骤得到待同步数据表的所有分区键后,在本步骤中,可以按照该待同步数据表的各分区键对待同步数据表进行分区。得到待同步数据表的多个子数据表。
在一些示例中,每个分区键可以有对应的分区条件,然后,可以针对该待同步数据表,依次按照每个分区键以及与该分区键对应的分区条件,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
例如,在第一字段为第一分区键,分区条件为“0001-0500,0501-1000”时,可以将表1所示的统计数据表分为2个子数据表,然后还可以在第三字段为第三分区键,分区条件为“0-10,11-20,21-30,31-40,41-50,51-60,61-70,71-80,81-90,91-100”时,将该待同步数据表分为10个子数据表。
通过按照各分区键对待同步数据表进行分区,可以在后续步骤中进行同步时,该多个子数据表可以同时进行同步,从而可以减少同步过程中的时间开销,提高数据同步的效率。
在本发明实施例的一种可能的实现方式中,数据同步请求中还可以携带有预设并行度。因此,按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表,具体可以包括:
步骤A,针对每个分区键,按照该分区键和预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围。
具体的,可以首先根据待同步数据表中分区键的数量和预设并行度,确定该分区键中字段值的份数,然后根据个字段值的份数,可以确定该分区键对应的区间范围。
例如,假设预设并行度为10,表1所示的统计数据表中总计5个分区键,则可以确定第一分区键中字段值的分数为2,然后可以按照字段值为2份的条件,确定第一分区键对应的区间范围是:“0001-0500,0501-1000”。
也可以按照第三分区键和预设并行度2的条件,确定表1中的第三分区键对应的区间范围,假设第三分区键中字段值的最大值为100,最小值为8,则可以确定第三分区键对应的区间范围为“1-50,51-100”。
需要说明的是,第二分区键、第四分区键以及第五分区键中确定区间范围的方式与第一分区键和第三分区键的方法相同或相似,这里不再赘述。
步骤B,将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到待同步数据表的多个子数据表。
例如,可以将同时处于第一分区键的区间范围“0001-0500”和第三分区键的区间范围“1-50”的多行记录作为一个子数据表,也可以将同时处于第一分区键的区间范围“0001-0500”和第三分区键的区间范围“51-100”的多行记录作为一个子数据表。
在本步骤中,通过按照待同步数据表的各分区键以及预设并行度对待同步数据表进行分区,可以使得得到的多个子数据表的数量与预设并行度数量相同,从而可以在对该多个子数据表进行同步时,可以同时调用上述数据同步装置的所有线程同时进行同步,降低数据同步过程中的时间开销,提高数据同步的效率。
S307,将多个子数据表同步到与目的数据库标识信息对应的目的数据库。
具体的,在通过上述步骤得到待同步数据表的多个子数据表后,可以按照目的数据库标识信息,将该多个子数据表同步到与目的数据库标识信息对应的目的数据库中。
在一些示例中,当上述的多个子数据表对应目的数据库中的多个目的数据表时,可以分别将该多个子数据表同步到对应的多个目的数据表中,例如,假设将表1所示的统计数据表分为2个子数据表,在本步骤中,可以将该2个子数据表分别同步到目的数据库中,对应的两个数据表中。
本发明实施例提供的一种数据同步方法,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销,进一步的,本发明实施例的一种数据同步方法,业务人员可以不用了解待同步数据表中的数据,也可以实现较好的分区效果。
在本发明实施例的一种可能的实现方式中,数据同步请求中还可以携带有预设并行度,因此,在步骤S303中,根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值,具体可以包括:
根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到预设并行度整数倍份数的字段值。
其中,给预设并行度可以是上述的数据同步装置的线程数。
在一些示例中,上述的整数倍可以为10。因此,对每个字段中的字段值进行分配时,可以按照预设并行度的10倍进行分配,得到的字段值的份数也可以是该预设并行度10倍的份数。
在本步骤中,通过按照预设并行度的整数倍对每个字段中的字段值进行分配,可以使得分配后得到的字段值的份数与预设并行度存在线性关系,从而在后续计算该字段的数据量方差后,更有利于选择合适的分区键。提高选择分区键的准确度。
在本发明实施例的又一种可能的实现方式中,为了对待同步数据表的分区键的管理,在针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键之后,本发明实施例的一种数据同步方法,还可以包括:
将待同步数据表的各分区键添加至预设分区键集合中。
其中,该预设分区键集合为预先设置的用于存储个分区键的集合。
在得到待同步数据表的个分区键后,可以将该待同步数据表的各分区键添加至该预设分区键集合中,从而可以对该待同步数据表的各分区键进行有效管理。例如,当业务人员希望查看该待同步数据表的各分区键时,可以通过获取该预设分区键集合,查看该待同步数据表的各分区键。
相对应的,当将待同步数据表的各分区键添加至预设分区键集合中后,在按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表时,可以按照预设分区键集合中的各分区键,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
具体的,上述的数据同步装置,可以从预设分区键集合中获取该待同步数据表的各分区键,然后按照该个分区键,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
在本发明实施例的又一种可能的实现方式中,在将多个子数据表同步到与目的数据库标识信息对应的目的数据库之后,本发明实施例的一种数据同步方法,还可以包括:
在同步完成后,发送同步成功的通知信息至用户终端。
在一些示例中,数据同步请求中还可以携带有用户终端的标识信息,因此,当对待同步数据表的同步完成后,上述的数据同步装置可以发送同步成功的通知信息至与用户终端的标识信息对应的用户终端。从而可以使得业务人员能够及时查看到该通知信息。
相应于上述方法实施例,本发明实施例还提供了一种数据同步装置,如图4所示,为本发明实施例的一种数据同步装置的结构示意图,该装置可以包括:
获取模块401,用于获取用户终端发送的数据同步请求,其中,数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找模块402,用于查找与待同步数据表标识信息对应的待同步数据表,并获取待同步数据表中的每个字段;
分配模块403,用于获取每个字段中的最大字段值和最小字段值,并根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算模块404,用于计算每个字段分配得到的每份字段值的数据量,并根据每份字段值的数据量,计算每个字段对应的数据量的方差;
判断模块405,用于针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键;
分区模块406,用于按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表;
同步模块407,用于将多个子数据表同步到与目的数据库标识信息对应的目的数据库。
本发明实施例提供的一种数据同步装置,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销。
具体的,分配模块403,具体用于:
根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到预设并行度整数倍份数的字段值。
具体的,本发明实施例的一种数据同步装置还可以包括:
添加模块,用于将待同步数据表的各分区键添加至预设分区键集合中;
相应的,分区模块406,具体用于:
按照预设分区键集合中的各分区键,对待同步数据表进行分区,得到待同步数据表的多个子数据表。
具体的,数据同步请求中还携带有预设并行度,分区模块406,具体用于:
针对每个分区键,按照该分区键和预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围;将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到待同步数据表的多个子数据表。
具体的,本发明实施例的一种数据同步装置,还可以包括:
反馈模块,用于在同步完成后,发送同步成功的通知信息至用户终端。
本发明实施例还提供了一种电子设备,如图5所示,为本发明实施例的一种电子设备的结构示意图,该电子设备可以包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
获取用户终端发送的数据同步请求,其中,数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找与待同步数据表标识信息对应的待同步数据表,并获取待同步数据表中的每个字段;
获取每个字段中的最大字段值和最小字段值,并根据每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算每个字段分配得到的每份字段值的数据量,并根据每份字段值的数据量,计算每个字段对应的数据量的方差;
针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为待同步数据表的分区键;
按照各分区键对待同步数据表进行分区,得到待同步数据表的多个子数据表;
将多个子数据表同步到与目的数据库标识信息对应的目的数据库。
本发明实施例提供的一种电子设备,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的一种数据同步方法。
本发明实施例提供的一种计算机可读存储介质,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的一种数据同步方法。
本发明实施例提供的一种包含指令的计算机程序产品,在获取到用户终端发送的数据同步请求后,可以得到该数据同步请求中携带的待同步数据表的标识信息,进而可以查找到对应的待同步数据表,然后可以获取该待同步数据表中的每个字段,针对每个字段,可以对该字段进行分配,得到多份字段值,再计算每份字段值的数据量和该字段的数据量的方差,将该数据量的方差与预设方差阈值进行对比,当该字段对应的数据量的方差小于预设方差阈值时,可以将该字段作为待同步数据表的分区键。最后再根据该待同步数据表的分区键,将待同步数据表分为多个子数据表,将多个子数据表同步到与目的数据库标识信息对应的数据库中。从而可以实现合理设置分区键,降低数据同步时的时间开销。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (11)
1.一种数据同步方法,其特征在于,所述方法包括:
获取用户终端发送的数据同步请求,其中,所述数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找与所述待同步数据表标识信息对应的待同步数据表,并获取所述待同步数据表中的每个字段;
获取每个字段中的最大字段值和最小字段值,并根据所述每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算每个字段分配得到的每份字段值的数据量,并根据所述每份字段值的数据量,计算所述每个字段对应的数据量的方差,所述每份字段值的数据量至少是对该份字段值中的多个字段值进行相加或相乘得到的;
针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为所述待同步数据表的分区键;
按照各分区键对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表;
将所述多个子数据表同步到与所述目的数据库标识信息对应的目的数据库。
2.根据权利要求1所述的方法,其特征在于,所述数据同步请求中还携带有预设并行度,所述根据所述每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值,包括:
根据所述每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到所述预设并行度整数倍份数的字段值。
3.根据权利要求1所述的方法,其特征在于,在所述针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为所述待同步数据表的分区键之后,所述方法还包括:
将所述待同步数据表的各分区键添加至预设分区键集合中;
相应的,所述按照各分区键对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表,包括:
按照所述预设分区键集合中的各分区键,对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表。
4.根据权利要求1所述的方法,其特征在于,所述数据同步请求中还携带有预设并行度,所述按照各分区键对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表,包括:
针对每个分区键,按照该分区键和所述预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围;
将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到所述待同步数据表的多个子数据表。
5.根据权利要求1所述的方法,其特征在于,在所述将所述多个子数据表同步到与所述目的数据库标识信息对应的目的数据库之后,所述方法还包括:
在同步完成后,发送同步成功的通知信息至所述用户终端。
6.一种数据同步装置,其特征在于,所述装置包括:
获取模块,用于获取用户终端发送的数据同步请求,其中,所述数据同步请求中至少携带有待同步数据表标识信息、以及目的数据库标识信息;
查找模块,用于查找与所述待同步数据表标识信息对应的待同步数据表,并获取所述待同步数据表中的每个字段;
分配模块,用于获取每个字段中的最大字段值和最小字段值,并根据所述每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值进行分配,得到多份字段值;
计算模块,用于计算每个字段分配得到的每份字段值的数据量,并根据所述每份字段值的数据量,计算所述每个字段对应的数据量的方差,所述每份字段值的数据量至少是对该份字段值中的多个字段值进行相加或相乘得到的;
判断模块,用于针对每个字段,判断该字段对应的数据量的方差是否小于预设方差阈值,如果是,将该字段作为所述待同步数据表的分区键;
分区模块,用于按照各分区键对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表;
同步模块,用于将所述多个子数据表同步到与所述目的数据库标识信息对应的目的数据库。
7.根据权利要求6所述的装置,其特征在于,所述数据同步请求中还携带有预设并行度,所述分配模块,具体用于:
根据所述每个字段中的最大字段值和最小字段值,对应将每个字段中的字段值分配得到所述预设并行度整数倍份数的字段值。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
添加模块,用于将所述待同步数据表的各分区键添加至预设分区键集合中;
相应的,所述分区模块,具体用于:
按照所述预设分区键集合中的各分区键,对所述待同步数据表进行分区,得到所述待同步数据表的多个子数据表。
9.根据权利要求6所述的装置,其特征在于,所述数据同步请求中还携带有预设并行度,所述分区模块,具体用于:
针对每个分区键,按照该分区键和所述预设并行度对与该分区键对应的字段值进行分区,得到与该分区键对应的区间范围;将同时处于各分区键的区间范围的多行记录作为一个子数据表,得到所述待同步数据表的多个子数据表。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
反馈模块,用于在同步完成后,发送同步成功的通知信息至所述用户终端。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711317030.5A CN108009261B (zh) | 2017-12-12 | 2017-12-12 | 一种数据同步方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711317030.5A CN108009261B (zh) | 2017-12-12 | 2017-12-12 | 一种数据同步方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009261A CN108009261A (zh) | 2018-05-08 |
CN108009261B true CN108009261B (zh) | 2020-12-25 |
Family
ID=62058303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711317030.5A Active CN108009261B (zh) | 2017-12-12 | 2017-12-12 | 一种数据同步方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009261B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325015B (zh) * | 2018-08-31 | 2021-07-20 | 创新先进技术有限公司 | 一种领域模型的特征字段的提取方法及装置 |
CN109933436B (zh) * | 2019-03-25 | 2021-10-22 | 联想(北京)有限公司 | 处理方法和处理装置 |
CN110851440B (zh) * | 2019-09-29 | 2023-10-13 | 深圳市华力特电气有限公司 | 一种数据同步方法和装置 |
CN112925835A (zh) * | 2019-12-05 | 2021-06-08 | 北京金山云网络技术有限公司 | 数据同步方法、装置和服务器 |
CN111061738A (zh) * | 2019-12-16 | 2020-04-24 | 中国建设银行股份有限公司 | 数据表预分组方法、装置、设备及存储介质 |
CN113642309A (zh) * | 2020-04-27 | 2021-11-12 | 北京国双科技有限公司 | 数据对比方法及相关装置 |
CN111782728B (zh) * | 2020-06-30 | 2024-02-02 | 北京金山云网络技术有限公司 | 一种数据同步方法、装置、电子设备及介质 |
CN112597247B (zh) * | 2020-12-25 | 2022-05-31 | 杭州数梦工场科技有限公司 | 一种数据同步方法及装置 |
CN113535857A (zh) * | 2021-08-04 | 2021-10-22 | 阿波罗智联(北京)科技有限公司 | 数据同步方法及装置 |
JP2024051955A (ja) * | 2022-09-30 | 2024-04-11 | 富士通株式会社 | データ同期プログラム及びデータ同期方法、並びに情報処理装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078825B2 (en) * | 2009-03-11 | 2011-12-13 | Oracle America, Inc. | Composite hash and list partitioning of database tables |
CN103365923B (zh) * | 2012-03-30 | 2018-12-07 | 伊姆西公司 | 用于评估数据库的分区方案的方法和装置 |
CN103500229B (zh) * | 2013-10-24 | 2017-04-19 | 北京奇虎科技有限公司 | 一种数据库同步方法和数据库系统 |
CN105183901A (zh) * | 2015-09-30 | 2015-12-23 | 北京京东尚科信息技术有限公司 | 一种数据查询引擎读取数据库表的方法及装置 |
CN107122355B (zh) * | 2016-02-24 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
-
2017
- 2017-12-12 CN CN201711317030.5A patent/CN108009261B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108009261A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009261B (zh) | 一种数据同步方法、装置及电子设备 | |
US10509772B1 (en) | Efficient locking of large data collections | |
US11068964B2 (en) | Method and device for processing service request | |
US10606806B2 (en) | Method and apparatus for storing time series data | |
US8051058B2 (en) | System for estimating cardinality in a database system | |
EP3637280A1 (en) | Data storage method and device, and storage medium | |
KR20170010844A (ko) | 원격 데이터베이스에 대한 뮤테이션들의 프로세싱 | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
CN107659450B (zh) | 大数据集群资源的分配方法、分配装置及存储介质 | |
CN115757406A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
US10158642B2 (en) | Coherent distributed logging | |
CN111061740A (zh) | 一种数据同步方法、设备和存储介质 | |
EP3401862A1 (en) | Data storage and service processing method and device | |
CN111163186B (zh) | 一种id生成方法、装置、设备和存储介质 | |
CN111125240B (zh) | 一种分布式事务实现方法、装置、电子设备及存储介质 | |
CN110321357B (zh) | 一种读写控制方法、装置及服务器 | |
CN107277087B (zh) | 数据处理方法及装置 | |
CN112835885A (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
CN103905512A (zh) | 一种数据处理方法和设备 | |
CN110825953B (zh) | 数据查询方法、装置和设备 | |
CN112732711A (zh) | 一种数据存储方法、装置及电子设备 | |
US10003492B2 (en) | Systems and methods for managing data related to network elements from multiple sources | |
CN111338607A (zh) | 一种用于测试的业务数据的选择方法、装置及电子设备 | |
CN111881110B (zh) | 数据迁移方法及装置 | |
CN111061759A (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 |