分区分割方法、装置、服务器和存储介质与流程

文档序号:23003615发布日期:2020-11-20 11:52阅读:151来源:国知局
分区分割方法、装置、服务器和存储介质与流程

本发明实施例涉及互联网技术应用领域,特别涉及分区分割方法、装置、服务器和存储介质。



背景技术:

hbase是一个分布式,面向列的开源数据库,hbase集群的可伸缩性主要由分区实现,分区自动切分机制保证了hbase表在集群中的扩展能力,分区切分相关理论涉及到切分的触发时机、切分点的确定、切分的事务性保证和异常处理以及切分的最优化选择等问题。目前hbase提供多种可选的分区切分策略,这些策略会决定切分阈值和切分点的选取。

然而,发明人发现相关技术存在如下问题:由于hbase行键呈字典序排列,相关技术的前缀切分策略会造成切分不均从而出现分区碎片,使用不当的情况下,会出现不断分裂出空分区(region)的极端情况,大大不利于集群的region管理和性能负载。



技术实现要素:

本发明实施方式的目的在于提供一种分割方法、装置、服务器和存储介质,根据行键前缀获取切分点,减少因切分不均而出现分区碎片,减少不断分裂出现空分区的情况,同时也保持数据在分区层面的均衡负载,便于集群的region管理。

为解决上述技术问题,本发明的实施方式提供了一种分区分割方法,包括以下步骤:获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异;获取所述临界点标识的行相对于分区中心的距离;从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合;根据所述第二临界点集合选择切分点,对分区进行分割。

本发明的实施方式还提供了一种分区分割装置,包括:第一临界点获取模块,用于获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异;距离获取模块,用于获取所述临界点标识的行相对于分区中心的距离;第二临界点获取模块,用于从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合;切分模块,用于根据所述第二临界点集合获取切分点,对分区进行分割。

本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述分区分割方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的分区分割方法。

本发明实施方式相对于相关技术而言,获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀有差异,由于,在hbase数据库中,数据是按照字典序排列的,因此,临界点以上的行和临界点以下的行具有不同的属性,以临界点标识的行做为切分点,可以将具有类似属性的数据聚在一起,在此基础上,获取所述临界点标识的行相对于分区中心的距离,从第一临界点集合中获取距离满足预设距离范围的第二临界点集合,根据第二临界点集合选择切分点,即,在临界点标识的行中选择满足预设距离范围的行作为切分点,使得切分点需要满足与分区中心的距离要求,减少因切分不均而出现region碎片,减少不断分裂出现空分区的情况,同时也尽可能保持了数据在分区层面的均衡负载,有利于集群的region管理。

另外,所述行键为复合结构;所述行键前缀为根据性能和业务确定的从行键拆分出来的前n个子部分;所述临界点包括位置信息,其中,所述位置信息用于记录所述临界点标识的行的行键前缀和所述临界点标识的行的上一行的行键前缀产生差异的所述子部份的位置。该实现中,结合行键的多个组成部分,根据性能和业务从行键拆分出n个子部分,按照子部分的层次筛选临界点集合,获取切分点,深度的结合了行键的复合结构,能够针对复杂的行键结构切分,相对于相关技术中指定固定位数行键前缀或者指定固定分隔符,分割符之前做为行键前缀,本实施例使得切分更灵活,且精确,另外,临界点包括记录出现差异的子部份的位置信息,根据包括位置信息的临界点集合获取切分点,使得整个表数据在集群层面的分布更具有层次性,能使属性相同或相近的数据聚集在同一个片区或者相邻片区,实现了从性能和业务角度来寻找分区的最佳切分点。

另外,所述根据所述第二临界点集合获取切分点之前,包括:获取所述第二临界点集合中位置信息处于高位的临界点,作为新的第二临界点集合,其中,所述位置信息处于高位是指位置信息对应的位置最靠近所述行键前缀的首字符的位置;所述根据所述第二临界点集合获取切分点,包括:在所述新的第二临界点集合中获取切分点。该实现中,优先选择高位差异的临界点,使得数据群和集群规模不断扩大时,随着分区的不断分裂,前缀相似的行键数据始终能聚集在邻近区域,减少数据离散的可能性,便于分割后的分区的数据扫描。

