CN112307062B - 数据库聚合查询方法、装置及系统 - Google Patents
数据库聚合查询方法、装置及系统 Download PDFInfo
- Publication number
- CN112307062B CN112307062B CN202010988662.XA CN202010988662A CN112307062B CN 112307062 B CN112307062 B CN 112307062B CN 202010988662 A CN202010988662 A CN 202010988662A CN 112307062 B CN112307062 B CN 112307062B
- Authority
- CN
- China
- Prior art keywords
- trie
- hat
- grouping
- aggregation
- query
- 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/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
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据库聚合查询方法、装置及系统,其中方法包括:接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。相比现有技术,本申请能够有效降低分组聚合查询时的资源占用率,提高整体查询效率。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种数据库聚合查询方法、装置及系统。
背景技术
在关系型数据库查询功能中,存在聚合类查询,包括分组运算(group by)、去重运算(distinct)等类型的查询,此类查询常见目的是根据数据库中的指定维度字段对需要汇总分析的指标字段进行分组之后做分析汇总运算,比如求sum,avg,count等等,在联机分析处理系统(OLAP)的查询中出现频度非常高。
目前常见的数据库引擎在实现分组聚合类查询时通常采用哈希表(hash)数据结构。使用hash类数据结构的方式存储,简单通用,时间复杂度为O(1),效率高。Hash类数据结构的一个问题是占用内存资源较大,当分组查询的字段基数很高,分组数(bucket)比较多时,这个问题尤其突出。具体来说,假设分组字段有5000万条平均长度为10Byte的字符串(共500MB),中间生成的Hash表会产生一系列链表结构,导致内存可达到5GB,即内存扩展可达10倍。此查询占用大量内存和cpu资源,导致其他查询执行时间延长甚至超时等问题。
发明内容
本申请提供了一种数据库聚合查询方法、装置及系统,能够有效降低分组聚合查询时的资源占用率,提高整体查询效率。
本申请提供了如下方案:
第一方面提供一种数据库聚合查询方法,所述方法包括:
接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
进一步地,所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
进一步地,所述利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果包括:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
进一步地,所述方法还包括:
检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
进一步地,所述将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户包括:
检查是否有使用磁盘生成的缓存文件,若有,则将所述缓存文件中的主键和主键对应的值合并至hat_trie,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户;
若否,则直接将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
本申请第二方面提供一种数据库聚合查询装置,所述装置包括:
获取单元,用于接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
聚合单元,用于利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
返回单元,用于将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
进一步地,所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
进一步地,所述聚合单元具体用于:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
进一步地,所述装置还包括:
缓存单元,用于检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
本申请第三方面提供一种计算机系统,所述系统包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述的方法。
根据本申请提供的具体实施例,本申请公开了以下技术效果:获取预先获得的数据表中待处理元组的分组字段,利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie,hat_trie数据结构利用字符串的公共前缀来大幅减少主键-值结构存储数据时占用的资源,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户,减少查询时间,提高整体查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例1提供的数据库聚合查询方法流程图;
图2示出了本申请实施例2提供的数据库聚合查询装置结构图;
图3示出了本申请实施例3提供的计算机系统结构图;
图4示出了本申请hat_trie数据结构存储字符串的内容。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术所述,目前常见的数据库引擎在实现分组聚合类查询时通常采用哈希表(hash)数据结构。Hash类数据结构的一个问题是占用内存资源较大,当分组查询的字段基数很高,分组数(bucket)比较多时,这个问题尤其突出。具体来说,假设分组字段有5000万条平均长度为10Byte的字符串(共500MB),中间生成的Hash表会产生一系列链表结构,导致内存可达到5GB,即内存扩展可达10倍。此查询占用大量内存和cpu资源,导致其他查询执行时间延长甚至超时等问题。
hat_trie数据结构综合了trie、array和hash的优点,hat_trie在处理字符串类型数据作为主键的场景中比较有优势,特点是可以利用字符串的公共前缀大幅降低主键-值结构存储数据时占用的资源。
hat_trie数据结构存储字符串类型数据的示例如下:
romane | ruber |
romanes | rubes |
romanus | rubicon |
romulus | rubicundus |
rubens | rubric |
如图4所示是以上字符串在hat_trie中存储的内容。
为此本申请提出一种数据库聚合查询方法,获取预先获得的数据表中待处理元组的分组字段,利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie,hat_trie数据结构利用字符串的公共前缀来大幅减少主键-值结构存储数据时占用的资源,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户,减少查询时间,提高整体查询效率。
实施例1
本申请实施例提供一种数据库聚合查询方法,以该方法应用于数据库聚合查询装置中来举例说明,该装置可以被配置于任一计算机设备中,以使该计算机设备可以执行数据库聚合查询方法。
如图1所示,上述方法包括:
S11、接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
分组聚合查询请求中有分组信息,分组信息通常是指定的维度,查询目的是根据数据库中的指定维度字段对需要汇总分析的字段进行分组之后做分析汇总运算,例如对数据表1进行分组聚合查询:
Year | City |
2016 | Beijing |
2016 | Shanghai |
2017 | Beijing |
2017 | Hangzhou |
数据表1
查询请求为Selet Year,count(City)from table group by year,group by后面的字段就是分组信息,按年这一维度进行分组,然后分析汇总运算,分组字段就是根据查询请求中按年分组的信息,对数据表进行分组的字段,如2016、2017,数据表中的每一行为一个元组,获取预先获得的数据表中待处理元组的分组字段,如上表中都是待处理元组,则获取2016、2016、2017、2017。
S12、利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,再将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie,例如分组字段为2016、2016、2017、2017,利用聚合函数分别对具有2016、2017的待处理元组进行计算获得聚合结果,将2016、2017作为hat_trie的主键,将利用聚合函数计算得出的2016和2017对应的聚合结果作为主键对应的值,从数据表1中可知,聚合结果分别是2、2,因此将2016、2;2017、2保存至hat_trie中。
S13、将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
根据查询请求获取查询涉及的数据库、表、字段等信息,再从数据库中读取待聚合数据信息,并转换成具有元组的数据表。
所述利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果进一步包括:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
由于每个元组是一行,在获取数据表中待处理元组的分组字段时,是逐行获取的,例如获取数据表1中待处理元组的分组字段,会先获取第一行的分组字段2016,在hat_trie中查询是否已存在与2016相同的主键,由于是第一行,hat_trie中很明显不会存在与2016相同的主键,则将2016作为主键保存至hat_trie,利用聚合函数计算出分组字段对应的聚合结果1作为hat_trie中主键对应的值,将1保存至hat_trie中,再获取第二行的分组字段2016,在hat_trie中查询是否已存在与2016相同的主键,由于处理第一行时已经将2016作为主键保存至hat_trie,所以hat_trie存在与2016相同的主键,查找主键对应的值1作为聚合函数计算的初始值,利用聚合函数计算出分组字段对应的聚合结果2作为hat_trie中主键2016对应的值,将2保存至hat_trie,相当于对主键2016对应的值的更新,由1变成2。然后继续逐行读取,重复以上处理步骤,直至读取到最后一行结束,至此所有主键和主键对应的值都保存至hat_trie。
所述方法还包括:
检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
在查询时会根据查询语句的资源申请给该分组聚合查询分配资源,检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
所述将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户包括:
检查是否有使用磁盘生成的缓存文件,若有,则将所述缓存文件中的主键和主键对应的值合并至hat_trie,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户;
若否,则直接将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
在返回查询结果时会先检查是否有使用磁盘生成的缓存文件,若有,就先将缓存文件中的主键和主键对应的值保存至hat_trie,若没有,直接将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
实施例2
对应上述方法,本申请实施例提供一种数据库聚合查询装置,如图2所示,所述装置包括:
获取单元21,用于接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
分组聚合查询请求中有分组信息,分组信息通常是指定的维度,查询目的是根据数据库中的指定维度字段对需要汇总分析的字段进行分组之后做分析汇总运算,例如对数据表1进行分组聚合查询;
查询请求为Selet Year,count(City)from table group by year,group by后面的字段就是分组信息,按年这一维度进行分组,然后分析汇总运算,分组字段就是根据查询请求中按年分组的信息,对数据表进行分组的字段,如2016、2017,数据表中的每一行为一个元组,获取单元21获取预先获得的数据表中待处理元组的分组字段,如上表中都是待处理元组,则获取2016、2017。
聚合单元22,用于利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
聚合单元22利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,再将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie,例如分组字段为2016、2016、2017、2017,利用聚合函数分别对具有2016、2017的待处理元组进行计算获得聚合结果,将2016、2017作为hat_trie的主键,将利用聚合函数计算得出的2016和2017对应的聚合结果作为主键对应的值,从数据表1中可知,聚合结果分别是2、2,因此将2016、2;2017、2保存至hat_trie中。
返回单元23,用于将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
所述聚合单元具体用于:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
由于每个元组是一行,在获取数据表中待处理元组的分组字段时,是逐行获取的,例如获取数据表1中待处理元组的分组字段,会先获取第一行的分组字段2016,在hat_trie中查询是否已存在与2016相同的主键,由于是第一行,hat_trie中很明显不会存在与2016相同的主键,则将2016作为主键保存至hat_trie,利用聚合函数计算出分组字段对应的聚合结果1作为hat_trie中主键对应的值,将1保存至hat_trie中,再获取第二行的分组字段2016,在hat_trie中查询是否已存在与2016相同的主键,由于处理第一行时已经将2016作为主键保存至hat_trie,所以hat_trie存在与2016相同的主键,查找主键对应的值1作为聚合函数计算的初始值,利用聚合函数计算出分组字段对应的聚合结果2作为hat_trie中主键2016对应的值,将2保存至hat_trie,相当于对主键2016对应的值的更新,由1变成2。然后继续逐行读取,重复以上处理步骤,直至读取到最后一行结束,至此所有主键和主键对应的值都保存至hat_trie。
所述装置还包括:
缓存单元,用于检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
在查询时会根据查询语句的资源申请给该分组聚合查询分配资源,缓存单元检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
本申请实施例提供一种数据库聚合查询装置,与本申请实施例所提供的数据库聚合查询方法属于同一申请构思,可执行本申请实施例所提供的数据库聚合查询方法,具备执行数据库聚合查询方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例提供的数据库聚合查询方法,此处不再加以赘述。
实施例3
对应上述方法和装置,本申请实施例3提供一种计算机系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行实施例一的方法步骤,如执行以下操作:
接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
其中,图3示例性的展示出了计算机系统的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。
其中,处理器1510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器1520可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制计算机系统1500运行的操作系统1521,用于控制计算机系统1500的低级别操作的基本输入输出系统(BIOS)。另外,还可以存储网页浏览器1523,数据存储管理系统1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器1520中,并由处理器1510来调用执行。
输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。
另外,该计算机系统1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的数据库聚合查询方法、装置及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种数据库聚合查询方法,其特征在于,所述方法包括:
接收查询请求,根据所述查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据所述查询请求中的分组信息,对所述数据表进行分组的字段;
利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户;
其中,所述利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果进一步包括:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
2.如权利要求1所述的数据库聚合查询方法,其特征在于,所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
3.如权利要求1所述的数据库聚合查询方法,其特征在于,所述方法还包括:
检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
4.如权利要求3所述的数据库聚合查询方法,其特征在于,所述将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户包括:
检查是否有使用磁盘生成的缓存文件,若有,则将所述缓存文件中的主键和主键对应的值合并至hat_trie,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户;
若否,则直接将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户。
5.一种数据库聚合查询装置,其特征在于,所述装置包括:
获取单元,用于接收查询请求,根据查询请求获得对应的数据表,获取所述数据表中待处理元组的分组字段,所述分组字段是指根据查询请求中的分组信息,对所述数据表进行分组的字段;
聚合单元,用于利用聚合函数对具有相同分组字段的待处理元组进行计算获得聚合结果,将分组字段作为hat_trie的主键,将利用聚合函数计算得出的各个分组字段对应的聚合结果作为各个主键对应的值,将所有主键和主键对应的值保存至hat_trie;
返回单元,将hat_trie上保存的主键和主键对应的值作为查询结果返回给用户;
其中,所述聚合单元具体用于:
在hat_trie中查询是否已存在与所述待处理元组的分组字段相同的主键;
若不存在,则将所述分组字段作为主键,利用聚合函数计算分组字段对应的聚合结果作为hat_trie中主键对应的值,保存至hat_trie;
若存在,则查找所述主键对应的值作为聚合函数计算的初始值,利用聚合函数计算分组字段对应的聚合结果更新hat_trie中主键对应的值,保存至hat_trie。
6.如权利要求5所述的数据库聚合查询装置,其特征在于,所述根据查询请求获得对应的数据表包括:
根据查询请求从数据库中读取待聚合数据信息,并转换成数据表。
7.如权利要求5所述的数据库聚合查询装置,其特征在于,所述装置还包括:
缓存单元,用于检查资源占用情况,若超出预设的限定范围,则按hat_trie指定格式将内存中的部分主键和主键对应的值缓存到磁盘,生成缓存文件。
8.一种计算机系统,其特征在于,所述系统包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如权利要求1-4任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010988662.XA CN112307062B (zh) | 2020-09-18 | 2020-09-18 | 数据库聚合查询方法、装置及系统 |
CA3131330A CA3131330A1 (en) | 2020-09-18 | 2021-09-20 | Database aggregation query method, device and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010988662.XA CN112307062B (zh) | 2020-09-18 | 2020-09-18 | 数据库聚合查询方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112307062A CN112307062A (zh) | 2021-02-02 |
CN112307062B true CN112307062B (zh) | 2022-11-22 |
Family
ID=74483523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010988662.XA Active CN112307062B (zh) | 2020-09-18 | 2020-09-18 | 数据库聚合查询方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112307062B (zh) |
CA (1) | CA3131330A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204602B (zh) * | 2021-05-07 | 2023-08-01 | 星环信息科技(上海)股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN115174496B (zh) * | 2022-05-23 | 2024-02-13 | 北京大学 | 一种用于网内聚合传输的处理终端和交换机 |
CN115952185B (zh) * | 2023-03-10 | 2023-06-30 | 布比(北京)网络技术有限公司 | 一种数据处理方法及装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199541A (zh) * | 2014-08-08 | 2014-12-10 | 乐视网信息技术(北京)股份有限公司 | 基于笔画输入进行搜索的方法及装置 |
CN106250519A (zh) * | 2016-08-04 | 2016-12-21 | 曙光信息产业(北京)有限公司 | 用于并行数据库的数据查询方法和装置 |
CN109471863A (zh) * | 2018-11-12 | 2019-03-15 | 北京懿医云科技有限公司 | 基于分布式数据库的信息查询方法及装置、电子设备 |
CN110140121A (zh) * | 2016-06-24 | 2019-08-16 | 微软技术许可有限责任公司 | 聚合查询的数据库系统和处理 |
CN110175184A (zh) * | 2019-04-30 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 一种数据维度的下钻方法、系统及电子设备 |
-
2020
- 2020-09-18 CN CN202010988662.XA patent/CN112307062B/zh active Active
-
2021
- 2021-09-20 CA CA3131330A patent/CA3131330A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199541A (zh) * | 2014-08-08 | 2014-12-10 | 乐视网信息技术(北京)股份有限公司 | 基于笔画输入进行搜索的方法及装置 |
CN110140121A (zh) * | 2016-06-24 | 2019-08-16 | 微软技术许可有限责任公司 | 聚合查询的数据库系统和处理 |
CN106250519A (zh) * | 2016-08-04 | 2016-12-21 | 曙光信息产业(北京)有限公司 | 用于并行数据库的数据查询方法和装置 |
CN109471863A (zh) * | 2018-11-12 | 2019-03-15 | 北京懿医云科技有限公司 | 基于分布式数据库的信息查询方法及装置、电子设备 |
CN110175184A (zh) * | 2019-04-30 | 2019-08-27 | 阿里巴巴集团控股有限公司 | 一种数据维度的下钻方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112307062A (zh) | 2021-02-02 |
CA3131330A1 (en) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112307062B (zh) | 数据库聚合查询方法、装置及系统 | |
US20200019552A1 (en) | Query optimization method and related apparatus | |
US9251213B2 (en) | Estimating error propagation for database optimizers | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
CN111512283B (zh) | 数据库中的基数估算 | |
CN111159219B (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
US20220269655A1 (en) | Design and implementation of data access metrics for automated physical database design | |
US20220358178A1 (en) | Data query method, electronic device, and storage medium | |
WO2023103338A1 (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111078276B (zh) | 应用程序的冗余资源处理方法、装置、设备及存储介质 | |
CN111611241A (zh) | 一种字典数据操作方法、装置、可读存储介质及终端设备 | |
CN114398520A (zh) | 数据检索方法、系统、装置、电子设备及存储介质 | |
CN114139040A (zh) | 一种数据存储及查询方法、装置、设备及可读存储介质 | |
CN112667636A (zh) | 索引建立方法、装置及存储介质 | |
EP4216076A1 (en) | Method and apparatus of processing an observation information, electronic device and storage medium | |
CN110704404A (zh) | 一种数据质量校验方法、装置、系统 | |
WO2024016594A1 (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
US11947490B2 (en) | Index generation and use with indeterminate ingestion patterns | |
CN111143398B (zh) | 基于扩展sql函数的超大集合查询方法及装置 | |
CN108984615B (zh) | 一种数据查询方法和系统、存储介质 | |
CN112667682A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN117271840B (zh) | 图数据库的数据查询方法、装置及电子设备 | |
CN112286995B (zh) | 一种数据分析方法、装置、服务器、系统及存储介质 | |
US20220107949A1 (en) | Method of optimizing search system | |
CN114090512A (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 |