数据查询方法和装置以及存储介质与流程

文档序号:33503803发布日期:2023-03-17 22:54阅读:24来源:国知局
1.本技术涉及数据查询
技术领域
:,尤其涉及一种数据查询方法和装置以及存储介质。
背景技术
::2.随着5g技术的蓬勃发展,其高速、广连接和低时延的特性与车联网的众多场景高度契合。与此同时基于车辆产生的行为数据也呈现出爆炸性的增长,其中车辆访问互联网的日志数据更是达到每天百亿增量的数据量级,等到数据存储周期达到一定程度,如半年或者更久的时间,则需要在短时间内从海量存储的数据中查询到要查找的数据。3.在一些数据查询的方案中,分布式列式存储数据库hbase通过rowkey做为索引来提高查询效率,然后通过phonenix实现多列的条件的查询,然而hbase只能通过rowkey来进行查询,如果想通过其他列做为条件来进行查询虽然可以使用phoenix,但其查询语句是点查找和小范围扫描时,phoenix可以比较好地满足,而它大量scan类型的olap查询,或查询的模式较为灵活的场景不太适合。技术实现要素:4.本技术实施例提供一种数据查询方法和装置及存储介质,通过该方法可以使用多查询条件字段组合成稀疏索引,解决在海量数据下筛选多列字段作为查询条件时查询性能较低的问题,并在海量数据列式存储下通过构建逻辑块稀疏索引的方式实现快速在大数据量中检索出要查询的数据内容。5.第一方面,本技术实施例提供一种数据查询方法,应用于数据库,所述数据库存储的数据被配置为连续的多行数据构成一个逻辑数据块,且每个所述逻辑数据块被配置为将当前逻辑数据块中首行数据的索引作为当前逻辑数据块的稀疏索引,所述方法包括:获取用户输入的查询条件;基于用户输入的所述查询条件,若所述查询条件中包含稀疏索引项,则使用相应的稀疏索引进行数据检索,确定与查询条件相匹配的区间,其中,所述与查询条件相匹配的区间中包含的数据为目标数据。6.进一步地,所述连续的多行数据构成一个逻辑数据块包括连续的1024行数据构成一个逻辑数据块。7.进一步地,所述查询条件为多列查询条件,该多列查询条件包含多种属性的组合。8.进一步地,所述确定与查询条件相匹配的区间包括:确定所述查询条件所组成的索引主键对应逻辑数据块范围的开始行号;确定所述查询条件所组成的索引主键对应逻辑数据块范围的结束行号;基于所述开始行号和所述结束行号确定与查询条件相匹配的区间。9.进一步地,所述确定所述查询条件所组成的索引主键对应逻辑数据块范围的开始行号包括:确定是否查找到满足所述查询条件的稀疏索引主键,若未查找到,则设置最后一个所述逻辑数据块的稀疏索引相对应的行号为开始行号,若查找到,则确定查找到的满足所述查询条件的稀疏索引主键是否与查询条件组成的索引主键相同,若是,设置第一条满足所述查询条件的稀疏索引主键的行号为开始行号,若否,则设置满足当前条件的稀疏索引主键的前一条稀疏索引对应的行号为开始行号。10.进一步地,确定所述查询条件所组成的索引主键对应逻辑数据块范围的结束行号包括:查找第一条大于满足所述查询条件的稀疏索引主键的行号;确定是否查找到第一条大于满足所述查询条件的稀疏索引主键,若未查找到,则将最后一个逻辑数据块中最后一行数据的行号作为结束行号,若查找到,则设置当前满足所述查询条件的稀疏索引主键行号作为结束行号。11.进一步地,基于所述开始行号和所述结束行号确定与查询条件相匹配的区间包括:使用二分查找算法在列式索引中确认上界行号和下界行号。12.第二方面,本技术实施例还提供一种数据查询装置,该装置包括:处理器和存储器,所述存储器用于存储至少一条指令,所述指令由所述处理器加载并执行时实现第一方面提供的数据查询方法。13.第三方面,本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面提供的数据查询方法。14.第四方面,本技术实施例还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现第一方面提供的数据查询方法。附图说明15.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。16.图1为本技术一个实施例提供的索引架构示意图;17.图2为本技术一个实施例提供的一种数据查询方法的流程示意图;18.图3为本技术一个实施例提供的数据查询装置的结构示意图。具体实施方式19.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。20.当前一些数据查询的方案中,一般通过以下方式进行数据查询:21.第一方案:分布式列式存储数据库hbase通过rowkey做为索引来提高查询效率,然后通过phonenix实现多列的条件的查询。22.第二方案:时序数据库influxdb通过倒排索引的方式来实现海量数据的多维快速查询。23.然而上述方案存在一些缺陷,具体如下:24.第一方案缺陷:hbase只能通过rowkey来进行查询,如果想通过其他列做为条件来进行查询虽然可以使用phoenix,但其查询语句是点查找和小范围扫描时,phoenix可以比较好地满足,而它大量scan类型的olap查询,或查询的模式较为灵活的场景不太适合。25.第二方案缺陷:虽然时序数据库可以通过倒排索引等方式来实现对海量数据的多维查询,但是对数据的属性要求严格,即数据中必须带有时间属性。26.为克服上述技术问题,本技术实施例提供一种数据查询方法,以下结合附图对本技术实施例提供的数据查询方法进行详细说明。27.图1为本技术一个实施例提供的索引架构示意图。28.参照图1所示,在构建数据库的过程中,可以将多行数据构成一个逻辑数据块,进而根据待处理的数据构建出多个逻辑数据块。示例性的,每1024行数据构成一个逻辑数据块,待处理的数据包括第0行数据至第n行数据,其中,第0行数据至第1023行数据(共1024行数据)构成一个逻辑数据块,第1024行至第2047行再构成一个逻辑数据块,以此类推直至最后一行数据,其中,需要说明的是,最后一行所在的逻辑数据块中所包含的多行数据小于或者等于1024行数据。29.参照图1所示,在构建上述多个逻辑数据块的基础上,可以为每个逻辑数据块配置一个稀疏索引key(稀疏索引的主键),即每个逻辑数据块都会存储一个对应的稀疏索引key,其中,该稀疏索引项由做为过滤条件的多列拼接组合排序而成,即根据要查询的条件来构建成稀疏索引键,然后对这个构建的稀疏索引键进行排序。在一种实施方式中,可以将每个逻辑数据块中首行数据的索引作为相应逻辑数据块的稀疏索引key。示例性的,第0行数据至第1023行数据构成的逻辑数据块,可以将第0行数据的索引作为其所在逻辑数据块的稀疏索引key,即图1所示的key1。第1024行至第2047行构成的逻辑数据块,可以将第1024行数据的索引作为其所在逻辑数据块的稀疏索引key,即图1所示的key2。以此类推,将每个逻辑数据块中首行数据的索引作为相应逻辑数据块的稀疏索引key。30.在一种实施方式中,在每个逻辑数据快配置有相对应的稀疏索引key的情况下,还可以为每行数据配置列级索引。在一种实施方式中,列级索引由存储数据的行号做为索引,每个行号对应的本行数据块的物理存储地址,每个行号索引项由对应数据块的起始行号、位置和长度信息构成。进而用某行数据的行号查找行号索引表,可以获取包含该行号对应的数据块所在的位置,读取目标数据块后,可以进一步查找数据。31.在一种实施方式中,列数据块每列数据都按相同的大小进行分块存储然后整体写到存储设备或者从存储设备读出。32.在基于上述方式构建数据库后,可以通过本技术实施例提供的数据查询方法从该数据库存储的海量数据中进行数据查询。33.图2为本技术一个实施例提供的一种数据查询方法的流程示意图。34.参照图2所示,该数据查询方法可以包括以下步骤:35.步骤10:获取用户输入的查询条件。36.在用户想要从数据库存储的海量数据中查询目标数据时可以输入查询条件进行数据检索,示例性的,该查询条件可以为数据的相应关键词key,并获取用户输入的关键词key。在一种实施方式中,该关键词key可以包含稀疏索引项。37.步骤20:基于用户输入的查询条件,若该查询条件中包含稀疏索引项,则使用稀疏索引进行数据检索,确定与查询条件相匹配的区间。38.在一种实施方式中,基于用户输入的查询条件,若该查询条件中包含稀疏索引项,则使用稀疏索引进行数据检索包括:根据多列查询条件从稀疏索引中查找第一个稀疏索引key。39.在一种实施方式中,用户输入的查询条件可以为多列查询条件,该多列查询条件为多属性的组合。40.表一41.ip信息日期信息域名信息上行流量下行流量10.26.72.231202211192.android.pool.ntp.org329174567810.26.72.231202211193.android.pool.ntp.org3291454810.26.72.231202211194.android.pool.ntp.org11453267......ꢀꢀꢀꢀ10.26.72.232202211202.android.pool.ntp.org321345278..............................42.示例性的,参照表一所示,多属性组合的多列查询条件可以为ip信息与日期信息的组合,即,将ip信息与日期信息拼接作为稀疏索引的key。其中,需要说明的是,表一所示的具有相同属性的多行数据(即,ip信息为(10.26.72.231)且日期信息为(20221119)的多行数据)可以构建一个或多个逻辑数据块,且该多个逻辑数据块中的最后一个逻辑数据块中行数小于或者等于1024。43.在一种实施方式中,根据多列查询条件从稀疏索引中查找第一个稀疏索引key可以为:从稀疏索引表(包含所有的稀疏索引)中查找满足多列查询条件的第一个稀疏索引key。示例性的,参照表一所示,若多列查询条件为“(10.26.72.231)+(20221119)”,并从稀疏索引表中查找第一个满足该多列查询条件的稀疏索引key,其中,需要说明的是,若多个连续的逻辑数据块的稀疏索引key均相同,则需要确定稀疏索引表中查找第一个满足该多列查询条件的稀疏索引key,其中,满足该多列查询条件的稀疏索引key具体为根据查询条件组成的key(即上述多属性组合的多列查询条件)在稀疏索引从逻辑数据块中寻找第一个等于或大于稀疏索引key编码的稀疏索引项。44.在一种实施方式中,步骤20中“确定与查询条件相匹配的区间”具体可以通过以下步骤实现:45.步骤201:确定查询条件所组成的key(索引主键)对应逻辑数据块范围的开始行号。46.步骤202:确定查询条件所组成的key对应逻辑数据块范围的结束行号。47.步骤203,基于开始行号和结束行号确定与查询条件相匹配的区间。48.在一种实施方式中,步骤201具体可以通过以下步骤实现:49.步骤201a:确定是否从稀疏索引表中查找到稀疏索引key,若未查找到,则执行步骤201b,若查找到,则执行步骤201c。50.步骤201b:设置最后一个稀疏索引key相对应的行号为开始行号。51.其中,由于通过步骤20中“使用稀疏索引进行数据检索”遍历每个逻辑数据块的稀疏索引,并通过步骤201a确定遍历了所有的逻辑块的稀疏索引都没有找到与查询条件组成的key相同或者大于稀疏索引key编码的稀疏索引项。进而存在以下两种情况,第一种情况,则为整个数据库中并不存在与查询条件组成的key相匹配的索引;第二种情况,则为与查询条件组成的key相匹配的索引为最后一个逻辑数据块中某一行数据的索引。示例性的,查询条件组成的key为key(x),数据库中最后一个逻辑数据块的稀疏索引key为(10.29.83.760)+(20221201),即最后一个逻辑数据块的首行数据的索引为(10.29.83.760)+(20221201),而最后一个逻辑数据块中可能还存在排列在首行数据之后的其他多行数据,在其他多行数据中,部分数据的索引可能等于首行数据的索引,部分数据的索引可能大于首行数据的索引,因此在稀疏索引过程中,并不能确定最后一个逻辑数据块中除首行数据外的其他数据的索引是否与查询条件组成的key相匹配,因此,可以在稀疏索引过程中为查找到与查询条件组成的key相匹配的稀疏索引key的情况下,可以对最后一个逻辑数据块进行二级检索,其中,可以设置最后一个稀疏索引key相对应的行号为开始行号。其中,需要说明的是,若最后一个稀疏索引key相对应的行数据为多行数据,则可以将其中最后一行数据的行号最为开始行号。示例性的,最后一个逻辑数据块的首行数据的索引为(10.29.83.760)+(20221201),并且后续还有14行数据的索引与首行数据的索引相同,即,最后一个逻辑数据块的前15行的索引相同,在此情况下,可以将第15行数据的行号作为开始行号。52.步骤201c:查找到的稀疏索引key是否与查询条件组成的key相同,若是,则执行步骤201d,若不是,则执行步骤201e。53.步骤201d:设置第一条稀疏索引key对应的行号为开始行号。54.步骤201e:设置满足当前条件的稀疏索引key的前一条稀疏索引对应的行号为开始行号。55.其中,根据查询条件组成的key在稀疏索引从逻辑块中寻找第一个等于或大于稀疏索引key编码的稀疏索引项。如果找到满足条件的索引项,并且该稀疏索引项不是第一条稀疏索引项,则将该稀疏索引项的前一条稀疏索引项对应的行号为开始行号;如果找到满足条件的索引项,并且该索引项是第一条稀疏索引项,则将该稀疏索引项对应的行号做为开始行号。56.在一种实施方式中,步骤202具体可以通过以下步骤实现:57.步骤202a:查找第一大于稀疏索引key的行号。58.步骤202b:确定是否从稀疏索引表中查找到第一大于稀疏索引key,若未查找到,则执行步骤202c,若查找到,则执行步骤202d。59.步骤202c:将最后一个逻辑数据块中最后一行数据的行号作为结束行号。60.与上述步骤201b原理相同,在此不再赘述。61.步骤202d:设置当前满足稀疏索引key对应的行号作为结束行号。62.其中,根据key寻找稀疏索引中第一个大于稀疏索引key的稀疏索引项。如果找到满足条件的稀疏索引项,则记录该索引项对应的行号为结束行号;如果没有找到一条稀疏索引项大于key的编码,则将稀疏索引随后一个key对应的行号做为结束行号。63.在一种实施方式中,步骤203的具体实现方式包括:64.步骤203a:使用二分查找算法在列式索引中确认上界行号和下界行号。65.其中,在开始行号与结束行号在列式索引行范围内通过二分法寻找第一个大于key编码的行,行号记为上界行号。然后同理在开始行号与上界行号中找到对应的下界行号,这样就可以将查询条件组成的key随对应的所有数据行的范围确定,快速检索出匹配的数据内容。66.示例性的,参照表1所示,当根据查询条件组成的key来进行查询的时候,首先在稀疏索引中查找等于或大于的稀疏索引项key,例如查询ip信息是10.26.72.231,日期信息是20221119的数据则会将src_ip+date_id进行拼接形成10.26.72.23120221119,这个在稀疏索引中查找等于或第一个大于10.26.72.23120221119这个key的稀疏索引项,等于说明该索引项key是这个逻辑块的第一行稀疏索引的key就可以做为开始行号,大于则说明没有匹配到一致的稀疏索引项key,其对应的key是在前一个逻辑块中。所以将前一个稀疏索引项key对应的行号做为开始行号,另外一种情况则是没有匹配到一条稀疏索引项等于或大于key的,则记录最后一条稀疏索引项key对应的行号为开始行号。同理,根据查询条件组成的key寻找稀疏索引中第一个大于稀疏索引key的稀疏索引项对应的编码取为结束行号,如果没有找到一条稀疏索引项大于key的编码,则将稀疏索引最后一个key对应的行号做为结束行号。67.由上得到的开始行号和结束行号做为列级索引的行范围区间通过二分法寻找第一个大于key编码的行,行号记为上界行号。然后同理在开始行号与上界行号中找到第一个等于key编码的行做为下界行号,这样就可以将查询条件组成的key的取值范围确定,快速检索出匹配的数据内容。68.通过本技术实施例提供的数据查询方法可以在海量数据列式存储下通过构建逻辑块稀疏索引的方式实现快速在大数据量中检索出要查询的数据内容,可以实现降低数据检索的时间,并且在检索过程中减少检索到的数据量大小,降低设备功耗。69.图3为本技术一个实施例提供的数据查询装置的结构示意图。70.参照图3所示,数据查询装置可以包括处理器301和存储器302,存储器302用于存储至少一条指令,该指令由所述处理器301加载并执行时实现本技术任一实施例提供的数据查询方法。71.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本技术任一实施例提供的数据查询方法。72.本技术实施例还提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本技术任一实施例提供的数据查询方法。73.需要说明的是,本技术实施例中所涉及的终端可以包括但不限于个人计算机(personalcomputer,pc)、个人数字助理(personaldigitalassistant,pda)、无线手持设备、平板电脑(tabletcomputer)、手机、mp3播放器、mp4播放器等。74.可以理解的是,所述应用可以是安装在终端上的应用程序(nativeapp),或者还可以是终端上的浏览器的一个网页程序(webapp),本技术实施例对此不进行限定。75.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。76.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。77.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。78.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。79.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。80.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。81.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1