CN118312525A - 数据库查询方法、系统、存储介质及电子设备 - Google Patents

数据库查询方法、系统、存储介质及电子设备 Download PDF

Info

Publication number
CN118312525A
CN118312525A CN202310019739.6A CN202310019739A CN118312525A CN 118312525 A CN118312525 A CN 118312525A CN 202310019739 A CN202310019739 A CN 202310019739A CN 118312525 A CN118312525 A CN 118312525A
Authority
CN
China
Prior art keywords
query
database
data
result set
cache
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
Application number
CN202310019739.6A
Other languages
English (en)
Inventor
张冬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN202310019739.6A priority Critical patent/CN118312525A/zh
Publication of CN118312525A publication Critical patent/CN118312525A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种数据库查询方法、系统、存储介质及电子设备,属于计算机技术领域。所述数据库查询方法包括:接收查询语句,并将该查询语句解析成若干个单个条件查询;对于所述若干个单个条件查询中的每个单个条件查询:若缓存中存在该单个条件查询,获取其相应的单属性查询结果集;否则,执行该单个条件查询,获取并缓存该单属性查询结果集;然后根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的查询结果集进行逻辑运算,以得到所述查询语句的查询结果。根据本申请的数据库查询方法能够以尽可能用最少的内存空间缓存更多的查询结果,增加缓存命中数据查询的几率。

Description

数据库查询方法、系统、存储介质及电子设备
技术领域
本发明涉及计算机技术领域,具体地涉及一种数据库查询方法、系统、存储介质及电子设备。
背景技术
响应时间是衡量数据库性能的一个重要指标,使用缓存是缩短响应时间的一个重要办法。缓存一般是指通过预加载数据的方式或缓存之前查询结果的方式,把放在磁盘中的数据存储在内存中。
在现有技术中,部分数据库本身不提供缓存,上层应用自己提供缓存机制,把数据存储在第三方内存数据库中一份,第一次请求时应用访问数据库,获取到数据之后,再请求内存数据库,把数据缓存进去,第二次同样的请求时,直接从内存数据库获取数据。当数据库更新时,同时更新数据库和缓存数据库。这种缓存机制对上层应用不友好,开发起来非常繁琐,若上层应用依赖的数据库比较多,数据链路会更复杂,增大运维难度,还有可能导致数据不一致的问题。
在现有技术中,部分数据库会缓存经常重复查询的语句的全量结果,对用户无感知,当数据更新时,自动删除相关的缓存。然而,用户完全使用一样的sql查询的几率没有那么大;全量缓存的数据查询结果很占用内存空间,导致能缓存的查询结果有限,进一步降低缓存命中的几率。
发明内容
本发明实施例的目的是提供一种数据库查询方法,该方法能够以尽可能用最少的内存空间缓存更多的查询结果,增加缓存命中数据查询的几率。
为了实现上述目的,本发明实施例提供一种数据库查询方法,该方法包括:
接收查询语句,并将该查询语句解析成若干个单个条件查询;
对于所述若干个单个条件查询中的每个单个条件查询:若缓存中存在该单个条件查询,获取其相应的单属性查询结果集;否则,执行该单个条件查询,获取并缓存该单属性查询结果集;
根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的查询结果集进行逻辑运算,以得到所述查询语句的查询结果。
优选的,所述单属性查询结果集为bitset类型数据。
优选的,当所述数据库的数据更新时,更新所述单属性查询结果集的数据。
可选的,所述查询语句包括多个查询语句。
另一方面,本发明提供一种数据库查询系统,该系统包括:
接收和解析单元,用于接收查询语句,并将该查询语句解析成若干个单个条件查询;
查询单元,用于处理所述若干个单个条件查询中的每个单个条件查询,若缓存中存在该单个条件查询,则获取其相应的单属性查询结果集,否则,执行该单个条件查询,获取并缓存该单属性查询结果集;以及
结果获取单元,用于根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的bitset数据进行逻辑运算,以得到所述查询语句的查询结果。
优选的,所述单属性查询结果集为bitset类型数据。
优选的,当所述数据库的数据更新时,更新所述单属性查询结果集的数据。
可选的,所述查询语句包括多个查询语句。
另一方面,本发明提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行本申请上述任一项所述的数据库查询方法。
另一方面,本发明提供一种电子设备,该电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行本申请所述的数据查询方法。
通过上述技术方案,本申请的数据库查询方法,在执行数据查询语句的过程中,将每个单属性查询条件的结果集以bitset数据形式进行缓存,能够以尽可能用最少的内存空间缓存更多的查询结果,且增加缓存命中数据查询的几率;在每次执行数据查询语句时先从缓存中查找相应的单属性查询条件的结果集,并对命中的结果集和查询的结果集进行简单的逻辑运算,就可以得到最终的查询结果。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1A和1B分别是行式存储和列式存储的数据库的存储示意图;
图2是本发明的数据库查询方法的一实施例的流程图;以及
图3是本发明的数据库查询装置的一实施例的组成结构图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
现有的数据库存储方式有两种,一种是如图1A所示的行式存储的数据库,每一条结构化数据为一行,占据一片存储空间,例如图1A中的第1行,表示用户id为:0,用户名为:zhangsan,用户年龄为:10,……;另一种是如图1B所示的列式存储的数据库,每一列占据一片存储空间,其中每一列对应结构化数据的一个属性。
在现有技术中,以列式存储为例,查询语句:select*from user where name=“zhangsan”and age=10,执行过程如下:
步骤一:根据name=“zhangsan”发现第一条数据符合条件;
步骤二:根据age=10发现第一条和第三条符合条件;
步骤三:由于两个条件是and(并且)的关系,所以对步骤一和二的结果取交集,发现第一条符合规则;
步骤四:获取第一条的所有列,id,name,age返回给用户。
以下结合图2说明本发明的数据库查询方法的一个实施例,该实施例为一个分析型数据库,即列式存储的数据库,其查询过程如下:
步骤1:接收查询语句,并将该查询语句解析成若干个单个条件查询;
同样以上文中的查询语句为例,在本实施例中,将查询条件分解为name=“zhangsan”和age=10两个单个条件的子查询。
步骤2:对于所述若干个单个条件查询中的每个单个条件查询,判断缓存中存在该单个条件查询;
即,在上述示例中,在缓存中分别查找name=“zhangsan”、age=10的两个单个条件的子查询是否存在。例如,缓存中存在name=“zhangsan”的结果集,则执行步骤S31,直接读取name=“zhangsan”的结果集,缓存中不存在age=10的结果集,则执行步骤S32,执行select*from user where age=10,获取并缓存该单属性查询结果集。
步骤31:获取其相应的单属性查询结果集;
步骤32:执行该单个条件查询,获取并缓存该单属性查询结果集;
需要说明的是,在本实施例中,单属性查询结果集以bitset类型进行缓存,在用户表数据中有多少条数据就申请多少位的存储空间,每一位的值为0或者1,其中1代表命中该条数据,0代表未命中该条数据。例如,为age=10的查询条件生成一个bitset,由于图1B所示的数据库中有三条数据,因此需要申请三位的空间,基于图1B所示的数据库缓存age=10的查询结果集为:1|0|1。
也即是说,对于第一次查询name=“zhangsan”时,缓存其查询结果集的bitset,name=“zhangsan”:1|0|0;对于第二次及以后查询name=“zhangsan”时,直接从缓存中读取name=“zhangsan”:1|0|0。同样的,对于第一次查询age=10时,缓存其查询结果集的bitset,age=10:1|0|1;对于第二次及以后查询age=10时,直接从缓存中读取age=10:1|0|1。
需要说明的是,如果数据库保存的数据发生变化,需要更新缓存中的相应bitset数据。
在每个单个条件查询得到结果后,执行步骤4,以判断是否已经完成所有的单个条件查询。
步骤4:判断每个单个条件查询都获取到相应查询结果集,若是,则执行步骤5,若否跳转到步骤2继续执行单个条件查询;
步骤5:根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的查询结果集进行逻辑运算,以得到所述查询语句的查询结果。
例如,对于上述示例的查询语句:select*from user where name=“zhangsan”and age=10,只需要将读取的bitset,age=10:1|0|1和name=“zhangsan”:1|0|0取交集,根据得到的交集:1|0|0,取第一条数据的所有列,即为该查询语句的查询结果。
再如,对于新的查询语句:select*from user where name=“wangwu”and age=10,去缓存里找name=“wangwu”的bitset发现没有结果,于是执行查询:select*from userwhere name=“wangwu”把结果生成bitset并缓存:name=“wangwu”:0|0|1;再去缓存里找age=10的bitset发现有结果,就直接从读取该bitset:age=10:1|0|1;然后将两个bitset取交集得到0|0|1,由此获取第三条数据的所有列,id,name,age返回给查询用户。
以此类推,接下来用户查询select*from user where name=“zhangsan”;或者select*from user where age=“10”;或者select*from user where age=“10”and name=”wangwu”都能命中缓存,快速返回结果。
对于行式存储的数据库,本发明也能得到相应的技术效果,本领域技术人员可以自行进行适应性处理,其实施方式本申请不再赘述。
还需要说明的是,查询语句可以是多个查询语句的组合,在执行时,同样将多个查询语句解析为若干个单个条件查询即可。
相比现有技术,本实施例的技术优势在于:
(1)用bitset形式存储缓存数据,用较少的内存覆盖了较多的查询;
(2)缓存每个过滤条件的结果,而不是整个查询的结果,增大缓存命中率;
(3)缓存和数据查询过程对于上层应用是透明的,无需单独处理缓存逻辑,使用非常简单。
本发明还提供一种数据库查询系统的实施例,该数据库查询系统包括:接收和解析单元,用于接收查询语句,并将该查询语句解析成若干个单个条件查询;
查询单元,用于处理所述若干个单个条件查询中的每个单个条件查询,若缓存中存在该单个条件查询,则获取其相应的单属性查询结果集,否则,执行该单个条件查询,获取并缓存该单属性查询结果集;以及
结果获取单元,用于根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的bitset数据进行逻辑运算,以得到所述查询语句的查询结果。
在一些实施方式中,数据库查询系统的数据库为列式存储的分析型数据库,在另一些实施方式中,数据库查询系统的数据库为行式存储的关系型数据库。
在一些实施方式中,数据库查询系统的所述单属性查询结果集为bitset类型数据。
在一些实施方式中,当数据库查询系统的数据库的数据更新时,需要更新所述单属性查询结果集的数据。
基于上一实施例,本发明实施例还提供一种数据库查询装置,基于计算机硬件实现,该数据查询装置包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令,以实现本申请所述的数据查询方法的步骤。
上述查询单元、结果获取单元、接收和解析单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来缓存单属性查询结果集,以提高再次查询时的命中率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据库查询方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据库查询方法。
本发明实施例提供了一种设备,如图3所示,该设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的数据库查询方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
步骤1:接收查询语句,并将该查询语句解析成若干个单个条件查询;
步骤2:对于所述若干个单个条件查询中的每个单个条件查询,判断缓存中存在该单个条件查询。若步骤2中,对于当前的单个条件查询的判断结果为是则执行步骤31,若判断结果为否则执行步骤32;
步骤31:获取其相应的单属性查询结果集,然后执行步骤4;
步骤32:执行该单个条件查询,获取并缓存该单属性查询结果集,然后执行步骤4;
需要说明的是,在本实施例中,单属性查询结果集以bitset类型进行缓存,在用户表数据中有多少条数据就申请多少位的存储空间,每一位的值为0或者1,其中1代表命中该条数据,0代表未命中该条数据。
还需要说明的是,如果数据库保存的数据发生变化,需要更新缓存中的相应bitset数据。
步骤4:判断每个单个条件查询都获取到相应查询结果集,若是,则执行步骤5,若否跳转到步骤2继续执行单个条件查询;
步骤5:根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的查询结果集进行逻辑运算,以得到所述查询语句的查询结果。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种数据库查询方法,包括:
接收查询语句,并将该查询语句解析成若干个单个条件查询;
对于所述若干个单个条件查询中的每个单个条件查询:
若缓存中存在该单个条件查询,获取其相应的单属性查询结果集;
否则,执行该单个条件查询,获取并缓存该单属性查询结果集,及
根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的查询结果集进行逻辑运算,以得到所述查询语句的查询结果。
2.根据权利要求1所述的数据库查询方法,其特征在于,所述单属性查询结果集为bitset类型数据。
3.根据权利要求1所述的数据库查询方法,其特征在于,当所述数据库的数据更新时,更新所述单属性查询结果集的数据。
4.根据权利要求1所述的数据库查询方法,其特征在于,所述查询语句包括多个查询语句。
5.一种数据库查询系统,包括:
接收和解析单元,用于接收查询语句,并将该查询语句解析成若干个单个条件查询;
查询单元,用于处理所述若干个单个条件查询中的每个单个条件查询,若缓存中存在该单个条件查询,则获取其相应的单属性查询结果集,否则,执行该单个条件查询,获取并缓存该单属性查询结果集;以及
结果获取单元,用于根据所述查询语句的查询条件,将所述若干个单个条件查询中的每个单个条件查询的bitset数据进行逻辑运算,以得到所述查询语句的查询结果。
6.根据权利要求5所述的数据库查询系统,其特征在于,所述单属性查询结果集为bitset类型数据。
7.根据权利要求5所述的数据库查询系统,其特征在于,当所述数据库的数据更新时,更新所述单属性查询结果集的数据。
8.根据权利要求5所述的数据库查询系统,其特征在于,所述查询语句包括多个查询语句。
9.一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行如权利要求1-4中任意一项所述的数据库查询方法。
10.一种电子设备,其特征在于,包括:至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行权利要求1至4中任一项所述的数据查询方法。
CN202310019739.6A 2023-01-06 2023-01-06 数据库查询方法、系统、存储介质及电子设备 Pending CN118312525A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310019739.6A CN118312525A (zh) 2023-01-06 2023-01-06 数据库查询方法、系统、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310019739.6A CN118312525A (zh) 2023-01-06 2023-01-06 数据库查询方法、系统、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN118312525A true CN118312525A (zh) 2024-07-09

Family

ID=91728190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310019739.6A Pending CN118312525A (zh) 2023-01-06 2023-01-06 数据库查询方法、系统、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN118312525A (zh)

Similar Documents

Publication Publication Date Title
EP3602351B1 (en) Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps
CN107402988B (zh) 一种分布式NewSQL数据库系统和半结构化数据查询方法
US10664497B2 (en) Hybrid database table stored as both row and column store
CN107038207B (zh) 一种数据查询方法、数据处理方法及装置
US10114908B2 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US8700605B1 (en) Estimating rows returned by recursive queries using fanout
US7158996B2 (en) Method, system, and program for managing database operations with respect to a database table
US20160378813A1 (en) Hybrid Database Table Stored as Both Row and Column Store
CN107491487B (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
US10296497B2 (en) Storing a key value to a deleted row based on key range density
US10089353B2 (en) Approximate string matching optimization for a database
CN113704300B (zh) 供数据检索方法使用的数据印记技术
US20230153455A1 (en) Query-based database redaction
CN116881287A (zh) 一种数据查询方法及相关设备
JP2017537398A (ja) 一組の構造化データタームからの非構造化検索クエリの生成
CN116610700A (zh) 查询语句检测方法及装置、存储介质
CN114253925B (zh) 一种访问数据库日志的方法、服务器、终端以及电子设备
CN105787029A (zh) 一种基于solr的关键字词识别办法
CN118312525A (zh) 数据库查询方法、系统、存储介质及电子设备
CN114064729B (zh) 一种数据检索方法、装置、设备及存储介质
EP4155979A1 (en) Pre-calculation model scoring method and apparatus , device, and storage medium
US20090077112A1 (en) Performance Optimized Navigation Support For Web Page Composer
CN111143460A (zh) 基于大数据的经济领域的数据的检索方法、装置与处理器
CN111125155A (zh) 基于访问路径的数据查询方法、装置、存储介质及处理器
CN111159214A (zh) 一种api的访问方法、装置、电子设备及存储介质

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