CN116226296A - 基于OpenGauss的数据分组聚集方法 - Google Patents
基于OpenGauss的数据分组聚集方法 Download PDFInfo
- Publication number
- CN116226296A CN116226296A CN202310057261.6A CN202310057261A CN116226296A CN 116226296 A CN116226296 A CN 116226296A CN 202310057261 A CN202310057261 A CN 202310057261A CN 116226296 A CN116226296 A CN 116226296A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- new
- grouping
- aggregation
- 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.)
- Granted
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or 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/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/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于OpenGauss数据库的数据分组聚集方法及系统。本方法包括对有序集合中的数据进行扫描,根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;按照上步获得的分组对数据进行聚集运算处理等步骤。本方法克服了现有数据分组聚集方法普遍存在的执行效率低下的缺陷,本发明方法在进行数据分组聚集操作时,只维护排序靠前的N个分组,而对最终不需要返回的数据进行丢弃处理,从而避免了无用的排序和分组操作造成的额外性能开销,减少了分组数据的存储和运算成本,提升了数据分组聚集操作的执行效率,并保证了系统性能的稳定,可以很好地满足海量数据处理的应用需求。
Description
技术领域
本发明属于OpenGauss数据库管理系统技术领域,尤其涉及一种基于OpenGauss数据库的数据分组聚集方法及系统。
背景技术
SQL聚集是指对一组数据进行汇总的操作,输入是一组数据的集合,输出是单个数据值。常见的聚集操作有COUNT、MAX、MIN、SUM、AVG等。作为一种常用的数据分析技术,在数据库SQL里使用聚集操作进行数据分析,是非常普遍的。
随着互联网技术的日新月异,数据存储和分析技术蓬勃发展,互联网每分每秒都在产生大量数据。人们对海量数据的存储、分析需求日益增长,如何高效分析海量数据,已成为数据库技术面临的主要挑战,同样地,现有的数据分组聚集方法也因其执行效率低下而亟需进行技术改进。
以下面的SQL为例,
select max(l_orderkey),l_orderkey from lineitem group by l_orderkeyorder by l_orderkey limit 3;
目前多采用以下数据分组聚集方法进行处理:
(1)先分组(group by),后排序(order by),最后取排序靠前的几个分组(limit)。该方案的缺点是进行分组步骤时,必须对所有数据进行分组聚集,然而最后只需要取排序靠前的几个分组,最终导致大量无用的数据参与了分组和聚集运算,导致系统性能下降。
(2)先排序(order by),后分组(group by),最后取排序靠前的几个分组(limit)。该方案的缺点则是进行排序步骤时,必须对所有数据进行排序,导致大量最后不需要的数据参与了排序,从而造成了系统性能下降。
显而易见,上述数据分组聚集方法由于执行过程中均进行了大量的无用数据处理从而导致了执行效率低下,无法很好地满足海量数据处理的应用需求。
发明内容
为了克服现有数据分组聚集方法存在的上述缺陷,本发明提出了一种新的数据分组聚集方案。
整体而言,本发明数据分组聚集方法基于OpenGauss数据库系统,在进行数据分组聚集操作时,只维护排序靠前的N个分组(Limit N),而对最终不需要返回的数据进行丢弃处理,从而避免了无用的排序和分组操作造成的额外性能开销,解决了现有方法效率低下的问题,大大提升了数据分组聚集操作的执行效率,保证了系统性能的稳定。
具体地,第一方面,本发明提供了一种基于OpenGauss的数据分组聚集方法,当任务为在一个有序集合里维护排序靠前的N个分组时,本方法包括:
S1.数据扫描分组:对所述有序集合中的数据进行扫描,根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;
S2.聚集运算处理:按照上步获得的分组对数据进行聚集运算处理。
进一步地,本发明基于OpenGauss的数据分组聚集方法步骤S1中所述根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理,包括:
S11.若新数据对应的分组属于Top-N目标组,则直接将该数据写入对应的分组中;
S12.若新数据对应的分组不属于Top-N目标组,则直接丢弃该数据;
S13.若新数据对应的分组当前不存在,但按照预设的分组排序规则该分组应属于Top-N目标组,此时首先在所述有序集合里创建新的与新数据对应的分组,并按照预设的分组排序规则将该新分组插入到正确的位置,然后将新数据写入该新分组中。
进一步地,上述基于OpenGauss的数据分组聚集方法步骤S13中还包括:在按照预设的分组排序规则将新分组插入到正确的位置的同时,淘汰Top-N目标组中排列在最末位的分组,即在所述有序集合里,始终维持Top-N目标组的组数恒定。
进一步地,本发明基于OpenGauss的数据分组聚集方法步骤S2中所述对数据进行聚集运算处理包括但不限于对数据进行COUNT、SUM、MAX、MIN、AVG运算处理。
第二方面,本发明还提供了一种基于OpenGauss的数据分组聚集系统,所述数据分组聚集系统包括:
数据扫描模块:用于对有序集合中的数据进行扫描;
数据分组模块:用于根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;
数据写入模块:用于将新数据写入与之对应的分组中;
分组创建模块:用于在有序集合里创建新的与新数据对应的分组;
分组维护模块:用于向Top-N目标组中插入新分组,同时淘汰Top-N目标组中的末位分组,以维持有序集合里Top-N目标值的组数恒定;
聚集运算模块:用于对分组数据进行聚集运算处理。
第三方面,本发明还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述的基于OpenGauss的数据分组聚集方法的步骤。
综上,本发明基于OpenGauss的数据分组聚集方法克服了现有数据分组聚集方法普遍存在的执行效率低下的缺陷,本发明方法在进行数据分组聚集操作时,只维护排序靠前的N个分组,而对最终不需要返回的数据进行丢弃处理,从而避免了无用的排序和分组操作造成的额外性能开销,减少了分组数据的存储和运算成本,大大提升了数据分组聚集操作的执行效率,并保证了系统性能的稳定,可以很好地满足海量数据处理的应用需求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面对本发明实施例中需要使用的附图作简要介绍,显而易见地,下述附图仅是本发明中记载的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据分组聚集方法整体实施流程示意图。
图2为本发明数据分组聚集方法中数据分组处理实施流程示意图。
图3为根据本发明一种实施例的SQL,要求在一个有序集合里维护排序靠前的N个分组。
图4为根据本发明一种实施例的SQL,在分组已存在情况下的数据处理方法。
图5为根据本发明一种实施例的SQL,在向Top-N目标组中插入新分组的同时,淘汰Top-N目标组中排列在最末位的分组,以维持Top-N目标组的组数恒定。
图6为本发明数据分组聚集系统组成架构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例,本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
同时,应理解,本发明的保护范围并不局限于下述特定的具体实施方案;还应当理解,本发明实施例中使用的术语是为了描述特定的具体实施方案,而不是为了限制本发明的保护范围。
实施例1:一种基于OpenGauss的数据分组聚集方法,如图1和图2所示,当任务为在一个有序集合里维护排序靠前的N个分组时,本方法包括下述步骤:
S1.数据扫描分组:对所述有序集合中的数据进行扫描,根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理:
S11.若新数据对应的分组属于Top-N目标组,则直接将该数据写入对应的分组中。
S12.若新数据对应的分组不属于Top-N目标组,则直接丢弃该数据。
S13.若新数据对应的分组当前不存在,但按照预设的分组排序规则该分组应属于Top-N目标组,此时首先在所述有序集合里创建新的与新数据对应的分组,并按照预设的分组排序规则将该新分组插入到正确的位置,然后将新数据写入该新分组中;在按照预设的分组排序规则将新分组插入到正确的位置的同时,淘汰Top-N目标组中排列在最末位的分组,即在所述有序集合里,始终维持Top-N目标组的组数恒定。
S2.聚集运算处理:按照上步获得的分组对数据进行聚集运算处理,聚集运算处理包括对数据进行COUNT、SUM、MAX、MIN、AVG等运算处理。实施例2:实施例1方法在具体案例中的应用。
以下述SQL为例进行说明:
select max(l_orderkey),l_orderkey from lineitem group by l_orderkeyorder by l_orderkey limit 3;
如图3所示,上述用例中,要求在一个有序集合里维护排序靠前的N个分组。
将整个数据分组聚集操作分为两个阶段,第一阶段为数据扫描分组阶段,第二阶段为聚集运算处理阶段,下面分别予以说明。
1.数据扫描分组阶段
扫描有序集合中的数据,并按照以下方式进行分组处理:
A.若新数据对应的分组属于Top-N目标组,例如:新数据group key为b,value为3的情况,如图4所示,只需直接将该数据写入对应的分组中。
B.若新数据对应的分组不属于Top-N目标组,例如:新数据group key为d,value为4的情况,此时,由于最终只需要返回最小的3个分组,该数据不需要保存,可以在此阶段直接丢弃,避免额外的存储和运算开销,从而提升分组聚集操作的执行效率。
C.若新数据对应的分组当前不存在,但按照预设的分组排序规则该分组应属于Top-N目标组,例如:新数据group key为aa,value为5的情况,此时首先在有序集合里创建新的与新数据对应的分组,并按照预设的分组排序规则将该新分组插入到正确的位置,然后将新数据写入该新分组中。由于创建了新的分组,此时分组的数量大于LIMIT N的数量,因此需要淘汰Top-N目标组中排列在最末位的分组,即group key键值最小的分组,从而在有序集合里,始终维持Top-N目标组的组数恒定,如图5所示。
2.聚集运算处理阶段
由于数据已按上述方法进行了分组,则聚集运算阶段,只需按照数据扫描分组阶段获得的分组对数据进行聚集运算处理,聚集运算处理包括但不限于对数据进行COUNT、SUM、MAX、MIN、AVG运算处理。
通过上述方法,可以有效减少分组数据的存储和运算成本,大大提升分组聚集的效率,从而解决海量数据的分组聚集运算问题。
实施例3:实施例1方法在具体案例中的应用。
下面通过一组具体案例进行对比分析,以验证本发明方案可有效提升数据分组聚集的执行效率。
测试结果如下表1所示,方案编号1、2为当前OpenGauss数据库现有的技术方案,方案编号3为本发明技术方案。测试结果显示,本方案大幅度提升了数据分组聚集的执行效率,执行时间分别从14秒和43秒,提升到1.639秒,系统运行效率大大提升(注意,执行总时间均减去数据扫描时间,即查询计划里Seq Scan的时间,只统计了分组聚集所需要的时间)。另外,由于分组聚集时,只需要维护Top-N分组的数据,本方案相比现有方案,可以大大节省运行所需内存空间。
表1运行测试结果
HashAgg查询计划
GroupAgg查询计划
SortGroupAgg查询计划
实施例4:一种基于OpenGauss的数据分组聚集系统,如图6所示,包括:
数据扫描模块:用于对有序集合中的数据进行扫描;
数据分组模块:用于根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;
数据写入模块:用于将新数据写入与之对应的分组中;
分组创建模块:用于在有序集合里创建新的与新数据对应的分组;
分组维护模块:用于向Top-N目标组中插入新分组,同时淘汰Top-N目标组中的末位分组,以维持有序集合里Top-N目标值的组数恒定;
聚集运算模块:用于对分组数据进行聚集运算处理。
各模块按照上述数据分组聚集方法实施运行。
本发明中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、替换等,均应包含在本发明的权利要求保护范围之内。
Claims (6)
1.一种基于OpenGauss的数据分组聚集方法,其特征在于,当任务为在一个有序集合里维护排序靠前的N个分组时,所述方法包括:
S1.数据扫描分组:对所述有序集合中的数据进行扫描,根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;
S2.聚集运算处理:按照上步获得的分组对数据进行聚集运算处理。
2.根据权利要求1所述的基于OpenGauss的数据分组聚集方法,其特征在于,步骤S1中所述根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理,包括:
S11.若新数据对应的分组属于Top-N目标组,则直接将该数据写入对应的分组中;
S12.若新数据对应的分组不属于Top-N目标组,则直接丢弃该数据;
S13.若新数据对应的分组当前不存在,但按照预设的分组排序规则该分组应属于Top-N目标组,此时首先在所述有序集合里创建新的与新数据对应的分组,并按照预设的分组排序规则将该新分组插入到正确的位置,然后将新数据写入该新分组中。
3.根据权利要求2所述的基于OpenGauss的数据分组聚集方法,其特征在于,步骤S13中还包括:在按照预设的分组排序规则将新分组插入到正确的位置的同时,淘汰Top-N目标组中排列在最末位的分组,即在所述有序集合里,始终维持Top-N目标组的组数恒定。
4.根据权利要求1所述的基于OpenGauss的数据分组聚集方法,其特征在于,步骤S2中所述对数据进行聚集运算处理包括对数据进行COUNT、SUM、MAX、MIN、AVG运算处理。
5.一种基于OpenGauss的数据分组聚集系统,其特征在于,所述数据分组聚集系统包括:
数据扫描模块:用于对有序集合中的数据进行扫描;
数据分组模块:用于根据当前的分组情况和扫描获得的数据信息选择相应的措施对数据进行分组处理;
数据写入模块:用于将新数据写入与之对应的分组中;
分组创建模块:用于在有序集合里创建新的与新数据对应的分组;
分组维护模块:用于向Top-N目标组中插入新分组,同时淘汰Top-N目标组中的末位分组,以维持有序集合里Top-N目标值的组数恒定;
聚集运算模块:用于对分组数据进行聚集运算处理。
6.一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现权利要求1-4任一项所述的基于OpenGauss的数据分组聚集方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310057261.6A CN116226296B (zh) | 2023-01-19 | 2023-01-19 | 基于OpenGauss的数据分组聚集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310057261.6A CN116226296B (zh) | 2023-01-19 | 2023-01-19 | 基于OpenGauss的数据分组聚集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116226296A true CN116226296A (zh) | 2023-06-06 |
CN116226296B CN116226296B (zh) | 2023-08-22 |
Family
ID=86583749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310057261.6A Active CN116226296B (zh) | 2023-01-19 | 2023-01-19 | 基于OpenGauss的数据分组聚集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226296B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511190A (en) * | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
US6374263B1 (en) * | 1999-07-19 | 2002-04-16 | International Business Machines Corp. | System for maintaining precomputed views |
US7243108B1 (en) * | 2001-10-14 | 2007-07-10 | Frank Jas | Database component packet manager |
CN114238295A (zh) * | 2021-12-01 | 2022-03-25 | 唯品会(广州)软件有限公司 | 一种基于分组的数据排序方法及装置 |
-
2023
- 2023-01-19 CN CN202310057261.6A patent/CN116226296B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511190A (en) * | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
US6374263B1 (en) * | 1999-07-19 | 2002-04-16 | International Business Machines Corp. | System for maintaining precomputed views |
US7243108B1 (en) * | 2001-10-14 | 2007-07-10 | Frank Jas | Database component packet manager |
CN114238295A (zh) * | 2021-12-01 | 2022-03-25 | 唯品会(广州)软件有限公司 | 一种基于分组的数据排序方法及装置 |
Non-Patent Citations (1)
Title |
---|
DAVID CHRISTENSEN: "《Improving max()performance inPostgreSQL: GROUPBY vs. CTE》", Retrieved from the Internet <URL:https://www.endpointdev.com/blog/2020/06/postgresql-improve-group-by-max-performance> * |
Also Published As
Publication number | Publication date |
---|---|
CN116226296B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | Effective and efficient community search over large directed graphs | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
US10572811B2 (en) | Methods and systems for determining probabilities of occurrence for events and determining anomalous events | |
US20100235296A1 (en) | Flow comparison processing method and apparatus | |
Chen et al. | Metric similarity joins using MapReduce | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
WO2024174305A1 (zh) | 一种基于预计算场景的查询处理方法及其装置 | |
Gulzar et al. | Optimizing skyline query processing in incomplete data | |
US20120109981A1 (en) | Generating progressive query results | |
CN116226086A (zh) | 一种数据迁移过程中分段数据的顺序维护与校验方法 | |
CN116226296B (zh) | 基于OpenGauss的数据分组聚集方法 | |
US11915044B2 (en) | Distributed task assignment in a cluster computing system | |
CN114185885A (zh) | 一种基于列存数据库的流式数据处理方法及系统 | |
CN116483831B (zh) | 一种分布式数据库推荐索引生成方法 | |
CN110321388B (zh) | 一种基于Greenplum的快速排序查询方法及系统 | |
CN111046092B (zh) | 一种基于cpu-gpu异构体系结构的并行相似性连接方法 | |
Qian et al. | A fast and anti-matchability matching algorithm for content-based publish/subscribe systems | |
CN110297858B (zh) | 执行计划的优化方法、装置、计算机设备和存储介质 | |
CN111259082A (zh) | 大数据环境下实现全量数据同步的方法 | |
CN112162986A (zh) | 一种并行top-k范围skyline查询方法和系统 | |
Rao et al. | Efficient Iceberg query evaluation using compressed bitmap index by deferring bitwise-XOR operations | |
CN115168361A (zh) | 一种标签管理方法和装置 | |
Pacıfico et al. | Sstr: Set similarity join over stream data | |
CN115455031B (zh) | 一种Doris的数据查询方法、装置、存储介质及设备 | |
CN113722332B (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 |