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

数据单元管理方法、装置、电子设备和存储介质与流程

2022-05-26 15:40:33 来源:中国专利 TAG:


1.本公开涉及大数据技术领域和金融领域,更具体地,涉及一种数据单元管理方法、装置、电子设备、存储介质和计算机程序产品。


背景技术:

2.数据单元的分裂和合并是hbase(hadoopdatabase,一种非关系型分布式数据库)的核心功能之一,是实现分布式可扩展性的基础。通过对数据单元进行分裂和合并,可以维持数据读取效率和数据单元管理难度的平衡。
3.在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:在合并和分裂过程中,数据单元的分裂点与预期分裂点不符。


技术实现要素:

4.有鉴于此,本公开提供了一种数据单元管理方法、一种数据单元管理装置、一种电子设备、一种可读存储介质和一种计算机程序产品。
5.本公开的一个方面提供了一种数据单元管理方法,包括:响应于第一数据单元的数据量满足预设分裂阈值条件,获取与上述第一数据单元对应的第一当前分裂点数组;根据上述预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组,其中,上述初始分裂点数组包括多个初始分裂点的值;使用上述第一当前分裂点数组中的第一当前分裂点的值分别调整上述初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组;以及基于上述第一目标分裂点数组将上述第一数据单元分裂为多个第二数据单元。
6.根据本公开的实施例,上述使用上述第一当前分裂点数组中的第一当前分裂点的值分别调整上述初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组,包括:对于每个上述初始分裂点,基于上述初始分裂点的值和第一预设区间值,生成与上述初始分裂点对应的第一取值区间;在上述第一当前分裂点中存在至少一个第一目标当前分裂点的值位于上述第一取值区间内的情况下,基于至少一个上述第一目标当前分裂点的值来确定与上述初始分裂点对应的第一目标分裂点;在上述第一当前分裂点的值均位于上述第一取值区间外的情况下,基于上述初始分裂点的值来确定与上述初始分裂点对应的第一目标分裂点;以及根据多个上述第一目标分裂点的值,得到上述第一目标分裂点数组。
7.根据本公开的实施例,上述方法还包括:对于每个上述初始分裂点,在上述第一当前分裂点的值均位于上述第一取值区间外的情况下,将上述初始分裂点的值加入到上述第一当前分裂点数组中,以得到第二当前分裂点数组。
8.根据本公开的实施例,上述方法还包括:响应于合并指令,使用上述第二当前分裂点数组中的第二当前分裂点的值分别调整上述初始分裂点数组的每个初始分裂点的值,以得到第二目标分裂点数组;以及基于上述第二目标分裂点数组将多个上述第二数据单元合并为第三数据单元。
9.根据本公开的实施例,上述使用上述第二当前分裂点数组中的第二当前分裂点的值分别调整上述初始分裂点数组的每个初始分裂点的值,以得到第二目标分裂点数组,包括:对于每个上述初始分裂点,基于上述初始分裂点的值和第二预设区间值,生成与上述初始分裂点对应的第二取值区间;在上述第二当前分裂点中存在至少一个第二目标当前分裂点的值位于上述第二取值区间内的情况下,基于至少一个上述第二目标当前分裂点的值来确定与上述初始分裂点对应的第二目标分裂点;在上述第二当前分裂点的值均位于上述第二取值区间外的情况下,调整上述第二预设区间值,并基于调整后的第二预设区间值生成调整后的第二取值区间,直至在上述第二当前分裂点中存在至少一个第二目标当前分裂点的值位于上述调整后的第二取值区间内;以及根据多个上述第二目标分裂点的值,得到上述第二目标分裂点数组。
10.根据本公开的实施例,基于上述初始分裂点的值和预设区间值,生成与上述初始分裂点对应的取值区间,包括:基于上述初始分裂点的值和上述预设区间值的差值,确定上述取值区间的下边界;以及基于上述初始分裂点的值和上述预设区间值的和值,确定上述取值区间的上边界;其中,上述预设区间值包括上述第一预设区间值或第二预设区间值,上述取值区间包括上述第一取值区间或第二取值区间。
11.根据本公开的实施例,基于至少一个上述目标当前分裂点的值来确定与上述初始分裂点对应的目标分裂点,包括:计算至少一个上述目标当前分裂点的值与上述初始分裂点的值的差值;从至少一个上述差值中确定具有最小绝对值的目标差值;以及基于与上述目标差值对应的上述目标当前分裂点的值来确定与上述初始分裂点对应的目标分裂点;其中,上述目标当前分裂点包括上述第一目标当前分裂点或上述第二目标当前分裂点,上述目标分裂点包括上述第一目标分裂点或上述第二目标分裂点。
12.根据本公开的实施例,上述根据上述预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组,包括:根据上述数据量阈值和上述预设分裂数量,确定区间宽度;基于上述数据量阈值和上述区间宽度,确定开始键和结束键,其中,上述开始键表示为上述初始分裂点数组的第一个初始分裂点的值,上述结束键表示为上述初始分裂点数组的最后一个初始分裂点的值;以及基于上述开始键、上述区间宽度和上述结束键,确定上述初始分裂点数组的其他初始分裂点的值。
13.根据本公开的实施例,上述第一预设区间值表示为区间宽度与第一比例系数的乘积;第二预设区间值表示为上述区间宽度与第二比例系数的乘积;调整上述第二预设区间值包括调整上述第二比例系数。
14.本公开的另一个方面提供了一种数据单元管理装置,包括:获取模块,用于响应于第一数据单元的数据量满足预设分裂阈值条件,获取与上述第一数据单元对应的第一当前分裂点数组;生成模块,用于根据上述预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组,其中,上述初始分裂点数组包括多个初始分裂点的值;第一调整模块,用于使用上述第一当前分裂点数组中的第一当前分裂点的值分别调整上述初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组;以及分裂模块,用于基于上述第一目标分裂点数组将上述第一数据单元分裂为多个第二数据单元。
15.本公开的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个指令,其中,当上述一个或多个指令被上述一个或多个处理器执行时,使得
上述一个或多个处理器实现如上所述的方法。
16.本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
17.本公开的另一方面提供了一种计算机程序产品,上述计算机程序产品包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。
18.根据本公开的实施例,在对数据单元进行分裂时,根据根据预设分裂阈值条件和预设分裂数量生成初始分裂点数组,并利用已存在的第一当前分裂点的值对初始分裂点数组中的各个初始分裂点进行调整,以得到第一目标分裂点数组,再基于第一目标分裂点数组进行第一数据单元的分裂。通过上述技术手段,可以确保数据单元进行分裂过程中,第一数据单元的分裂点与期望的分裂点一致,从而使得数据单元的分裂在一定范围内可以保持预分区,所以至少部分地克服相关技术中的在合并和分裂过程中,数据单元的分裂点与预期分裂点不符的技术问题,进而有效降低了集群的管理难度。
附图说明
19.通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
20.图1示意性示出了根据本公开实施例的可以应用数据单元管理方法及装置的示例性系统架构。
21.图2示意性示出了根据本公开实施例的数据单元管理方法中数据单元分裂过程的流程图。
22.图3示意性示出了根据本公开另一实施例的数据单元管理方法中数据单元分裂过程的流程图。
23.图4示意性示出了根据本公开实施例的数据单元管理方法中数据单元合并过程的流程图。
24.图5示意性示出了根据本公开另一实施例的数据单元管理方法中数据单元合并过程的流程图。
25.图6示意性示出了根据本公开的实施例的数据单元管理装置的框图。
26.图7示意性示出了根据本公开实施例的适于实现数据单元管理方法的电子设备的框图。
具体实施方式
27.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
28.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
29.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
30.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
31.在相关技术中,hbase中数据单元的分裂和合并通常会调用hbase自带的分裂合并策略将数据单元两两合并或一分为二。或者,采用预拆分的方法,在建表时定义好分裂点,并利用预定义的分裂点进行数据单元的分裂和合并。然而,预拆分的方法在实际的合并和分裂过程中,数据单元的实际分裂点常常会与预定义的分裂点不符,从而导致预拆分方法的效果是不可预见的。
32.有鉴于此,本公开的实施例提供了一种数据单元管理方法、一种数据单元管理装置、一种电子设备、一种可读存储介质和一种计算机程序产品。该方法包括数据单元分裂流程和数据单元合并流程,其中,数据单元分裂流程包括:响应于第一数据单元的数据量满足预设分裂阈值条件,获取与第一数据单元对应的第一当前分裂点数组;根据预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组,其中,初始分裂点数组包括多个初始分裂点的值;使用第一当前分裂点数组中的第一当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组;以及基于第一目标分裂点数组将第一数据单元分裂为多个第二数据单元。
33.需要说明的是,本公开实施例确定的数据单元管理方法和装置可用于大数据技术领域或金融领域,也可用于除大数据技术领域和金融领域之外的任意领域。本公开实施例确定的数据单元管理方法和装置的应用领域不做限定。
34.图1示意性示出了根据本公开实施例的可以应用数据单元管理方法及装置的示例性系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
35.如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。
36.终端设备101、102、103可以是支持数据输入输出的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。
37.终端设备101、102、103上可以安装有各种客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等。
38.网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等。
39.服务器105可以是提供各种服务的服务器,例如,对用户使用终端设备101、102、
103上的客户端应用过程中产生的数据提供存储服务的数据库服务器。
40.需要说明的是,本公开实施例所提供的数据单元管理方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据单元管理装置一般可以设置于服务器105中。
41.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
42.图2示意性示出了根据本公开实施例的数据单元管理方法中数据单元分裂过程的流程图。
43.如图2所示,数据单元分裂过程包括操作s201~s204。
44.需要说明的是,本公开实施例中的流程图所示的操作除非明确说明不同操作之间存在执行的先后顺序,或者不同操作在技术实现上存在执行的先后顺序,否则,多个操作之间的执行顺序可以不分先后,多个操作也可以同时执行。
45.在操作s201,响应于第一数据单元的数据量满足预设分裂阈值条件,获取与第一数据单元对应的第一当前分裂点数组。
46.在操作s202,根据预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组。初始分裂点数组包括多个初始分裂点的值。
47.在操作s203,使用第一当前分裂点数组中的第一当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组。
48.在操作s204,基于第一目标分裂点数组将第一数据单元分裂为多个第二数据单元。
49.根据本公开的实施例,第一数据单元可以是hbase中的一个数据单元(region)。
50.根据本公开的实施例,第一当前分裂点数组中的分裂点可以包括基于hbase自带的分裂合并策略生成的分裂点、在先前的分裂合并过程中生成的分裂点等。基于hbase自带的分裂合并策略生成的分裂点可以是该数据单元中最大store(列族)中的最大文件中最中心的一个block(存储块)的首个rowkey(主键)。
51.根据本公开的实施例,预设分裂阈值条件可以表示设定的一个数据单元的最大数据量,即数据量阈值。数据量满足预设分裂阈值条件可以是该数据量大于或等于该数据量阈值。
52.根据本公开的实施例,预设分裂数量可以是由操作人员根据具体应用场景设定的一个超参。
53.根据本公开的实施例,根据预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组的过程可以是对第一数据单元进行预分区的过程,通过规划初始分裂点数组,可以保证数据单元分裂成的各个子数据单元的大小相似。
54.根据本公开的实施例,基于第一目标分裂点数组将第一数据单元分裂为多个第二数据单元的过程可以分为三个阶段,分别为prepare阶段(准备阶段)、execute阶段(执行阶段)和rollback阶段(回滚阶段)。在prepare阶段中,会在内存中初始化数个第二数据单元。在execute阶段中,首先,会将第一数据单元的状态更改为spliting(分裂);之后,会在第一数据单元的存储目录下新建临时文件夹,并在该临时文件夹中创建多个子文件夹,每个子文件夹中可以生成reference(参考)文件,reference文件可以指向第一数据单元中的对应文件;然后,将与多个子文件对应的文件拷贝到与各个第二数据单元对应的表的表名目录
下,并修改第二数据单元的状态,以完成数据单元的分裂。在execute阶段出现异常时,可以执行rollback阶段,以将分裂操作回滚。
55.根据本公开的实施例,在对数据单元进行分裂时,根据根据预设分裂阈值条件和预设分裂数量生成初始分裂点数组,并利用已存在的第一当前分裂点的值对初始分裂点数组中的各个初始分裂点进行调整,以得到第一目标分裂点数组,再基于第一目标分裂点数组进行第一数据单元的分裂。通过上述技术手段,可以确保数据单元进行分裂过程中,第一数据单元的分裂点与期望的分裂点一致,从而使得数据单元的分裂在一定范围内可以保持预分区,所以至少部分地克服相关技术中的在合并和分裂过程中,数据单元的分裂点与预期分裂点不符的技术问题,进而有效降低了集群的管理难度。
56.下面参考图3,结合具体实施例对图2所示的方法做进一步说明。
57.根据本公开的实施例,操作s202可以包括如下操作:
58.根据数据量阈值和预设分裂数量,确定区间宽度。基于数据量阈值和区间宽度,确定开始键和结束键。开始键表示为初始分裂点数组的第一个初始分裂点的值,结束键表示为初始分裂点数组的最后一个初始分裂点的值。以及,基于开始键、区间宽度和结束键,确定初始分裂点数组的其他初始分裂点的值。
59.根据本公开的实施例,根据数据量阈值和预设分裂数量,确定区间宽度例如可以通过公式(1)来实现:
[0060][0061]
在公式(1)中,interval表示区间宽度;regionsize表示数据量阈值;regionnum表示预设分裂数量。
[0062]
根据本公开的实施例,初始分裂点的数量可以为regionnum-1。
[0063]
根据本公开的实施例,可以设置开始键的值为interval,结束键的值为interval
×
(regionnum-1)。在确定第一个初始分裂点及最后一个初始分裂点的值之后,其他初始分裂点的值可以在开始键的值的基础上通过循环累加区间宽度来得到。或者,也可以直接设置各个初始分裂点的值为interval
×
i,其中,i表示该初始分裂点在初始分裂点数组中的位置。
[0064]
根据本公开的实施例,操作s203可以包括如下操作:
[0065]
对于每个初始分裂点,基于初始分裂点的值和第一预设区间值,生成与初始分裂点对应的第一取值区间。在第一当前分裂点中存在至少一个第一目标当前分裂点的值位于第一取值区间内的情况下,基于至少一个第一目标当前分裂点的值来确定与初始分裂点对应的第一目标分裂点。在第一当前分裂点的值均位于第一取值区间外的情况下,基于初始分裂点的值来确定与初始分裂点对应的第一目标分裂点。以及,根据多个第一目标分裂点的值,得到第一目标分裂点数组。
[0066]
根据本公开的实施例,第一预设区间值可以表示为区间宽度与第一比例系数的乘积。第一比例系数可以根据具体应用场景进行设置,例如可以设置为1%、5%等。
[0067]
根据本公开的实施例,基于初始分裂点的值和第一预设区间值,生成与初始分裂点对应的第一取值区间可以包括如下操作:
[0068]
基于初始分裂点的值和第一预设区间值的差值,确定第一取值区间的下边界。以
及,基于初始分裂点的值和第一预设区间值的和值,确定取值区间的上边界。
[0069]
根据本公开的实施例,基于至少一个第一目标当前分裂点的值来确定与初始分裂点对应的第一目标分裂点可以包括如下操作:
[0070]
计算至少一个第一目标当前分裂点的值与初始分裂点的值的差值。从至少一个差值中确定具有最小绝对值的目标差值。以及,基于与目标差值对应的第一目标当前分裂点的值来确定与初始分裂点对应的第一目标分裂点。
[0071]
例如,对于值为1000的初始分裂点,与该初始分裂点对应的第一取值区间为[950,1050];基于第一当前分裂点数组确定的多个第一目标当前分裂点的值分别为953、971、1010;从上述三个第一目标当前分裂点的值,可以确定与具有最小绝对值的目标差值对电影的第一目标当前分裂点的值为1010,因而可以确定与该初始分裂点对应的第一目标分裂点的值为1010。
[0072]
根据本公开的实施例,从至少一个差值中确定具有最小绝对值的目标差值可以通过冒泡排序等方法来完成。
[0073]
例如,可以声明一个列表list和两个参数mindis和minindex,其中,list可以用来存放所有第一目标当前分裂点的值。将第一元素的索引赋值给minindex,然后把第一个元素与初始分裂点的值作差并取绝对值,将该绝对值赋值给mindis。之后,可以遍历list中后面的各个元素,如果后面元素与初始分裂点的值的差值的绝对值小于mindis,则将该差值赋值给mindis,并将该元素的索引赋值给minindex。最后得到的mindis即为目标差值。
[0074]
根据本公开的实施例,在第一当前分裂点的值均位于第一取值区间外的情况下,可以确定与该初始分裂点对应的第一目标分裂点的值为该初始分裂点的值。
[0075]
根据本公开的实施例,在第一当前分裂点的值均位于第一取值区间外的情况下,将初始分裂点的值加入到第一当前分裂点数组中。在遍历每个初始分裂点之后,可以得到第二当前分裂点数组。
[0076]
根据本公开的实施例,通过根据第一取值区间确定第一目标分裂点,并在分裂过程中对当前分裂点数组进行调整的方式,可以保障数据单元在分裂和合并过程中还能在一定范围内保持着预分区,不会在集群中自动分裂为多个子数据单元,避免集群管理困难的问题。
[0077]
图3示意性示出了根据本公开另一实施例的数据单元管理方法中数据单元分裂过程的流程图。
[0078]
如图3所示,数据单元分裂过程包括操作s301~s309。
[0079]
在操作s301,确定初始分裂点数组。
[0080]
在操作s302,判断初始分裂点数组是否遍历完成。在确定未完全遍历初始分裂点数组的情况下,执行操作s303;在确定完全遍历初始分裂点数组的情况下,执行操作s308。
[0081]
在操作s303,获取初始分裂点并计算该初始分裂点的第一取值区间。
[0082]
在操作s304,遍历第一当前分裂点数组。
[0083]
在操作s305,判断是否存在位于第一取值区间内的第一目标当前分裂点。在确定存在至少一个第一目标当前分裂点的情况下,执行操作s306;在确定不存在第一目标当前分裂点的情况下,执行操作s307。
[0084]
在操作s306,从第一目标当前分裂点中确定第一目标分裂点。
[0085]
在操作s307,根据初始分裂点创建第一目标分裂点。
[0086]
在完成操作s306或s307之后,返回执行操作s302。
[0087]
在操作s308,得到第一目标分裂点数组。
[0088]
在操作s309,基于第一目标分裂点数组将第一数据单元分裂为多个第二数据单元。
[0089]
根据本公开的实施例,操作s301~s309的方法的描述具体可以参考操作s201~s204的方法的描述部分,在此不再赘述。
[0090]
图4示意性示出了根据本公开实施例的数据单元管理方法中数据单元合并过程的流程图。
[0091]
如图4所示,数据单元合并过程包括操作s401~s402。
[0092]
在操作s401,响应于合并指令,使用第二当前分裂点数组中的第二当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值,以得到第二目标分裂点数组。
[0093]
在操作s402,基于第二目标分裂点数组将多个第二数据单元合并为第三数据单元。
[0094]
根据本公开的实施例,合并指令可以是指示多个第二数据单元进行合并的指令。合并指令可以在包括但不限于以下场景触发时生成:例如,当多个第二数据单元在预设时长内未被调用的情况下,生成该合并指令,该预设时长可以根据具体应用场景进行设置;又例如,当集群中的数据单元的总数据大于阈值的情况下,生成该合并指令,该阈值可以根据具体应用场景进行设置;再例如,该合并指令可以是根据操作人员输入的命令来触发的。
[0095]
根据本公开的实施例,第二当前分裂点数组中的分裂点可以包括原本第一当前分裂点数组中的分裂点,以及在分裂过程中基于初始分裂点创建的分裂点等。
[0096]
根据本公开的实施例,使用第二当前分裂点数组中的第二当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值可以是从第二当前分裂点数组中寻找适配于各个初始分裂点的第二当前分裂点。
[0097]
根据本公开的实施例,通过对预分区的初始分裂点数组进行调整,并使用调整得到的第二目标分裂点数组进行多个第二数据单元的合并的方式,能够找出离期望分裂点最近的分裂点,从而有效提高合并的准确率,进而可以使得合并得到的第三数据单元在后续分裂和合并过程中在一定范围内保持着预分区,避免集群管理困难的问题。
[0098]
下面参考图5,结合具体实施例对图4所示的方法做进一步说明。
[0099]
根据本公开的实施例,操作s401可以包括如下操作:
[0100]
对于每个初始分裂点,基于初始分裂点的值和第二预设区间值,生成与初始分裂点对应的第二取值区间。在第二当前分裂点中存在至少一个第二目标当前分裂点的值位于第二取值区间内的情况下,基于至少一个第二目标当前分裂点的值来确定与初始分裂点对应的第二目标分裂点。在第二当前分裂点的值均位于第二取值区间外的情况下,调整第二预设区间值,并基于调整后的第二预设区间值生成调整后的第二取值区间,直至在第二当前分裂点中存在至少一个第二目标当前分裂点的值位于调整后的第二取值区间内。以及,根据多个第二目标分裂点的值,得到第二目标分裂点数组。
[0101]
根据本公开的实施例,第二预设区间值可以表示为区间宽度与第二比例系数的乘积。第二比例系数可以根据具体应用场景进行设置,例如可以设置为1%、5%等。
[0102]
根据本公开的实施例,基于初始分裂点的值和第二预设区间值,生成与初始分裂点对应的第二取值区间可以包括如下操作:
[0103]
基于初始分裂点的值和第二预设区间值的差值,确定第二取值区间的下边界。以及,基于初始分裂点的值和第二预设区间值的和值,确定取值区间的上边界。
[0104]
根据本公开的实施例,基于至少一个第二目标当前分裂点的值来确定与初始分裂点对应的第二目标分裂点可以包括如下操作:
[0105]
计算至少一个第二目标当前分裂点的值与初始分裂点的值的差值。从至少一个差值中确定具有最小绝对值的目标差值。以及,基于与目标差值对应的第二目标当前分裂点的值来确定与初始分裂点对应的第二目标分裂点。
[0106]
根据本公开的实施例,调整第二预设区间值可以包括调整第二比例系数。调整第二比例系数的方法在此不作限定,例如,可以采用每次累加一个预设比例系数的方法,原本的第二比例系数为1%,调整后的第二比例系数为1% 0.1%=1.1%;再例如,可以采用按比例增大第二比例系数的方法,原本的第二比例系数为1%,调整后的第二比例系数为1%*1.1=1.1%。
[0107]
图5示意性示出了根据本公开另一实施例的数据单元管理方法中数据单元合并过程的流程图。
[0108]
如图5所示,数据单元合并过程包括操作s501~s509。
[0109]
在操作s501,确定初始分裂点数组。
[0110]
在操作s502,判断初始分裂点数组是否遍历完成。在确定未完全遍历初始分裂点数组的情况下,执行操作s503;在确定完全遍历初始分裂点数组的情况下,执行操作s508。
[0111]
在操作s503,获取初始分裂点并计算该初始分裂点的第二取值区间。
[0112]
在操作s504,遍历第二当前分裂点数组。
[0113]
在操作s505,判断是否存在位于第二取值区间内的第二目标当前分裂点。在确定不存在第二目标当前分裂点的情况下,执行操作s506;在确定存在至少一个第二目标当前分裂点的情况下,执行操作s507。
[0114]
在操作s506,调整第二比例系数以重新确定第二取值区间。在完成操作s506之后,返回执行操作s504。
[0115]
在操作s507,从第二目标当前分裂点中确定第二目标分裂点。在完成操作s507之后,返回执行操作s502。
[0116]
在操作s508,得到第二目标分裂点数组。
[0117]
在操作s509,基于第二目标分裂点数组将多个第二数据单元合并为第三数据单元。
[0118]
根据本公开的实施例,操作s501~s509的方法的描述具体可以参考操作s401~s402的方法的描述部分,在此不再赘述。
[0119]
图6示意性示出了根据本公开的实施例的数据单元管理装置的框图。
[0120]
如图6所示,数据单元管理装置600包括获取模块610、生成模块620、第一调整模块630和分裂模块640。
[0121]
获取模块610,用于响应于第一数据单元的数据量满足预设分裂阈值条件,获取与第一数据单元对应的第一当前分裂点数组。
[0122]
生成模块620,用于根据预设分裂阈值条件所表示的数据量阈值和预设分裂数量生成初始分裂点数组。初始分裂点数组包括多个初始分裂点的值。
[0123]
第一调整模块630,用于使用第一当前分裂点数组中的第一当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值,以得到第一目标分裂点数组。
[0124]
分裂模块640,用于基于第一目标分裂点数组将第一数据单元分裂为多个第二数据单元。
[0125]
根据本公开的实施例,在对数据单元进行分裂时,根据根据预设分裂阈值条件和预设分裂数量生成初始分裂点数组,并利用已存在的第一当前分裂点的值对初始分裂点数组中的各个初始分裂点进行调整,以得到第一目标分裂点数组,再基于第一目标分裂点数组进行第一数据单元的分裂。通过上述技术手段,可以确保数据单元进行分裂过程中,第一数据单元的分裂点与期望的分裂点一致,从而使得数据单元的分裂在一定范围内可以保持预分区,所以至少部分地克服相关技术中的在合并和分裂过程中,数据单元的分裂点与预期分裂点不符的技术问题,进而有效降低了集群的管理难度。
[0126]
根据本公开的实施例,第一调整模块630包括第一调整单元、第二调整单元、第三调整单元和第四调整单元。
[0127]
第一调整单元,用于对于每个初始分裂点,基于初始分裂点的值和第一预设区间值,生成与初始分裂点对应的第一取值区间。
[0128]
第二调整单元,用于在第一当前分裂点中存在至少一个第一目标当前分裂点的值位于第一取值区间内的情况下,基于至少一个第一目标当前分裂点的值来确定与初始分裂点对应的第一目标分裂点。
[0129]
第三调整单元,用于在第一当前分裂点的值均位于第一取值区间外的情况下,基于初始分裂点的值来确定与初始分裂点对应的第一目标分裂点。
[0130]
第四调整单元,用于根据多个第一目标分裂点的值,得到第一目标分裂点数组。
[0131]
根据本公开的实施例,数据单元管理装置600还包括第二调整模块。
[0132]
第二调整模块,用于对于每个初始分裂点,在第一当前分裂点的值均位于第一取值区间外的情况下,将初始分裂点的值加入到第一当前分裂点数组中,以得到第二当前分裂点数组。
[0133]
根据本公开的实施例,数据单元管理装置600还包括第三调整模块和合并模块。
[0134]
第三调整模块,用于响应于合并指令,使用第二当前分裂点数组中的第二当前分裂点的值分别调整初始分裂点数组的每个初始分裂点的值,以得到第二目标分裂点数组。
[0135]
合并模块,用于基于第二目标分裂点数组将多个第二数据单元合并为第三数据单元。
[0136]
根据本公开的实施例,第三调整模块包括第五调整单元、第六调整单元、第七调整单元和第八调整单元。
[0137]
第五调整单元,用于对于每个初始分裂点,基于初始分裂点的值和第二预设区间值,生成与初始分裂点对应的第二取值区间。
[0138]
第六调整单元,用于在第二当前分裂点中存在至少一个第二目标当前分裂点的值位于第二取值区间内的情况下,基于至少一个第二目标当前分裂点的值来确定与初始分裂点对应的第二目标分裂点。
[0139]
第七调整单元,用于在第二当前分裂点的值均位于第二取值区间外的情况下,调整第二预设区间值,并基于调整后的第二预设区间值生成调整后的第二取值区间,直至在第二当前分裂点中存在至少一个第二目标当前分裂点的值位于调整后的第二取值区间内。
[0140]
第八调整单元,用于根据多个第二目标分裂点的值,得到第二目标分裂点数组。
[0141]
根据本公开的实施例,第一调整单元或第五调整单元包括第一调整子单元和第二调整子单元。
[0142]
第一调整子单元,用于基于初始分裂点的值和预设区间值的差值,确定取值区间的下边界。
[0143]
第二调整子单元,用于基于初始分裂点的值和预设区间值的和值,确定取值区间的上边界。
[0144]
根据本公开的实施例,第二调整单元或第六调整单元包括第三调整子单元、第四调整子单元和第五调整子单元。
[0145]
第三调整子单元,用于计算至少一个目标当前分裂点的值与初始分裂点的值的差值。
[0146]
第四调整子单元,用于从至少一个差值中确定具有最小绝对值的目标差值。
[0147]
第五调整子单元,用于基于与目标差值对应的目标当前分裂点的值来确定与初始分裂点对应的目标分裂点。
[0148]
根据本公开的实施例,生成模块620包括第一生成单元、第二生成单元和第三生成单元。
[0149]
第一生成单元,用于根据数据量阈值和预设分裂数量,确定区间宽度。
[0150]
第二生成单元,用于基于数据量阈值和区间宽度,确定开始键和结束键。开始键表示为初始分裂点数组的第一个初始分裂点的值,结束键表示为初始分裂点数组的最后一个初始分裂点的值。
[0151]
第三生成单元,用于基于开始键、区间宽度和结束键,确定初始分裂点数组的其他初始分裂点的值。
[0152]
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0153]
例如,获取模块610、生成模块620、第一调整模块630和分裂模块640中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块610、生成模块620、第一调整模块
630和分裂模块640中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块610、生成模块620、第一调整模块630和分裂模块640中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0154]
需要说明的是,本公开的实施例中数据单元管理装置部分与本公开的实施例中数据单元管理方法部分是相对应的,数据单元管理装置部分的描述具体参考数据单元管理方法部分,在此不再赘述。
[0155]
图7示意性示出了根据本公开实施例的适于实现数据单元管理方法的电子设备的框图。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0156]
如图7所示,根据本公开实施例的计算机电子设备700包括处理器701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0157]
在ram 703中,存储有电子设备700操作所需的各种程序和数据。处理器701、rom 702以及ram 703通过总线704彼此相连。处理器701通过执行rom 702和/或ram 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 702和ram 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0158]
根据本公开的实施例,电子设备700还可以包括输入/输出(i/o)接口705,输入/输出(i/o)接口705也连接至总线704。电子设备700还可以包括连接至i/o接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
[0159]
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0160]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实
施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0161]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0162]
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 702和/或ram 703和/或rom 702和ram 703以外的一个或多个存储器。
[0163]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的数据单元管理方法。
[0164]
在该计算机程序被处理器701执行时,执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0165]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0166]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c ,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0167]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可
以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0168]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

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

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

相关文献