另外,所述获取第一临界点集合,包括:遍历分区中的指定列族和行键,根据所述列族和所述行键获取所述第一临界点集合,其中,所述指定列族用于记录每条行记录的数据量。该实现中,将用于记录每条行记录的数据量存储于一个列族,通过指定该列族进行扫描操作可以屏蔽掉不相关的记录单元,大大减少遍历kv数据造成的性能浪费。

另外,所述临界点还包括:首行到临界点标识的行的数据量,其中,所述首行到临界点标识的行的数据量为所述分区中的首行至所述临界点标识的行的所述行记录的数据量的累加总和;所述遍历分区中的指定列族和参考行键,还包括:累加所述列族中每条行记录的数据量得到分区行记录总数据量;所述获取所述临界点标识的行相对于分区中心的距离,包括:根据所述分区行记录总数据量和所述首行到临界点标识的行的数据量得到所述临界点标识的行相对于分区中心的距离。该实现中,使用累加的分区行记录总数据量而不使用系统提供的分区大小值,使数据更具有统一性,使得距离估算更加准确。

另外,所述根据所述第二临界点集合获取切分点,还包括:获取所述第二临界点集合中相对于分区中心的距离最小的临界点;根据所述临界点获取切分点。该实现中,尽可能的使切分点靠近切分中心,让分区对半切分,保证分区均匀分割,使得分割出来的分区数据负载均衡。

另外,若所述第一临界点集合为空或者所述第二临界点集合为空,则采用预设分区分割方法获取切分点。该实现中,考虑了按照上述方法始终未能找到合适切分点的极端情况,采用预设分区分割方法来获取切分点,保证了hbase集群稳定性。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。

图1是根据本发明第一实施例中分区分割方法的流程图;

图2是根据本发明第一实施例中分区分割方法的获取第一临界点集合的流程图;

图3是根据本发明第二实施例中生物信息学dna序列记录的行键结构示意图;

图4是根据本发明第二实施例中分区分割方法的流程图;

图5是根据本发明第二实施例中分区分割方法的获取第一临界点集合的流程图;

图6是根据本发明第三实施例中分区分割方法的流程图;

图7是根据本发明第四实施例的一种分区分割装置的结构示意图;

图8是根据本发明第五实施例中服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本发明的第一实施例涉及一种分区分割方法,本实施例可应用于分布式存储系统等,在实施方式中,获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异;获取所述临界点标识的行相对于分区中心的距离;从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合;根据所述第二临界点集合获取切分点。通过获取临界点集合,以临界点集合中标识的行作为切分点可以将具有类似属性的数据聚在一起,在此基础上,选择满足预设距离范围的临界点,以此来获得切分点,使得切分点需要满足与分区中心的距离要求,能够减少因切分不均而出现region碎片,减少不断分裂出现空分区的情况,同时也尽可能保持了数据在分区层面的均衡负载,有利于集群的region管理。下面对本发明第一实施方式的分区分割方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。

本发明的第一实施例的分区分割方法如图1所示,包括:

步骤101,获取第一临界点集合。具体地说,临界点集合中临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异。

在一个例子中,临界点能够唯一标识分区中的一行数据,本实施例中的临界点可以为行键也可以是多种信息的结合来标识行,例如行在分区中的编号等。

在另一个例子中,获取第一临界点集合,包括:遍历分区中的指定列族行键,根据所述列族和所述行键获取所述第一临界点集合,其中,所述指定列族用于记录rowsize,即,每条行记录的数据量。hbase数据库hbase是一种以键值对存储数据的一种数据库,在进行扫描操作时,往往会扫描到与寻找切分点无关的记录单元,将用于记录每条行记录的数据量存储于一个列族,通过指定该列族进行扫描操作可以屏蔽掉不相关的记录单元,大大减少遍历kv数据造成的性能浪费。

