CN109299191A - 一种数据分布方法、装置、服务器及计算机存储介质 - Google Patents
一种数据分布方法、装置、服务器及计算机存储介质 Download PDFInfo
- Publication number
- CN109299191A CN109299191A CN201811089131.6A CN201811089131A CN109299191A CN 109299191 A CN109299191 A CN 109299191A CN 201811089131 A CN201811089131 A CN 201811089131A CN 109299191 A CN109299191 A CN 109299191A
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- distribution
- record
- moment
- 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.)
- Pending
Links
Abstract
本申请提供了一种数据分布方法、装置、服务器及计算机存储介质,涉及通信领域,所述方法包括:创建第一数据表,按照第一分布建对第一数据表的数据记录进行分布;复制第一数据表得到第二数据表;按照第二分布建将第二数据表的数据记录进行分布;记录从第一时刻至第二时刻之间针对第一数据表执行的DML操作,第一时刻为开始执行复制操作的时刻,第二时刻为将第二数据表的数据记录分布完成的时刻;在第二时刻对第二数据表执行记录的DML操作,并在DML操作执行完毕时,使用第二数据表替换第一数据表。这样,能够在不中断原始数据表的前提下,实现原始数据表中数据的重分布,缓解了由于暂停原始数据表而导致的业务中断问题。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种数据分布方法、装置、服务器及计算机存储介质。
背景技术
Greenplum数据库是一种大规模并行处理(Massively Parallel Processor,MPP)数据库,包括主节点(即Master节点)和数据库节点(即Segment节点)。其中,Segment节点中部署有Segment实例,Master节点和Segment实例通信连接,且各Segment实例之间相互独立。Master节点用于将来自用户端的数据分发给Segment节点,Segment实例用于存储和处理数据。
目前,Master节点中创建有原始数据表(即test表),并基于指定的第一分布键(distribution key,DK键)将test表中的数据记录分布到Segment实例中。但是,如果第一DK键选择不合理,会使得Segment实例中的数据分布不均匀,这就会导致数据量大的Segment实例出现性能短板问题。为了解决上述问题,Master节点需要进行数据重分布。在Master节点进行数据重分布的过程中,暂停运行的test表,根据指定的第二DK键,将test表中的数据记录重分布到Segment实例中,在完成数据记录的重分布后,重新启用test表。
在上述数据重分布的过程中,需要暂停test表,使得test表不能进行任何操作,从而与test表相关联的业务均无法进行,导致业务中断。当test表数据量庞大,数据重分布时间将极为漫长,严重影响了业务操作的正常进行。
发明内容
有鉴于此,本申请实施例的目的在于提供一种数据分布方法、装置、服务器及计算机存储介质,能够在不中断原始数据表的前提下,实现原始数据表中数据的重分布,缓解了由于暂停原始数据表而导致的业务中断问题。
第一方面,本申请实施例提供了一种数据分布方法,应用于服务器,所述方法包括:
创建第一数据表,按照第一分布建对所述第一数据表的数据记录进行分布;
复制所述第一数据表得到第二数据表;
按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同;
记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻;
在所述第二时刻对所述第二数据表执行记录的DML操作,并在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
第二方面,本申请实施例还提供了一种数据分布装置,包括:
创建模块,用于创建第一数据表;
分布模块,用于按照第一分布建对所述第一数据表的数据记录进行分布;
复制模块,用于复制所述第一数据表得到第二数据表;
所述分布模块,还用于按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同;
记录模块,用于记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻;
操作模块,用于在所述第二时刻对所述第二数据表执行记录的DML操作;
替换模块,用于在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
第三方面,本申请实施例还提供了一种服务器,包括:处理器、存储器和总线,所述存储器存储执行指令,当所述服务器运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述服务器执行上述第一方面所述的数据分布方法。
第四方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述第一方面所述的数据分布方法。
本申请实施例提供的一种数据分布方法、装置、服务器及计算机存储介质,在数据分布的过程中,服务器基于第一分布建进行第一数据表中数据记录的数据分布,当接收到重分布指令时,服务器通过复制第一数据表得到第二数据表,并将第二数据表中的数据记录进行分布,之后,使用第二数据表替换第一数据表来继续用户的业务,这样,能够保证在第一数据表中数据记录进行重分布的同时,第一数据表继续响应用户的DML操作,保证了用户业务的不中断。
由于在复制操作开始时刻(即第一时刻)到第二数据表的数据记录分布完成的时刻(即第二时刻)之间,第一数据表继续响应DML操作,因此,第二时刻的第二数据表中的数据记录可能与第一数据表不一致。基于此,本申请实施例中,服务器记录第一时刻到第二时刻之间针对第一数据表执行的DML操作,并在第二时刻对第二数据表执行记录的DML操作,在DML操作执行完毕时,使用所述第二数据表替换所述第一数据表,这样,能够在保证第二数据表和第一数据表的数据记录一致的前提下,实现两表交换。在本申请实施例中,对第二数据表执行记录的DML操作以及在DML操作执行完毕时,使用第二数据表替换第一数据表的耗时较短,能够缓解现有技术中需要暂停第一数据表进行数据重分布的过程而导致的业务中断的问题。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的Greenplum数据库的结构示意图。
图2示出了本申请实施例所提供的一种数据分布方法的流程图。
图3示出了本申请实施例所提供的一种数据分布方法时刻表示意图。
图4示出了本申请实施例所提供的一种应用场景下Greenplum数据库的结构图。
图5示出了本申请实施例所提供的另一种数据分布方法的流程图。
图6示出了本申请实施例所提供的一种数据分布装置的结构示意图。
图7示出了本申请实施例所提供的计算机设备40的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请实施例提供的一种Greenplum数据库的架构图,如图1所示,Greenplum数据库包括主节点(即Master节点)和数据库节点(即Segment节点)。其中,Master节点包括主用主节点和备用主节点;主节点和Segment节点通过互连模块(即interconnect模块)通信连接。其中,主节点为服务器或者主机,主节点是Greenplum数据库的入口,用于接收终端设备发送的数据并分发给Segment节点。Greenplum数据库在正常运行时,由主用主节点进行数据分发处理,而当主用主节点故障后,可以切换备用主节点作为新的主用主节点进行数据分发处理。其中,每个Segment节点中部署有多个Segment实例(图1中为4个),所述Segment实例用于存储和处理接收到的数据。
基于上述Greenplum数据库的架构,如图2和图3所示,本申请第一实施例提供了一种数据分布方法,应用于服务器,所述方法包括:
S101、创建第一数据表,按照第一分布建对所述第一数据表的数据记录进行分布。
以图4中的Greenplum数据库架构图为例,Master节点基于预设的数据属性字段创建第一数据表,此时第一数据表为空,Master节点在接收到用户端发送的10000条数据后,基于第一分布键col_a(其中,col_a对应数据的一个字段),向第一数据表插入来自用户端的10000条数据。其中,第一数据表的示意图如表1所示:
col_e | col_d | col_c | col_b | col_a |
ID | 姓名 | 年龄 | 班级 | 所在城市 |
1 | 小明 | 20 | A | 北京 |
2 | 小红 | 22 | B | 北京 |
3 | 小黑 | 25 | D | 上海 |
4 | 小蓝 | 28 | C | 杭州 |
表1
其中,来自用户端的10000条数据的数据特性如下,col_a有4个值,比如分别为北京(对应值1)、上海(对应值2)、天津(对应值3)和杭州(对应值4),值为1的数据有9600条,值为2的数据有100条,值为3的数据有100条,值为4的数据有100条。因为第一数据表的第一分布键为col_a,此时,第一数据表中的数据在Segment实例中的分布如表2所示:
实例编号 | 数据条数 |
Segment实例1 | 9600 |
Segment实例2 | 100 |
Segment实例3 | 100 |
Segment实例4 | 100 |
表2
此时,第一数据表的数据在Segment实例中分布不均匀,由于各个Segment实例之间不共享资源,所以Segment实例1就会成为第一数据表的性能短板。
S102、复制所述第一数据表得到第二数据表。
本申请实施例中,为了规避Segment实例1成为第一数据表的性能短板的问题,此时,需要对存储分布不均匀的第一数据表进行数据重分布,变更第一数据表的第一分布键col_a为第二分布键col_b。
其中,管理员监控各个Segment实例的资源占用情况,在确定Segment实例1的资源的占用情况大于预设阈值时,确定Segment实例1成为第一数据表的性能短板时,此时,管理员向Master节点发送的重分布指令,Master节点在接收到重分布指令后,复制所述第一数据表得到第二数据表。或者,Master节点自动监控各个Segment实例的资源占用情况,在确定Segment实例1的资源的占用情况大于预设阈值时,确定Segment实例1成为第一数据表的性能短板,此时,Master节点执行复制所述第一数据表得到第二数据表。
这里,Master节点在接收到重分布指令或者监控到Segment实例1的资源的占用情况大于预设阈值时(此时对应第一时刻),Master节点复制第一数据表得到第二数据表。这里,Master节点复制的过程如下:基于预设的数据属性字段创建第二数据表,此时第二数据表为空;然后,获取第一数据表中的10000条数据,然后将第一数据表中的10000条数据插入第二数据表中。这里,插入了数据后的第二数据表同表1中的第一数据表相同。
S103、按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同。
本申请实施例中,按照第二分布键col_b将第二数据表的数据记录分布到Segment实例中,直至第二数据表的数据记录分布完成(此时,对应第二时刻)。这里,Master节点进行数据记录分布的方法如下:在向第二数据表中插入任一条数据后,基于哈希算法将该数据分布到Segment实例中。或者,Master节点将第一数据表中的所有数据均插入到第二数据表中后,基于哈希算法将所有数据分布到Segment实例中。
其中,第二分布键col_b将第二数据表中的数据记录分布后,每个Segment实例中的数据量如表2所示:
实例编号 | 数据条数 |
Segment实例1 | 2500 |
Segment实例2 | 2500 |
Segment实例3 | 2500 |
Segment实例4 | 2500 |
表3
在将第一数据表中的数据按照第二分布键col_b重分布后,数据在第二分布键col_b的各个值下都是均匀分布,对应的,每个Segment实例中的数据也是均匀分布的,解决了按照第一分布键col_a进行数据分布而导致的Segment实例1成为性能短板的问题。
S104、记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻。
这里,在第一时刻(即开始执行所述复制操作的时刻)到第二时刻(即将所述第二数据表的数据记录分布完成的时刻),第一数据表继续响应来自用户端的DML操作。此时,Master节点记录第一时刻到第二时刻针对第一数据表执行的DML操作。其中,记录的所述DML操作包括以下操作中的至少一种:插入操作、删除操作和更新操作。
S105、在所述第二时刻对所述第二数据表执行记录的DML操作,并在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
这里,在第二数据表的数据记录分布完成时,即在第二时刻对写入了10000条数据的第二数据表执行记录的针对第一数据表的DML操作。这里,在对第一数据表中的数据重分布过程中,选择可串行化事务级别,使所有针对第一数据表的DML操作在第二数据表中的数据分布完成后在进行操作(也即按照时间先后顺序串行执行),可靠的保证了两表数据的一致性。
当对第二数据表执行完DML操作时(即第三时刻),第二数据表的数据和第二时刻第一数据表的数据完全一致,此时,进行第一数据表和第二数据表的交换操作,即使用所述第二数据表替换所述第一数据表。当两表交换完成后(即第四时刻),通过第二数据表承担业务,这时,由第二数据表响应来自用户端的DML操作。
其中,两表交换的方法如下:将第一数据表的名称修改为第二数据表的名称,将第二数据表的名称修改为第一数据表的名称。为了避免第一数据表占用存储资源,Master节点在两表交换完成后,删除第一数据表。
另外,上述数据分布方法依赖GreenPlum的数据回滚段,对系统的内存要求比较高,当有大数据量的分区第一数据表需要进行数据重分布,可能会导致内存溢出或者数据库版本控制异常,故大数据量分区第一数据表按照分区列表依次进行单个分区的第一数据表的重分布操作,当需要分区交换的第一数据表按照上述步骤101至步骤105的方法进行重分布后,再进行分区交换。通过这种方式可以平稳的实现大数据量分区表的业务不间断的数据重分布操作。
本申请实施例提供的一种数据分布方法,在数据分布的过程中,服务器基于第一分布建进行第一数据表中数据记录的数据分布,当接收到重分布指令时,服务器通过复制第一数据表得到第二数据表,并将第二数据表中的数据记录进行分布,之后,使用第二数据表替换第一数据表来继续用户的业务,这样,能够保证在第一数据表中数据记录进行重分布的同时,第一数据表继续响应用户的DML操作,保证了用户业务的不中断。
由于在复制操作开始时刻(即第一时刻)到第二数据表的数据记录分布完成的时刻(即第二时刻)之间,第一数据表继续响应DML操作,因此,第二时刻的第二数据表中的数据记录可能与第一数据表不一致。基于此,本申请实施例中,服务器记录第一时刻到第二时刻之间针对第一数据表执行的DML操作,并在第二时刻对第二数据表执行记录的DML操作,在DML操作执行完毕时,使用所述第二数据表替换所述第一数据表,这样,能够在保证第二数据表和第一数据表的数据记录一致的前提下,实现两表交换。在本申请实施例中,对第二数据表执行记录的DML操作以及在DML操作执行完毕时,使用第二数据表替换第一数据表的耗时较短,且两表交换的过程为毫秒级,基本不会中断业务。因此,本申请实施例提供的数据分布方法能够缓解现有技术中需要暂停第一数据表进行数据重分布的过程而导致的业务中断的问题。
进一步的,如图5所示,本申请实施例提供的数据分布方法中,所述第一分布建为第一数据表的一个指定字段,所述第二分布建为第二数据表的一个指定字段,且两个表中的指定字段不同;按照分布建对数据表中的数据记录进行分布,包括:
S201、针对数据表中的任意一条数据记录,将该数据记录中对应于所述分布建的值进行哈希运算,得到哈希值。
本申请实施例中,Master节点采用哈希算法(即Hash算法)进行数据表中数据记录的分布。比如,针对第一数据表中数据记录,若第一条数据记录对应的对第一分布键为col_a为北京,对北京进行哈希运算,得到对应于北京的哈希值9。若第二条数据记录对应的对第一分布键为col_a仍然为北京,仍然对北京进行哈希运算,得到对应于北京的哈希值9;若第三条数据记录对应的对第一分布键为col_a为上海,对上海进行哈希运算,得到对应于上海的哈希值10。以此类推,不同的分布键值对应的哈希值不同,而相同的分布键值对应的哈希值相同。
第二数据表中数据记录的分布方法同上述第一数据表中数据记录的分布。
S202、按照所述哈希值对集群中数据库实例的数量取模,确定出所述哈希值对应的数据库实例。
本申请实施例中,仍然以步骤201中对第一数据表中数据记录进行数据分布为例:Segment实例的数量为4个,Master节点对4个Segment实例进行编号,Segment实例1到Segment实例4对应的编号分别为1、2、3、4。若第一条数据记录对应的对第一分布键为col_a为北京,对北京进行哈希运算,得到对应于北京的哈希值9,哈希值9除以Segment实例的数量4,余数为1,因此,该数据记录会对应Segment实例1。其中,分布键值相同的数据记录对应的Segment实例是相同。比如,分布键值为北京的都对应Segment实例1,分布键值为上海的都对应Segment实例2。
其中,第一数据表中的其他数据记录以及第二数据表中的数据记录对应的Segment实例的确定方法均同上述方法。
S203、将所述哈希值对应的数据记录存储到确定出的该哈希值对应的数据库实例中。
本申请实施例中,无论是第一数据表还是第二数据表,Master节点在确定了数据记录对应的Segment实例后,均将该数据记录下发到该数据记录对应的Segment实例中。这里,通过Segment实例对数据表中的数据进行存储,能够提高数据的存储量,以满足大数据的存储要求。并且,采用各Segment实例分别存储不同的数据的分布式存储方式,能够提高数据存储的高可靠性。
进一步的,本申请实施例提供的数据分布方法中,步骤105中,所述对所述第二数据表执行记录的DML操作,包括:
按照所述DML操作在第一数据表的执行时间先后顺序,依次对所述第二数据表执行所述DML操作。
这里,Master节点按照DML操作在第一数据表的执行时间先后顺序将针对第一数据表的DML操作依次存储到列表中,然后,DML操作在列表中的存储顺序,依次对所述第二数据表执行所述DML操作。
或者,Master节点记录有针对第一数据表的DML操作以及每一个DML操作对应的执行时间,然后按照DML操作在第一数据表的执行时间先后顺序,依次对所述第二数据表执行所述DML操作。
需要说明的是,由于删除数据操作和更新数据操作都是基于第一数据表中已有数据进行的操作,因此,需要在第二时刻(也即将所述第二数据表的数据记录分布完成的时刻)进行删除操作和更新操作。而由于插入数据操作不依靠于第一数据表中已有数据,因此,针对插入数据的操作,可以在第一时刻和第二时刻(也即开始执行复制操作的时刻到将所述第二数据表的数据记录分布完成的时刻)之间进行。
本申请第二实施例提供了一种数据分布装置,用于执行第一实施例提供的数据分布方法,如图6所示,所述装置包括:
创建模块11,用于创建第一数据表;
分布模块12,用于按照第一分布建对所述第一数据表的数据记录进行分布;
复制模块13,用于复制所述第一数据表得到第二数据表;
分布模块12,还用于按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同;
记录模块14,用于记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻;
操作模块15,用于在所述第二时刻对所述第二数据表执行记录的DML操作;
替换模块16,用于在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
进一步的,本申请实施例提供的数据分布装置中,所述第一分布建为第一数据表的一个指定字段,所述第二分布建为第二数据表的一个指定字段;分布模块12,具体用于:
针对数据表中的任意一条数据记录,将该数据记录中对应于所述分布建的值进行哈希运算,得到哈希值;
按照所述哈希值对集群中数据库实例的数量取模,确定出所述哈希值对应的数据库实例;
将所述哈希值对应的数据记录存储到确定出的该哈希值对应的数据库实例中。
进一步的,本申请实施例提供的数据分布装置中,记录的所述DML操作包括以下操作中的至少一种:插入操作、删除操作和更新操作。
进一步的,本申请实施例提供的数据分布装置中,操作模块15,具体用于:
按照所述DML操作在第一数据表的执行时间先后顺序,依次对所述第二数据表执行所述DML操作。
本申请实施例提供的一种数据分布装置,在数据分布的过程中,服务器基于第一分布建进行第一数据表中数据记录的数据分布,当接收到重分布指令时,服务器通过复制第一数据表得到第二数据表,并将第二数据表中的数据记录进行分布,之后,使用第二数据表替换第一数据表来继续用户的业务,这样,能够保证在第一数据表中数据记录进行重分布的同时,第一数据表继续响应用户的DML操作,保证了用户业务的不中断。
由于在复制操作开始时刻(即第一时刻)到第二数据表的数据记录分布完成的时刻(即第二时刻)之间,第一数据表继续响应DML操作,因此,第二时刻的第二数据表中的数据记录可能与第一数据表不一致。基于此,本申请实施例中,服务器记录第一时刻到第二时刻之间针对第一数据表执行的DML操作,并在第二时刻对第二数据表执行记录的DML操作,在DML操作执行完毕时,使用所述第二数据表替换所述第一数据表,这样,能够在保证第二数据表和第一数据表的数据记录一致的前提下,实现两表交换。在本申请实施例中,对第二数据表执行记录的DML操作以及在DML操作执行完毕时,使用第二数据表替换第一数据表的耗时较短,且两表交换的过程为毫秒级,基本不会中断业务。因此,本申请实施例提供的数据分布方法能够缓解现有技术中需要暂停第一数据表进行数据重分布的过程而导致的业务中断的问题。
本申请第三实施例提供了一种服务器,包括:处理器、存储器和总线,所述存储器存储执行指令,当所述服务器运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述服务器执行第一实施例中的数据分布方法。
图7为本申请一实施例提供的计算机设备40的结构示意图,如图7所示,用于上述数据分布方法,该设备包括存储器401、处理器402及存储在该存储器401上并可在该处理器402上运行的计算机程序,其中,上述处理器402执行上述计算机程序时实现上述数据分布方法的步骤。
具体地,上述存储器401和处理器402能够为通用的存储器和处理器,这里不做具体限定,当处理器402运行存储器401存储的计算机程序时,能够执行上述数据分布方法。
对应于上述数据分布方法,本申请第四实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述数据分布方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述数据分布方法。
本申请实施例所提供的数据分布装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据分布方法,其特征在于,应用于服务器,所述方法包括:
创建第一数据表,按照第一分布建对所述第一数据表的数据记录进行分布;
复制所述第一数据表得到第二数据表;
按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同;
记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻;
在所述第二时刻对所述第二数据表执行记录的DML操作,并在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
2.根据权利要求1所述的数据分布方法,其特征在于,所述第一分布建为第一数据表的一个指定字段,所述第二分布建为第二数据表的一个指定字段;
按照分布建对数据表中的数据记录进行分布,包括:
针对数据表中的任意一条数据记录,将该数据记录中对应于所述分布建的值进行哈希运算,得到哈希值;
按照所述哈希值对集群中数据库实例的数量取模,确定出所述哈希值对应的数据库实例;
将所述哈希值对应的数据记录存储到确定出的该哈希值对应的数据库实例中。
3.根据权利要求1所述的数据分布方法,其特征在于,
记录的所述DML操作包括以下操作中的至少一种:插入操作、删除操作和更新操作。
4.根据权利要求3所述的数据分布方法,其特征在于,所述对所述第二数据表执行记录的DML操作,包括:
按照所述DML操作在第一数据表的执行时间先后顺序,依次对所述第二数据表执行所述DML操作。
5.一种数据分布装置,其特征在于,包括:
创建模块,用于创建第一数据表;
分布模块,用于按照第一分布建对所述第一数据表的数据记录进行分布;
复制模块,用于复制所述第一数据表得到第二数据表;
所述分布模块,还用于按照第二分布建将第二数据表的数据记录进行分布,所述第一分布建与所述第二分布建不同;
记录模块,用于记录从第一时刻至第二时刻之间针对所述第一数据表执行的DML操作,所述第一时刻为开始执行所述复制操作的时刻,所述第二时刻为将所述第二数据表的数据记录分布完成的时刻;
操作模块,用于在所述第二时刻对所述第二数据表执行记录的DML操作;
替换模块,用于在所述DML操作执行完毕时,使用所述第二数据表替换所述第一数据表。
6.根据权利要求5所述的数据分布装置,其特征在于,所述第一分布建为第一数据表的一个指定字段,所述第二分布建为第二数据表的一个指定字段;所述分布模块,具体用于:
针对数据表中的任意一条数据记录,将该数据记录中对应于所述分布建的值进行哈希运算,得到哈希值;
按照所述哈希值对集群中数据库实例的数量取模,确定出所述哈希值对应的数据库实例;
将所述哈希值对应的数据记录存储到确定出的该哈希值对应的数据库实例中。
7.根据权利要求5所述的数据分布装置,其特征在于,记录的所述DML操作包括以下操作中的至少一种:插入操作、删除操作和更新操作。
8.根据权利要求7所述的数据分布装置,其特征在于,所述操作模块,具体用于:
按照所述DML操作在第一数据表的执行时间先后顺序,依次对所述第二数据表执行所述DML操作。
9.一种服务器,其特征在于,包括:处理器、存储器和总线,所述存储器存储执行指令,当所述服务器运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述服务器执行权利要求1至4任一项所述的数据分布方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行权利要求1至4任一项所述的数据分布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811089131.6A CN109299191A (zh) | 2018-09-18 | 2018-09-18 | 一种数据分布方法、装置、服务器及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811089131.6A CN109299191A (zh) | 2018-09-18 | 2018-09-18 | 一种数据分布方法、装置、服务器及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109299191A true CN109299191A (zh) | 2019-02-01 |
Family
ID=65163638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811089131.6A Pending CN109299191A (zh) | 2018-09-18 | 2018-09-18 | 一种数据分布方法、装置、服务器及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299191A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181989A (zh) * | 2020-10-12 | 2021-01-05 | 浙江大华技术股份有限公司 | 一种分布式数据库的数据处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100235606A1 (en) * | 2009-03-11 | 2010-09-16 | Oracle America, Inc. | Composite hash and list partitioning of database tables |
CN101916261A (zh) * | 2010-07-28 | 2010-12-15 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN104978327A (zh) * | 2014-04-03 | 2015-10-14 | 中国移动通信集团河南有限公司 | 一种查询数据的方法、管理控制节点及目标数据节点 |
CN106997361A (zh) * | 2016-01-25 | 2017-08-01 | 中国移动通信集团湖南有限公司 | 一种数据分布方法及装置 |
CN107391628A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
-
2018
- 2018-09-18 CN CN201811089131.6A patent/CN109299191A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100235606A1 (en) * | 2009-03-11 | 2010-09-16 | Oracle America, Inc. | Composite hash and list partitioning of database tables |
CN101916261A (zh) * | 2010-07-28 | 2010-12-15 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN104978327A (zh) * | 2014-04-03 | 2015-10-14 | 中国移动通信集团河南有限公司 | 一种查询数据的方法、管理控制节点及目标数据节点 |
CN106997361A (zh) * | 2016-01-25 | 2017-08-01 | 中国移动通信集团湖南有限公司 | 一种数据分布方法及装置 |
CN107391628A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据同步方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181989A (zh) * | 2020-10-12 | 2021-01-05 | 浙江大华技术股份有限公司 | 一种分布式数据库的数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103116596B (zh) | 在分布式数据库中执行快照隔离的系统和方法 | |
CN105786405B (zh) | 一种在线升级方法、装置及系统 | |
CN107430603A (zh) | 大规模并行处理数据库的系统和方法 | |
CN106843745A (zh) | 容量扩展方法及装置 | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN103095804A (zh) | 集群存储系统中的负载平衡 | |
CN109643310B (zh) | 用于数据库中数据重分布的系统和方法 | |
CN109218100A (zh) | 分布式对象存储集群及其请求响应方法、系统和存储介质 | |
CN112083889A (zh) | 数据迁移方法、装置、设备及可读存储介质 | |
CN106101213A (zh) | 信息分布式存储方法 | |
JP2022505720A (ja) | コンテナ化されたリレーショナルデータベースのi/o消費を効果的に減少させる方法 | |
CN113553179A (zh) | 分布式键值存储负载均衡方法及系统 | |
CN109561151A (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN107247729A (zh) | 一种文件处理方法和装置 | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储系统 | |
CN113127023B (zh) | 业务升级的方法、装置和系统 | |
CN115048254A (zh) | 数据分配策略的仿真测试方法、系统、设备和可读介质 | |
CN109299191A (zh) | 一种数据分布方法、装置、服务器及计算机存储介质 | |
CN110083504A (zh) | 分布式任务的运行状态监控方法及装置 | |
CN105488139B (zh) | 基于用电信息采集系统的跨平台存储数据迁移的方法 | |
CN113810513B (zh) | 一种弹性公网ip的配置管理方法及系统 | |
CN108400999B (zh) | 一种数据库集群镜像节点的负载均衡方法及装置 | |
CN107104829B (zh) | 一种基于网络拓扑数据的物理设备匹配分配方法及装置 | |
CN106302656A (zh) | 云存储平台的医药数据处理方法 | |
CN105511808A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190201 |
|
RJ01 | Rejection of invention patent application after publication |