一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于分片技术的表格全量采集方法及相关装置与流程

2022-07-16 23:16:31 来源:中国专利 TAG:
1.本发明涉及数据库同步
技术领域
:,特别是涉及一种基于分片技术的表格全量采集方法、一种基于分片技术的表格全量采集装置、一种基于分片技术的表格全量采集设备以及一种计算机可读存储介质。
背景技术
::2.如今云计算与大数据技术盛行,各类数据操作大都需要云上操作。数据库同步尤其是异构数据库的同步是云上大数据操作必不可少的一项技术。传统关系型数据库如oracle由于长时间数据积累,都会存在各种各样的庞大表格。为了保证数据安全,需要对这些表格进行数据同步到容灾数据库。3.数据同步在首次同步时,都需要进行全量同步。早期的数据同步针对大表同步时,往往采取单条选择(select)查询的方式获取表格快照,但这会给服务器带来负载压力,容易造成查询因超时而中断,导致全量采集失败。因此,现在数据库表格全量同步往往采用切片的,为防止数据倾斜的出现,如何均匀切片并保持切片采集快照一致性是一个技术难题。4.传统切片技术往往是通过select语句查出源表主键字段的最大值和最小值,然后根据表格总条数决定切片数,最后在最大值和最小值之间利用均匀步长,完成切片的区间确定。对于主键类型为数字的则直接按照除法进行切片;对于其他类型,如字符串类型,需要先按照一定规则转化为大整数,然后对整数区间进行切片,最后将切片点处的大整数转换回字符串,从而完成切片。这种方式可能因源表数据倾斜,造成每个切片数据量很不均匀,且切片所需要的时间很长。所以如何提供一种高效的可以将源表均匀切片的技术方案是本领域技术人员急需解决的问题。技术实现要素:5.本发明的目的是提供一种基于分片技术的表格全量采集方法,可以高效的可以将源表均匀切片;本发明的另一目的在于提供一种基于分片技术的表格全量采集装置、一种基于分片技术的表格全量采集设备以及一种计算机可读存储介质,可以高效的可以将源表均匀切片。6.为解决上述技术问题,本发明提供一种基于分片技术的表格全量采集方法,包括:7.从预设表格中随机提取预设条数的样本数据;所述样本数据为根据所述样本数据的主键进行排序后的数据;8.根据所述样本数据的条数对所述样本数据进行均匀切片,得到样本切片,确定切片点;9.根据所述样本数据与所述预设表格中数据的对应关系,根据所述切片点确定所述预设表格的切片区间;10.根据所述切片区间全量采集所述预设表格中处于各个所述切片区间内的数据。11.可选的,所述从预设表格中随机提取预设条数的样本数据包括:12.从预设表格中随机提取预设条数的样本数据;13.根据所述样本数据的主键对所述样本数据进行排序。14.可选的,所述根据所述样本数据的主键对所述样本数据进行排序包括:15.基于数据库字符集,根据所述样本数据的主键对所述样本数据进行排序。16.可选的,所述根据所述切片区间全量采集所述预设表格中处于各个所述切片区间内的数据包括:17.基于undo表空间功能对所述预设表格中处于各个所述切片区间内的数据进行全量采集。18.本发明还提供了一种基于分片技术的表格全量采集装置,包括:19.样本提取模块,用于从预设表格中随机提取预设条数的样本数据;所述样本数据为根据所述样本数据的主键进行排序后的数据;20.样本切片模块,用于根据所述样本数据的条数对所述样本数据进行均匀切片,得到样本切片,确定切片点;21.切片区间模块,用于根据所述样本数据与所述预设表格中数据的对应关系,根据所述切片点确定所述预设表格的切片区间;22.全量采集模块,用于根据所述切片区间全量采集所述预设表格中处于各个所述切片区间内的数据。23.可选的,所述样本提取模块包括:24.样本提取单元,用于从预设表格中随机提取预设条数的样本数据;25.样本排序单元,用于根据所述样本数据的主键对所述样本数据进行排序。26.可选的,所述样本排序单元用于:27.基于数据库字符集,根据所述样本数据的主键对所述样本数据进行排序。28.可选的,所述全量采集模块用于:29.基于undo表空间功能对所述预设表格中处于各个所述切片区间内的数据进行全量采集。30.本发明还提供了一种基于分片技术的表格全量采集设备,包括:31.存储器,用于存储计算机程序;32.处理器,用于执行所述计算机程序以实现如上述任意一项所述基于分片技术的表格全量采集方法的步骤。33.本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行以实现如上述任意一项所述基于分片技术的表格全量采集方法的步骤。34.本发明所提供的一种基于分片技术的表格全量采集方法,包括从预设表格中随机提取预设条数的样本数据;样本数据为根据样本数据的主键进行排序后的数据;根据样本数据的条数对样本数据进行均匀切片,得到样本切片,确定切片点;根据样本数据与预设表格中数据的对应关系,根据切片点确定预设表格的切片区间;根据切片区间全量采集预设表格中处于各个切片区间内的数据。35.通过对大表进行随机抽样,然后对抽样所得的样本数据根据其条数进行分片,基于样本的分片区间完成对原始大表的分片,有效解决了大表数据分布不均匀引起的切片不均匀问题,同时可以实现高效的切片功能。36.本发明还提供了一种基于分片技术的表格全量采集装置、一种基于分片技术的表格全量采集设备以及一种计算机可读存储介质,同样具有上述有益效果,在此不再进行赘述。附图说明37.为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。38.图1为本发明实施例所提供的一种基于分片技术的表格全量采集方法的流程图;39.图2为本发明事实来所提供的一种具体的基于分片技术的表格全量采集方法的流程图;40.图3为本发明实施例所提供的一种基于分片技术的表格全量采集装置的结构框图;41.图4为本发明实施例所提供的一种基于分片技术的表格全量采集设备的结构框图。具体实施方式42.本发明的核心是提供一种基于分片技术的表格全量采集方法。在现有技术中,传统切片技术往往是通过select语句查出源表主键字段的最大值和最小值,然后根据表格总条数决定切片数,最后在最大值和最小值之间利用均匀步长,完成切片的区间确定。对于主键类型为数字的则直接按照除法进行切片;对于其他类型,如字符串类型,需要先按照一定规则转化为大整数,然后对整数区间进行切片,最后将切片点处的大整数转换回字符串,从而完成切片。这种方式可能因源表数据倾斜,造成每个切片数据量很不均匀,且切片所需要的时间很长。43.而本发明所提供的一种基于分片技术的表格全量采集方法,包括从预设表格中随机提取预设条数的样本数据;样本数据为根据样本数据的主键进行排序后的数据;根据样本数据的条数对样本数据进行均匀切片,得到样本切片,确定切片点;根据样本数据与预设表格中数据的对应关系,根据切片点确定预设表格的切片区间;根据切片区间全量采集预设表格中处于各个切片区间内的数据。44.通过对大表进行随机抽样,然后对抽样所得的样本数据根据其条数进行分片,基于样本的分片区间完成对原始大表的分片,有效解决了大表数据分布不均匀引起的切片不均匀问题,同时可以实现高效的切片功能。45.为了使本
技术领域
:的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。46.请参考图1,图1为本发明实施例所提供的一种基于分片技术的表格全量采集方法的流程图。47.参见图1,在本发明实施例中,基于分片技术的表格全量采集方法包括:48.s101:从预设表格中随机提取预设条数的样本数据。49.在本发明实施例中,所述样本数据为根据所述样本数据的主键进行排序后的数据。50.上述预设表格即需要进行全量采集的源表,该表中通常存储有大量的数据形成大表。在本步骤中,通常会基于sql语句从预设表格中随机提取预设条数的样本数据。需要说明的是,该样本数据的数量通常需要与预设表格中数据条数相对应,即本步骤中样本数据的选取通常是在固定数量条数据中随机选取一条数据,例如从1000条数据中选取一条,此时本技术最终选取的样本数据的条数为源表中数据条数的0.1%。当然,有关上述具体数据仅为举例说明,并不是对样本数据提取过程的具体限定。51.还需要说明的是,本步骤最终提取出的样本数据需要为排序过的数据,从而便于后续对样本数据进行切片。同时本步骤中输出的样本数据可以仅仅包括有其源数据的主键以及行号即可,即用于存储样本数据的表格可以仅仅包括一主键列以及一行号列,以表征其对应的样本数据。52.s102:根据样本数据的条数对样本数据进行均匀切片,得到样本切片,确定切片点。53.在本步骤中,具体会依据上述样本数据总共的条数,依据其条数对样本数据进行均匀切片,保证切完后每片数据空间包括的数据条数大体相等,从而得到切片点。例如,在本步骤中通常需要严格按照排序后的样本中每100行记录为单位区间进行切片,仅需要在前面已经排序好的样本结果集上进行一步过滤,即可采集到切片点。同样的,有关上述具体数据仅为举例说明,并不是对样本数据提取过程的具体限定。54.根据概率论中的样本估计总体的思想,样本的切片也大致能保证其切片区间内的总体表记录大致是均匀的,例如每个切片大致是10万(=100/0.1%)行记录。因此可以直接使用样本切片区间作为原大表的切片区间。55.s103:根据样本数据与预设表格中数据的对应关系,根据切片点确定预设表格的切片区间。56.由于在本技术中抽取的样本数据与预设表格中的数据相互对应,且上述样本数据中的每条数据记录有其位于预设表格中的行数,因此在本步骤中可以根据上述对样本数据进行切片时所确定的切片点,确定源表,即预设表格中的切片点,从而确定出预设表格的切片区间。57.s104:根据切片区间全量采集预设表格中处于各个切片区间内的数据。58.在本步骤中,具体会以切片区间为单位,对预设表格中位于各个切片区间中的数据进行全量采集,从而实现对整个源表的全量采集。59.本发明实施例所提供的一种基于分片技术的表格全量采集方法,包括从预设表格中随机提取预设条数的样本数据;样本数据为根据样本数据的主键进行排序后的数据;根据样本数据的条数对样本数据进行均匀切片,得到样本切片,确定切片点;根据样本数据与预设表格中数据的对应关系,根据切片点确定预设表格的切片区间;根据切片区间全量采集预设表格中处于各个切片区间内的数据。60.通过对大表进行随机抽样,然后对抽样所得的样本数据根据其条数进行分片,基于样本的分片区间完成对原始大表的分片,有效解决了大表数据分布不均匀引起的切片不均匀问题,同时可以实现高效的切片功能。61.有关本发明所提供的一种基于分片技术的表格全量采集方法的具体内容将在下述发明实施例中做详细介绍。62.请参考图2,图2为本发明事实来所提供的一种具体的基于分片技术的表格全量采集方法的流程图。63.参见图2,在本发明实施例中,基于分片技术的表格全量采集方法包括:64.s201:从预设表格中随机提取预设条数的样本数据。65.s202:根据样本数据的主键对样本数据进行排序。66.在本发明实施例中,具体会先从身为源表的预设表格总随机提取样本数据,再对提取的样本数据进行排序,主要是根据各个样本数据的主键对样本数据进行排序,从而产生符合排序要求的样本数据,从而便于后续对样本数据进行切片。并且对提取的样本数据进行排序而非对源表中的数据进行排序,可以有效减少排序的时间。67.具体的,上述s202可以具体包括:基于数据库字符集,根据所述样本数据的主键对所述样本数据进行排序。由于在预设表格查询数据时sql的大小值比较通常是基于数据库字符集排序的,而在本步骤进行样本数据的排序也是基于数据库字符集排序,使用相同的排序规则,可以有效避免切片区间重叠的问题。切片区间重叠是指分片时认为切片点a《b,但实际数据库字符集排序b《a,从而造成的切片(,a)、[b,)有重叠区段,以及切片[a,b)为空集,出现切片不均匀的现象。[0068]具体的,在本发明实施例中oracle全量切片总sql语句为:[0069]selectt.r0[0070]from(selectvc32ꢀꢀasr0,rownumasr1[0071]fromtable1ꢀꢀsample(0.1)[0072]orderbyvc32)t[0073]wheremod(t.r1,100)=0[0074]其中mod是取余函数,mod(t.r1,100)=0即每100行取一条记录。[0075]其抽样的子sql语句为:[0076]selectvc32ꢀꢀasr0,rownumasr1[0077]fromtable1ꢀꢀsample(0.1)[0078]orderbyvc32[0079]其中vc32是主键、rownum是结果记录行号。[0080]该子sql语句在抽样的同时也完成了记录按照主键排序,借助sql排序的好处是能够有效避免传统切片的重叠问题。其中sample(0.1)代表按照0.1%抽样,即每一千条原始表记录随机抽取一条作为样本记录。[0081]上述子sql语句在抽样过滤后才进行orderby排序,这有效减轻了排序的数据库负担,可估算,3亿行的记录只需排序30万行。最终的select仅有两列,即主键列和行号列,这能有效。其中行号列是为后续样本分片做准备。[0082]s203:根据样本数据的条数对样本数据进行均匀切片,得到样本切片,确定切片点。[0083]s204:根据样本数据与预设表格中数据的对应关系,根据切片点确定预设表格的切片区间。[0084]上述s203至s204与上述发明实施例中s102至s103基本一致,详细内容请参考上述发明实施例,在此不再进行赘述。[0085]具体的,oracle的切片点子sql语句可以写为:[0086]selectt.r0[0087]from(随机抽样结果)t[0088]wheremod(t.r1,100)=0[0089]其中mod是取余函数,mod(t.r1,100)=0即每100行取一条记录。[0090]s205:基于undo表空间功能对预设表格中处于各个切片区间内的数据进行全量采集。[0091]在本步骤中,具体会基于undo表空间功能进行全量采集。为实现全量分片采集,采集的一致型,在本步骤进行全量采集时需要开启oracle的undo表空间功能,并授予查询用户的flashback权限。在执行具体的分片采集时,先查询数据库的当前scn值,其代表当前oracle的查询执行时间点:[0092]selectcurrent_scnfromv$database[0093]然后可使用下述sql完成具体的分片查询:[0094]select*[0095]fromtable1ꢀꢀasofscn8915101[0096]wherevc32》='d0bfb98439391baee053050011ac9ea6'[0097]andvc32《'd0bfb985ceb21baee053050011ac9ea6'[0098]与普通sql查询相比,上述sql语句多出来“asofscn8915101”这个限制条件,此类查询利用了undo表空间功能,表明是8915101时间点的快照查询,即这种sql查询出的结果是8915101的时间点的数据,即全量采集开始那一刻的表格快照数据。经实验可知,基于scn的undo表空间查询能有效保证快照一致性,从而保证全量采集的数据完全一致性,为以后oracle增量数据同步的准确性做好了基础。[0099]本步骤的其余内容已在上述发明实施例中s104做详细介绍,在此不再进行赘述。[0100]本发明实施例所提供的一种基于分片技术的表格全量采集方法,基于随机抽样的全量分片的实现方法,以解决因字符集排序等问题造成的切片重叠和不均匀现象。本发明通过利用undo表空间,实现快照一致性,以解决全量分片带来的数据采集不一致的问题,且采集期间,该表仍能正常提供数据修改服务,对业务程序无影响。[0101]下面对本发明实施例所提供的一种基于分片技术的表格全量采集装置进行介绍,下文描述的基于分片技术的表格全量采集装置与上文描述的基于分片技术的表格全量采集方法可相互对应参照。[0102]请参考图3,图3为本发明实施例所提供的一种基于分片技术的表格全量采集装置的结构框图。参照图3,基于分片技术的表格全量采集装置可以包括:[0103]样本提取模块100,用于从预设表格中随机提取预设条数的样本数据;所述样本数据为根据所述样本数据的主键进行排序后的数据。[0104]样本切片模块200,用于根据所述样本数据的条数对所述样本数据进行均匀切片,得到样本切片,确定切片点。[0105]切片区间模块300,用于根据所述样本数据与所述预设表格中数据的对应关系,根据所述切片点确定所述预设表格的切片区间。[0106]全量采集模块400,用于根据所述切片区间全量采集所述预设表格中处于各个所述切片区间内的数据。[0107]作为优选的,在本发明实施例中,所述样本提取模块100包括:[0108]样本提取单元,用于从预设表格中随机提取预设条数的样本数据。[0109]样本排序单元,用于根据所述样本数据的主键对所述样本数据进行排序。[0110]作为优选的,在本发明实施例中,所述样本排序单元用于:[0111]基于数据库字符集,根据所述样本数据的主键对所述样本数据进行排序。[0112]作为优选的,在本发明实施例中,所述全量采集模块400用于:[0113]基于undo表空间功能对所述预设表格中处于各个所述切片区间内的数据进行全量采集。[0114]本实施例的基于分片技术的表格全量采集装置用于实现前述的基于分片技术的表格全量采集方法,因此基于分片技术的表格全量采集装置中的具体实施方式可见前文中的基于分片技术的表格全量采集方法的实施例部分,例如,样本提取模块100,样本切片模块200,切片区间模块300,全量采集模块400,分别用于实现上述基于分片技术的表格全量采集方法中步骤s101至s104,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。[0115]下面对本发明实施例提供的一种基于分片技术的表格全量采集设备进行介绍,下文描述的基于分片技术的表格全量采集设备与上文描述的基于分片技术的表格全量采集方法以及基于分片技术的表格全量采集装置可相互对应参照。[0116]请参考图4,图4为本发明实施例所提供的一种基于分片技术的表格全量采集设备的结构框图。[0117]参照图4,该基于分片技术的表格全量采集设备可以包括处理器11和存储器12。[0118]所述存储器12用于存储计算机程序;所述处理器11用于执行所述计算机程序时实现上述发明实施例中所述的基于分片技术的表格全量采集方法的具体内容。[0119]本实施例的基于分片技术的表格全量采集设备中处理器11用于安装上述发明实施例中所述的基于分片技术的表格全量采集装置,同时处理器11与存储器12相结合可以实现上述任一发明实施例中所述的基于分片技术的表格全量采集方法。因此基于分片技术的表格全量采集设备中的具体实施方式可见前文中的基于分片技术的表格全量采集方法的实施例部分,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。[0120]本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一发明实施例中所介绍的一种基于分片技术的表格全量采集方法。其余内容可以参照现有技术,在此不再进行展开描述。[0121]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0122]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0123]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
:内所公知的任意其它形式的存储介质中。[0124]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0125]以上对本发明所提供的一种基于分片技术的表格全量采集方法、一种基于分片技术的表格全量采集装置、一种基于分片技术的表格全量采集设备以及一种计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献