以临界点包括:行键信息,首行到临界点标识的行的数据量为例,其中,所述首行到临界点标识的行的数据量为所述分区中的首行至所述临界点标识的行的所述行记录的数据量的累加总和,行键信息为行键前缀,行键前缀可以是指定的前i个字符,也可以根据设置的分隔符获取,分隔符之前的为行键前缀,获取第一临界点集合的流程如下:

步骤201,获取当前分区的首行startkey和分区中结束位置的行stopkey。其中,startkey为分区中的首行,stopkey为分区中结束位置的行。

步骤202,根据startkey和stopkey确定扫描范围,对记录rowsize的指定列族进行扫描,得到扫描结果集。具体地来说,指定列族用于记录rowsize,扫描结果集为resultset,其中包括行键以及与行键对应的rowsize。

步骤203,遍历扫描结果集,判断是否到达末尾,若没有到达末尾执行步骤204,若到达末尾执行步骤210。

步骤204,获取首行到当前行的数据量大小的累加总和tempregionsize。具体地说,tempregionsize=rowsize+tempregionsize,即,得到当前rowkey和行记录大小rowsize,将rowsize累加赋值得到tempregionsize,在首次进行累加时,tempregionsize的值为0。

步骤205,判断当前rowkey是否是首个rowkey,若是,执行206,若不是,执行207。

步骤206,将rowkey的行键前缀赋值到str,步骤206执行之后进入步骤203。

步骤207,将rowkey的行键前缀赋值到tempstr。

步骤208,将str和tempstr比较,判断比较结果是否出现false,若未出现false,进入步骤203,否则,执行步骤209。出现false,即代表str和tempstr存在差异。例如,rowkey的行键前缀为指定的前5个字符,str指向的行键前缀为host1,tempstr指向的行键前缀为host2,str和tempstr不同,则在str和tempstr在比较时结果为false,执行步骤209,假如str和tempstr均存放host1,未出现差异,则比较结果为true。

步骤209,tempstr赋值给str,构造(criticalrowkey,tempregionsize)元组,将元组插入到list集合,执行步骤209之后,进入步骤203。具体地说,list集合中的元组标识的行即为临界点标识的行,criticalrowkey为行键前缀。

步骤210,将经过累加的tempregionsize赋值totalregionsize。

步骤101的目的在于找出分区中所有临界点,使得临界点标识的行的行键前缀和临界点标识的行的上一行行键前缀具有差异,只要能实现上述目的,步骤201至步骤210可以任意替换。

步骤102,获取所述临界点标识的行相对于分区中心的距离。具体地说,分区中心为处于分区中间的行。

在一个例子中,根据临界点标识的行的行数以及分区中的总行数获得临界点标识的行相对于分区中心的距离。

在另一个例子中,根据所述分区行记录总数据量和所述首行到临界点标识的行的数据量得到所述临界点标识的行相对于分区中心的距离。

例如,根据步骤101中的第一临界点集合,即,list集合中每个元组,计算每个临界点相对分区中心的距离|tempregionsize/totalregionsize-0.5|,tempregionsize/totalregionsize可以估算临界点标识的rowkey所在行记录在region中的相对位置,totalregionsize,即region的大小,可以通过步骤210的方式获取,也可以使用系统提供的region大小值,使用步骤210,即通过累加得到分区大小能够保证数据具有统一性,对rowkey相对位置的估算更加准确。

步骤103,从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合。

在一个例子中,根据对实际业务的分析得到预设距离范围,例如,预设距离范围为小于0.3,本实施例中临界点集合中临界点根据公式,|tempregionsize/totalregionsize-0.5|,计算出来的相对分区中心的距离小于0.3,则将该临界点加入第二临界点集合,以此方式,遍历第一临界点集合,得到所有满足预设距离范围的临界点。

步骤104,根据所述第二临界点集合选择切分点。

在一个例子中,在第二临界点集合中根据业务情况选择特定行键前缀的行作为切分点。

在另一个例子中,获取所述第二临界点集合中相对于分区中心的距离最小的临界点;根据所述临界点获取切分点。使得以选出来的切分点进行切分时能尽量保证对半区分,让分区均匀分割,使分区数据负载均衡。

