CN112632118A - 查询数据的方法、装置、计算设备和存储介质 - Google Patents
查询数据的方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN112632118A CN112632118A CN202010247340.XA CN202010247340A CN112632118A CN 112632118 A CN112632118 A CN 112632118A CN 202010247340 A CN202010247340 A CN 202010247340A CN 112632118 A CN112632118 A CN 112632118A
- Authority
- CN
- China
- Prior art keywords
- data
- subspace
- block
- objects
- distribution information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000009467 reduction Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 16
- 238000001914 filtration Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 9
- 230000008676 import Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 5
- 230000001174 ascending effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013506 data mapping Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/906—Clustering; Classification
-
- 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/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种查询数据的方法、装置、计算设备和存储介质,属于大数据技术领域。该方法包括:在进行数据查询时,接收数据查询请求,其中,数据查询请求指定多个维度的数据范围,获取多维度数据的空间分布信息,空间分布信息记录多维度数据关联的多个子空间对象在各维度的数据范围;根据多维度数据的空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块,在确定的块中,查找出满足数据查询请求指定的多个维度的数据范围的数据。采用本申请,可以提升数据的查询效率。
Description
本申请要求于2019年09月24日提交的申请号为201910907480.2、发明名称为“一种数据处理方法及其装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及大数据技术领域,特别涉及一种查询数据的方法、装置、计算设备和存储介质。
背景技术
随着云计算和大数据技术的发展,带来数据的爆炸式增长,数据的数据量已经从吉字节(gigabyte,gb)级、万亿字节(terabyte,tb)级发展到了拍字节(petabyte,pb)级、百亿亿字节(exabyte,eb)级等,对数据的近实时分析成了更迫切的需求。在对数据进行分析时,首先要在大量的数据中,查询到所要分析的数据。
相关技术中,查询所要分析的数据的过程为:在存储文件时,服务器将文件切成块,确定各块的每一维度的数据的最大值和最小值,然后存储各块的每一维度的数据的最大值和最小值。服务器在进行数据查询时,使用所要查询数据的数据范围,去匹配该数据所属维度的数据的最大值和最小值,筛选出包括该数据范围的数据所属的块。然后服务器在筛选出的块中,查询该数据范围的数据。
在相关技术中,由于服务器仅使用每一维度的数据的最大值和最小值,去筛选数据,有可能导致大量的块中并未包括所要查询的数据,而被筛选出来。例如,某个块的d1维度的数据的数据范围为[10,45],所要查询的数据为d1维度,且范围为[27,38],按照相关技术的方式,即使该块d1维度的数据中不包括[27,38]的数据,也会被筛选出来。所以基于相关技术的查询方式,会导致数据的查询效率比较低。
发明内容
为了解决数据的查询效率比较低的问题,本申请提供了一种查询数据的方法、装置、计算设备和存储介质。
第一方面,本申请提供了一种查询数据的方法。在该方法中,接收数据查询请求,其中,数据查询请求指定多个维度的数据范围,获取多维度数据的空间分布信息,空间分布信息记录多维度数据关联的多个子空间对象在各维度的数据范围,根据多维度数据的空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块,在确定的块中,查找出满足数据查询请求指定的多个维度的数据范围的数据。
例如,子空间对象是将多维度数据在空间上进行聚簇形成。
本申请所示的方案,该方法的执行主体可以是查询数据的装置,查询数据的装置可以接收数据查询请求,该数据查询请求指定多个维度的数据范围,即待查询的数据属于多个维度。查询数据的装置可以获取多维度数据的空间分布信息,该空间分布信息记录有多维度数据关联的多个子空间对象在各维度的数据范围。然后查询数据的装置可以根据空间分布信息,在多维度数据中,确定满足所要查询的多个维度的数据范围的块。查询数据的装置可以在确定的块中,使用所要查询的多个维度的数据范围,查找到多个维度的数据范围所指示的数据。这样,针对空间上相邻,但在物理内存上分布较分散的数据,通过学习这些数据的空间分布信息,构建出多维度数据的空间分布信息,能够有效的过滤查询,减少大量块的无效读取和分析,提升数据查询速度。
在一种可能的实施方式中,根据多维度数据的空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块,包括:根据多维度数据的空间分布信息,从多个子空间对象中确定满足数据查询请求指定的多个维度的数据范围的一个或多个子空间对象;将确定的子空间对象所属的块,作为满足数据查询请求指定的多个维度的数据范围的块。
本申请所示的方案,查询数据的装置将该多个维度中每一维度数据的数据范围,匹配多维度数据的空间分布信息,获得每一维度的数据范围所满足的子空间对象。查询数据的装置将每一维度的数据范围所满足的子空间对象取交集,即可得到满足多个维度的数据范围的子空间对象。查询数据的装置将这些子空间对象的标识所指示的数据块,确定为满足多个维度数据的数据范围的块。这样,可以尽可能的降低查找到的块中不包括所要查找的数据的可能性。
在一种可能的实施方式中,在根据多维度数据的空间分布信息,从多个子空间对象中未找到满足数据查询请求指定的多个维度的数据范围的子空间对象时,反馈未存在满足数据查询请求的数据。
本申请所示的方案,查询数据的装置在多维度数据的多个子空间对象中,均未找到满足多个维度的数据范围的子空间对象时,可以向发送数据查询请求的设备反馈未存在满足数据查询请求的数据,以使发送数据查询请求的设备及时的了解查询结果。
在一种可能的实施方式中,获取多维度数据的空间分布信息,包括:获取多维度数据的第一层级块的空间分布信息,第一层级块的空间分布信息记录第一层级块的数据关联的多个子空间对象在各维度的数据范围;获取目标块的第二层级块的空间分布信息,第二层级块的空间分布信息记录第二层级块的数据关联的多个子空间对象在各维度的数据范围;根据空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块,包括:根据第一层级块的空间分布信息,在第一层级块中确定满足数据查询请求指定的多个维度的数据范围的目标块;根据第二层级块的空间分布信息,在目标块中确定满足数据查询请求指定的多个维度的数据范围的第二层级块。
本申请所示的方案,多维度数据中有可能分为多个层级。例如,多维度数据被划分为第一层级和第二层级,相应的第一层级可以包括多个第一层级块,第二层级可以包括多个第二层级块。第二层级块是由第一层级块划分得到,多个第二层级块组成一个第一层级块。查询数据的装置可以获取多维度数据的第一层级块的空间分布信息和第二层级块的空间分布信息。第一层级块的空间分布信息可以记录有第一层级块的数据关联的多个子空间对象在各维度的数据范围。第二层级块的空间分布信息可以记录有第二层级块的数据关联的多个子空间对象在各维度的数据范围。
查询数据的装置可以首先在第一层级块的空间分布信息中,确定第一层级块中满足多个维度的数据范围的一个或多个子空间对象。查询数据的装置将该一个或多个子空间对象的标识对应的块,确定为目标块。然后查询数据的装置确定目标块包括的第二层级块,使用这些第二层级块的空间分布信息,在这些第二层级块中,确定满足多个维度的数据范围的一个或多个子空间对象,将该一个或多个子空间对象的标识对应的第二层级块,确定为满足数据查询请求指定的多个维度的数据范围的第二层级块。这样,先对第一层级块进行过滤,过滤掉不包括所要查询的多个维度数据的数据范围的数据的第一层级块,再对剩下的第一层级块中的第二层级块进行过滤,可以加快数据查询的速度。
在一种可能的实现方式中,该方法还包括:根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的多个子空间对象。
本申请所示的方案,约束条件可以包括子空间对象的数目、每个子空间对象的数据量、子空间对象的增量信息或计算性能中的一种或多种。子空间对象的数目指子空间对象的最大数目和最小数目,子空间对象的数据量指每个子空间对象包括的最大数据量和最小数据量,子空间对象的增量信息指添加数据后子空间对象的体积的最大增量,计算性能指计算空间分布信息所需的最大时间。分布特征指数据的间隔等。
查询数据的装置首先将多维度数据划分为多个块(多个块可以仅包括一个层级的块,也可以包括多个层级的块),查询数据的装置根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的各个块的多个子空间对象,从而获得多维度数据的空间分布信息。每个子空间对象对应有在各维度下的数据范围。
在一种可能的实现方式中,根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的多个子空间对象,包括:对多维度数据进行降维处理,获得降维处理后的数据;根据降维处理后的数据在低维空间的分布特征和约束条件,确定多个子空间对象。
其中,降维处理为降低维度处理,如多维度数据为3维度数据,降维处理后的数据为一维,低维空间即为一维空间。
本申请所示的方案,对于多维度数据中的任一块,查询数据的装置可以通过对该块包括的多维度数据进行编码降维,获得降维处理后的数据。然后查询数据的装置可以使用降维处理后的数据在低维度空间的分布特征和约束条件,确定该块对应的多个子空间对象。然后查询数据的装置将所有块的子空间对象进行合并,即获得多维度数据的多个子空间对象。这样,由于对多维度数据进行降维处理,相对于对多维度数据进行聚簇,对降维后的数据进行聚簇会减少计算量,提升聚簇的确定速度,进而提升确定子空间对象的确定速度。
在一种可能的实现方式中,根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的多个子空间对象,包括:对多维度数据进行体积增量的聚类,获得多个子空间对象。
在本实施例中,对于多维度数据中的任一块,查询数据的装置将该块中的多个数据划分到一个簇(可以称为是第一簇),然后往第一簇中添加数据,若添加数据后第一簇的体积与未添加数据的第一簇的体积之差小于一定数值,则将该数据添加至第一簇。若添加数据后第一簇的体积与未添加数据的第一簇的体积之差大于或等于该数值,则第一簇建立完成。查询数据的装置新建一个簇(可以称为是第二簇),执行与第一簇相同的处理,直到多维度数据中所有的数据均遍历完,获得最终的簇。查询数据的装置将每个簇作为一个子空间对象。然后确定每个子空间对象的各维度的数据范围,即获取该块对应的子空间对象。
在一种可能的实现方式中,根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的多个子空间对象,包括:对多维度数据进行子空间划分,基于划分得到的子空间的分布特征和约束条件,得到多个子空间对象。
本申请所示的方案,在多维度数据中每一维度数据的数据范围比较大时,存在数据的取值范围宽或者浮点型精度大,造成聚簇时数据计算量大或者计算复杂度高,查询数据的装置将块的每一维度数据的数据范围等间隔划分为N个区间(N可以由用户预设)。然后对于多维度数据中的任一块的每一维度数据,查询数据的装置将该维度上位于第一个区间的所有数据映射为0,查询数据的装置将该维度上位于第二个区间的所有数据映射为1,查询数据的装置将该维度上位于第i个区间的所有数据映射为i-1,依次将该维度的所有数据映射到0至N-1上。按照相同的方式,查询数据的装置可以将每一维度数据映射到0至N-1上。
然后查询数据的装置将每个维度的数据映射后的N个数值组成数据点坐标,即获得子空间。查询数据的装置将子空间进行合并,获取合并后的子空间在各维度上的数据的最大值和最小值,每个合并后的子空间即为子空间对象。对于每个子空间对象,该子空间对象在每一维度数据的最大值和最小值构成该子空间对象在各维度的数据范围。按照这种方式即可确定出多维度数据的每个块的子空间对象。这样,对数据进行维度压缩子空间后,需要计算的数据量会减少,所以可以提升查询数据的过滤性能。而且只要求块的各维度数据可排序即可,即能进行维度压缩编码获得子空间即可,所以适用范围比较广。
在一种可能的实现方式中,多个子空间对象在各维度的数据范围构成多个子空间对象的索引。
第二方面,本申请提供了一种查询数据的装置,该装置包括一个或多个模块,该一个或多个模块用于实现上述第一方面或第一方面的可能的实施方式所提供的查询数据的方法。
第三方面,本申请提供了一种查询数据的计算设备,该计算设备包括处理器和存储器,所述处理器执行所述存储器存储的指令,使得计算设备来实现上述第一方面或第一方面的可能的实施方式所提供的查询数据的方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质存储有指令,该指令指示计算设备执行上述第一方面或第一方面的可能的实施方式所提供的查询数据的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,该指令指示计算设备执行上述第一方面或第一方面的可能的实施方式所提供的查询数据的方法。
附图说明
图1是本申请一个示例性实施例提供的查询数据的示意图;
图2是本申请一个示例性实施例提供的计算设备的结构示意图;
图3是本申请一个示例性实施例提供的应用场景的示意图;
图4是本申请一个示例性实施例提供的应用场景的示意图;
图5是本申请一个示例性实施例提供的确定空间分布信息的方法的流程示意图;
图6是本申请一个示例性实施例提供的划分得到的数据块的示意图;
图7是本申请一个示例性实施例提供的子空间对象的示意图;
图8是本申请一个示例性实施例提供的降维处理的示意图;
图9是本申请一个示例性实施例提供的等间隔映射数据的示意图;
图10是本申请一个示例性实施例提供的映射后的数据的示意图;
图11是本申请一个示例性实施例提供的单个块的子空间对象的示意图;
图12是本申请一个示例性实施例提供的多个块的子空间对象的示意图;
图13是本申请一个示例性实施例提供的线段树的示意图;
图14是本申请一个示例性实施例提供的多个块的子空间对象的存储示意图;
图15是本申请一个示例性实施例提供的查询数据的方法的流程示意图;
图16是本申请一个示例性实施例提供的查询数据的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本申请实施例的理解,下面首先介绍所涉及到的名词的概念:
数据过滤,指在数据查询中,通过一定方式筛选出不包含所要查询的数据的块,后续不再在该块中进行查询。通过数据过滤的方式,可以在一定程度上筛选出不包含所要查询数据的块。仅在有可能包含所要查询数据的块中,查询所要查询的数据,所以可以提高数据查询效率。
分块,指根据一定的规则,将数据库中的一张数据表分解成多个更小的、更容易管理的部分。每一个部分可以为一个数据块或一个文件块。此处需要说明的是,各个数据块可以是数据量相等的数据块(这是由于数据块由文件块划分得到,一般是均等大小分割),各个文件块有可能数据量不相等(这是由于某次导入的文件的数据还未达到一个文件块的数据量要求,不会对文件进行划分,这个文件的数据就是一个文件块)。当然分块也可以是其他划分方式,本申请实施例不做限定。
单维度数据,仅包括一个维度的数据。例如,对于一张数据表,仅包括年龄维度,那么这张数据表包括的数据为单维度数据。
多维度数据,与单维度数据对应,指包括多个维度的数据。例如,对于一张数据表,包括年龄维度、工资维度和名字维度,那么这张数据表包括的数据为多维度数据。
在大数据场景中,针对每条数据构建的索引的数据量太大,索引无法全部被存储在内存中,所以部分索引也需要存储至磁盘中。因此,分布式架构的大数据分析系统都趋向于将数据和索引都存储在磁盘中分块处理。在分块处理时,若一个文件的数据量比较大,则执行数据存储的设备将文件按照分区列切分成文件块,然后再按照主键列进一步切分成数据块。然后执行数据存储的设备确定每个数据块的各维度数据的数据范围,对于一个数据块的任一维度数据的数据范围为:该维度的数据的最大值和最小值组成的范围。相关技术中,如图1所示,数据表具有五个属性列(即4个维度的数据,标识(id)不作为数据的维度),分别为id、名字(name)、身高(height)、年龄(age)和薪资(salary)。执行数据存储的设备对数据表按照id分块,即将每32000条数据划分为一个数据块,该数据表分为4个数据块,分别为块1、块2、块3和块4。然后根据数据块级别的统计信息,构建各个数据块的各维度数据的最小值和最大值(MINMAX)索引,如块1中age列的MINMAX索引为[10,40]、块2中age列的MINMAX索引为[10,34]、块3中age列的MINMAX索引为[40,50]、块4中age列的MINMAX索引为[15,37]。这样,在数据表中查询height≥1.62且height≤1.64、age≥27且age≤38、salary≥200且salary≤300的数据,会命中块1、块2和块4三个数据块,这样,后续会在块1、块2和块4三个数据块中,查询所需查询的数据。
在相关技术中,虽然块1、块2和块4均被筛选出来,但是由于仅按照MINMAX索引进行过滤,所以会出现如下的情况:块1的age维度数据的数据范围为[10,40],其中并未存在[27,38]的数据,可见即使该块1的age维度的数据中不包括[27,38]的数据,也会被筛选出来。所以造成大量数据块的无效扫描,数据的查询效率比较低。所以需要提供一种高效率的查询数据方法。
本申请提供了一种查询数据的方法,该方法的执行主体可以是查询数据的装置,查询数据的装置既可以是一个硬件装置,如服务器、终端等计算设备,也可以是一个软件装置,如可以为运行在硬件装置上的一套软件程序。
查询数据的装置为计算设备,图2示例性的提供了该计算设备的一种可能的架构图。计算设备可以包括处理器201、存储器202、通信接口203和总线204。在计算设备中,处理器201的数量可以是一个或多个,图2仅示意了其中一个处理器201。可选的,处理器201可以是中央处理器(Central Processing Unit,CPU)。若计算设备具有多个处理器201,多个处理器201的类型可以不同,或者可以相同。可选的,计算设备的多个处理器还可以集成为多核处理器。
存储器202存储计算机指令和数据,存储器202可以存储实现本申请提供的查询数据的方法所需的计算机指令和数据。例如,存储器202存储用于实现本申请提供的查询数据的方法中接收模块执行步骤的指令。再例如,存储器202存储用于本申请提供的查询数据的方法中确定模块执行步骤的指令。存储器202可以是以下存储介质的任一种或任一种组合:非易失性存储器(如只读存储器(Read-Only Memory,ROM)、固态硬盘(Solid State Disk,SSD)、硬盘(Hard Disk Drive,HDD)、光盘等)、易失性存储器。
通信接口203可以是以下器件的任一种或任一种组合:网络接口(如以太网接口)、无线网卡等具有网络接入功能的器件。
通信接口203用于计算设备与其他计算设备或者终端进行数据通信。
图2中还示出了总线204,总线204可以将处理器201与存储器202、通信接口203连接。这样,通过总线204,处理器201可以访问存储器202,还可以利用通信接口203与其它计算设备或者终端进行数据交互。
在本申请中,计算设备执行存储器202中的计算机指令,使用计算设备实现本申请提供的查询数据的方法。例如,使得计算设备执行上述查询数据的方法中由接收模块执行的步骤。再例如,使得计算设备执行上述查询数据的方法中由确定模块和查找模块执行的步骤。
本申请中查询数据的方法可以适用于但不限于以下场景,该场景包括另一种资源协调者(Yet another resource negotiator,Yarn)、spark和分布式文件系统(HadoopDistributed File System,HDFS)的场景中(spark为大规模数据处理而设计的快速通用的计算引擎),如图3部署方式可以为:
客户端节点连接主节点和协调服务器(zookeeper),主节点部署Yarn,主节点连接Spark集群和zookeeper。客户端节点上部署Spark上下文(context)(用于与程序、spark集群进行交互)。Yarn模式为主从设备模式(master/slave)结构,在整个资源管理框架中,YARN的资源管理器(Resource Manager)为主节点(master node),YARN的节点管理器(NodeManager)是从节点(slave node)。Resource Manager负责对各个Node Manager上资源进行统一管理和调度。Spark集群下有多个分布式工作节点,每个工作节点有YARN的节点管理器、Spark执行者(Executor)、缓存(cache)和HDFS(Data Node)。在HDFS数据节点中包括多个文件,每个文件由多个数据块(Blocklet)组成,在文件的头部和尾部还包含许多必要的信息,比如模式、偏移量以及索引等。
本申请可以按照图4中的(4a)和图4中的(4b)所示的方式进行数据查询。在图4的(4a)中和图4的(4b)中,Spark驱动将多维数据分为第一层级块(如文件块),Spark执行者控制任务(Task)将第一层级块划分为第二层级块(如数据块),第二层级块按照分布式文件系统进行存储。多个第二层级块构成一个第一层级块。
在图4中的(4a)所示的数据查询过程中,在第二层级块(如数据块)内实现多维度数据的过滤,即在第二层级实现多维度数据的过滤。
在图4中的(4b)所示的数据查询过程中,可以仅在第一层级块(如文件块)内进行多维度数据的过滤,即在第一层级实现多维度数据的过滤。
在一种可能的实施方式中,在图4中的(4b)所示的数据查询过程中,查询数据的装置也可以先在第一层级进行多维度数据的过滤,再在第二层级内实现多维度数据的过滤。
如图5所示,在查询数据之前,进行多维度数据导入以及学习多维度数据的空间分布信息(由于多维度数据会被划分成块,所以是学习块的空间分布信息),方法步骤可以为:
步骤501,查询数据的装置创建数据表。
在本实施例中,对于多维度数据(多维度数据是一张数据表或多张数据表),用户(可以是运维人员)在想要对多维度数据进行存储,用户可以通过操作界面或者编写结构化查询语言(Structured Query Language,SQL)语句的方式,将多维度数据对应的数据表的创建请求输入至查询数据的装置。查询数据的装置接收数据表的创建请求,在该创建请求中携带有所要创建的数据表的信息。具体可以是包括的属性列,以及排序列的标识等。查询数据的装置可以创建对应该创建请求的数据表。
例如,多维度数据有N条数据,维度有name、age、height、salary。查询数据的装置创建数据表t_salary(在此处多维度数据为一张数据表),包含五个属性列:id、name、age、height、salary,其中,id为排序列,用于标识不同的数据,非排序列为name、age、height、salary。
采用的语句可以为:
其中,“CREATE TABLE t_salary(id string,name string,age int,heightdouble,salary int)”表示创建数据表t_salary,id和name采用字符串的格式,age和salary采用整型格式,height采用双精度浮点型格式。“STORED BY'name'”表示按照名称存储,“TBLPROPERTIES('SORT_COLUMNS'='id')”表示将“id”作为排序列。
步骤502,查询数据的装置指定所要学习的空间分布信息的维度。
在本实施例中,由于在查询数据之前,首先要学习到多维度数据的空间分布信息,所以查询数据的装置要指定所要学习的这多维度数据的具体维度。具体的,对于上述数据表t_salary,查询数据的装置可以使用以下语句指定学习数据表t_salary的非排序列age、height、salary的空间分布信息,语句可以是:
其中,“CREATE DATAMAP t_salary_filter ON TABLE t_salary”表示在数据表t_salary中创建一种特定的数据图(DATAMAP)。“USING‘MultiDimensionalFilter’”进一步指明这种DATAMAP是进行多维度数据过滤,“DMPROPERTIES中的(‘MDF_COLUMNS’=‘age,height,salary’)”进一步指明参与多维度数据过滤的具体维度为age,height,salary。
步骤503,查询数据的装置接收多维度数据以及对多维度数据进行分块处理。
在本实施例中,用户(可以是运维人员)想要将多维度数据导入数据表,可以向查询数据的装置输入数据导入命令(可以通过界面输入数据导入命令,或者通过SQL语句输入数据导入命令)。查询数据的装置接收到数据导入命令后,将多维度数据导入到步骤501创建的数据表中。查询数据的装置判断多维度数据的数据量是否大于预设阈值。若多维度数据的数据量大于预设阈值,则查询数据的装置可以将数据表按照分区列切分为块。这样,多维度数据最终被切分为多个块。
在一种可能的实现方式中,查询数据的装置将多维度数据进行分层级切分块,处理为:查询数据的装置接收到数据导入命令后,将多维度数据导入到步骤501创建的数据表中。查询数据的装置判断多维度数据的数据量是否大于预设阈值。若多维度数据的数据量大于预设阈值,则查询数据的装置可以将数据表按照分区列切分为第一层级块。然后查询数据的装置可以将每个第一层级块按照主键列,切分成第二层级块。例如,如图6所示,对于上述数据表t_salary,分区列为“城市”,查询数据的装置按照“城市”切分文件,得到第一层级块。主键列为id,查询数据的装置依次将id为1~32000切分为一个第二层级块,将id为32001~64000切分为一个第二层级块等。这样多维度数据所在的数据表,最终被切分为N个第二层级块(块1至块N)。
此处需要说明的是,在对多维度数据切分块时,可以是切分为一个层级的块,也可以按照多层级进行切分,将多维度数据切分为多个层级的块(如第一层级块为文件块,第二层级块为数据块),本申请实施例不做限定。
步骤504,查询数据的装置学习多维度数据的空间分布信息。
在本实施例中,查询数据的装置对多维度数据,学习多维度数据的空间分布信息。具体是根据多维度数据在多维空间中的分布特征和约束条件,确定多维度数据的各个块的多个子空间对象,从而获得多维度数据的空间分布信息。约束条件可以包括子空间对象的数目、每个子空间对象的数据量、子空间对象的增量信息或计算性能中的一种或多种。子空间对象的数目指子空间对象的最大数目和最小数目,子空间对象的数据量指每个子空间对象包括的最大数据量和最小数据量,子空间对象的增量信息指添加一个数据后子空间对象的体积的最大增量,计算性能指计算空间分布信息所需的最大时间。
例如,如图7所示,在多维度数据的维度为age(d1维度)、height(d2维度)、salary(d3维度)时,对于多维度数据中的一个块,方块表示将该块中空间邻近的数据划分到同一个簇内,最终生成n个簇,每一个簇可以表示为一个子空间对象,即S1子空间对象至Sn子空间对象(可以称为是多维子空间对象群),这样可以获得一个块对应的多个子空间对象。所有块的各子空间对象在各维度上的数据范围即构成多维度数据的空间分布信息。此处数据范围可以使用最小值至最大值的区间表示,如对于S1子空间对象,d1维度的数据范围为[a1min,a1max],a1min指S1子空间对象中d1维度的数据的最小取值,a1max指S1子空间对象中d1维度的数据的最大取值。
在上述步骤504中,本实施例中可以采用但是不限于以下三种方式,学习多维度数据的空间分布信息:
方式一:查询数据的装置对多维度数据进行降维处理,获得降维处理后的数据;根据降维处理后的数据在低维空间的分布特征和约束条件,确定多个子空间对象。
其中,降维处理为降低维度处理,如多维度数据为3维度数据,降维处理后的数据为一维,低维空间即为一维空间。
在本实施例中,对于多维度数据中的任一块,查询数据的装置可以通过对该块包括的多维度数据进行编码降维,获得降维处理后的数据。然后查询数据的装置可以使用降维处理后的数据在低维度空间的分布特征和约束条件,确定该块对应的多个子空间对象。然后查询数据的装置将多维度数据的所有块的子空间对象进行合并,即获得多维度数据的多个子空间对象。
具体的,查询数据的装置将降维处理后的数据进行升序排列,近似认为降维处理后的数据的数值相近的原始数据,原始数据在空间上也邻近。例如,如图8所示,某个块包括三维数据d1维、d2维、d3维,查询数据的装置对这三维数据进行编码降维后,获得一维数据,见图8中的8(a)所示,这一维数据可以称为是编码值。将图8中的8(a)所示的一维数据进行升序排列后如图8中的8(b)所示。
然后查询数据的装置可以合并编码值邻近的数据,并且计算合并后的数据所构成的多方体的体积,最终使生成的簇的数量、簇的体积增量等满足约束条件。具体处理是:查询数据的装置将编码值最小的数据与相邻的编码值的数据组成第一簇,计算第一簇中这两个编码值对应的数据在每个维度的最大值和最小值。然后查询数据的装置基于计算出的最大值和最小值,计算这两个编码值对应的数据所组成的多方体的第一体积。然后查询数据的装置将与这两个编码值最邻近的一个编码值对应的数据添加至第一簇中,确定这三个编码值对应的数据所组成的多方体的第二体积。查询数据的装置计算第二体积与第一体积的差值,若该差值小于或等于第一预设阈值,则将新加进第一簇的编码值也添加至第一簇,继续执行将最邻近的编码值添加至第一簇的处理。若该差值大于第一预设阈值,则将与第一簇中这两个编码值最邻近的一个编码值和后面的编码值组成簇,而不是添加至第一簇,这时第一簇构建完成,第一簇即为一个子空间对象。第一簇中这两个编码值最邻近的一个编码值构建簇的方式与第一簇的构建方式相同,此处不再赘述。另外,需要说明的是,这种构建簇的方式仅是一种可能的实施方式,当然也可以采用其它方式。例如,查询数据的装置还可以考虑确定子空间对象的最大时间,使确定子空间对象的时间不能超过该最大时间。查询数据的装置构建子空间对象时,不能使得子空间对象的数据量小于子空间对象的最小数据量等,查询数据的装置在构建子空间对象时,不能使得确定子空间对象的时长超过一定数值等。
在构建好簇之后,每个簇的各维度数据的最大值和最小值,即为该簇的各维度数据的数据范围,也就获得子空间对象的各维度数据的数据范围。这样,可以确定出一个块包括多个子空间对象,该块对应有各个子空间对象在各维度数据的最大值和最小值指示的数据范围。
此处需要说明的是,在方式一中,编码降维可以是采用莫顿(morton)编码,当然也可以是其它编码降维方式,本实施例不做限定。另外,方式一中,由于对多维度数据进行降维处理仅剩一维数据,相对于对多维度数据进行聚簇,对一维数据进行聚簇会减少计算量,提升聚簇的确定速度,即提升确定子空间对象的确定速度。
方式二:查询数据的装置对多维度数据进行子空间划分,基于划分得到的子空间的分布特征和约束条件,得到多个子空间对象。
本实施例中,在多维度数据中每一维度数据的数据范围比较大时,存在数据的取值范围宽或者浮点型精度大,造成聚簇时数据计算量大或者计算复杂度高,所以在方式二中,查询数据的装置将多维度数据中的块的每一维度数据的数据范围等间隔划分为N个区间(N可以由用户预设)。
然后对于多维度数据中块的每一维度数据,查询数据的装置将该维度上位于第一个区间的所有数据映射为0,查询数据的装置将该维度上位于第二个区间的所有数据映射为1,查询数据的装置将该维度上位于第i个区间的所有数据映射为i-1,依次将该维度的所有数据映射到0至N-1上。按照相同的方式,查询数据的装置可以将每一维度数据映射到0至N-1上。此处需要说明的是0表示数值0,i表示数值i,如i取5,则表示数值5。
例如,如图9所示,多维度数据为d1维、d2维和d3维,将d1维、d2维和d3维的数据范围等间隔分为N个区间,d1min表示d1维数据中的最小值,d1max表示d1维数据中的最大值,d2min表示d2维数据中的最小值,d2max表示d2维数据中的最大值,d3min表示d3维数据中的最小值,d3max表示d3维数据中的最大值。
然后查询数据的装置将每个维度的数据映射后的N个数值组成数据点坐标,即获得子空间,子空间是由多维数据的数据点坐标组成。然后查询数据的装置将数据点坐标、数据点坐标对应的数据的id以键值对的方式进行存储,键为数据点坐标,值为该数据点坐标对应的数据的id。
例如,如图10所示,32000条数据视作一个块,数据的id由1取至32000,该块的数据的三个维度表示为d1、d2、d3。数据在每个维度的数据的取值范围均为0至9000,取N为32,区间间隔则为(9000-0)/32=281.25,即将取值在0至281.25范围(可取左闭右开区间)的数据映射为0,将281.25至281.25*2范围的数据映射为1,以此类推,映射后数据在每个维度的取值范围均为0至31。数据点坐标为(0,0,0)、(0,0,1)、(0,1,0)…(31,31,31)。数据的id为9、256、3150、5460等数据均映射至子空间(0,0,0),无数据映射至子空间(0,0,2)和(0,0,7)等。
然后查询数据的装置将子空间进行合并,获取合并后的子空间在各维度上的数据的最大值和最小值,每个合并后的子空间即为子空间对象。对于每个子空间对象,该子空间对象在每一维度数据的最大值和最小值构成该子空间对象在各维度的数据范围。
具体的,查询数据的装置将子空间进行合并的过程可以为:以多维度数据为三维数据为例进行说明,查询数据的装置确定子空间(0,0,0)对应的数据组成的多方体的体积1,然后查询数据的装置将子空间(0,0,0)与子空间(0,1,0)进行合并,确定这两个子空间对应的数据组成的多方体的体积2。查询数据的装置确定体积2与体积1的差值,判断该差值与第二预设阈值的大小(第二预设阈值可以由用户预设)。若该差值小于或等于第二预设阈值,则将子空间(0,0,0)、子空间(0,1,0)与子空间(1,0,0)进行合并(合并方式与子空间(0,0,0)与子空间(0,1,0)合并方式相同)。若该差值大于第二预设阈值,则查询数据的装置将子空间(0,0,0)单独确定为一个多维子空间对象,查询数据的装置可以将子空间(0,1,0)与其最邻近的子空间进行合并(合并方式与子空间(0,0,0)与子空间(0,1,0)合并方式相同),按照这种合并方式将所有的子空间进行合并处理,获得多维度数据的各个块的子空间对象。
需要说明的是,此处仅为一种合并子空间的方式,当然也可以采用其它方式合并子空间。例如,按照计算子空间对象所需的最大时间,作为约束条件,按照子空间对象的最小数据量和最大数据量,作为约束条件等。另外此处的第二预设阈值和第一预设阈值均由用户预设,二者有可能相等,也有可能不相等。
这样,由于相对于对各块未经映射的数据进行空间的聚簇,采用上述方式二的方式,对数据进行维度压缩子空间后,需要计算的数据量会减少,所以可以提升查询数据的过滤性能。另外,采用方式二,只要求各块的各维度数据可排序即可,即能进行维度压缩编码获得子空间即可,所以适用范围比较广。
方式三,查询数据的装置对多维度数据进行体积增量的聚类,获得多个子空间对象。
在本实施例中,查询数据的装置将多维度数据中多个数据划分到一个簇(可以称为是第一簇),然后往第一簇中添加数据。若添加数据后第一簇的体积与未添加数据的第一簇的体积之差小于一定数值,则将该数据添加至第一簇。若添加数据后第一簇的体积与未添加数据的第一簇的体积之差大于或等于该数值,则第一簇建立完成。查询数据的装置新建一个簇(可以称为是第二簇),执行与第一簇相同的处理,直到所有的数据均遍历完,获得最终的簇。查询数据的装置将每个簇作为一个子空间对象。然后确定每个子空间对象的各维度的数据范围。当然,此处还可以同时采用其他约束条件,如计算性能,每个子空间对象的数据量等。
另外,对于每个子空间对象中还应包括一个标识,用于指示该子空间对象所属的块,该标识用于后续查询数据过程中找到块。
在步骤504确定出各块的子空间对象之后,多维度数据的单个块的子空间对象如图11所示,单个块(P1)内的子空间对象,块P1的数据的维度为d1维度、d2维度和d3维度,子空间对象使用S1、S2、S3、S4等表示。P1-S1表示块P1中的第一个子空间对象S1,P1-S2表示块P1中的第二个子空间对象S2,P1-S3表示块P1的第三个子空间对象S3,P1-S4表示块P1的第四个子空间对象S4。在d1维度,可以对块P1的所有子空间对象进行过滤,在d2维度,可以对块P1的所有子空间对象进行过滤,在d3维度,可以对块P1的所有子空间对象进行过滤。
在图11的基础上,如图12所示,本申请实施例中还提供了多维度数据的多个块的所有子空间对象(可以称为是全局子空间对象),多个块为块P1、块P2、块P3和块P4。块P1、块P2、块P3和块P4的数据的维度为d1维度、d2维度和d3维度。P1-S1表示块P1中的第一个子空间对象S1,P1-S2表示块P1中的第二个子空间对象S2,P1-S3表示块P1的第三个子空间对象S3,P1-S4表示块P1的第四个子空间对象S4。P2-S1表示块P2中的第一个子空间对象S1,P2-S2表示块P2中的第二个子空间对象S2,P2-S3表示块P2的第三个子空间对象S3,P2-S4表示块P2的第四个子空间对象S4。P3-S1表示块P3中的第一个子空间对象S1,P3-S2表示块P3中的第二个子空间对象S2,P3-S3表示块P3的第三个子空间对象S3,P3-S4表示块P3的第四个子空间对象S4。P4-S1表示块P4中的第一个子空间对象S1,P4-S2表示块P4中的第二个子空间对象S2,P4-S3表示块P4的第三个子空间对象S3,P4-S4表示块P4的第四个子空间对象S4。
这样,后续在进行数据查找时,在d1维度,可以对块P1、块P2、块P3、块P4的所有子空间对象进行过滤,在d2维度,可以对块P1、块P2、块P3、块P4的所有子空间对象进行过滤,在d3维度,可以对块P1、块P2、块P3、块P4的所有子空间对象进行过滤。
在图12中,每个子空间对象中存储有一个标识,该标识用于指示该子空间对象所属的块。
在一种可能的实现方式中,为了提升查询数据的速度,多维度数据的空间分布信息中多个子空间对象在各维度的数据范围可以构成索引。对于多维度数据中任一维度数据的子空间对象,子空间对象在每一维度的数据范围的索引可以使用线段树表示。具体的,对于任一维度数据,该维度的各个块的每个子空间对象在该维度的取值范围会挂接在该维度对应的线段树上。线段树是一棵二叉搜索树,它存储的是一个区间信息,线段树的每个节点包括区间左端点、右端点等信息。例如,如图13所示,对图12中的全局子空间对象,以d1维度为例,构建表示该维度数据对应的线段树。查询数据的装置将d1维度所有子空间的数据范围平铺展开,可得到所有端点信息。该所有端点信息构成线段树的最后一层的部分叶子节点,即图13中的最后一层的灰色圆圈所示。线段树的最后一层的另一部分叶子节点的取值根据上述该部分叶子节点确定,具体可以基于与其相邻的左侧叶子节点(左侧叶子节点可以称为是兄弟节点)确定。然后查询数据的装置再基于最后一层的叶子节点依次向上构建父节点,直至根节点。
例如,图14中,将每个子空间对象在d1维度的数据范围按端点升序展开,如P4-S4:[5,10],P2-S3:[7,12],P1-S2:[15,19],P4-S3:[17,22],P4-S1:[24,30],P3-S4:[28,35],P1-S4:[32,42],P2-S2:[38,47],P1-S1:[49,55],P4-S2:[52,57],P2-S4:[59,65],P2-S1:[63,69],P1-S3:[71,80]。查询数据的装置将升序展开的端点视作线段树最后一层的部分叶子节点,如最后一层的阴影圆圈所示的节点所示。然后查询数据的装置确定线段树最后一层另一部分叶子节点。对于另一部分叶子节点中的每个叶子节点(图14中的白色圆圈所示),查询数据的装置确定该叶子节点值为大于左侧兄弟节点(该叶子节点左侧相邻的叶子节点)的值的数值(P4-S4的左端点5为第一个叶子节点,右侧相邻的叶子节点的取值为6(大于5即可),P2-S3的左端点为7,右侧相邻的叶子节点的取值为8(大于7即可),依次生成所有叶子节点)。查询数据的装置向上按范围合并构建线段树倒数第二层节点,依次向上合并,直至根节点。d1维度的全局子空间对象的线段树即构建完成。这样,在进行查询d1维度时,如果数据大于49,则直接查询右侧的节点,反之则查询左侧的节点。
这样,通过图14所示的结构,查询数据的装置可以从一个维度检索出匹配的多个子空间对象,然后再将匹配的多个子空间对象在其它维度进行过滤,而不需要二次查询未匹配到第一个维度的子空间对象,所以可以高效的进行数据查询。
如图15所示,本申请实施例还提供了查询数据的流程,处理为:
步骤1501,查询数据的装置接收数据查询请求。
在本实施例中,在有数据需要查询时,用户输入数据查询请求至查询数据的装置(可以是通过界面输入数据查询请求,也可以是通过SQL语句输入数据查询请求),数据查询请求中指定所要查询的多个维度数据的数据范围。
例如,对于上述数据表t_salary,数据查询请求可以为:
上述数据查询请求可以表示为:在数据表t_salary中,获取height>=1.62&&height<=1.64、age>=27&&age<=38和salary>=200&&salary<=300的数据。对应该数据查询请求,所要查询的多个维度数据的数据范围为height>=1.62&&height<=1.64、age>=27&&age<=38和salary>=200&&salary<=300。
步骤1502,查询数据的装置获取多维度数据的空间分布信息,空间分布信息记录多维度数据关联的多个子空间对象在各维度的数据范围。
其中,多维度数据来自于一张数据表或者多张数据表。多维度数据包括多个块,每个块对应有多个子空间对象,每个子空间对象在各维度对应有数据范围。
在本实施例中,查询数据的装置可以获取多维度数据的空间分布信息,该空间分布信息记录有多维度数据关联的多个子空间对象在各维度的数据范围。具体的,查询数据的装置可以是自身存储有多维度数据的空间分布信息,也可以是从其他设备获取多维度数据的空间分布信息。
步骤1503,查询数据的装置根据空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块。
在本实施例中,查询数据的装置可以根据空间分布信息,在多维度数据中,确定所要查询的多个维度的数据范围的块。
步骤1504,查询数据的装置在确定的块中,查找出满足数据查询请求指定的多个维度的数据范围的数据。
在本实施例中,查询数据的装置可以在确定的块中,使用所要查询的多个维度的数据范围,查找到多个维度的数据范围所指示的数据。查询数据的装置可以将所查找到的数据反馈至发送数据查询请求的设备,以使该设备及时的获取到所要查询的数据。
若在确定的块中,未查询到多个维度的数据范围所指示的数据,则向发送数据查询请求的设备反馈未存在满足数据查询请求的数据。
在一种可能的实现方式中,在步骤1503中,确定块的处理可以为:
查询数据的装置根据多维度数据的空间分布信息,从多个子空间对象中确定满足数据查询请求指定的多个维度的数据范围的一个或多个子空间对象;将确定的子空间对象所属的块,作为满足数据查询请求指定的多个维度的数据范围的块。
在本实施例中,查询数据的装置可以使用数据查询请求指定的多个维度数据的数据范围中每一维度数据的数据范围,匹配多维度数据的空间分布信息,过滤掉不包括多个维度数据的数据范围的子空间对象。剩下的子空间对象即为可能存在该多个维度数据的数据范围的子空间对象。查询数据的装置将剩下的子空间对象所属的块,确定为满足多个维度数据的数据范围的块。具体可以是查询数据的装置将该多个维度中每一维度数据的数据范围,匹配多维度数据的空间分布信息,获得每一维度的数据范围所满足的子空间对象。查询数据的装置将每一维度的数据范围所满足的子空间对象取交集,即可得到满足多个维度的数据范围的子空间对象。查询数据的装置将这些子空间对象的标识所指示的块,确定为满足多个维度数据的数据范围的块。
在一种可能的实现方式中,在使用多维度数据的空间分布信息,未查找到子空间对象时,处理可以为:
在根据多维度数据的空间分布信息,从多个子空间对象中未找到满足数据查询请求指定的多个维度的数据范围的子空间对象时,查询数据的装置反馈未存在满足数据查询请求的数据。
在本实施例中,查询数据的装置在多维度数据的多个子空间对象中,均未找到满足多个维度的数据范围的子空间对象时,可以向发送数据查询请求的设备反馈未存在满足数据查询请求的数据,以使发送数据查询请求的设备及时的了解查询结果。
在一种可能的实现方式,多维度数据中有可能分为多个层级。例如,多维度数据被划分为第一层级和第二层级,相应的第一层级可以包括多个第一层级块,第二层级可以包括多个第二层级块。第二层级块由第一层级块划分得到,多个第二层级块组成一个第一层级块。步骤1503的处理可以为:
查询数据的装置获取多维度数据的第一层级块的空间分布信息,第一层级块块的空间分布信息记录第一层级块的数据关联的多个子空间对象在各维度的数据范围;获取目标块的第二层级块的空间分布信息,第二层级块的空间分布信息记录第二层级块的数据关联的多个子空间对象在各维度的数据范围;查询数据的装置根据第一层级块的空间分布信息,在第一层级块中确定满足数据查询请求指定的多个维度的数据范围的目标块;根据第二层级块的空间分布信息,在目标块中确定满足数据查询请求指定的多个维度的数据范围的第二层级块。
在本实施例中,查询数据的装置可以获取多维度数据的第一层级块的空间分布信息和第二层级块的空间分布信息。第一层级块的空间分布信息可以记录有第一层级块的数据关联的多个子空间对象在各维度的数据范围。第二层级块的空间分布信息可以记录有第二层级块的数据关联的多个子空间对象在各维度的数据范围。
查询数据的装置可以首先在第一层级块的空间分布信息中,确定第一层级块中满足多个维度的数据范围的一个或多个子空间对象。将该一个或多个子空间对象的标识对应的块,确定为目标块。然后查询数据的装置确定目标块包括的第二层级块,使用这些第二层级块的空间分布信息,在这些第二层级块中,确定满足多个维度的数据范围的一个或多个子空间对象,将该一个或多个子空间对象的标识对应的第二层级块,确定为满足数据查询请求指定的多个维度的数据范围的第二层级块。
这样,先对第一层级块进行过滤,过滤掉不包括所要查询的多个维度数据的数据范围的数据的第一层级块,再对剩下的第一层级块中的第二层级块进行过滤,可以加快数据查询的速度。
需要说明的是,上述第一层级块可以是文件块,第二层级块可以是数据块。上述仅是划分了两个层级,在查询数据过程中,可以根据实际需要进行多层级的划分。
在一种可能的实施方式中,在步骤1504之后,若后续不再使用步骤多维度数据的空间分布信息,为了节约查询数据的装置的存储空间,可以将多维度数据的空间分布信息删除。具体的,对于上述数据表t_salary,查询数据的装置可以接收删除请求,删除请求可以表示为:删除数据表t_salary的多维度数据的空间分布信息。另外,对于多维度数据的空间分布信息包括第一层级块的多维度数据的空间分布信息和第二层级块的多维度数据的空间分布信息的情况,还需要指示所要删除的空间分布信息是哪一种,如删除请求可以携带有标识,该标识用于指示所要删除的空间分布信息是第一层级块,还是第二层级块。
在一种可能的实施方式中,在数据表中的数据进行增量更新时,仅需要将增量更新的数据添加至原来的子空间对象中,重新学习多维度数据的空间分布信息的代价小。
通过本申请实施例,针对空间上相邻,但在物理内存上分布较分散的数据,通过学习这些数据的空间分布信息,构建出多维度数据的空间分布信息,能够有效的过滤查询,减少大量块的无效读取和分析,进而减少磁盘输入输出(Input Output,IO)整个块的无效读取,可以提升存储性能。
需要说明的是,上述实施例中描述用户时,描述的是运维人员,实际上也可以不是运维人员,而是指有使用上述查询数据的装置的权限的用户。
还需要说明的是,仅是对多维度数据进行逻辑上划分块,学习逻辑划分后的块对应的空间分布信息(即子空间对象),建立块与块的子空间对象的对应关系,并未将多维度数据划分后的块的数据存储在一起。
图16是本申请实施例提供的查询数据的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置可以实现本申请实施例图15的流程,该装置包括:接收模块1610、获取模块1620、确定模块1630和查找模块1640,其中:
接收模块1610,用于接收数据查询请求,其中,数据查询请求指定多个维度的数据范围,具体可以用于执行步骤1501的接收功能以及其包含的隐含步骤;
获取模块1620,用于获取多维度数据的空间分布信息,空间分布信息记录多维度数据关联的多个子空间对象在各维度的数据范围,具体可以用于执行步骤1502的获取功能以及其包含的隐含步骤;
确定模块1630,用于根据空间分布信息,在多维度数据中确定满足数据查询请求指定的多个维度的数据范围的块,具体可以用于执行步骤1503的确定功能以及其包含的隐含步骤;
查找模块1640,用于在确定的块中,查找出满足数据查询请求指定的多个维度的数据范围的数据,具体可以用于执行步骤1504的查找功能以及其包含的隐含步骤。
在一种可能的实现方式中,确定模块1630,用于:
根据所述多维度数据的空间分布信息,从所述多个子空间对象中确定满足所述数据查询请求指定的多个维度的数据范围的一个或多个子空间对象;
将确定的子空间对象所属的块,作为满足所述数据查询请求指定的多个维度的数据范围的块。
在一种可能的实现方式中,查找模块1640,还用于:
在根据所述多维度数据的空间分布信息,从所述多个子空间对象中未找到满足所述数据查询请求指定的多个维度的数据范围的子空间对象时,反馈未存在满足所述数据查询请求的数据。
在一种可能的实现方式中,获取模块1620,用于:
获取所述多维度数据的第一层级块的空间分布信息,所述第一层级块的空间分布信息记录所述第一层级块的数据关联的多个子空间对象在各维度的数据范围;
获取所述多维度数据的第二层级块的空间分布信息,所述第二层级块的空间分布信息记录所述第二层级块的数据关联的多个子空间对象在各维度的数据范围;
确定模块1630,用于:
根据所述第一层级块的空间分布信息,在所述第一层级块中确定满足所述数据查询请求指定的多个维度的数据范围的目标块;
根据所述第二层级块的空间分布信息,在所述目标块中确定满足所述数据查询请求指定的多个维度的数据范围的第二层级块。
在一种可能的实现方式中,确定模块1630,还用于:
根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象。
在一种可能的实现方式中,确定模块1630,还用于:
对多维度数据进行降维处理,获得降维处理后的数据;
根据降维处理后的数据在低维空间的分布特征和约束条件,确定多个子空间对象。
在一种可能的实现方式中,确定模块1630,还用于:
对多维度数据进行体积增量的聚类,获得多个子空间对象。
在一种可能的实现方式中,确定模块1630,还用于:
对多维度数据进行子空间划分,基于划分得到的子空间的分布特征和约束条件,得到多个子空间对象。
在一种可能的实现方式中,所述多个子空间对象在各维度的数据范围构成所述多个子空间对象的索引。
上述本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
需要说明的是:上述实施例提供的查询数据的装置在查询数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的查询数据的装置与查询数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
Claims (21)
1.一种查询数据的方法,其特征在于,所述方法包括:
接收数据查询请求,其中,所述数据查询请求指定多个维度的数据范围;
获取多维度数据的空间分布信息,所述空间分布信息记录所述多维度数据关联的多个子空间对象在各维度的数据范围;
根据所述多维度数据的空间分布信息,在所述多维度数据中确定满足所述数据查询请求指定的多个维度的数据范围的块;
在确定的块中,查找出满足所述数据查询请求指定的多个维度的数据范围的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多维度数据的空间分布信息,在所述多维度数据中确定满足所述数据查询请求指定的多个维度的数据范围的块,包括:
根据所述多维度数据的空间分布信息,从所述多个子空间对象中确定满足所述数据查询请求指定的多个维度的数据范围的一个或多个子空间对象;
将确定的子空间对象所属的块,作为满足所述数据查询请求指定的多个维度的数据范围的块。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在根据所述多维度数据的空间分布信息,从所述多个子空间对象中未找到满足所述数据查询请求指定的多个维度的数据范围的子空间对象时,反馈未存在满足所述数据查询请求的数据。
4.根据权利要求1所述的方法,其特征在于,所述获取多维度数据的空间分布信息,包括:
获取所述多维度数据的第一层级块的空间分布信息,所述第一层级块的空间分布信息记录所述第一层级块的数据关联的多个子空间对象在各维度的数据范围;
获取所述多维度数据的第二层级块的空间分布信息,所述第二层级块的空间分布信息记录所述第二层级块的数据关联的多个子空间对象在各维度的数据范围;
所述根据所述多维度数据的空间分布信息,在所述多维度数据中确定满足所述数据查询请求指定的多个维度的数据范围的块,包括:
根据所述第一层级块的空间分布信息,在所述第一层级块中确定满足所述数据查询请求指定的多个维度的数据范围的目标块;
根据所述第二层级块的空间分布信息,在所述目标块中确定满足所述数据查询请求指定的多个维度的数据范围的第二层级块。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象。
6.根据权利要求5所述的方法,其特征在于,所述根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象,包括:
对所述多维度数据进行降维处理,获得降维处理后的数据;
根据降维处理后的数据在低维空间的分布特征和约束条件,确定所述多个子空间对象。
7.根据权利要求5所述的方法,其特征在于,所述根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象,包括:
对所述多维度数据进行体积增量的聚类,获得所述多个子空间对象。
8.根据权利要求5所述的方法,其特征在于,所述根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象,包括:
对所述多维度数据进行子空间划分,基于划分得到的子空间的分布特征和约束条件,得到所述多个子空间对象。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述多个子空间对象在各维度的数据范围构成所述多个子空间对象的索引。
10.一种查询数据的装置,其特征在于,所述装置包括:
接收模块,用于接收数据查询请求,其中,所述数据查询请求指定多个维度的数据范围;
获取模块,用于获取多维度数据的空间分布信息,所述空间分布信息记录所述多维度数据关联的多个子空间对象在各维度的数据范围;
确定模块,用于根据所述多维度数据的空间分布信息,在所述多维度数据中确定满足所述数据查询请求指定的多个维度的数据范围的块;
查找模块,用于在确定的块中,查找出满足所述数据查询请求指定的多个维度的数据范围的数据。
11.根据权利要求10所述的装置,其特征在于,所述确定模块,用于:
根据所述多维度数据的空间分布信息,从所述多个子空间对象中确定满足所述数据查询请求指定的多个维度的数据范围的一个或多个子空间对象;
将确定的子空间对象所属的块,作为满足所述数据查询请求指定的多个维度的数据范围的块。
12.根据权利要求11所述的装置,其特征在于,所述查找模块,还用于:
在根据所述多维度数据的空间分布信息,从所述多个子空间对象中未找到满足所述数据查询请求指定的多个维度的数据范围的子空间对象时,反馈未存在满足所述数据查询请求的数据。
13.根据权利要求10所述的装置,其特征在于,所述获取模块,用于:
获取所述多维度数据的第一层级块的空间分布信息,所述第一层级块的空间分布信息记录所述第一层级块的数据关联的多个子空间对象在各维度的数据范围;
获取所述多维度数据的第二层级块的空间分布信息,所述第二层级块的空间分布信息记录所述第二层级块的数据关联的多个子空间对象在各维度的数据范围;
所述确定模块,用于:
根据所述第一层级块的空间分布信息,在所述第一层级块中确定满足所述数据查询请求指定的多个维度的数据范围的目标块;
根据所述第二层级块的空间分布信息,在所述目标块中确定满足所述数据查询请求指定的多个维度的数据范围的第二层级块。
14.根据权利要求10至13任一项所述的装置,其特征在于,所述确定模块,还用于:
根据所述多维度数据在多维空间中的分布特征和约束条件,确定所述多维度数据的所述多个子空间对象。
15.根据权利要求14所述的装置,其特征在于,所述确定模块,还用于:
对所述多维度数据进行降维处理,获得降维处理后的数据;
根据降维处理后的数据在低维空间的分布特征和约束条件,确定所述多个子空间对象。
16.根据权利要求14所述的装置,其特征在于,所述确定模块,还用于:
对所述多维度数据进行体积增量的聚类,获得所述多个子空间对象。
17.根据权利要求14所述的装置,其特征在于,所述确定模块,还用于:
对所述多维度数据进行子空间划分,基于划分得到的子空间的分布特征和约束条件,得到所述多个子空间对象。
18.根据权利要求10至17任一项所述的装置,其特征在于,所述多个子空间对象在各维度的数据范围构成所述多个子空间对象的索引。
19.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述处理器执行所述存储器存储的指令,使得所述计算设备实现所述权利要求1-9中任一权利要求所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,所述指令指示所述计算设备执行所述权利要求1-9中任一权利要求所述的方法。
21.一种包含指令的计算机程序产品,其特征在于,所述指令指示所述计算设备执行所述权利要求1-9中任一权利要求所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20869759.9A EP4030312A4 (en) | 2019-09-24 | 2020-09-24 | METHOD AND APPARATUS FOR QUERYING DATA, COMPUTER DEVICE AND STORAGE MEDIA |
PCT/CN2020/117269 WO2021057824A1 (zh) | 2019-09-24 | 2020-09-24 | 查询数据的方法、装置、计算设备和存储介质 |
US17/702,479 US12026162B2 (en) | 2019-09-24 | 2022-03-23 | Data query method and apparatus, computing device, and storage medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907480 | 2019-09-24 | ||
CN2019109074802 | 2019-09-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112632118A true CN112632118A (zh) | 2021-04-09 |
Family
ID=75299998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010247340.XA Pending CN112632118A (zh) | 2019-09-24 | 2020-03-31 | 查询数据的方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632118A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117151555A (zh) * | 2023-11-01 | 2023-12-01 | 青岛文达通科技股份有限公司 | 一种智慧城市服务系统 |
CN118349710A (zh) * | 2024-06-07 | 2024-07-16 | 比亚迪股份有限公司 | 数据检索的方法、电子设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657450A (zh) * | 2015-02-05 | 2015-05-27 | 中国科学院信息工程研究所 | 面向大数据环境的概要信息动态构建与查询方法及装置 |
US20150347481A1 (en) * | 2014-05-28 | 2015-12-03 | International Business Machines Corporation | Storing and querying multidimensional data using first and second indicies |
US20170068688A1 (en) * | 2015-09-09 | 2017-03-09 | International Business Machines Corporation | Efficient spatial queries in large data tables |
CN106649770A (zh) * | 2016-12-27 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种大数据查询方法及系统 |
-
2020
- 2020-03-31 CN CN202010247340.XA patent/CN112632118A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150347481A1 (en) * | 2014-05-28 | 2015-12-03 | International Business Machines Corporation | Storing and querying multidimensional data using first and second indicies |
CN104657450A (zh) * | 2015-02-05 | 2015-05-27 | 中国科学院信息工程研究所 | 面向大数据环境的概要信息动态构建与查询方法及装置 |
US20170068688A1 (en) * | 2015-09-09 | 2017-03-09 | International Business Machines Corporation | Efficient spatial queries in large data tables |
CN106649770A (zh) * | 2016-12-27 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种大数据查询方法及系统 |
Non-Patent Citations (2)
Title |
---|
ZHUANG WEI; QU JUNMEI; LIU LIANG; ZHU CHAOQIANG; YIN WENJUN: "MDDM: A Method to Improve Multiple Dimension Data Management Performance in HBase", 2015 IEEE 17TH INTERNATIONAL CONFERENCE ON HIGH PERFORMANCE COMPUTING AND COMMUNICATIONS, 2015 IEEE 7TH INTERNATIONAL SYMPOSIUM ON CYBERSPACE SAFETY AND SECURITY, AND 2015 IEEE 12TH INTERNATIONAL CONFERENCE ON EMBEDDED SOFTWARE AND SYSTEMS, 30 November 2015 (2015-11-30) * |
梁俊杰;李凤华;刘琼妮;尹利;: "MapReduce框架下的优化高维索引与KNN查询", 电子学报, no. 08, 15 August 2016 (2016-08-15) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117151555A (zh) * | 2023-11-01 | 2023-12-01 | 青岛文达通科技股份有限公司 | 一种智慧城市服务系统 |
CN117151555B (zh) * | 2023-11-01 | 2024-02-02 | 青岛文达通科技股份有限公司 | 一种智慧城市服务系统 |
CN118349710A (zh) * | 2024-06-07 | 2024-07-16 | 比亚迪股份有限公司 | 数据检索的方法、电子设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xie et al. | Simba: Efficient in-memory spatial analytics | |
US11762876B2 (en) | Data normalization using data edge platform | |
US9507807B1 (en) | Meta file system for big data | |
EP3014488B1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
CN113688127B (zh) | 数据压缩技术 | |
EP2742446A1 (en) | A system and method to store video fingerprints on distributed nodes in cloud systems | |
CN112765405B (zh) | 空间数据搜索结果的聚类和查询的方法及系统 | |
Kvet et al. | The complexity of the data retrieval process using the proposed index extension | |
Tian et al. | A survey of spatio-temporal big data indexing methods in distributed environment | |
CN112035586A (zh) | 基于可扩展学习索引的空间范围查询方法 | |
CN112632118A (zh) | 查询数据的方法、装置、计算设备和存储介质 | |
Wang et al. | Efficient query processing framework for big data warehouse: an almost join-free approach | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
Mittal et al. | Efficient random data accessing in MapReduce | |
Vu et al. | R*-grove: Balanced spatial partitioning for large-scale datasets | |
Elmeiligy et al. | An efficient parallel indexing structure for multi-dimensional big data using spark | |
US12026162B2 (en) | Data query method and apparatus, computing device, and storage medium | |
CN117785841A (zh) | 多源异构数据的处理方法及装置 | |
US9275059B1 (en) | Genome big data indexing | |
CN111767287A (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和系统 | |
CN114297260A (zh) | 分布式rdf数据查询方法、装置和计算机设备 | |
Kvet | Database Block Management using Master Index | |
Wang et al. | GLIN: A (G) eneric (L) earned (In) dexing Mechanism for Complex Geometries | |
Xiao | A Spark based computing framework for spatial data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |