CN114547380B - 数据遍历查询方法、装置、电子设备及可读存储介质 - Google Patents
数据遍历查询方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114547380B CN114547380B CN202210088694.3A CN202210088694A CN114547380B CN 114547380 B CN114547380 B CN 114547380B CN 202210088694 A CN202210088694 A CN 202210088694A CN 114547380 B CN114547380 B CN 114547380B
- Authority
- CN
- China
- Prior art keywords
- dimension
- bitmap index
- tree structure
- query
- value
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据遍历查询方法、装置、电子设备及计算机可读存储介质。该数据遍历查询方法,包括:接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构;基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引;在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询。根据本申请实施例,能够提高数据查询效率。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种数据遍历查询方法、装置、电子设备及计算机可读存储介质。
背景技术
通常,在多维数据库中针对多维立方体中的数据有不同的存储方式,比如,对于不同的应用场景,有的可以采用列式存储,有的可以采用数据块进行存储,或者有的也可以采用树状结构进行存储。
以采用树状结构进行存储的方式为例,数据库查询操作中,查询范围通常是多维度组合的一个区域,其中,该区域的范围是指各维度指定的待查询成员的笛卡尔积。针对该情况,相关技术中,通常需要对于待查询区域的每一个单元格进行单独的查询,也即对笛卡尔积的每条路径进行查询,以获取存储中的值。
采用上述查询方式时,对于多维度组合的查询,待查询的区域通常比较大,然而,由于多维数据集稀疏的特点,待查询的区域中有效值的路径相对于待查询区域的笛卡尔积范围而言会比较少,因此,对笛卡尔积的每条路径进行查询时,容易出现大量无用查询操作,从而导致查询效率低下。
因此,如何提高数据查询效率是本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例提供一种数据遍历查询方法、装置、电子设备及计算机可读存储介质,能够提高数据查询效率。
第一方面,本申请实施例提供一种数据遍历查询方法,包括:
接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构;
基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引;
在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询。
可选的,在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询,包括:
在获取整个数据树的根节点后,从根节点中获取第一维度的树结构;
获取位图索引中第一个维度位图索引;
获取第一个维度位图索引中第一个成员ID;
跳转到树结构中第一个成员ID之后第一个有效的数据节点;
获取下一层维度树结构根节点的指针;
对每一个维度执行操作直到最后一个维度,获取到真正存储的值。
可选的,在对每一个维度执行上述操作直到最后一个维度,获取到真正存储的值之后,方法还包括:
获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;
判断成员ID是否在位图索引中存在;
若成员ID在位图索引中存在,则获取对应的值;
若成员ID在位图索引中不存在,则获取下一个成员ID。
可选的,方法还包括:
在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据。
可选的,方法还包括:
对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值。
可选的,方法还包括:
对位图索引设置一个第一阈值;
对于一个维度来说,如果位图索引中的成员个数少于第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值。
可选的,方法还包括:
对位图索引设置一个第二阈值;
对于一个维度来说,如果位图索引中相邻的成员ID的差大于第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用位图索引判断下一个存在值的成员ID是否需要查询,以加快查询速度。
第二方面,本申请实施例提供了一种数据遍历查询装置,包括:
查询参数接收模块,用于接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构;
位图索引确定模块,用于基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引;
数据遍历查询模块,用于在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询。
可选的,数据遍历查询模块,用于:在获取整个数据树的根节点后,从根节点中获取第一维度的树结构;获取位图索引中第一个维度位图索引;获取第一个维度位图索引中第一个成员ID;跳转到树结构中第一个成员ID之后第一个有效的数据节点;获取下一层维度树结构根节点的指针;对每一个维度执行操作直到最后一个维度,获取到真正存储的值。
可选的,装置还包括第一获取模块,用于:
获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;
判断成员ID是否在位图索引中存在;
若成员ID在位图索引中存在,则获取对应的值;
若成员ID在位图索引中不存在,则获取下一个成员ID。
可选的,装置还包括第二获取模块,用于:
在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据。
可选的,装置还包括第三获取模块,用于:
对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值。
可选的,装置还包括第四获取模块,用于:
对位图索引设置一个第一阈值;
对于一个维度来说,如果位图索引中的成员个数少于第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值。
可选的,装置还包括第五获取模块,用于:
对位图索引设置一个第二阈值;
对于一个维度来说,如果位图索引中相邻的成员ID的差大于第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用位图索引判断下一个存在值的成员ID是否需要查询,以加快查询速度。
第三方面,本申请实施例提供了一种电子设备,电子设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现如第一方面所示的数据遍历查询方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面所示的数据遍历查询方法。
本申请实施例的数据遍历查询方法、装置、电子设备及计算机可读存储介质,能够提高数据查询效率。该数据遍历查询方法,包括:接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构;基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引;在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询,能够提高数据查询效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的数据遍历查询方法的流程示意图;
图2是本申请一个实施例提供的数据遍历查询方法的流程示意图;
图3是本申请一个实施例提供的销售数据的组织方式示意图;
图4是本申请一个实施例提供的查询梨子在上海的价格的流程图;
图5至图9是本申请一个实施例提供的查询上海水果价格的流程图;
图10是本申请一个实施例提供的查询所有市场上销售的所有水果的价格的流程图;
图11是本申请一个实施例提供的数据遍历查询装置的结构示意图;
图12是本申请一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请提供一种多维数据库数据存储结构,包括:
将每个维度组织为一个树结构,维度树的索引为维度的成员ID,最多表示40亿个成员,在树结构中存储中保存有值的成员的ID。
每个多维数据集由多个维度组成。这多个维度需要按照数据分布的顺序组成多维数据集,在数据结构中,这多个维度的树结构相互连接,组成最终的数据树,所以整个数据树结构是按照维度的顺序增长的。前面维度每一个位置都会对应有一个下一层维度的树结构,所以前面几个维度的对应位置存储指向下一个维度树结构的根节点。最后一个维度树结构的对应位置存储真正的数据。
从多维数据集树结构的根节点依次访问每个维度树结构,获取在该维度树结构中的成员ID,最后组成数据的PATH,每个在树结构中存在的PATH都有真实存在的值。
本申请提供一种数据遍历查询方法,包括:该遍历方式仅针对使用上述数据结构存储的多维数据集数据的查询。采用基于栈的深度优先搜寻模式,根据位图索引的条件(就是一个或多个维度及其所包含的成员ID)将多维数据集按照维度从低到高的顺序去遍历符合条件的数据。基于这个特性,在构建多维数据集的时候,为了尽量使多维数据集的查询速度比较快,要充分考虑维度的顺序。比如尽量将需要频繁按条件去查询的维度放在多维数据集的低维度部分,因为低维度部分最先被访问,如果查询的条件在低维度,那么多维数据集在查询刚开始的时候就被精确切割成更小的分组,再在更小的分组上去做遍历,就能获得更好的查询性能。
图1示出了本申请一个实施例提供的数据遍历查询方法的流程示意图。如图1所示,该数据遍历查询方法,包括:
S001、接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构。
S002、基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引。
S003、在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询。
具体地,获取多维数据集数据的根节点,首先获取第一个维度的树结构根节点,获取树结构中所有节点第一个在位图索引中出现的成员ID,获取该成员ID存储的指针,依次获取下一层维度的树结构根节点,直到最后一个维度,获取到存储的值。然后获取最后一个维度中其他成员在树中的值,然后返回到上一层维度,按照这种规律查找,直到获取该查询区域中所有有值的单元格。
在一个实施例中,在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询,包括:
在获取整个数据树的根节点后,从根节点中获取第一维度的树结构;
获取位图索引中第一个维度位图索引;
获取第一个维度位图索引中第一个成员ID;
跳转到树结构中第一个成员ID之后第一个有效的数据节点;
获取下一层维度树结构根节点的指针;
对每一个维度执行操作直到最后一个维度,获取到真正存储的值。
在一个实施例中,在对每一个维度执行上述操作直到最后一个维度,获取到真正存储的值之后,方法还包括:
获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;
判断成员ID是否在位图索引中存在;
若成员ID在位图索引中存在,则获取对应的值;
若成员ID在位图索引中不存在,则获取下一个成员ID。
在一个实施例中,方法还包括:
在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据。
在一个实施例中,方法还包括:
对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值,不用进行位图索引的筛选。
其中,对于该维度位图索引中获取了位图索引中最后一个成员的值之后或者获取的成员ID已经大于了位图索引中最大成员的ID,直接结束当前维度的遍历,返回上一层继续进行下一步操作,减少无效遍历。
在一个实施例中,方法还包括:
对位图索引设置一个第一阈值;
对于一个维度来说,如果位图索引中的成员个数少于第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值,避免从树结构中获取再判断位图索引次数过多,降低速度。
在一个实施例中,方法还包括:
对位图索引设置一个第二阈值;
对于一个维度来说,如果位图索引中相邻的成员ID的差大于第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用位图索引判断下一个存在值的成员ID是否需要查询,以加快查询速度。
图2是本申请一个实施例提供的数据遍历查询方法的流程示意图,如图2所示,包括以下步骤:
101:输入查询区域,开始处理;
102:将查询区域处理为位图索引;
103:获取数据树根节点;
104:获取维度的树结构的根节点指针
105:判断是否筛选成员;
106:在筛选成员的情况下,判断筛选成员个数是否大于阈值;
107:在不筛选成员的情况下,依次获取每一个成员的值;
108:在筛选成员个数大于阈值的情况下,获取树中的成员ID,判断是否在位图索引中,获取存在于位图索引中成员的值;
109:在筛选成员个数不大于阈值的情况下,获取位图索引中的成员ID,在维度树中查找,找到树中有值的节点;
110:判断是否最后一个维度;
111:在确定是最后一个维度的情况下,取到存储的值,获取下一个值;
在确定不是最后一个维度的情况下,返回步骤104。
为了对上述数据遍历查询方法进行具体说明,下面以具体例子进行说明。
假设有个水果经销商在不同地域卖苹果、梨子和香蕉,由于地域和运输等差异,各地水果价格都有一定的差异。那么这个水果经销商的数据可以归纳为3个维度:产品,地域和销售情况。
产品维:Products:苹果(P1),梨子(P2),香蕉(P3),榴莲(P4)
地域维:Region:武汉(R1),北京(R2),上海(R3)
销售维:Account:价格(A1),销售量(A2)
假设该经销商的销售数据如下:
表1
苹果 | 武汉 | 价格 | 12 |
苹果 | 武汉 | 销量 | 1000 |
苹果 | 上海 | 价格 | 12.5 |
苹果 | 上海 | 销量 | 3000 |
梨子 | 武汉 | 价格 | 13 |
梨子 | 武汉 | 销量 | 1100 |
梨子 | 上海 | 价格 | 12.8 |
梨子 | 上海 | 销量 | 1300 |
香蕉 | 武汉 | 价格 | 10 |
香蕉 | 武汉 | 销量 | 2000 |
香蕉 | 上海 | 价格 | 9.5 |
香蕉 | 上海 | 销量 | 4000 |
将上面的销售数据放到cube中,数据的组织方式如图3所示。
如图4所示,查询梨子在上海的价格的流程图,首先根据查询的条件构建位图索引,发现所有的维度都指定查询一个成员,小于维度查询的成员数量阈值,所以对于每一个成员都采用直接查询的方式。
因为梨子所在的维度是cube的第一个维度,查询逻辑很快定位到梨子成员,然后根据其指向的第二个区域维度,定位到上海,最后在根据上海指向的account维度定位到价格返回13。在这个例子中,第一维度的苹果和香蕉及其下面的子树都不会被遍历。梨子下面的第二个维度中的北京及其下面的价格和销售也不会被遍历,梨子上海的销量也不会访问。
图5至图9是本申请一个实施例提供的查询上海水果价格的流程图,因为要查询所有水果,所以第一维度不包含在过滤条件里,系统依次获取第一个维度的所有成员ID开始用深度优先的方式访问数据,包括以下步骤:
(1)如图5所示,先访问第一维度的苹果,获得指向第二个区域维度的指针。
(2)如图6所示,第二维度再过滤条件里,直接定位到上海这个成员,获得指向第三个销售维度的指针。
(3)如图7所示,在第三个维度上定位价格成员的位置,最终获得上海地区苹果的价格:12.5。
(4)如图8所示,由于第三个维度再没有更多查询数据,查询栈回退到第二个维度,发现第二个维度也没有符合条件的更多的数据,最后回退到第一个维度,发现下一个维度成员,也即梨子,于是又重复步骤(1)至(3)步骤获得梨子在上海的价格:13。
(5)如图9所示,获得梨子在上海的价格后,重复步骤(4)的逻辑,查询栈回退到第一个维度,发现香蕉,进一步重复步骤(1)至(3)时,在第二步的第二个维度信息没有上海的销售数据,最后查询栈回退到第一个维度,发现没有更多的水果数据,整个查询结束。
图10是本申请一个实施例提供的查询所有市场上销售的所有水果的价格的流程图,如图10所示,这种查询的过滤条件在最后一个维度上,第一维度和第二维度上没有任何过滤条件,包含所有成员。所以需要遍历,采用深度优先遍历的方法遍历其中所有的水果和地域数据。当访问到任何一个地域的时候,获得该地域指向第三维度的指针,再在第三个维度上按照上述方法获得该水果在该地域的价格数据。
由于榴莲在整个树中没有任何数据,所以在比那里第一个维度时,也不会比访问到榴莲的数据,不会由于查询范围过大而需要多余的操作。树中不存在的数据不需要进行访问。
本申请采用了上述多维数据库查询遍历方式之后,对于输入的多维立方体查询,将首先分析查询区域,按照查询区域进行位图索引的生成,按照树中的数据和位图索引的设置,继续遍历得到查询区域中有值的所有数据。与传统遍历查询区域的方式相比,明显减少了大量冗余操作,提高了查询性能和效率。
图11示出了本申请实施例提供的数据遍历查询装置的结构示意图。如图11所示,该数据遍历查询装置,包括:
查询参数接收模块1101,用于接收输入的针对多维数据集的查询参数;其中,查询参数包括多维数据集中每一个维度待查询的成员ID;多维数据集包括多个维度,每个维度为一个树结构;
位图索引确定模块1102,用于基于查询参数中每一个维度待查询的成员ID,确定对应的位图索引;
数据遍历查询模块1103,用于在获取用户查询区域后,基于位图索引对用户查询区域进行数据遍历查询。
在一个实施例中,数据遍历查询模块1103,用于:在获取整个数据树的根节点后,从根节点中获取第一维度的树结构;获取位图索引中第一个维度位图索引;获取第一个维度位图索引中第一个成员ID;跳转到树结构中第一个成员ID之后第一个有效的数据节点;获取下一层维度树结构根节点的指针;对每一个维度执行操作直到最后一个维度,获取到真正存储的值。
在一个实施例中,装置还包括第一获取模块,用于:获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;判断成员ID是否在位图索引中存在;若成员ID在位图索引中存在,则获取对应的值;若成员ID在位图索引中不存在,则获取下一个成员ID。
在一个实施例中,装置还包括第二获取模块,用于:
在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据。
在一个实施例中,装置还包括第三获取模块,用于:
对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值。
在一个实施例中,装置还包括第四获取模块,用于:
对位图索引设置一个第一阈值;
对于一个维度来说,如果位图索引中的成员个数少于第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值。
在一个实施例中,装置还包括第五获取模块,用于:
对位图索引设置一个第二阈值;
对于一个维度来说,如果位图索引中相邻的成员ID的差大于第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用位图索引判断下一个存在值的成员ID是否需要查询,以加快查询速度。
图11所示装置中的各个模块/单元具有实现图1中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图12示出了本申请实施例提供的电子设备的结构示意图。
电子设备可以包括处理器1201以及存储有计算机程序指令的存储器1202。
具体地,上述处理器1201可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器1202可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1202可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1202可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1202可在电子设备的内部或外部。在特定实施例中,存储器1202可以是非易失性固态存储器。
在一个实施例中,存储器1202可以是只读存储器(Read Only Memory,ROM)。在一个实施例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器1201通过读取并执行存储器1202中存储的计算机程序指令,以实现上述实施例中的任意一种数据遍历查询方法。
在一个示例中,电子设备还可包括通信接口1203和总线1210。其中,如图12所示,处理器1201、存储器1202、通信接口1203通过总线1210连接并完成相互间的通信。
通信接口1203,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线1210包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1210可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
另外,结合上述实施例中的数据遍历查询方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据遍历查询方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能模块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (4)
1.一种数据遍历查询方法,其特征在于,包括:
接收输入的针对多维数据集的查询参数;其中,所述查询参数包括所述多维数据集中每一个维度待查询的成员ID;所述多维数据集包括多个维度,每个维度为一个树结构;
基于所述查询参数中每一个维度待查询的成员ID,确定对应的位图索引;
在获取用户查询区域后,基于所述位图索引对所述用户查询区域进行数据遍历查询;
在获取整个数据树的根节点后,从所述根节点中获取第一维度的树结构;
获取所述位图索引中第一个维度位图索引;
获取所述第一个维度位图索引中第一个成员ID;
跳转到所述树结构中所述第一个成员ID之后第一个有效的数据节点;
获取下一层维度树结构根节点的指针;
对每一个维度执行操作直到最后一个维度,获取到真正存储的值;
获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;
判断所述成员ID是否在所述位图索引中存在;
若所述成员ID在所述位图索引中存在,则获取对应的值;
若所述成员ID在所述位图索引中不存在,则获取下一个成员ID;
在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断所述下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据;
对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值;
对所述位图索引设置一个第一阈值;
对于一个维度来说,如果所述位图索引中的成员个数少于所述第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值;
对所述位图索引设置一个第二阈值;
对于一个维度来说,如果所述位图索引中相邻的成员ID的差大于所述第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用所述位图索引判断所述下一个存在值的成员ID是否需要查询,以加快查询速度;
对于一个维度位图索引中获取了位图索引中最后一个成员的值之后或者获取的成员ID已经大于了位图索引中最大成员的ID,直接结束当前维度的遍历,返回上一层继续进行下一步操作,减少无效遍历。
2.一种数据遍历查询装置,其特征在于,包括:
查询参数接收模块,用于接收输入的针对多维数据集的查询参数;其中,所述查询参数包括所述多维数据集中每一个维度待查询的成员ID;所述多维数据集包括多个维度,每个维度为一个树结构;
位图索引确定模块,用于基于所述查询参数中每一个维度待查询的成员ID,确定对应的位图索引;
数据遍历查询模块,用于在获取用户查询区域后,基于所述位图索引对所述用户查询区域进行数据遍历查询;
数据遍历查询模块,用于:在获取整个数据树的根节点后,从根节点中获取第一维度的树结构;获取位图索引中第一个维度位图索引;获取第一个维度位图索引中第一个成员ID;跳转到树结构中第一个成员ID之后第一个有效的数据节点;获取下一层维度树结构根节点的指针;对每一个维度执行操作直到最后一个维度,获取到真正存储的值;
第一获取模块,用于:获取到第一个值之后,继续按照最后一个维度的树结构继续进行遍历,获取成员ID;
判断成员ID是否在位图索引中存在;
若成员ID在位图索引中存在,则获取对应的值;
若成员ID在位图索引中不存在,则获取下一个成员ID;
第二获取模块,用于:在完成最后一个维度中获取对应的值之后,回退到上一层维度的树结构中,获取上一层维度中有值的下一个成员ID;
判断下一个成员ID是否在上一层维度位图索引中存在;
如果存在,则获取下一层维度的树结构根节点;如果不存在,继续获取下一个成员ID;
依次获取,直到获取完成所有的数据;
第三获取模块,用于:对于设置了所有成员的维度,直接依次获取树结构中每一个成员的指向下一层维度的树结构的指针或者值;
第 四获取模块,用于:对位图索引设置一个第一阈值;
对于一个维度来说,如果位图索引中的成员个数少于第一阈值,则直接按照成员顺序从树结构中直接获取;如果为空的话,直接获取下一个维度成员ID对应的值;
第五获取模块,用于:对位图索引设置一个第二阈值;
对于一个维度来说,如果位图索引中相邻的成员ID的差大于第二阈值,则直接按照下一个更大的索引从树结构中直接获取等于或大于它的下一个存在值的成员ID;
利用位图索引判断下一个存在值的成员ID是否需要查询,以加快查询速度;
对于一个维度位图索引中获取了位图索引中最后一个成员的值之后或者获取的成员ID已经大于了位图索引中最大成员的ID,直接结束当前维度的遍历,返回上一层继续进行下一步操作,减少无效遍历。
3.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1所述的数据遍历查询方法。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1所述的数据遍历查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088694.3A CN114547380B (zh) | 2022-01-25 | 2022-01-25 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088694.3A CN114547380B (zh) | 2022-01-25 | 2022-01-25 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114547380A CN114547380A (zh) | 2022-05-27 |
CN114547380B true CN114547380B (zh) | 2022-11-15 |
Family
ID=81673306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210088694.3A Active CN114547380B (zh) | 2022-01-25 | 2022-01-25 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114547380B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166660B (zh) * | 2022-12-08 | 2023-11-07 | 广州纬纶信息科技有限公司 | 压缩笛卡尔积数据组合的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550241A (zh) * | 2015-12-07 | 2016-05-04 | 珠海多玩信息技术有限公司 | 多维数据库查询方法及装置 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN112434027A (zh) * | 2020-10-30 | 2021-03-02 | 金蝶软件(中国)有限公司 | 多维度数据的索引方法、装置、计算机设备和存储介质 |
CN113076334A (zh) * | 2020-01-06 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 数据查询方法、索引生成方法、装置及电子设备 |
CN113641669A (zh) * | 2021-06-30 | 2021-11-12 | 北京邮电大学 | 一种基于混合引擎的多维数据查询方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549171A (zh) * | 2003-05-15 | 2004-11-24 | 季永萍 | 基于网格计算的高新技术市场界定标准的实现装置 |
CN102760165B (zh) * | 2012-06-12 | 2014-09-03 | 北大方正集团有限公司 | 一种使用位图索引的全文检索方法和装置 |
US9740718B2 (en) * | 2013-09-20 | 2017-08-22 | Oracle International Corporation | Aggregating dimensional data using dense containers |
CN104504030B (zh) * | 2014-12-12 | 2016-03-09 | 国家电网公司 | 一种面向电力调度自动化海量报文的索引方法 |
CN106250523B (zh) * | 2016-08-04 | 2019-04-16 | 北京国电通网络技术有限公司 | 一种分布式列存储系统索引的方法 |
EP3376407B1 (en) * | 2017-03-15 | 2020-09-16 | censhare AG | Efficient use of trie data structure in databases |
CN108182242A (zh) * | 2017-12-28 | 2018-06-19 | 湖南大学 | 一种用于海量多维数值数据范围查询的索引方法 |
KR20190134115A (ko) * | 2018-05-25 | 2019-12-04 | 주식회사 티맥스데이터 | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 |
-
2022
- 2022-01-25 CN CN202210088694.3A patent/CN114547380B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550241A (zh) * | 2015-12-07 | 2016-05-04 | 珠海多玩信息技术有限公司 | 多维数据库查询方法及装置 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN113076334A (zh) * | 2020-01-06 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 数据查询方法、索引生成方法、装置及电子设备 |
CN112434027A (zh) * | 2020-10-30 | 2021-03-02 | 金蝶软件(中国)有限公司 | 多维度数据的索引方法、装置、计算机设备和存储介质 |
CN113641669A (zh) * | 2021-06-30 | 2021-11-12 | 北京邮电大学 | 一种基于混合引擎的多维数据查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114547380A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112421B2 (en) | Query selection for effectively learning ranking functions | |
CN111798273A (zh) | 产品的购买概率预测模型的训练方法及购买概率预测方法 | |
US7657506B2 (en) | Methods and apparatus for automated matching and classification of data | |
EP3217296A1 (en) | Data query method and apparatus | |
CN101639859A (zh) | 表分类装置、表分类方法以及表分类程序 | |
CN110928992B (zh) | 文本搜索方法、装置、服务器及存储介质 | |
CN107291895B (zh) | 一种快速的层次化文档查询方法 | |
CN104252456A (zh) | 一种权重估计方法、装置及系统 | |
CN108536739B (zh) | 元数据敏感信息字段识别方法、装置、设备及存储介质 | |
CN114547380B (zh) | 数据遍历查询方法、装置、电子设备及可读存储介质 | |
CN110019384A (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN110888981A (zh) | 基于标题的文档聚类方法、装置、终端设备及介质 | |
CN113886587A (zh) | 一种基于深度学习的数据分类方法以及图谱的建立方法 | |
CN116662934A (zh) | 预警目标关联关系分析方法、系统、存储介质及终端 | |
CN113792084A (zh) | 数据热度的分析方法、装置、设备及存储介质 | |
CN111125158B (zh) | 数据表处理方法、装置、介质及电子设备 | |
US20160283862A1 (en) | Multi-distance similarity analysis with tri-point arbitration | |
CN110851708B (zh) | 负样本的抽取方法、装置、计算机设备和存储介质 | |
CN111382265B (zh) | 搜索方法、装置、设备和介质 | |
CN113220820A (zh) | 基于图的高效sparql查询应答方法、装置和设备 | |
CN112182264A (zh) | 地标信息的确定方法、装置、设备及可读存储介质 | |
CN117112590A (zh) | 一种生成结构性查询语言的方法和数据查询设备 | |
CN114580345A (zh) | 电路仿真方法、装置、计算机设备及计算机可读存储介质 | |
CN110427558B (zh) | 资源处理事件的推送方法及装置 | |
CN106815228B (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 |