本发明的第一实施例,获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀有差异,由于,在hbase数据库中,数据是按照字典序排列的,因此,临界点以上的行和临界点以下的行具有不同的属性,以临界点标识的行做为切分点,可以将具有类似属性的数据聚在一起,在此基础上,在标识的行中选择满足预设距离范围的行作为切分点,使得切分点需要满足与分区中心的距离要求,减少因切分不均而出现region碎片,同时也了保持数据在分区层面的均衡负载。

本发明的第二实施例涉及一种分区分割方法。第二实施例与第一实施例大致相同,主要区别之处在于:在第一实施方式中,行键前缀仅为前i个字符,或者分隔符之前的字符。而在本发明第二实施方式中,所述行键为复合结构;所述行键前缀为根据性能和业务确定的从行键拆分出来的前n个子部分;所述临界点包括位置信息,其中,所述位置信息用于记录所述临界点标识的行的行键前缀和所述临界点标识的行的上一行的行键前缀产生差异的所述子部份的位置,所述根据所述第二临界点集合获取切分点之前,包括:获取第二临界点集合中位置信息处于高位的临界点,作为新的第二临界点集合,其中,所述位置信息处于高位是指位置信息对应的位置最靠近所述行键前缀的首字符的位置。

本发明第二实施例的行键前缀为复合结构,本发明第二实施例以生物信息学dna序列记录为例,其行键为复合结构,行键结构如图3所示,由分类码division,生物分类编号organismtaxid、分子类型moleculetype、序列检索号accession四个部分组成,其中,分类码为3个字母缩写,分子类型有dna、rna、mrna、cdna等。四个部分可以任意分隔符划分,图中示例的分隔符为“_”,实际生产环境中可以根据业务场景为rowkey的每个partition分配固定长度或者序数替换以进一步节省空间。

本发明的第二实施例分区分割方法如图4所示,包括:

步骤401,获取第一临界点集合。具体地说,临界点集合中临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异。

以临界点包括:行键信息,首行到临界点标识的行的数据量,位置信息为例,本发明第二实施例中获取第一临界点集合与第一实施例大致相同,不同之处在于在进行行键前缀比较时,分别比较四个组成部分,记录出现差异的下标,即位置信息,实施例二获取第一临界点集合如图5所示:

步骤501,获取当前分区的首行startkey和分区中结束位置的行stopkey。

步骤502,根据startkey和stopkey确定扫描范围,对记录rowsize的参考列族进行扫描,得到得到扫描结果集resultset。

步骤503,遍历resultset,判断是否到达末尾,若没有到达末尾执行步骤504,若到达末尾执行步骤510。

步骤501至步骤503与步骤201至步骤203大致相同,此处不再赘述。

步骤504,获取首行到当前行的数据量大小的累加总和tempregionsize。具体地说,tempregionsize=rowsize+tempregionsize,即,得到当前rowkey和行记录大小rowsize,将rowsize累加赋值得到tempregionsize,由此可知,tempregionsize为首行到当前行的数据量大小的累加总和,在首次进行累加时,tempregionsize的初始值为0。

步骤505,判断当前rowkey是否是首个rowkey,若是,执行506,否则,执行507。

步骤506,将rowkey的前3个部分division、organismtaxid和moleculetype从左向右依次插入数组array中,步骤506执行之后进入步骤503。具体地说,数组array中存有division、organismtaxid和moleculetype对应的3个字符串,例如,在该rowkey中,division对应pln,organismtaxid对应4932,moleculetype对应dna,则自左向右插入array数组后,array中的array[0]为pln,arrary[1]为4932,array[2]为dna。

步骤507,将rowkey的前3个部分division、organismtaxid和moleculetype从左向右依次插入临时数组temparr。

步骤508,将array和temparr比较,判断比较结果是否出现false,若未出现false,进入步骤503,否则,执行步骤509。具体地说,将array和temparr有相同下标的字符串进行比较,当出现false,即数组中该下标的字符串有差异。例如,array中的array[0]为pln,array[1]为4932,array[2]为dna,temparr中的temparr[0]为pln,temparr[1]为4932,temparr[2]为mrna,则在比较下标为2的字符串的时候,比较结果出现false,执行步骤509;array中的array[0]为pln,array[1]为4932,array[2]为dna,temparr中的temparr[0]为pln,temparr[1]为4932,temparr[2]为rna,具有相同下标的字符串都相同,则执行步骤503。

