CN109656949B - 位图的索引搜索方法、装置、计算机设备和存储介质 - Google Patents
位图的索引搜索方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109656949B CN109656949B CN201811361654.1A CN201811361654A CN109656949B CN 109656949 B CN109656949 B CN 109656949B CN 201811361654 A CN201811361654 A CN 201811361654A CN 109656949 B CN109656949 B CN 109656949B
- Authority
- CN
- China
- Prior art keywords
- index
- interval
- limit value
- target
- lower limit
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种位图的索引搜索方法、装置、计算机设备和存储介质。该方法包括:获取多个目标位图间运算的运算类型,读取多个目标位图各自的数据有效性区间索引,确定运算类型所匹配的索引搜索方式,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引,运算区间索引用于标记每个目标位图中用于参与运算的局部数据区间。采用本申请的方案,在对多个位图进行运算时,能够提高位图的运算效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种位图的索引搜索方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了多维数据库(Multi Dimensional Database,MDD),将数据存放在一个多维数组中,由于存在大量稀疏矩阵,因此人们可以通过多维视图来观察数据。而当多维数据库存放的数据为多个位图时,有时需要对这些位图进行运算。
而在传统的位图运算方式中,需要先对两个位图进行运算,以得到这两个位图的运算结果,再根据这两个位图的运算结果,继续与下一个位图进行运算,直到运算完所有的位图时,才能得到最终的运算结果。因此,传统的位图运算方式运算效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高位图运算效率的位图的索引搜索方法、装置、计算机设备和存储介质。
一种位图的索引搜索方法,所述方法包括:
获取多个目标位图间运算的运算类型;
读取多个目标位图各自的数据有效性区间索引;
确定运算类型所匹配的索引搜索方式;
基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引;运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
在其中一个实施例中,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引包括:
当运算类型为与运算类型时,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记有效数据区间的运算区间索引。
在其中一个实施例中,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记有效数据区间的运算区间索引包括:
从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值;
由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值;
基于多个目标位图各自的有效数据区间索引,相应确定距离运算区间索引的下限值最近的属于有效数据区间索引的上限值,得到用于构成运算区间索引的上限值;
直到搜索到全部的运算区间索引后停止搜索。
在其中一个实施例中,从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值包括:
从多个目标位图的一个目标位图的起始位置起,确定从当前位置起往后的无效数据区间长度;
在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值。
在其中一个实施例中,由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值包括:
由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度;
在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值;
继续执行由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度的步骤,直到在每个目标位图中当前的无效数据区间长度均为零时,得到用于构成运算区间索引的下限值。
在其中一个实施例中,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引包括:
当运算类型为或运算类型时,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记在多个目标位图间连续的有效数据区间的运算区间索引。
在其中一个实施例中,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记在多个目标位图间连续的有效数据区间的运算区间索引包括:
搜索多个目标位图中距离起始位置最近的属于有效数据区间的下限值,下限值用作运算区间索引的下限值;
从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值;
直到搜索到全部的运算区间索引后停止搜索。
在其中一个实施例中,从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值包括:
从多个目标位图的一个目标位图中由当前搜索到的下限值起,确定当前位置往后的有效数据区间长度;
在当前的有效数据区间长度大于零时,按照当前的有效数据区间长度移动当前位置到最近的无效数据区间索引的下限值,并确定下一个目标位图中当前位置往后的有效数据区间长度,直到在每个目标位图中当前的有效数据区间长度均为零时,得到用于构成运算区间索引的上限值。
在其中一个实施例中,所述方法还包括:
每当搜索到运算区间索引后,将多个目标位图中由运算区间索引所标记的局部数据区间进行运算,并继续搜索下一个运算区间索引,直到搜索完毕。
一种位图的索引搜索装置,其特征在于,所述装置包括:
运算类型获取模块,用于获取多个目标位图间运算的运算类型;
索引读取模块,用于读取多个目标位图各自的数据有效性区间索引;
搜索方式确定模块,用于确定运算类型所匹配的索引搜索方式;
索引搜索模块,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引;运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现以下步骤:
获取多个目标位图间运算的运算类型;
读取多个目标位图各自的数据有效性区间索引;
确定运算类型所匹配的索引搜索方式;
基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引;运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取多个目标位图间运算的运算类型;
读取多个目标位图各自的数据有效性区间索引;
确定运算类型所匹配的索引搜索方式;
基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引;运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
上述位图的索引搜索方法、装置、计算机设备和存储介质,基于数据有效性区间索引,按照运算类型所对应的索引搜索方式,搜索到多个目标位图共用的运算区间索引,该索引标记了各个目标位图中参与运算的局部数据区间。在对多个位图进行运算时,只需要对各个目标位图中实际参与运算的局部数据区间进行计算,缩小了位图的运算范围,以此提高了位图运算效率。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例中位图的索引搜索方法的流程示意图;
图3为一个实施例中搜索运算区间索引的流程示意图;
图4为另一个实施例中搜索运算区间索引的流程示意图;
图5为一个实施例中构建了数据有效性区间索引的目标位图的示意图;
图6为一个实施例中运算类型为与运算类型的目标位图示例;
图7为一个实施例中运算类型为或运算类型的目标位图示例;
图8为一个实施例中位图的索引搜索装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的位图的索引搜索方法,可以应用于如图1所示的计算机设备。该计算机设备包括存储器和处理器,存储器中存储有计算机程序。计算机程序被处理器执行时,可以实现本申请提供的位图的索引搜索方法。该计算机设备可以是终端,也可以是服务器。可以理解的是,当计算机设备为终端时,该计算机设备还可以包括显示屏和输入装置等。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种位图的索引搜索方法,该方法包括以下步骤:
步骤S202,获取多个目标位图间运算的运算类型。
其中,目标位图可以是存在于多维数据库中的位图,可以在每个目标位图上预先构建数据有效性区间索引。
具体地,在多维数据库中获取需要参与运算的、且构建有数据有效性区间索引的多个目标位图之间的运算类型,运算类型可以但不限于是位图的与运算类型或者或运算类型。
步骤S204,读取多个目标位图各自的数据有效性区间索引。
其中,数据有效性区间索引是标记了有效数据区间和/或无效数据区间的索引。
具体地,由于每个位图的数据有效性区间索引可能不同,需要在多维数据库中,读取参与运算的多个目标位图中,每一个目标位图的数据有效性区间索引,以此获知每一个参与运算的目标位图的有效数据区间和无效数据区间。
步骤S206,确定运算类型所匹配的索引搜索方式。
其中,索引搜索方式是针对不同的运算类型所匹配的特定的搜索方式。
具体地,运算类型为位图的与运算类型时,确定位图的与运算类型所匹配的索引搜索方式。运算类型为位图的或运算类型时,确定位图的或运算类型所匹配的索引搜索方式。可以理解的是,当运算类型为其他运算类型时,便确定其他运算类型所匹配的索引搜索方式,在此不做赘述。
其中,与运算中的“与”和数学运算中的“与或非”中的“与”意义相同,在本实施例中,指两个或多个位图,按照逻辑“与”合并为一个位图。或运算中的“或”和数学运算中的“与或非”中的“或”意义相同,在本实施例中,指两个或多个位图,按照逻辑“或”合并为一个位图。
步骤S208,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引。运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
其中,局部数据区间为各个目标位图参与运算的数据区间。
具体地,基于已经读取的各个目标位图的数据有效性区间索引,在多维数据库中,按照运算类型所匹配的特定的索引搜索方式,有规律地对参与运算的多个目标位图进行搜索,得到多个目标位图共用的位图区间索引。位图区间索引标记了每个目标位图用于参与运算的局部数据区间。可以理解的是,由于运算类型的不同,根据运算类型所匹配的索引搜索方式便不同,则根据不同的索引搜索方式搜索得到的运算区间索引也不同。
上述位图的索引搜索方法中,基于数据有效性区间索引,按照运算类型所对应的索引搜索方式,搜索到多个目标位图共用的运算区间索引,该索引标记了各个目标位图中参与运算的局部数据区间。在对多个位图进行运算时,只需要对各个目标位图中实际参与运算的局部数据区间进行计算,缩小了位图的运算范围,以此提高了位图运算效率。
在一个实施例中,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引包括:当运算类型为与运算类型时,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记有效数据区间的运算区间索引。
其中,有效数据区间指包含有效数据的位图区间,以[a:b]方式表示为例,a和b为变量,a为左端点或称为下限值,b为右端点或称为上限值。
具体地,当运算类型为与运算类型时,在多维数据库中,基于已经读取的各个目标位图的数据有效性区间索引,按照运算类型所匹配的索引搜索方式,有规律地对参与运算的多个目标位图进行搜索,以得到多个目标位图共用的、且用于标记有效数据区间的运算区间索引。本实施例针对位图的与运算类型,仅对多个目标位图共用的、且用于标记有效数据区间的运算区间索引进行搜索,进一步提高了位图运算效率。
如图3所示,在一个实施例中,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记有效数据区间的运算区间索引包括:
步骤S302,从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值。
其中,有效数据区间索引是目标位图的数据有效性区间索引中,用于标识有效数据区间的索引。下限值是指函数的最小值或自变量的最小值,在本实施例中,下限值指目标位图中数据区间索引的左端点值,即数据区间最小值。
具体地,在多维数据库中,从参与位图运算的多个位图中选择一个目标位图,从被选择的目标位图上开始,在被选择的目标位图上搜索最近的有效数据区间索引的下限值。
步骤S304,由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值。
其中,有效数据是值为非零的数据,本实施例中,有效数据的数据类型不限。
具体地,在被选择的目标位图上,搜索到离当前位置最近的有效数据区间索引的下限值后,从搜索到的下限值起,在下一个目标位图上继续搜索离当前位置最近的有效数据区间索引的下限值。当参与位图运算的每一个目标位图从搜索到的下限值起,之后的数据均为有效数据时,以当前的下限值作为运算区间索引的下限值,即标记了每个目标位图中用于参与运算的局部数据区间索引的下限值。
步骤S306,基于多个目标位图各自的有效数据区间索引,相应确定距离运算区间索引的下限值最近的属于有效数据区间索引的上限值,得到用于构成运算区间索引的上限值。
其中,上限值是指函数的最大值或自变量的最大值,在本实施例中,上限值指目标位图中数据区间索引的右端点值,即数据区间最大值。
具体地,基于已经读取的各个目标位图的数据有效性区间索引,从运算区间索引的下限值起,在各个参与运算的目标位图上搜索每个位图从该下限值往后最近的、且属于有效数据区间索引的上限值,从搜索到的上限值中选取最小的上限值作为运算区间索引的上限值,即标记了每个目标位图中用于参与运算的局部数据区间索引的上限值。
步骤S308,直到搜索到全部的运算区间索引后停止搜索。
具体地,当搜索完一个运算区间索引后,会继续对参与运算的多个位图的下一个运算区间索引进行搜索,搜索的方式仍然为与运算类型所匹配的索引搜索方式,直到搜索到全部的运算区间索引后,停止搜索。
本实施例中,从一个目标位图开始搜索,直到每个目标位图从搜索到的下限值起,之后均为有效数据时,得到运算区间索引的下限值,再从运算区间索引的下限值起,搜索各个目标位图中最近的属于有效数据区间索引的上限值,得到运算区间索引的上限值,直接确定了需要参与运算的运算区间索引,进一步提高了位图的运算效率。
在一个实施例中,从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值包括:从多个目标位图的一个目标位图的起始位置起,确定从当前位置起往后的无效数据区间长度;在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值。
其中,起始位置为目标位图其中一端的端点位置。无效数据区间指不包含有效数据的位图区间,同样以[a:b]方式表示为例,a和b为变量,a为左端点,b为右端点。
具体地,在参与运算的多个位图中随机地选择一个目标位图,以这个目标位图的索引的起始端点为起始位置,从起始位置开始搜索无效数据区间,以确定从当前位置起往后的无效数据区间的长度。在当前搜索到的无效数据区间长度大于零时,直接移动当前位置至离当前位置最近的有效数据区间索引的下限值。本实施例中,一旦搜索到当前的无效数据区间长度大于零时,便移动当前位置至最近的有效数据区间索引的下限值,提高了对有效数据区间索引的下限值的确定速度。
在一个实施例中,由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值包括:
由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度;在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值;继续执行由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度的步骤,直到在每个目标位图中当前的无效数据区间长度均为零时,得到用于构成运算区间索引的下限值。
具体地,从当前搜索到的下限值起,继续对下一个目标位图进行有效数据区间的搜索,以确定从当前位置起往后的无效数据区间的长度。在当前搜索到的无效数据区间长度大于零时,直接移动当前位置至离当前位置最近的有效数据区间索引的下限值,并返回至由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度的步骤。直到在搜索到的下限值的位置处,各个参与预算的目标位图的无效数据区间长度均为零时,以当前的下限值作为运算区间索引的下限值,即标记了每个目标位图中用于参与运算的局部数据区间索引的下限值。
在一个实施例中,基于所述数据有效性区间索引,按所述索引搜索方式搜索所述多个目标位图共用的运算区间索引包括:当所述运算类型为或运算类型时,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引。
其中,共用的运算区间索引,指运算区间索引适用于参与运算的每个目标位图,该运算区间索引在每个目标位图中标记了相同的下限值和上限值。
具体地,当运算类型为或运算类型时,在多维数据库中,基于已经读取的各个目标位图的数据有效性区间索引,按照运算类型所匹配的索引搜索方式,有规律地对参与运算的多个目标位图进行搜索,以得到共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引。即运算区间索引不但为多个目标位图共用的运算区间索引,并且还标记了在多个目标位图间连续的有效数据区间。
其中,在多个所述目标位图间连续的有效数据区间,是指在该区间的任意位置,至少存在一个位图处于有效数据区间。
本实施例中,针对位图的或运算类型,仅对多个目标位图共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引进行搜索,进一步提高了位图运算效率。
如图4所示,在一个实施例中,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引包括:
步骤S402,搜索多个目标位图中距离起始位置最近的属于有效数据区间的下限值,所述下限值用作运算区间索引的下限值。
具体的,从参与位图运算的多个位图中,以各个参与运算的目标位图的同一端的端点位置作为起始位置,从起始位置开始搜索各个目标位图最近的有效数据区间索引的下限值,从搜索到的下限值中选取最小的下限值作为运算区间索引的下限值,即标记了每个目标位图中用于参与运算的局部数据区间索引的下限值。
步骤S404,从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值。
具体地,从当前搜索到的下限值起,搜索到离当前位置最近的无效数据区间索引的下限值后,从搜索到的下限值起,在下一个目标位图上继续搜索离当前位置最近的无效数据区间索引的下限值。当参与位图运算的每一个目标位图从搜索到的下限值起,之后的数据均为无效数据时,以当前的下限值作为运算区间索引的上限值,即标记了每个目标位图中用于参与运算的局部数据区间索引的上限值。
步骤S406,直到搜索到全部的运算区间索引后停止搜索。
具体地,当搜索完一个运算区间索引后,会继续对参与运算的多个位图的下一个运算区间索引进行搜索,搜索的方式仍然为或运算类型所匹配的索引搜索方式,直到搜索到全部的运算区间索引后,停止搜索。
在一个实施例中,该方法还包括:每当搜索到运算区间索引后,将多个目标位图中由运算区间索引所标记的局部数据区间进行运算,并继续搜索下一个运算区间索引,直到搜索完毕。
具体地,只要有一个运算区间索引被搜索到,便对多个目标位图中由运算区间索引所标记的局部数据区间进行运算。当运算类型为与运算类型时,对参与运算的多个位图的局部数据区间按照逻辑“与”合并为一个位图。当运算类型为或运算类型时,对参与运算的多个位图的局部数据区间按照逻辑“或”合并为一个位图。并继续搜索下一个运算区间索引,直到对参与运算的多个位图的所有运算区间索引搜索完毕,且对所有运算区间索引所标记的局部数据区间进行运算类型所对应的运算后,结束搜索。
本实施例中,通过对运算区间索引进行搜索,只对参与运算的局部运算区间进行运算,提高了位图的运算效率。
在一个实施例中,获取多个目标位图间运算的运算类型之前,该方法还包括:在各个目标位图之上预先构建数据有效性区间索引,数据有效性区间索引标记了对应目标位图的有效数据区间和无效数据区间,如图5所示的目标位图,位图区间索引标记的有效数据区间为:[b:c],[d:e],无效数据区间:[a:b],[c:d],[e:f]。
如图6所示,在一个实施例中,以运算类型为与运算类型,对该方法进行举例说明:
以其中一个目标位图的任意一端为起始位置,记为cursor。
基于数据有效性区间,从cursor起开始搜索无效数据区间,记区间的长度为v,当v>0时,移动至cursor+v。
记移动后的位置为cursor,对下一个目标位图执行从cursor起开始搜索无效数据区间的步骤。如果执行到最后一个目标位图,则对第一个位图执行从cursor起开始搜索无效数据区间的步骤。直到搜索到的所有目标位图的无效数据区间v=0时,记此时的位置为index1。
基于数据有效性区间,从index1起开始搜索每个目标位图从该位置往后的有效数据区间,取最小有效数据区间,记最小有效数据区间的右端点对应的位置为index2。局部数据区间[index1:index2]就是位图“与计算”的一个有效数据区间。
对局部数据区间[index1:index2]进行常规的位图“与”运算。
以index2作为起始位置,以上述同样的方法的步骤继续搜索下一个有效数据区间。
如图7所示,在一个实施例中,以运算类型为或运算类型,对该方法进行举例说明:
基于数据有效性区间,以多个目标位图共同的一端开始,搜索每个目标位图从该位置往后的无效数据区间,取最小无效数据区间,记最小无效数据区间的右端点对应的位置为index1。
基于数据有效性区间,记index1为cursor,从cursor起开始搜索有效数据区间,记区间的长度为v,当v>0时,移动至cursor+v。
记移动后的位置为cursor,对下一个目标位图执行从cursor起开始搜索有效数据区间的步骤。如果执行到最后一个目标位图,则对第一个位图执行从cursor起开始搜索有效数据区间的步骤。直到搜索到的所有目标位图的有效数据区间v=0时,记此时的位置为index2。区间[index1:index2]就是位图“或计算”的一个局部数据区间。
对局部数据区间[index1:index2]进行常规的位图“或”运算。
以index2作为起始位置,以上述同样的方法继续搜索下一个有局部数据区间。
应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种位图的索引搜索装置,该装置包括:运算类型获取模块802、索引读取模块804、搜索方式确定模块806和索引搜索模块808,其中:
运算类型获取模块802,用于获取多个目标位图间运算的运算类型。
索引读取模块804,用于读取多个目标位图各自的数据有效性区间索引。
搜索方式确定模块806,用于确定运算类型所匹配的索引搜索方式。
索引搜索模块808,基于数据有效性区间索引,按索引搜索方式搜索多个目标位图共用的运算区间索引。运算区间索引,用于标记每个目标位图中用于参与运算的局部数据区间。
在一个实施例中,索引搜索模块808还用于当运算类型为与运算类型时,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记有效数据区间的运算区间索引。
在一个实施例中,索引搜索模块808还用于从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值;由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值;基于多个目标位图各自的有效数据区间索引,相应确定距离运算区间索引的下限值最近的属于有效数据区间索引的上限值,得到用于构成运算区间索引的上限值;直到搜索到全部的运算区间索引后停止搜索。
在一个实施例中,索引搜索模块808还用于从多个目标位图的一个目标位图的起始位置起,确定从当前位置起往后的无效数据区间长度;在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值。
在一个实施例中,索引搜索模块808还用于由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度;在当前的无效数据区间长度大于零时,按照当前的无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值;继续执行由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度的步骤,直到在每个目标位图中当前的无效数据区间长度均为零时,得到用于构成运算区间索引的下限值。
在一个实施例中,索引搜索模块808还用于当运算类型为或运算类型时,基于数据有效性区间索引,搜索多个目标位图间共用的、且用于标记在多个目标位图间连续的有效数据区间的运算区间索引。
在一个实施例中,索引搜索模块808还用于搜索多个目标位图中距离起始位置最近的属于有效数据区间的下限值,下限值用作运算区间索引的下限值;从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值;直到搜索到全部的运算区间索引后停止搜索。
在一个实施例中,索引搜索模块808还用于从多个目标位图的一个目标位图中由当前搜索到的下限值起,确定当前位置往后的有效数据区间长度;在当前的有效数据区间长度大于零时,按照当前的有效数据区间长度移动当前位置到最近的无效数据区间索引的下限值,并确定下一个目标位图中当前位置往后的有效数据区间长度,直到在每个目标位图中当前的有效数据区间长度均为零时,得到用于构成运算区间索引的上限值。
在一个实施例中,该装置还包括位图运算模块,用于每当搜索到运算区间索引后,将多个目标位图中由运算区间索引所标记的局部数据区间进行运算,并继续搜索下一个运算区间索引,直到搜索完毕。
关于位图的索引搜索装置的具体限定可以参见上文中对于位图的索引搜索方法的限定,在此不再赘述。上述位图的索引搜索装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。可以理解的是,当计算机设备为终端时,该计算机设备还可以包括显示屏和输入装置等。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储位图的索引搜索数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种位图的索引搜索方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的位图的索引搜索方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的位图的索引搜索方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种位图的索引搜索方法,所述方法包括:
获取多个目标位图间运算的运算类型;
读取所述多个目标位图各自的数据有效性区间索引;所述数据有效性区间索引用于表征标记了有效数据区间和/或无效数据区间的索引;所述有效数据为值为非零的数据;
确定所述运算类型所匹配的索引搜索方式;
在所述运算类型为与运算类型的情况下,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记有效数据区间的运算区间索引;
在所述运算类型为或运算类型的情况下,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引;所述运算区间索引,用于标记每个所述目标位图中用于参与所述运算的局部数据区间。
2.根据权利要求1所述的方法,其特征在于,所述基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记有效数据区间的运算区间索引包括:
从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值;
由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值;
基于所述多个目标位图各自的有效数据区间索引,相应确定距离所述运算区间索引的下限值最近的属于有效数据区间索引的上限值,得到用于构成运算区间索引的上限值;
直到搜索到全部的运算区间索引后停止搜索。
3.根据权利要求2所述的方法,其特征在于,所述从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值包括:
从多个目标位图的一个目标位图的起始位置起,确定从当前位置起往后的无效数据区间长度;
在当前的无效数据区间长度大于零时,按照当前的所述无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值。
4.根据权利要求2或3所述的方法,其特征在于,所述由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值包括:
由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度;
在当前的所述无效数据区间长度大于零时,按照当前的所述无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值;
继续执行所述由当前搜索到的下限值起,确定下一个目标位图中从当前位置往后的无效数据区间长度的步骤,直到在每个目标位图中当前的无效数据区间长度均为零时,得到用于构成运算区间索引的下限值。
5.根据权利要求1所述的方法,其特征在于,所述基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引包括:
搜索多个目标位图中距离起始位置最近的属于有效数据区间的下限值,所述下限值用作运算区间索引的下限值;
从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值;
直到搜索到全部的运算区间索引后停止搜索。
6.根据权利要求5所述的方法,其特征在于,所述从当前搜索到的下限值起,逐次对每个目标位图搜索无效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为无效数据时,得到用于构成运算区间索引的上限值包括:
从多个目标位图的一个目标位图中由当前搜索到的下限值起,确定当前位置往后的有效数据区间长度;
在当前的有效数据区间长度大于零时,按照当前的所述有效数据区间长度移动当前位置到最近的无效数据区间索引的下限值,并确定下一个目标位图中当前位置往后的有效数据区间长度,直到在每个目标位图中当前的有效数据区间长度均为零时,得到用于构成运算区间索引的上限值。
7.根据权利要求1-3、5-6中任一项所述的方法,其特征在于,所述方法还包括:
每当搜索到所述运算区间索引后,将所述多个目标位图中由所述运算区间索引所标记的局部数据区间进行所述运算,并继续搜索下一个运算区间索引,直到搜索完毕。
8.一种位图的索引搜索装置,其特征在于,所述装置包括:
运算类型获取模块,用于获取多个目标位图间运算的运算类型;
索引读取模块,用于读取所述多个目标位图各自的数据有效性区间索引;所述数据有效性区间索引用于表征标记了有效数据区间和/或无效数据区间的索引;所述有效数据为值为非零的数据;
搜索方式确定模块,用于确定所述运算类型所匹配的索引搜索方式;
索引搜索模块,用于在所述运算类型为与运算类型的情况下,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记有效数据区间的运算区间索引;
索引搜索模块,还用于在所述运算类型为或运算类型的情况下,基于所述数据有效性区间索引,搜索所述多个目标位图间共用的、且用于标记在多个所述目标位图间连续的有效数据区间的运算区间索引;所述运算区间索引,用于标记每个所述目标位图中用于参与所述运算的局部数据区间。
9.根据权利要求8所述的装置,其特征在于,所述索引搜索模块,还用于从多个目标位图的一个目标位图,搜索最近的有效数据区间索引的下限值;由当前搜索到的下限值起,对下一个目标位图搜索有效数据区间索引的下限值,直到每个所述目标位图中在搜索到的下限值之后为有效数据时,得到用于构成运算区间索引的下限值;基于所述多个目标位图各自的有效数据区间索引,相应确定距离所述运算区间索引的下限值最近的属于有效数据区间索引的上限值,得到用于构成运算区间索引的上限值;直到搜索到全部的运算区间索引后停止搜索。
10.根据权利要求8所述的装置,其特征在于,所述索引搜索模块,还用于从多个目标位图的一个目标位图的起始位置起,确定从当前位置起往后的无效数据区间长度;在当前的无效数据区间长度大于零时,按照当前的所述无效数据区间长度移动当前位置到最近的有效数据区间索引的下限值。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811361654.1A CN109656949B (zh) | 2018-11-15 | 2018-11-15 | 位图的索引搜索方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811361654.1A CN109656949B (zh) | 2018-11-15 | 2018-11-15 | 位图的索引搜索方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656949A CN109656949A (zh) | 2019-04-19 |
CN109656949B true CN109656949B (zh) | 2020-11-10 |
Family
ID=66111231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811361654.1A Active CN109656949B (zh) | 2018-11-15 | 2018-11-15 | 位图的索引搜索方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656949B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
CN102214360A (zh) * | 2010-04-06 | 2011-10-12 | 腾讯科技(深圳)有限公司 | 一种位图构建方法及装置、求交的方法及装置 |
CN103365745A (zh) * | 2013-06-07 | 2013-10-23 | 上海爱数软件有限公司 | 一种基于内容地址存储的块级备份方法及系统 |
CN108352974A (zh) * | 2017-09-07 | 2018-07-31 | 北京小米移动软件有限公司 | 规避小区间干扰的方法及基站 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9817874B2 (en) * | 2013-09-19 | 2017-11-14 | Sap Se | Parallel spatio temporal indexing for high-update workloads and query processing |
-
2018
- 2018-11-15 CN CN201811361654.1A patent/CN109656949B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
CN102214360A (zh) * | 2010-04-06 | 2011-10-12 | 腾讯科技(深圳)有限公司 | 一种位图构建方法及装置、求交的方法及装置 |
CN103365745A (zh) * | 2013-06-07 | 2013-10-23 | 上海爱数软件有限公司 | 一种基于内容地址存储的块级备份方法及系统 |
CN108352974A (zh) * | 2017-09-07 | 2018-07-31 | 北京小米移动软件有限公司 | 规避小区间干扰的方法及基站 |
Non-Patent Citations (1)
Title |
---|
面向海量数据的位图索引技术及应用研究;王振;《csdn》;20150401;1-59 * |
Also Published As
Publication number | Publication date |
---|---|
CN109656949A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109597571B (zh) | 数据存储方法、数据读取方法、装置和计算机设备 | |
CN110795427B (zh) | 数据分离存储方法、装置、计算机设备和存储介质 | |
CN110363569A (zh) | 数据产品推荐方法、装置、计算机设备和存储介质 | |
CN108399533B (zh) | 交易处理方法、装置、计算机设备和存储介质 | |
CN110555165B (zh) | 信息识别方法、装置、计算机设备和存储介质 | |
CN109542962B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN109656949B (zh) | 位图的索引搜索方法、装置、计算机设备和存储介质 | |
CN113032621A (zh) | 数据采样方法、装置、计算机设备和存储介质 | |
CN111178024B (zh) | 数据表拼接方法、装置、计算机设备和存储介质 | |
CN113065887A (zh) | 资源处理方法、装置、计算机设备和存储介质 | |
CN110049535B (zh) | 网络搜索方法、装置、设备和存储介质 | |
CN110688400A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN109634955B (zh) | 数据存储方法、数据检索方法和装置 | |
CN109360215B (zh) | 三维模型的外轮廓查找方法、装置、设备和存储介质 | |
CN109471852B (zh) | 医疗数据库建立方法、装置、计算机设备和存储介质 | |
CN110727831A (zh) | 全路径计算方法、装置、计算机设备和存储介质 | |
CN111191082B (zh) | 数据管理方法、装置、计算机设备和存储介质 | |
CN109656948B (zh) | 位图数据处理方法、装置、计算机设备和存储介质 | |
CN110427816B (zh) | 物体检测方法、装置、计算机设备和存储介质 | |
CN110544306B (zh) | 三维地形数据获取方法、装置、计算机设备以及存储介质 | |
CN110909097A (zh) | 多边形电子围栏生成方法、装置、计算机设备和存储介质 | |
CN113051302B (zh) | 面向总体设计的多维数据匹配方法、装置及计算机存储介质 | |
CN111259105B (zh) | 地图显示方法、装置、系统和存储介质 | |
CN109584335B (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 |