在一个例子中,记录字符串比较结果为false的数组array下标位置。下标位置记为differindex,在本实施例中,位置信息即为differindex。例如,若出现false的字符串下标为2,则differindex为2。

步骤509,将temparr赋值给数组array,构造(criticalrowkey,tempregionsize,differindex),将元组插入到list集合。执行步骤509之后,进入步骤503。具体地说,list集合中的元组标识的行即为临界点标识的行,本实施例中,list集合中每一个元组为临界点,criticalrowkey为包括前三个子部份的行键前缀。

在步骤509中,由于resultset的行记录是根据rowkey字典序升序排序,任何情况下不会存在两个临界点中出现三个属性,即三个部分,完全相同的情况,这样在整个遍历过程无需考虑之前所有被选为临界点的属性,解析当前rowkey解析,将其前三个部分进行比较,当出现差异时,直接将temparr赋值给array进行替换掉,可以大幅节省内存空间,并在属性字符串比较时提升计算效率,属性字符串为前3个部分分别对应的3个字符串。

由步骤506至509可知,本实施例在寻找临界点的过程中,只根据行键的前3个部分划分数据,原因在于最后一部分检索号accession是insdc规范下统一使用的生物序列编号,过于离散。再实时过程中,选取rowkey的前几个部分参与切分比较根据实际方案和业务确定。

步骤510,将经过累加的tempregionsize赋值totalregionsize,并返回list集合。

步骤402,获取所述临界点标识的行相对于分区中心的距离。

步骤403,从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合。

步骤402至步骤403与第一实施例中步骤102与步骤103大致相同,此处不再赘述。

步骤404,获取第二临界点集合中位置信息处于高位的临界点,作为新的第二临界点集合。具体地说,位置信息处于高位是指位置信息对应的位置最靠近所述行键前缀的首字符的位置。

在一个例子中,differindex为数组下标,differindex越小,离行键前缀的首字符越近,因此,在第二临界点集合中differindex最小的临界点即为处于高位的临界点。例如,第二临界点集合中differindex取值有1和2,选择differindex为1的临界点构成新的第二临界点集合。

步骤405,根据所述第二临界点集合选择切分点。

步骤405与第一实施例中步骤204大致相同,此处不再赘述。

对于步骤404和步骤405,在层次划分dna序列数据时,为使数据在集群region的分布更具备层次性,尽管会存在低位属性,即differindex对应的字符串,发生差异的临界点相对高位差异点更接近region中心的情况,方案仍然优先选取高位差异的临界点,这样使得在数据集和集群规模不断扩大时,随着region的不断分裂,前缀相似的rowkey数据行始终能聚集在邻近区域,反之数据的离散可能性会更大,不利于scan扫描。

本发明的第二实施例,结合行键的多个组成部分,根据性能和业务从行键拆分出n个子部分,按照子部分的层次筛选临界点集合,获取切分点,深度的结合了行键的复合结构,按层次的将类似属性的数据尽可能聚集在一起,使得属性相同或相近的数据聚集在同一个片区或者相邻片区,整个表数据在集群层面的分布更具有层次性,另外,优先选择高位差异的临界点,使得数据群和集群规模不断扩大时,随着分区的不断分裂,前缀相似的行键数据始终能聚集在邻近区域,减少数据离散的可能性,便于分割后的分区的数据扫描,实现了从性能和业务角度来寻找分区的最佳切分点。

本发明的第三实施例与第二实施例大致相同,不同之处在于若所述第一临界点集合为空或者所述第二临界点集合为空,则采用预设分区分割方法获取切分点。

本发明第三实施例分区分割方法如图6所示,包括:

步骤601,获取第一临界点集合。

步骤601与第二实施例中步骤401大致相同,此处不再赘述。

步骤602,判断第一临界点集合是否有临界点,若有临界点,执行步骤603,若无临界点,进入步骤608。

步骤603,获取所述临界点标识的行相对于分区中心的距离。

步骤604,从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合。

步骤603至步骤604与第二实施例中步骤402至步骤403大致相同,此处不再赘述。

步骤605,第二临界点集合是否有临界点,若有临界点,执行步骤607,若无临界点,执行步骤608。

步骤606,获取第二临界点集合中位置信息处于高位的临界点,作为新的第二临界点集合。

步骤607,根据所述第二临界点集合选择切分点。

步骤606至步骤607与第二实施例中步骤404至步骤405大致相同,此处不再赘述。

步骤608,采用预设分区分割方法获取切分点。具体地说,可以预先设置分区分割方法获取切分点,以防在为极端情况下,未找到合适的临界点,预设的分区分割方法可为hbase提供的分区切分方案,如,keyprefixregionsplitpolicy、delimitedkeyprefixregionsplitpolicy等方法,也可以用其他自定义的分区分割方法,此处不对预设的分区分割方法做限制。

在一个例子中,第一临界点集合为空,选择increasingtoupperboundregionsplitpolicy的方法获取临界点,进行切分。

在一个例子中,第二临界点结合为空,选择keyprefixregionsplitpolicy获取临界点,对分区进行切分。

本发明的实施例在始终未能找到合适切分点的极端情况,即第二临界点集合中无临界点或者第二临界点集合中无临界点的情况下,采用预设分区分割方法来获取切分点,保证了hbase集群稳定性。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第四实施例涉及一种分区分割装置,如图7所示,包括:第一临界点获取模块701,用于获取第一临界点集合,其中,所述临界点标识的行的行键前缀和所述临界点标识的行的上一行行键前缀具有差异;距离获取模块702,用于获取所述临界点标识的行相对于分区中心的距离;第二临界点获取模块703,用于从所述第一临界点集合中获取所述距离满足预设距离范围的第二临界点集合;切分模块704,用于根据所述第二临界点集合获取切分点,对分区进行分割。

在一个具体例子中,第一临界点模块701中所述行键为复合结构;所述行键前缀为根据性能和业务确定的从行键拆分出来的前n个子部分;所述临界点包括位置信息,其中,所述位置信息用于记录所述临界点标识的行的行键前缀和所述临界点标识的行的上一行的行键前缀产生差异的所述子部份的位置。

在一个具体例子中,第二临界点获取模块703进一步用于获取所述第二临界点集合中位置信息处于高位的临界点,作为新的第二临界点集合,其中,所述位置信息处于高位是指位置信息对应的位置最靠近所述行键前缀的首字符的位置,切分模块704进一步用于在所述新的第二临界点集合中获取切分点。

在一个具体例子中,第一临界点模块701进一步用于遍历分区中的指定列族和行键,根据所述列族和所述行键获取所述第一临界点集合,其中,所述指定列族用于记录每条行记录的数据量。

在一个具体例子中,第一临界点模块701中所述临界点还包括:首行到临界点标识的行的数据量,其中,所述首行到临界点标识的行的数据量为所述分区中的首行至所述临界点标识的行的所述行记录的数据量的累加总和;距离获取模块702进一步用于累加所述列族中每条行记录的数据量得到分区行记录总数据量;根据所述分区行记录总数据量和所述首行到临界点标识的行的数据量,得到所述临界点标识的行相对于分区中心的距离。

在一个具体例子中,切分模块704进一步用于获取所述第二临界点集合中相对于分区中心的距离最小的临界点;根据所述临界点获取切分点。

在一个具体例子中,切分模块704进一步用于若所述第一临界点集合为空或者所述第二临界点集合为空,则采用预设分区分割方法获取切分点。

不难发现,本实施例为与上述方法实施例相对应的系统实施例,本实施例可与上述方法实施例互相配合实施。上述方法实施例中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述方法实施例中。

值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第五实施例涉及一种服务器,如图8所示,包括至少一个处理器801;以及,与所述至少一个处理器通信连接的存储器802;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述实施例的分区分割方法。

其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1